@flopay/react 1.9.20 → 1.9.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,12 +1,12 @@
1
- "use strict";var ec=Object.create;var sa=Object.defineProperty;var tc=Object.getOwnPropertyDescriptor;var nc=Object.getOwnPropertyNames;var rc=Object.getPrototypeOf,oc=Object.prototype.hasOwnProperty;var ac=(e,t)=>{for(var n in t)sa(e,n,{get:t[n],enumerable:!0})},Ps=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of nc(t))!oc.call(e,o)&&o!==n&&sa(e,o,{get:()=>t[o],enumerable:!(r=tc(t,o))||r.enumerable});return e};var Cs=(e,t,n)=>(n=e!=null?ec(rc(e)):{},Ps(t||!e||!e.__esModule?sa(n,"default",{value:e,enumerable:!0}):n,e)),ic=e=>Ps(sa({},"__esModule",{value:!0}),e);var Vd={};ac(Vd,{DirectPayPalButton:()=>Oo,FloPayAutomaticPaymentButton:()=>Al,FloPayCardSetup:()=>Fl,FloPayCardSetupError:()=>Jo,FloPayCheckout:()=>Na,FloPayProvider:()=>Uo,SplitCardForm:()=>Ba,VaultCardFields:()=>ho,dropThirdPartyOnlyError:()=>Dl.dropThirdPartyOnlyError,useCheckout:()=>Bs,useFloPay:()=>Ir,usePayPalFloPay:()=>ua});module.exports=ic(Vd);var Dl=require("@flopay/shared");var Oa=require("@flopay/js"),Jn=require("@flopay/shared"),tt=require("react");var Tt=require("react/jsx-runtime");function sc(){return(0,Tt.jsxs)(Tt.Fragment,{children:[(0,Tt.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,Tt.jsx)("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),(0,Tt.jsx)("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",(0,Tt.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"#9ca3af",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem"},"aria-hidden":"true",children:(0,Tt.jsx)("path",{d:"M9 18l6-6-6-6"})})]})}function lc(){return(0,Tt.jsx)(Tt.Fragment,{children:"Go back"})}function cc(){return(0,Tt.jsx)(Tt.Fragment,{children:"Secure card checkout"})}function to(e){return e!==void 0&&(e===""||e===null||e===!1)}function no({content:e}){return(0,Tt.jsx)(Tt.Fragment,{children:e===void 0?(0,Tt.jsx)(sc,{}):e})}function ro({content:e}){return(0,Tt.jsx)(Tt.Fragment,{children:e===void 0?(0,Tt.jsx)(lc,{}):e})}function Mo({content:e}){return(0,Tt.jsx)(Tt.Fragment,{children:e===void 0?(0,Tt.jsx)(cc,{}):e})}var kt=require("@flopay/shared"),dc="Checkout is temporarily unavailable. Please try again later.";function ri(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof kt.FloPayError&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function uc(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 Ss(){return new kt.FloPayError(dc,"api_error",{code:"CheckoutInitializationFailed"})}function oi(e){return!!e?.gateways?.worldpayCorporateGateway}function Or(e){return e?.status==="open"&&oi(e)}function ws(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")||Or(r))||t&&e?.data.paypal?.publishableKey)}function ks(e,t){if(t&&(!(e instanceof kt.FloPayError)||e.type==="authentication_error"))return ri(e);if(!(e instanceof kt.FloPayError&&uc(e))){if(!t&&!(e instanceof kt.FloPayError)&&(e instanceof TypeError||e instanceof SyntaxError))return{...(0,kt.classifyTelemetryFailure)(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof kt.FloPayError)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof kt.FloPayError))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function oo(e,t,n,r={}){let o;return(a={})=>{if(o)return o;let l={...r,...a,email:a.email?.trim()||r.email?.trim()},d=(0,kt.isCardHolderNamePlaceholder)(l.firstName,l.lastName);if(!(0,kt.isValidEmail)(l.email))return Promise.reject(new kt.FloPayError("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let u={};for(let[g,y]of Object.entries(l)){if(d&&g.endsWith("Name")||typeof y!="string")continue;let b=y.trim();b&&(u[g]=b)}return o=e.claimCheckoutSession(t,n,{accountData:u}),o.catch(()=>{}),o}}function Is(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 ai(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 Rs(e,t){let n=e.products??[...(e.subscriptions??[]).map(a=>({type:"subscription",code:a.code??a.providerPlanId,name:a.subscriptionName??a.providerPlanName??a.code??a.providerPlanId??null,quantity:a.quantity??1,totalAmount:a.totalAmount,overrideAmount:a.overrideAmount,currency:a.currency,metadata:a.metadata})),...(e.items??[]).map(a=>({type:"item",code:a.code??a.providerItemId,name:a.itemName??a.providerItemName??a.code??a.providerItemId??null,quantity:a.quantity??1,totalAmount:a.totalAmount,overrideAmount:a.overrideAmount,currency:a.currency,metadata:a.metadata}))],r=n.reduce((a,l)=>a+(l.overrideAmount??l.totalAmount??0),0),o=e.currency??n.find(a=>a.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:n.some(a=>a.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((a,l)=>({uuid:`synthetic-${a.type??"item"}-${l}`,checkoutSessionId:"",type:a.type??"item",code:a.code,name:a.name??null,quantity:a.quantity??1,totalAmount:a.totalAmount,overrideAmount:a.overrideAmount??null,currency:a.currency??o,metadata:a.metadata??null}))}}function zr(e){if((0,kt.isCardHolderNamePlaceholder)(e))return{};let[t,...n]=e?.trim().split(/\s+/)??[];return t?{firstName:t,lastName:n.join(" ")||void 0}:{}}function ii(e,t){return t?{...e,...t}:e}function nn(e,t,n){let r=typeof t=="string"?t:t.message,o=typeof t=="string"?n?.code:n?.code??t.code,a=typeof t=="string"?n?.declineCode:n?.declineCode??t.declineCode;return{method:e,message:r,...o?{code:o}:{},...a?{declineCode:a}:{}}}var pc=[{match:/^paypal authorization required\.?$/i,replacement:"For your additional security, please re-authenticate this payment via PayPal."}];function Tr(e){if(typeof e!="string")return e??void 0;let t=e.trim();if(!t)return e;for(let{match:n,replacement:r}of pc)if(n.test(t))return r;return e}function Ur(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function ao(e){return e?.status==="authorized"||e?.status==="complete"}function _s(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function la(e){let t=_s(e);return new kt.FloPayError(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function ca(e){return e instanceof kt.FloPayError||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function da(e){let t=_s(e),n="checkout_processing_timeout";return t?n="authorization_expired":e?.status==="expired"&&(n="checkout_session_expired"),new kt.FloPayError(t?"Authorization has expired.":"Automatic payment failed. Please try again.","api_error",{code:n})}function Bo(e,t){return e==="processing"||(0,kt.isMoneySettledOutcome)(e,t)}function Es(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function Ts(e,t){let n=e;if((0,kt.isSetupIntentClientSecret)(t)){if(!n?.retrieveSetupIntent)return null;let{setupIntent:a,error:l}=await n.retrieveSetupIntent(t);if(l)throw new kt.FloPayError(l.message??"Failed to retrieve setup intent.","api_error",{...l.code?{code:l.code}:{}});return a??null}if(!n?.retrievePaymentIntent)return null;let{paymentIntent:r,error:o}=await n.retrievePaymentIntent(t);if(o)throw new kt.FloPayError(o.message??"Failed to retrieve payment intent.","api_error",{...o.code?{code:o.code}:{}});return r??null}function As(e,t="automatic"){return{...typeof e=="number"&&Number.isFinite(e)&&e>0?{mode:"payment",amount:e,captureMethod:t==="manual"?"manual":"automatic_async"}:{mode:"setup"},paymentMethodTypes:["card"],setupFutureUsage:"off_session"}}function si(e){let t=e&&typeof e=="object"?e:null;return t?.name==="IntegrationError"||t?.code==="elements_intent_mismatch"||t?.type==="invalid_request_error"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function Fo(e){let t=[e?.id,e?.originalPaymentMethodId];for(let n of t)if(typeof n=="string"&&n.startsWith("pm_"))return n}var _r=require("@flopay/js"),je=require("@flopay/shared"),C=Cs(require("react"),1);var li=require("react"),Hn=(0,li.createContext)({flopay:null,paypalFlopay:null,billingApiUrl:""}),ir=(0,li.createContext)({session:null,loading:!1,error:null});var ga=require("@flopay/js"),Nt=require("@flopay/shared"),Ls=require("@paypal/paypal-js"),E=require("react");var xs=require("@flopay/shared"),sr=require("react"),Sr=require("react/jsx-runtime");function Fn(e,t=!1){let{firstName:n,lastName:r,...o}=e,a=n?.trim(),l=r?.trim();return{...o,...a||t?{firstName:a??""}:{},...l||t?{lastName:l??""}:{}}}function io(){let[e,t]=(0,sr.useState)(null),n=(0,sr.useRef)(null),r=(0,sr.useRef)(0),o=(0,sr.useCallback)((l,d)=>(n.current?.(null),r.current+=1,t({id:r.current,methodLabel:l,identity:d}),new Promise(u=>{n.current=u})),[]),a=(0,sr.useCallback)(l=>{let d=n.current;n.current=null,t(null),d?.(l)},[]);return(0,sr.useEffect)(()=>()=>{n.current?.(null),n.current=null},[]),{request:e,collect:o,finish:a}}function so({identity:e,methodLabel:t,onComplete:n,onCancel:r,submitting:o=!1,testId:a="flopay-buyer-identity-pane"}){let[l,d]=(0,sr.useState)(e.email?.trim()??""),u=(0,xs.isValidEmail)(l.trim());return(0,Sr.jsxs)("div",{"data-testid":a,style:{display:"flex",flexDirection:"column",gap:"0.75rem",padding:"0.875rem",border:"1px solid #d1d5db",borderRadius:8,background:"#fff",color:"#262833"},children:[(0,Sr.jsxs)("div",{style:{fontWeight:700},children:["Continue with ",t]}),(0,Sr.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,Sr.jsx)("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:l,onChange:g=>d(g.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),(0,Sr.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[r&&(0,Sr.jsx)("button",{type:"button",onClick:r,style:{flex:1,minHeight:42},children:"Cancel"}),(0,Sr.jsxs)("button",{type:"button",disabled:!u||o,onClick:()=>{n(Fn({...e,email:l.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}function mc(e){if(e instanceof Error)return e.message;if(typeof e=="object"&&e!==null){let t=e.message;return typeof t=="string"?t:void 0}return typeof e=="string"?e:void 0}function qr(e){if(typeof e!="string")return;let t=e.trim();return/^[a-z0-9_.-]{1,64}$/i.test(t)?t:void 0}function wr(e){if(typeof e!="object"||e===null)return;let t=e;return qr(t.code)??qr(t.type)??qr(t.name)}function lo(e){if(!(typeof e!="object"||e===null))return qr(e.decline_code)}function Do(e){return typeof e!="object"||e===null?!1:qr(e.type)?.toLowerCase()==="card_error"||lo(e)!==void 0}function kr(e){let t=mc(e)?.toLowerCase()??"",r=`${wr(e)?.toLowerCase()??""} ${t}`;return r.includes("popup")&&r.includes("block")}var Ms=require("@flopay/shared"),Lo=require("react");function Ir(){return(0,Lo.useContext)(Hn).flopay}function ua(){return(0,Lo.useContext)(Hn).paypalFlopay??null}function Bs(){return(0,Lo.useContext)(ir)}function Fs(){return(0,Lo.useContext)(Hn).billingApiUrl||(0,Ms.resolveBillingApiUrl)()}function pa(e){let t=e??(typeof navigator>"u"?"":navigator.userAgent),n=r=>({inAppBrowser:r!=="none",appFamily:r,popupCapability:"unknown"});return t?/FBAN|FBAV|FB_IAB|FBIOS/i.test(t)?n("facebook"):/Instagram/i.test(t)?n("instagram"):/musical_ly|BytedanceWebview|TikTok/i.test(t)?n("tiktok"):/Twitter|Snapchat|Pinterest|LinkedInApp|Line\/|MicroMessenger|GSA\//i.test(t)?n("other_in_app"):/Android.*;\s?wv\)/.test(t)||/(iPhone|iPad|iPod).*AppleWebKit(?!.*Safari)/.test(t)?n("generic_webview"):n("none"):n("none")}function ma(e,t,n){return!e.inAppBrowser||n!=="order"?"popup":t==="app_switch"||t==="redirect"?t:"popup"}var Ds=require("@flopay/shared"),Vr=require("react");function lt(e){if(!e)return;let t=n=>{console.error("[FloPay] Merchant callback failed; checkout continued.",n)};try{Promise.resolve(e()).catch(t)}catch(n){t(n)}}var ya=require("react"),$r=typeof window>"u"?ya.useEffect:ya.useLayoutEffect;var yc={"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 fc(e){return e==="stripe"||e==="paypal"?e:void 0}function gc(e){let t=fc(e.provider),n={schemaVersion:Ds.FLO_INSTRUMENT_SCHEMA_VERSION,...t?{gateway:t}:{}};if(e.class==="lifecycle"){let r=yc[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 ci=new Set(["checkout_mount","sdk_loaded","form_rendered","card_expanded"]);function co(e,t){let n=(0,Vr.useRef)(e);n.current=e;let r=(0,Vr.useRef)(new Set),o=(0,Vr.useRef)(t),a=(0,Vr.useRef)(t);return $r(()=>{a.current=t,o.current!==t&&(o.current=t,r.current.clear())},[t]),(0,Vr.useCallback)(l=>{if(a.current!==t)return;let d=gc(l);if(d){if(ci.has(d.name)){if(r.current.has(d.name))return;r.current.add(d.name)}lt(()=>n.current?.(d))}},[t])}var hc=Symbol.for("@flopay/js.telemetry.bridge.v1"),bc=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function vc(){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 Pc(e){let t=vc(),n=(o,a)=>o?o.bind(e):a,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 fa(e){let t=globalThis[bc];return Pc(t?.(e)??{})}function en(e){if(e)return e[hc]}var Sn=require("react");function No(e){let t=(0,Sn.useRef)(0),n=(0,Sn.useRef)(null),r=(0,Sn.useRef)(null),o=(0,Sn.useCallback)((h=r.current)=>{h?.timer&&(clearTimeout(h.timer),h.timer=null)},[]),a=(0,Sn.useCallback)(h=>{o();let k=t.current+1;return t.current=k,n.current=null,r.current={generation:k,method:h,timer:null,yieldedControl:!1},k},[o]),l=(0,Sn.useCallback)(h=>{let k=r.current;return h!==void 0&&k?.generation!==h?!1:(o(k),r.current=null,(h===void 0||n.current===h)&&(n.current=null),!0)},[o]),d=(0,Sn.useCallback)(h=>{let k=r.current,F=h??k?.generation??t.current;(h===void 0||k?.generation===h)&&(o(k),r.current=null),n.current=F},[o]),u=(0,Sn.useCallback)(h=>n.current===(h??t.current),[]),g=(0,Sn.useCallback)(h=>r.current?.generation===h&&n.current!==h,[]),y=(0,Sn.useCallback)(()=>{let h=r.current;h&&(h.yieldedControl=!0,o(h))},[o]),b=(0,Sn.useCallback)(()=>{let h=r.current;!h?.yieldedControl||document.visibilityState!=="visible"||(o(h),h.timer=setTimeout(()=>{h.timer=null,r.current?.generation===h.generation&&(r.current=null,n.current=h.generation,e(h.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"}))},600))},[o,e]);return(0,Sn.useEffect)(()=>{let h=()=>{document.visibilityState==="visible"?b():y()};return document.addEventListener("visibilitychange",h),window.addEventListener("blur",y),window.addEventListener("focus",b),()=>{document.removeEventListener("visibilitychange",h),window.removeEventListener("blur",y),window.removeEventListener("focus",b),o()}},[o,y,b]),{startAttempt:a,finishAttempt:l,invalidateAttempt:d,isAttemptInvalidated:u,isAttemptCurrent:g,generationRef:t}}var Gn=require("react/jsx-runtime"),ha=45,Cc=1e3,Sc=11e3,wc=["https://www.paypal.com","https://www.sandbox.paypal.com"],di="We couldn't open PayPal. Try again or choose another payment method.",kc={width:"100%",minHeight:ha,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 Ic(e){return e.includes("No ack for postMessage init()")&&wc.some(t=>e.includes(t))&&e.includes("10000ms")}var Rc={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 _c(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:Rc[e.kind]??null}}function Ec(e,t){return e==="watchdog_expired"?"paypal_render_timeout":Ic(t)?"paypal_init_timeout":"paypal_init_failure"}function Tc(e,t=!1){return e?t?`${di} Open this page in your system browser, then try again.`:`${di} Allow pop-ups for this site, then try again.`:di}function Ac(e){let t=Do(e),n=kr(e);return t?{errorCode:"PROVIDER_RUNTIME_FAILED",popupBlocked:n,providerDeclined:t,terminalReason:"provider_declined"}:{errorCode:n?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",popupBlocked:n,providerDeclined:t,terminalReason:n?"popup_blocked":"provider_error"}}function xc(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 Mc(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function Ns({sessionId:e,nonce:t,billingApiUrl:n,email:r,billingName:o,onBuyerIdentityReady:a,clientId:l,environment:d,currency:u,isSubscription:g,providerObjectType:y,approvalPresentation:b,onTokenizedBody:h,onComplete:k,onErrorChange:F,onDecline:N,onTechnicalFailure:ye,isProcessing:se=!1,onLoadStateChange:S,onInitializationStateChange:V,allowAutomaticRetry:O=!0,onButtonClick:de,runBeforeButtonClick:Se,session:le,existingOrderId:fe,telemetry:be,telemetryContext:pt,onInstrument:Ge,debug:ve=!1}){let Ne=Ir(),ue=co(Ge,e),we=(0,E.useMemo)(()=>{if(Ne)return null;let L=fa({billingApiUrl:n,sdkPackage:"@flopay/react",sdkVersion:Nt.SDK_VERSION,enabled:be!==!1});return L.setCheckoutContext(pt??{}),L.beginCheckout(pt??{}),L},[n,Ne,be,pt?.checkoutMode,pt?.layout]),Ye=(0,E.useMemo)(()=>en(Ne),[Ne]);(0,E.useEffect)(()=>()=>{we&&we.flush().catch(()=>{}).finally(()=>we.destroy())},[we]);let Q=(0,E.useMemo)(()=>({error:L=>{Ye?Ye.error(L):we?.error(L),ue({class:"technical_error",errorCode:L.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":L.errorCode,requestCategory:L.requestCategory,provider:L.provider})},log:L=>{Ye?Ye.log(L):we?.log(L),ue({class:"lifecycle",name:L.name,provider:L.provider})},performance:L=>{Ye?Ye.performance(L):we?.performance(L)},terminal:L=>{Ye?Ye.terminal(L):we?.terminal(L)},startTiming:()=>Ye?.now()??we?.now()??0,elapsed:L=>Ye?.elapsed(L)??Math.max(0,(we?.now()??L)-L)}),[ue,Ye,we]),ke=(0,E.useRef)(null),pe=(0,E.useRef)(0),nt=(0,E.useRef)(null),rt=(0,E.useRef)(null),I=(0,E.useRef)(null),j=(0,E.useRef)(!1),[ge,ee]=(0,E.useState)(!1),[Ke,x]=(0,E.useState)(!1),[Ie,mt]=(0,E.useState)(0),Qe=(0,E.useRef)(0),[Pe,z]=(0,E.useState)(!1),ie=(0,E.useRef)(!1),Oe=(0,E.useRef)(!1),[ct,Fe]=(0,E.useState)(!1),[Je,De]=(0,E.useState)(!1),{request:Ce,collect:Ae,finish:Wt}=io(),te=(0,E.useRef)({sessionId:e,required:!(0,Nt.isValidEmail)(r?.trim()||le?.customer?.email?.trim())});te.current.sessionId!==e&&(te.current={sessionId:e,required:!(0,Nt.isValidEmail)(r?.trim()||le?.customer?.email?.trim())});let At=te.current.required,gt=(0,E.useMemo)(()=>n.replace(/\/+$/,""),[n]),me=le?.gateways?.paypal?.providerObjectType??y,f=me??(g?"subscription":"order"),[A]=(0,E.useState)(pa),ze=le?.gateways?.paypal?.approvalPresentation??b,_e=ma(A,ze==="app_switch"?"app_switch":void 0,f),wt=me==="order"||me==="setup_token",st=(0,E.useMemo)(()=>JSON.stringify([gt,l,u,d??"",f,wt,_e,e,fe??""]),[gt,l,u,d,fe,f,wt,_e,e]),xt=(0,E.useRef)(st),X=xt.current!==st,Ht=(0,E.useRef)(ve),It=(0,E.useRef)(null),[mn,ur]=(0,E.useState)([]),K=(0,E.useCallback)(L=>{Ht.current&&ur(Me=>[...Me,`${new Date().toISOString().slice(11,23)} ${L}`])},[]);(0,E.useEffect)(()=>{Ht.current=ve,ve&&K("debug:enabled"),It.current?.setEnabled(ve)},[K,ve]);let yn=(0,E.useRef)(h),wn=(0,E.useRef)(k),cn=(0,E.useRef)(F),rn=(0,E.useRef)(N),fn=(0,E.useRef)(ye),Xn=(0,E.useRef)(de),dn=(0,E.useRef)(S),Gt=(0,E.useRef)(V),Le=(0,E.useRef)(a),We=(0,E.useRef)(Se),on=(0,E.useRef)(le),yt=(0,E.useRef)(r),$n=(0,E.useRef)(o),Mt=(0,E.useRef)(t),Yt=(0,E.useRef)(null),bt=(0,E.useRef)(new Map),Vt=(0,E.useRef)(new Map),un=(0,E.useRef)(!1);(0,E.useEffect)(()=>(un.current=!0,()=>{un.current=!1}),[]),(0,E.useEffect)(()=>{yn.current=h},[h]),(0,E.useEffect)(()=>{Le.current=a},[a]),(0,E.useEffect)(()=>{wn.current=k},[k]),(0,E.useEffect)(()=>{cn.current=F},[F]),(0,E.useEffect)(()=>{rn.current=N},[N]),(0,E.useEffect)(()=>{fn.current=ye},[ye]),(0,E.useEffect)(()=>{Xn.current=de},[de]),(0,E.useEffect)(()=>{dn.current=S},[S]),(0,E.useEffect)(()=>{Gt.current=V},[V]),(0,E.useEffect)(()=>{We.current=Se},[Se]),(0,E.useEffect)(()=>{on.current=le},[le]),(0,E.useEffect)(()=>{yt.current=r},[r]),(0,E.useEffect)(()=>{$n.current=o},[o]),(0,E.useEffect)(()=>{Mt.current=t},[t]),(0,E.useEffect)(()=>{Qe.current=Ie},[Ie]),(0,E.useEffect)(()=>{Pe&&I.current?.focus()},[Pe,Ie]);let Bt=(0,E.useCallback)(()=>{window.setTimeout(()=>{I.current?.focus()},0)},[]),Rt=(0,E.useCallback)(()=>{ee(!1),mt(L=>L+1)},[]),an=(0,E.useCallback)(()=>{z(!1),(ke.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??ke.current)?.focus?.()},[]);(0,E.useEffect)(()=>{!ge||!j.current||(j.current=!1,an())},[an,ge,Ie]);let Dn=(0,E.useCallback)((L,Me)=>{let M=Me?.popupBlocked??kr(L),Dt=Tc(M,A.inAppBrowser),bn=fn.current;if(bn){let sn=M&&A.inAppBrowser?new Nt.FloPayError(Dt,"api_error",{code:Me?.code??"paypal_popup_blocked"}):L;bn("paypal",sn,Me);return}cn.current?.(Dt)},[A.inAppBrowser]),Ct=(0,E.useCallback)(L=>{let Me=nt.current,M=rt.current;Me===null||!M||(Q.log({...M,name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:L}),Q.performance({...M,stage:"overlay_return",durationMs:Q.elapsed(Me),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:L}),nt.current=null)},[Q]),re=(0,E.useCallback)((L,Me,M)=>{let Dt=rt.current;Ct("overlay_timeout"),Dt&&Q.error({...Dt,errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),Dn(Me,M),z(!0),Rt(),Bt()},[Ct,Bt,Dn,Rt,Q]),{finishAttempt:gn,generationRef:hn,invalidateAttempt:Ft,isAttemptCurrent:Ot,isAttemptInvalidated:Ln,startAttempt:Vn}=No(re),Zn=(0,E.useCallback)(()=>(z(!1),Vn("paypal")),[Vn]),Jt=(0,E.useCallback)(L=>{Ft(L?.generation),L?.showRetry&&z(!0),L?.remount&&Rt(),L?.focus!==!1&&Bt()},[Bt,Ft,Rt]),He=L=>{let Me=Yt.current;return Me&&Vt.current.set(L,Me),L};(0,E.useEffect)(()=>{xt.current!==st&&(xt.current=st,ie.current=!1,Oe.current=!1,ee(!1),x(!1),Fe(!1),Gt.current?.("loading"))},[st]),(0,E.useEffect)(()=>{lt(()=>dn.current?.(ge&&!ct))},[ge,ct]);let zt=(0,Nt.normalizeGatewayEnvironment)(d);(0,E.useEffect)(()=>{let L={attempt:hn.current+1,...A,presentationMode:_e},Me=()=>rt.current??L,M={error:v=>Q.error({...v,...Me()}),log:v=>Q.log({...v,...Me()}),performance:v=>Q.performance({...v,...Me()}),terminal:v=>Q.terminal({...v,...Me()}),startTiming:Q.startTiming,elapsed:Q.elapsed},Dt=l?`${l.slice(0,6)}\u2026(len ${l.length})`:"(empty)",bn=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(K(`mount clientId=${Dt} env=${d??"(unset)"}\u2192${zt??"live"} ccy=${u} sub=${g}`),K(`ua=${bn.slice(0,80)}${bn.length>80?"\u2026":""}`),!l){K("FAIL: clientId empty \u2014 gateway misconfigured"),Fe(!0),M.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(!ke.current){K("FAIL: containerRef not attached");return}pe.current=M.startTiming(),M.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let sn=!1,Nn=!1,he=()=>sn||Nn,vn,xr=!1,Kr=()=>{vn=(0,Nt.generateIdempotencyKey)(),vn||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),xr=!0},kn=null,Er=!1,pr=null,Qn=!1,jt=()=>{!pr||Qn||(Qn=!0,pr.close().catch(()=>{}))},In=!1,Cr=!1,On=ke.current,Rn=null,er=null,tr=[],St=null,Pn=!1,jn=!1,nr=null,_n=v=>{if(!v||typeof v.getBoundingClientRect!="function")return"(no rect)";let m=v.getBoundingClientRect();return`${Math.round(m.width)}\xD7${Math.round(m.height)}`},Xe=v=>{if(!v)return"(empty)";try{let m=new URL(v,typeof window>"u"?"https://localhost":window.location.href),_=m.pathname.toLowerCase();return _.includes("checkcaptcha")||_.includes("captcha")?`CAPTCHA(${m.host}${_})`:_.includes("risk")||_.includes("challenge")?`RISK(${m.host}${_})`:_.includes("smart/buttons")?`smart-buttons(${m.host})`:`${m.host}${_}`.slice(0,100)}catch{return v.slice(0,80)}},tn=v=>{let m=v.getAttribute("src"),_=v.getAttribute("srcdoc"),W=v.getAttribute("name"),ce=v.getAttribute("sandbox"),Z=[];return m&&Z.push(`src=${Xe(m)}`),_&&Z.push(`srcdoc[${_.length}ch]`),!m&&!_&&Z.push("src=(empty) srcdoc=(empty)"),W&&Z.push(`name=${W.slice(0,40)}`),ce!==null&&Z.push(`sandbox="${ce.slice(0,40)}"`),Z.join(" ")},pn=v=>{if(!(v instanceof HTMLIFrameElement))return"";try{let m=v.contentDocument;if(!m)return"cd=null";let _=m.body?.children.length??0,W=m.body?.innerHTML.length??0,ce=m.head?.innerHTML.length??0;return`cd=same-origin readyState=${m.readyState} body[${_}children,${W}ch] head[${ce}ch]`}catch(m){return`cd=cross-origin(${m.message.slice(0,30)})`}},mr=[],Mr=v=>{if(he())return;let m=v.message??String(v.error??"(no message)");m&&(m.toLowerCase().includes("paypal")||m.toLowerCase().includes("zoid")||m.toLowerCase().includes("postrobot")||m.toLowerCase().includes("storage"))&&(K(`window:error ${m.slice(0,140)}`),mr.push(m))},rr=v=>{if(he())return;let m=v.reason instanceof Error?v.reason.message:String(v.reason??"(no reason)");m&&(m.toLowerCase().includes("paypal")||m.toLowerCase().includes("zoid")||m.toLowerCase().includes("postrobot")||m.toLowerCase().includes("storage"))&&(K(`window:rejection ${m.slice(0,140)}`),mr.push(m))},yr={value:0},En=()=>{Rn?.disconnect(),Rn=null,er?.disconnect(),er=null;for(let v of tr.splice(0))clearTimeout(v);jn=!1,Pn&&typeof window<"u"&&(window.removeEventListener("error",Mr),window.removeEventListener("unhandledrejection",rr)),Pn=!1},Tn=()=>{if(!(Pn||he()||In)){if(Pn=!0,mr.length=0,yr.value=0,typeof window<"u"&&(window.addEventListener("error",Mr),window.addEventListener("unhandledrejection",rr)),typeof PerformanceObserver<"u")try{er=new PerformanceObserver(v=>{if(!he())for(let m of v.getEntries()){if(!m.name.toLowerCase().includes("paypal"))continue;yr.value+=1;let _=Math.round(m.duration);K(`net ${_}ms ${m.name.slice(0,90)}`)}}),er.observe({type:"resource",buffered:!0})}catch{}nr?.()}},Br=()=>{St&&(clearTimeout(St),St=null)},zn=()=>{En(),Br()},Fr={setEnabled:v=>{v?Tn():En()}};It.current=Fr,Ht.current&&Tn();let Xt=v=>{if(!v)return!1;let m=v.toLowerCase();return m.includes("zoid destroyed")||m.includes("destroyed all components")||m.includes("window closed")||m.includes("detected container element removed")},B=v=>{if(he()||Xt(v))return;let m=Tr(v)??v;lt(()=>cn.current?.(m))},P=(v,m)=>{if(sn||Er)return;Er=!0,Nn=!0,zn(),jt();let _=_c({kind:v,generationActive:!0,automaticRetryAllowed:O,automaticRetryUsed:ie.current});if(_.action==="retry"){ie.current=!0,ee(!1),De(!1),x(!0),Gt.current?.("retrying"),kn=setTimeout(()=>{sn||mt(W=>W+1)},Cc);return}if(ee(!1),De(!1),x(!1),Fe(!0),_.action!=="ignore"){if(Gt.current?.("exhausted"),_.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",m);return}_.report&&M.error({errorCode:_.report.errorCode,stage:_.report.stage,operationOutcome:_.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime"}),Oe.current||(Oe.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",Ec(v,m)))}};Fe(!1);let ne=async(v,m=Yt.current)=>{if(he())return;let _=m?.sessionId??e;if(yn.current){await yn.current(v,{sessionId:_,accountPatch:m?.accountPatch,nonce:m?.nonce});return}let W=M.startTiming();M.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let ce=()=>{M.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),M.performance({stage:"processing",durationMs:M.elapsed(W),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let Z=on.current,R=m?.accountPatch?.email??yt.current,ae=m?.accountPatch?.userId??Z?.customer?.id??Z?.accountData?.userId??"",ft=m?.accountPatch?.firstName??Z?.customer?.firstName??Z?.accountData?.firstName,Ut=m?.accountPatch?.lastName??Z?.customer?.lastName??Z?.accountData?.lastName,Te=await new ga.PaymentAPI(gt,{telemetry:!1}).processPayment(ae,{sessionId:_,nonce:m?.nonce??Mt.current,paymentMethodCategory:"paypal",tokenizedData:v,accountData:{userId:ae,email:R??Z?.customer?.email??"",...ft?{firstName:ft}:{},...Ut?{lastName:Ut}:{},country:m?.accountPatch?.country??Z?.customer?.country??Z?.accountData?.country??void 0,zip:m?.accountPatch?.zip??Z?.customer?.zip??Z?.accountData?.zip??void 0}});if(Te.ok){if(Nn||sn&&un.current)return;ce(),M.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),lt(()=>wn.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(he())return;let $=await Te.json().catch(()=>null),Y=$?.message??"PayPal payment failed.",qe=Tr(Y)??Y;ce(),Te.status===400&&(typeof $?.declineCode=="string"||!Array.isArray($?.fields))?M.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):Te.status===400||Te.status===422?M.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):M.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:Mc(Te.status),failureCategory:Te.status>=500?"server_error":void 0}),B(qe),lt(()=>rn.current?.(nn("paypal",qe,{code:$?.code,declineCode:$?.declineCode})));return}catch(Z){if(he())return;ce(),M.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let R=Z instanceof Error?Z.message:"PayPal payment failed.",ae=Tr(R)??R;B(ae),lt(()=>rn.current?.(nn("paypal",ae)));return}},U=()=>new Nt.FloPayError("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),Be=v=>he()?Promise.reject(U()):Promise.resolve(v),ut=async v=>{if(he())throw U();xr||Kr();let m=Yt.current,_=m?.sessionId??e,W=m?.nonce??Mt.current;M.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let ce;try{ce=await new ga.PaymentAPI(gt,{telemetry:!1}).createSessionIntent(_,W??"",wt?{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:Nt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE,paymentMethodId:null,intentKind:f==="setup_token"?"setup":"payment"}:{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:null,intentKind:"payment"},{idempotencyKey:vn})}catch(Z){throw M.error({...(0,Nt.classifyTelemetryFailure)(Z,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),Z}if(he())throw U();if(ce.provider!=="paypal"||ce.providerObjectType!==f)throw new Error(v);return M.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),ce.providerObjectId},Ee=(v,m)=>{let _=m?.nonce??Mt.current;if(!_)return;let W=m?.sessionId??e,ce=lo(v)??wr(v)??"provider_declined";new ga.PaymentAPI(gt,{telemetry:!1}).reportSessionIntentDecline(W,_,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:ce}).catch(()=>{})},G=Ie;K("loadScript:scheduled (deferred 1 tick)");let oe=null,q=setTimeout(()=>{if(sn){K("loadScript:skipped (cancelled before defer ran)");return}K("loadScript:start");let v=zt==="live"?"production":zt,m={};f==="subscription"?m={intent:"subscription",vault:!0}:f==="order"&&(m={intent:"capture"}),oe=(0,Ls.loadScript)({clientId:l,currency:u,...m,...v?{environment:v}:{},...v==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let _=!1;oe.then(W=>{if(_=!0,K(`loadScript:resolved inactive=${he()} ns=${!!W} buttons=${!!W?.Buttons}`),he())return;if(!W?.Buttons){K("FAIL: namespace missing Buttons factory"),P("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}M.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),M.performance({stage:"provider_ready",durationMs:M.elapsed(pe.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),M.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let ce=async(Te,$)=>{if(he()||Qe.current!==G)return;let Y=Te.vaultSetupToken??Te.subscriptionID??Te.orderID??"",qe=Y?Vt.current.get(Y):bt.current.get(G);if(!(!qe||!Ot(qe.generation))&&gn(qe.generation)){Vt.current.delete(Y),bt.current.delete(qe.surfaceKey),Ct("approved");try{if(De(!0),lt(()=>cn.current?.(null)),!Y)throw new Nt.FloPayError("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let $e=on.current,_t=zr($n.current??[$e?.customer?.firstName,$e?.customer?.lastName].filter(Boolean).join(" ")),et=Fn({email:qe.accountPatch?.email?.trim()||yt.current?.trim()||$e?.customer?.email?.trim(),firstName:qe.accountPatch?.firstName?.trim()||_t.firstName,lastName:qe.accountPatch?.lastName?.trim()||_t.lastName});if(!(0,Nt.isValidEmail)(et.email)||!(et.firstName||et.lastName))try{let Zt=xc(await $?.order?.get?.());et=Fn({email:Zt.email||et.email,firstName:Zt.firstName||et.firstName,lastName:Zt.lastName||et.lastName})}catch{}if((Le.current||At)&&!(0,Nt.isValidEmail)(et.email)){let Zt=await Ae("PayPal",et);if(!Zt)return;et=Zt}(0,Nt.isValidEmail)(et.email)&&(qe.accountPatch=Fn({...qe.accountPatch,...et}),await Le.current?.(et));let An;f==="setup_token"?An={id:Y,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:Nt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE}:wt?An={id:Y,isPaypal:!0,gateway:"paypal",paymentMethodType:Nt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE}:An={id:Y,isPaypal:!0},await ne(An,qe)}catch($e){B($e instanceof Error?$e.message:"PayPal capture failed.")}finally{he()||De(!1)}}},Z=Te=>{let $=fe?()=>Be(fe):()=>ut(Te);return async()=>He(await $())},R=W.Buttons({style:{layout:"horizontal",height:ha,tagline:!1},..._e==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(Te,$)=>{if(he()){await $.reject();return}Kr();let Y=We.current,qe={};if(Y)try{let et=await Y("paypal");if(he()){await $.reject();return}if(!et.proceed){Yt.current=null,bt.current.delete(G),await $.reject();return}qe={sessionId:et.sessionId,accountPatch:et.accountPatch,nonce:et.nonce}}catch(et){K(`onClick:runBeforeButtonClick rejected msg=${(et instanceof Error?et.message:String(et)).slice(0,120)}`),Yt.current=null,bt.current.delete(G),await $.reject();return}lt(()=>Xn.current?.("paypal"));let $e=Zn(),_t={generation:$e,surfaceKey:G,...qe};Yt.current=_t,bt.current.set(G,_t),rt.current={...L,attempt:$e},await $.resolve(),M.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),M.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),nt.current=M.startTiming()},createOrder:f==="order"?Z("Failed to create PayPal order."):void 0,createSubscription:f==="subscription"?Z("Failed to create PayPal subscription."):void 0,createVaultSetupToken:f==="setup_token"?async()=>He(await ut("Failed to create PayPal setup token.")):void 0,onApprove:ce,onCancel:()=>{if(he())return;let Te=bt.current.get(G)??Yt.current;Te&&bt.current.delete(Te.surfaceKey),Yt.current=null,Ct("cancelled"),M.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),j.current=!0,Jt({generation:Te?.generation,remount:!0,focus:!1})},onError:Te=>{if(he()||Qe.current!==G)return;let $=Te instanceof Error?Te.message:"PayPal failed to render.";if(K(`onError rendered=${In} msg=${$.slice(0,120)}`),In){let Y=bt.current.get(G)??Yt.current;if(Y&&!Ot(Y.generation)||!Y&&Ln())return;if(Xt($)){gn(Y?.generation);return}let{errorCode:qe,popupBlocked:$e,providerDeclined:_t,terminalReason:et}=Ac(Te);if(Ct(et),_t){M.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:et}),Ee(Te,Y),lt(()=>rn.current?.(nn("paypal",$))),Y&&bt.current.delete(Y.surfaceKey),Yt.current=null,gn(Y?.generation);return}M.error({errorCode:qe,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:et}),Y&&bt.current.delete(Y.surfaceKey),Yt.current=null,Jt({generation:Y?.generation,remount:!0,showRetry:!0,focus:!0}),Dn(Te,{code:"paypal_runtime_failed",popupBlocked:$e});return}P(Xt($)?"teardown":"pre_ready_callback",$)}}),ae=R.isEligible();if(K(`isEligible=${ae}`),M.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!ae){ee(!1),P("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}Cr=!0,pr=R,nr=()=>{if(!Pn||jn||he()||In)return;jn=!0,K(`container:dims ${_n(On)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(Rn=new MutationObserver($=>{if(!he()){for(let Y of $)if(Y.type==="childList")Y.addedNodes.forEach(qe=>{if(!(qe instanceof Element))return;let $e=qe.tagName.toLowerCase(),_t=(qe.getAttribute("title")??"").slice(0,40),et=$e==="iframe"?` ${tn(qe)}`:"";K(`child+ ${$e}${_t?` title="${_t}"`:""}${et} dims=${_n(qe)}`)});else if(Y.type==="attributes"&&Y.target instanceof Element){let qe=Y.target;if(qe.tagName.toLowerCase()!=="iframe")continue;let $e=Y.attributeName;($e==="src"||$e==="srcdoc")&&K(`attr~ iframe ${$e}=${$e==="srcdoc"?`[${(qe.getAttribute("srcdoc")??"").length}ch]`:Xe(qe.getAttribute("src"))} dims=${_n(qe)}`)}}}),Rn.observe(On,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let Te=$=>{if(he()||In)return;let Y=On.querySelectorAll("iframe"),qe=typeof document<"u"&&"hasStorageAccess"in document;K(`watchdog:${$} container=${_n(On)} children=${On.childElementCount} iframes=${Y.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${qe} paypalNetRequests=${yr.value}`),Y.forEach(($e,_t)=>{let et=($e.getAttribute("title")??"").slice(0,40);K(` iframe[${_t}] ${_n($e)}${et?` title="${et}"`:""} ${tn($e)}`);let An=pn($e);An&&K(` ${An}`)}),mr.length===0&&K(" (no PayPal/zoid window errors captured)")};tr.push(setTimeout(()=>Te("3s"),3e3)),tr.push(setTimeout(()=>Te("8s"),8e3)),tr.push(setTimeout(()=>Te("15s"),15e3))},nr(),K("render:start");let Ut=M.startTiming();St=setTimeout(()=>{he()||In||(K("watchdog:11s retryable render timeout"),P("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},Sc);let Ue=R.render(On);(async()=>{try{if(await Ue,K(`render:resolved inactive=${he()}`),zn(),he()){jt();return}In=!0,ee(!0),x(!1),Gt.current?.("ready"),M.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),M.performance({stage:"checkout_render",durationMs:M.elapsed(Ut),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(Te){let $=Te instanceof Error?Te.message:"PayPal failed to render.";K(`render:rejected msg=${$.slice(0,120)}`),zn(),P(Xt($)?"teardown":"render_rejected",$)}})()}).catch(W=>{let ce=W instanceof Error?W.message:"PayPal operation failed.";K(`provider:failed msg=${ce.slice(0,120)}`);let Z="script_rejected";_&&Xt(ce)?Z="teardown":_&&Cr&&(Z="render_rejected"),P(Z,ce)})},0);return()=>{sn=!0,clearTimeout(q),kn&&clearTimeout(kn),zn(),It.current===Fr&&(It.current=null),jt(),nt.current=null,rt.current=null}},[O,gt,l,u,d,f,_e,wt,e,fe,Ie,Q,Ae,At,K,Ct]);let xe=ve?(0,Gn.jsxs)("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:ct?"#fef2f2":"#f3f4f6",border:`1px solid ${ct?"#fca5a5":"#d1d5db"}`,borderRadius:6,color:"#111827",font:"11px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word",maxHeight:220,overflowY:"auto"},children:[`FloPay/DirectPayPal-debug (ready=${ge} failed=${ct})`,mn.length===0?`
1
+ "use strict";var oc=Object.create;var da=Object.defineProperty;var ac=Object.getOwnPropertyDescriptor;var ic=Object.getOwnPropertyNames;var sc=Object.getPrototypeOf,lc=Object.prototype.hasOwnProperty;var cc=(e,t)=>{for(var n in t)da(e,n,{get:t[n],enumerable:!0})},ws=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ic(t))!lc.call(e,o)&&o!==n&&da(e,o,{get:()=>t[o],enumerable:!(r=ac(t,o))||r.enumerable});return e};var ks=(e,t,n)=>(n=e!=null?oc(sc(e)):{},ws(t||!e||!e.__esModule?da(n,"default",{value:e,enumerable:!0}):n,e)),dc=e=>ws(da({},"__esModule",{value:!0}),e);var Gd={};cc(Gd,{DirectPayPalButton:()=>Uo,FloPayAutomaticPaymentButton:()=>Fl,FloPayCardSetup:()=>Ol,FloPayCardSetupError:()=>Qo,FloPayCheckout:()=>Ua,FloPayProvider:()=>$o,SplitCardForm:()=>Na,VaultCardFields:()=>Po,dropThirdPartyOnlyError:()=>zl.dropThirdPartyOnlyError,useCheckout:()=>Ns,useFloPay:()=>Tr,usePayPalFloPay:()=>ma});module.exports=dc(Gd);var zl=require("@flopay/shared");var qa=require("@flopay/js"),nr=require("@flopay/shared"),Ze=require("react");var Nt=require("react/jsx-runtime");function uc(){return(0,Nt.jsxs)(Nt.Fragment,{children:[(0,Nt.jsxs)("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,Nt.jsx)("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),(0,Nt.jsx)("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",(0,Nt.jsx)("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"#9ca3af",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem"},"aria-hidden":"true",children:(0,Nt.jsx)("path",{d:"M9 18l6-6-6-6"})})]})}function pc(){return(0,Nt.jsx)(Nt.Fragment,{children:"Go back"})}function mc(){return(0,Nt.jsx)(Nt.Fragment,{children:"Secure card checkout"})}function oo(e){return e!==void 0&&(e===""||e===null||e===!1)}function ao({content:e}){return(0,Nt.jsx)(Nt.Fragment,{children:e===void 0?(0,Nt.jsx)(uc,{}):e})}function io({content:e}){return(0,Nt.jsx)(Nt.Fragment,{children:e===void 0?(0,Nt.jsx)(pc,{}):e})}function Fo({content:e}){return(0,Nt.jsx)(Nt.Fragment,{children:e===void 0?(0,Nt.jsx)(mc,{}):e})}var Et=require("@flopay/shared"),yc="Checkout is temporarily unavailable. Please try again later.";function ii(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof Et.FloPayError&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function fc(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 Is(){return new Et.FloPayError(yc,"api_error",{code:"CheckoutInitializationFailed"})}function si(e){return!!e?.gateways?.worldpayCorporateGateway}function Fr(e){return e?.status==="open"&&si(e)}function Rs(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")||Fr(r))||t&&e?.data.paypal?.publishableKey)}function _s(e,t){if(t&&(!(e instanceof Et.FloPayError)||e.type==="authentication_error"))return ii(e);if(!(e instanceof Et.FloPayError&&fc(e))){if(!t&&!(e instanceof Et.FloPayError)&&(e instanceof TypeError||e instanceof SyntaxError))return{...(0,Et.classifyTelemetryFailure)(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof Et.FloPayError)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof Et.FloPayError))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function so(e,t,n,r={}){let o;return(a={})=>{if(o)return o;let l={...r,...a,email:a.email?.trim()||r.email?.trim()},d=(0,Et.isCardHolderNamePlaceholder)(l.firstName,l.lastName);if(!(0,Et.isValidEmail)(l.email))return Promise.reject(new Et.FloPayError("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let u={};for(let[m,h]of Object.entries(l)){if(d&&m.endsWith("Name")||typeof h!="string")continue;let b=h.trim();b&&(u[m]=b)}return o=e.claimCheckoutSession(t,n,{accountData:u}),o.catch(()=>{}),o}}function Es(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 li(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 Ts(e,t){let n=e.products??[...(e.subscriptions??[]).map(a=>({type:"subscription",code:a.code??a.providerPlanId,name:a.subscriptionName??a.providerPlanName??a.code??a.providerPlanId??null,quantity:a.quantity??1,totalAmount:a.totalAmount,overrideAmount:a.overrideAmount,currency:a.currency,metadata:a.metadata})),...(e.items??[]).map(a=>({type:"item",code:a.code??a.providerItemId,name:a.itemName??a.providerItemName??a.code??a.providerItemId??null,quantity:a.quantity??1,totalAmount:a.totalAmount,overrideAmount:a.overrideAmount,currency:a.currency,metadata:a.metadata}))],r=n.reduce((a,l)=>a+(l.overrideAmount??l.totalAmount??0),0),o=e.currency??n.find(a=>a.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:n.some(a=>a.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((a,l)=>({uuid:`synthetic-${a.type??"item"}-${l}`,checkoutSessionId:"",type:a.type??"item",code:a.code,name:a.name??null,quantity:a.quantity??1,totalAmount:a.totalAmount,overrideAmount:a.overrideAmount??null,currency:a.currency??o,metadata:a.metadata??null}))}}function Vr(e){if((0,Et.isCardHolderNamePlaceholder)(e))return{};let[t,...n]=e?.trim().split(/\s+/)??[];return t?{firstName:t,lastName:n.join(" ")||void 0}:{}}function ci(e,t){return t?{...e,...t}:e}function nn(e,t,n){let r=typeof t=="string"?t:t.message,o=typeof t=="string"?n?.code:n?.code??t.code,a=typeof t=="string"?n?.declineCode:n?.declineCode??t.declineCode;return{method:e,message:r,...o?{code:o}:{},...a?{declineCode:a}:{}}}var gc=[{match:/^paypal authorization required\.?$/i,replacement:"For your additional security, please re-authenticate this payment via PayPal."}];function Dr(e){if(typeof e!="string")return e??void 0;let t=e.trim();if(!t)return e;for(let{match:n,replacement:r}of gc)if(n.test(t))return r;return e}function Ir(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Nr(e){return e?.status==="authorized"||e?.status==="complete"}function As(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function ua(e){let t=As(e);return new Et.FloPayError(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function pa(e){return e instanceof Et.FloPayError||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function lo(e){let t=As(e),n="checkout_processing_timeout";return t?n="authorization_expired":e?.status==="expired"&&(n="checkout_session_expired"),new Et.FloPayError(t?"Authorization has expired.":"Automatic payment failed. Please try again.","api_error",{code:n})}function Do(e,t){return e==="processing"||(0,Et.isMoneySettledOutcome)(e,t)}function xs(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function Ms(e,t){let n=e;if((0,Et.isSetupIntentClientSecret)(t)){if(!n?.retrieveSetupIntent)return null;let{setupIntent:a,error:l}=await n.retrieveSetupIntent(t);if(l)throw new Et.FloPayError(l.message??"Failed to retrieve setup intent.","api_error",{...l.code?{code:l.code}:{}});return a??null}if(!n?.retrievePaymentIntent)return null;let{paymentIntent:r,error:o}=await n.retrievePaymentIntent(t);if(o)throw new Et.FloPayError(o.message??"Failed to retrieve payment intent.","api_error",{...o.code?{code:o.code}:{}});return r??null}function Bs(e,t="automatic"){return{...typeof e=="number"&&Number.isFinite(e)&&e>0?{mode:"payment",amount:e,captureMethod:t==="manual"?"manual":"automatic_async"}:{mode:"setup"},paymentMethodTypes:["card"],setupFutureUsage:"off_session"}}function di(e){let t=e&&typeof e=="object"?e:null;return t?.name==="IntegrationError"||t?.code==="elements_intent_mismatch"||t?.type==="invalid_request_error"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function No(e){let t=[e?.id,e?.originalPaymentMethodId];for(let n of t)if(typeof n=="string"&&n.startsWith("pm_"))return n}var xr=require("@flopay/js"),qe=require("@flopay/shared"),P=ks(require("react"),1);var ui=require("react"),Qn=(0,ui.createContext)({flopay:null,paypalFlopay:null,billingApiUrl:""}),dr=(0,ui.createContext)({session:null,loading:!1,error:null});var ba=require("@flopay/js"),qt=require("@flopay/shared"),zs=require("@paypal/paypal-js"),E=require("react");var Fs=require("@flopay/shared"),ur=require("react"),Rr=require("react/jsx-runtime");function Mn(e,t=!1){let{firstName:n,lastName:r,...o}=e,a=n?.trim(),l=r?.trim();return{...o,...a||t?{firstName:a??""}:{},...l||t?{lastName:l??""}:{}}}function co(){let[e,t]=(0,ur.useState)(null),n=(0,ur.useRef)(null),r=(0,ur.useRef)(0),o=(0,ur.useCallback)((l,d)=>(n.current?.(null),r.current+=1,t({id:r.current,methodLabel:l,identity:d}),new Promise(u=>{n.current=u})),[]),a=(0,ur.useCallback)(l=>{let d=n.current;n.current=null,t(null),d?.(l)},[]);return(0,ur.useEffect)(()=>()=>{n.current?.(null),n.current=null},[]),{request:e,collect:o,finish:a}}function uo({identity:e,methodLabel:t,onComplete:n,onCancel:r,submitting:o=!1,testId:a="flopay-buyer-identity-pane"}){let[l,d]=(0,ur.useState)(e.email?.trim()??""),u=(0,Fs.isValidEmail)(l.trim());return(0,Rr.jsxs)("div",{"data-testid":a,style:{display:"flex",flexDirection:"column",gap:"0.75rem",padding:"0.875rem",border:"1px solid #d1d5db",borderRadius:8,background:"#fff",color:"#262833"},children:[(0,Rr.jsxs)("div",{style:{fontWeight:700},children:["Continue with ",t]}),(0,Rr.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,Rr.jsx)("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:l,onChange:m=>d(m.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),(0,Rr.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[r&&(0,Rr.jsx)("button",{type:"button",onClick:r,style:{flex:1,minHeight:42},children:"Cancel"}),(0,Rr.jsxs)("button",{type:"button",disabled:!u||o,onClick:()=>{n(Mn({...e,email:l.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}function hc(e){if(e instanceof Error)return e.message;if(typeof e=="object"&&e!==null){let t=e.message;return typeof t=="string"?t:void 0}return typeof e=="string"?e:void 0}function jr(e){if(typeof e!="string")return;let t=e.trim();return/^[a-z0-9_.-]{1,64}$/i.test(t)?t:void 0}function _r(e){if(typeof e!="object"||e===null)return;let t=e;return jr(t.code)??jr(t.type)??jr(t.name)}function po(e){if(!(typeof e!="object"||e===null))return jr(e.decline_code)}function Lo(e){return typeof e!="object"||e===null?!1:jr(e.type)?.toLowerCase()==="card_error"||po(e)!==void 0}function Er(e){let t=hc(e)?.toLowerCase()??"",r=`${_r(e)?.toLowerCase()??""} ${t}`;return r.includes("popup")&&r.includes("block")}var Ds=require("@flopay/shared"),Oo=require("react");function Tr(){return(0,Oo.useContext)(Qn).flopay}function ma(){return(0,Oo.useContext)(Qn).paypalFlopay??null}function Ns(){return(0,Oo.useContext)(dr)}function Ls(){return(0,Oo.useContext)(Qn).billingApiUrl||(0,Ds.resolveBillingApiUrl)()}function ya(e){let t=e??(typeof navigator>"u"?"":navigator.userAgent),n=r=>({inAppBrowser:r!=="none",appFamily:r,popupCapability:"unknown"});return t?/FBAN|FBAV|FB_IAB|FBIOS/i.test(t)?n("facebook"):/Instagram/i.test(t)?n("instagram"):/musical_ly|BytedanceWebview|TikTok/i.test(t)?n("tiktok"):/Twitter|Snapchat|Pinterest|LinkedInApp|Line\/|MicroMessenger|GSA\//i.test(t)?n("other_in_app"):/Android.*;\s?wv\)/.test(t)||/(iPhone|iPad|iPod).*AppleWebKit(?!.*Safari)/.test(t)?n("generic_webview"):n("none"):n("none")}function fa(e,t,n){return!e.inAppBrowser||n!=="order"?"popup":t==="app_switch"||t==="redirect"?t:"popup"}var Os=require("@flopay/shared"),Wr=require("react");function dt(e){if(!e)return;let t=n=>{console.error("[FloPay] Merchant callback failed; checkout continued.",n)};try{Promise.resolve(e()).catch(t)}catch(n){t(n)}}var ga=require("react"),Kr=typeof window>"u"?ga.useEffect:ga.useLayoutEffect;var bc={"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 vc(e){return e==="stripe"||e==="paypal"?e:void 0}function Pc(e){let t=vc(e.provider),n={schemaVersion:Os.FLO_INSTRUMENT_SCHEMA_VERSION,...t?{gateway:t}:{}};if(e.class==="lifecycle"){let r=bc[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 pi=new Set(["checkout_mount","sdk_loaded","form_rendered","card_expanded"]);function mo(e,t){let n=(0,Wr.useRef)(e);n.current=e;let r=(0,Wr.useRef)(new Set),o=(0,Wr.useRef)(t),a=(0,Wr.useRef)(t);return Kr(()=>{a.current=t,o.current!==t&&(o.current=t,r.current.clear())},[t]),(0,Wr.useCallback)(l=>{if(a.current!==t)return;let d=Pc(l);if(d){if(pi.has(d.name)){if(r.current.has(d.name))return;r.current.add(d.name)}dt(()=>n.current?.(d))}},[t])}var Cc=Symbol.for("@flopay/js.telemetry.bridge.v1"),Sc=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function wc(){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 kc(e){let t=wc(),n=(o,a)=>o?o.bind(e):a,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[Sc];return kc(t?.(e)??{})}function en(e){if(e)return e[Cc]}var kn=require("react");function zo(e){let t=(0,kn.useRef)(0),n=(0,kn.useRef)(null),r=(0,kn.useRef)(null),o=(0,kn.useCallback)((y=r.current)=>{y?.timer&&(clearTimeout(y.timer),y.timer=null)},[]),a=(0,kn.useCallback)(y=>{o();let C=t.current+1;return t.current=C,n.current=null,r.current={generation:C,method:y,timer:null,yieldedControl:!1},C},[o]),l=(0,kn.useCallback)(y=>{let C=r.current;return y!==void 0&&C?.generation!==y?!1:(o(C),r.current=null,(y===void 0||n.current===y)&&(n.current=null),!0)},[o]),d=(0,kn.useCallback)(y=>{let C=r.current,_=y??C?.generation??t.current;(y===void 0||C?.generation===y)&&(o(C),r.current=null),n.current=_},[o]),u=(0,kn.useCallback)(y=>n.current===(y??t.current),[]),m=(0,kn.useCallback)(y=>r.current?.generation===y&&n.current!==y,[]),h=(0,kn.useCallback)(()=>{let y=r.current;y&&(y.yieldedControl=!0,o(y))},[o]),b=(0,kn.useCallback)(()=>{let y=r.current;!y?.yieldedControl||document.visibilityState!=="visible"||(o(y),y.timer=setTimeout(()=>{y.timer=null,r.current?.generation===y.generation&&(r.current=null,n.current=y.generation,e(y.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"}))},600))},[o,e]);return(0,kn.useEffect)(()=>{let y=()=>{document.visibilityState==="visible"?b():h()};return document.addEventListener("visibilitychange",y),window.addEventListener("blur",h),window.addEventListener("focus",b),()=>{document.removeEventListener("visibilitychange",y),window.removeEventListener("blur",h),window.removeEventListener("focus",b),o()}},[o,h,b]),{startAttempt:a,finishAttempt:l,invalidateAttempt:d,isAttemptInvalidated:u,isAttemptCurrent:m,generationRef:t}}var er=require("react/jsx-runtime"),va=45,Ic=1e3,Rc=11e3,_c=["https://www.paypal.com","https://www.sandbox.paypal.com"],mi="We couldn't open PayPal. Try again or choose another payment method.",Ec={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"};function Tc(e){return e.includes("No ack for postMessage init()")&&_c.some(t=>e.includes(t))&&e.includes("10000ms")}var Ac={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 xc(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:Ac[e.kind]??null}}function Mc(e,t){return e==="watchdog_expired"?"paypal_render_timeout":Tc(t)?"paypal_init_timeout":"paypal_init_failure"}function Bc(e,t=!1){return e?t?`${mi} Open this page in your system browser, then try again.`:`${mi} Allow pop-ups for this site, then try again.`:mi}function Fc(e){let t=Lo(e),n=Er(e);return t?{errorCode:"PROVIDER_RUNTIME_FAILED",popupBlocked:n,providerDeclined:t,terminalReason:"provider_declined"}:{errorCode:n?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",popupBlocked:n,providerDeclined:t,terminalReason:n?"popup_blocked":"provider_error"}}function Dc(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 Nc(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function Us({sessionId:e,nonce:t,billingApiUrl:n,email:r,billingName:o,onBuyerIdentityReady:a,clientId:l,environment:d,currency:u,isSubscription:m,providerObjectType:h,approvalPresentation:b,onTokenizedBody:y,onComplete:C,onErrorChange:_,onDecline:ne,onTechnicalFailure:z,isProcessing:ue=!1,onLoadStateChange:k,onInitializationStateChange:$,allowAutomaticRetry:U=!0,onButtonClick:se,runBeforeButtonClick:Se,session:Pe,existingOrderId:pe,telemetry:ye,telemetryContext:yt,onInstrument:He,debug:we=!1}){let Me=Tr(),fe=mo(He,e),Re=(0,E.useMemo)(()=>{if(Me)return null;let O=ha({billingApiUrl:n,sdkPackage:"@flopay/react",sdkVersion:qt.SDK_VERSION,enabled:ye!==!1});return O.setCheckoutContext(yt??{}),O.beginCheckout(yt??{}),O},[n,Me,ye,yt?.checkoutMode,yt?.layout]),Ge=(0,E.useMemo)(()=>en(Me),[Me]);(0,E.useEffect)(()=>()=>{Re&&Re.flush().catch(()=>{}).finally(()=>Re.destroy())},[Re]);let oe=(0,E.useMemo)(()=>({error:O=>{Ge?Ge.error(O):Re?.error(O),fe({class:"technical_error",errorCode:O.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":O.errorCode,requestCategory:O.requestCategory,provider:O.provider})},log:O=>{Ge?Ge.log(O):Re?.log(O),fe({class:"lifecycle",name:O.name,provider:O.provider})},performance:O=>{Ge?Ge.performance(O):Re?.performance(O)},terminal:O=>{Ge?Ge.terminal(O):Re?.terminal(O)},startTiming:()=>Ge?.now()??Re?.now()??0,elapsed:O=>Ge?.elapsed(O)??Math.max(0,(Re?.now()??O)-O)}),[fe,Ge,Re]),_e=(0,E.useRef)(null),ge=(0,E.useRef)(0),nt=(0,E.useRef)(null),rt=(0,E.useRef)(null),M=(0,E.useRef)(null),V=(0,E.useRef)(!1),[ie,ae]=(0,E.useState)(!1),[Ye,Ce]=(0,E.useState)(!1),[N,ut]=(0,E.useState)(0),ot=(0,E.useRef)(0),[he,le]=(0,E.useState)(!1),H=(0,E.useRef)(!1),Le=(0,E.useRef)(!1),[Oe,ze]=(0,E.useState)(!1),[je,Be]=(0,E.useState)(!1),{request:Ne,collect:ce,finish:dn}=co(),Jt=(0,E.useRef)({sessionId:e,required:!(0,qt.isValidEmail)(r?.trim()||Pe?.customer?.email?.trim())});Jt.current.sessionId!==e&&(Jt.current={sessionId:e,required:!(0,qt.isValidEmail)(r?.trim()||Pe?.customer?.email?.trim())});let ee=Jt.current.required,at=(0,E.useMemo)(()=>n.replace(/\/+$/,""),[n]),Q=Pe?.gateways?.paypal?.providerObjectType??h,be=Q??(m?"subscription":"order"),[g]=(0,E.useState)(ya),q=Pe?.gateways?.paypal?.approvalPresentation??b,Fe=fa(g,q==="app_switch"?"app_switch":void 0,be),Je=Q==="order"||Q==="setup_token",De=(0,E.useMemo)(()=>JSON.stringify([at,l,u,d??"",be,Je,Fe,e,pe??""]),[at,l,u,d,pe,be,Je,Fe,e]),$t=(0,E.useRef)(De),W=$t.current!==De,St=(0,E.useRef)(we),Tt=(0,E.useRef)(null),[ft,un]=(0,E.useState)([]),G=(0,E.useCallback)(O=>{St.current&&un(Ve=>[...Ve,`${new Date().toISOString().slice(11,23)} ${O}`])},[]);(0,E.useEffect)(()=>{St.current=we,we&&G("debug:enabled"),Tt.current?.setEnabled(we)},[G,we]);let Lt=(0,E.useRef)(y),vn=(0,E.useRef)(C),pn=(0,E.useRef)(_),mn=(0,E.useRef)(ne),In=(0,E.useRef)(z),Bn=(0,E.useRef)(se),Fn=(0,E.useRef)(k),Xt=(0,E.useRef)($),Ke=(0,E.useRef)(a),Qe=(0,E.useRef)(Se),wt=(0,E.useRef)(Pe),rn=(0,E.useRef)(r),kt=(0,E.useRef)(o),Vn=(0,E.useRef)(t),gt=(0,E.useRef)(null),At=(0,E.useRef)(new Map),Ot=(0,E.useRef)(new Map),yn=(0,E.useRef)(!1);(0,E.useEffect)(()=>(yn.current=!0,()=>{yn.current=!1}),[]),(0,E.useEffect)(()=>{Lt.current=y},[y]),(0,E.useEffect)(()=>{Ke.current=a},[a]),(0,E.useEffect)(()=>{vn.current=C},[C]),(0,E.useEffect)(()=>{pn.current=_},[_]),(0,E.useEffect)(()=>{mn.current=ne},[ne]),(0,E.useEffect)(()=>{In.current=z},[z]),(0,E.useEffect)(()=>{Bn.current=se},[se]),(0,E.useEffect)(()=>{Fn.current=k},[k]),(0,E.useEffect)(()=>{Xt.current=$},[$]),(0,E.useEffect)(()=>{Qe.current=Se},[Se]),(0,E.useEffect)(()=>{wt.current=Pe},[Pe]),(0,E.useEffect)(()=>{rn.current=r},[r]),(0,E.useEffect)(()=>{kt.current=o},[o]),(0,E.useEffect)(()=>{Vn.current=t},[t]),(0,E.useEffect)(()=>{ot.current=N},[N]),(0,E.useEffect)(()=>{he&&M.current?.focus()},[he,N]);let zt=(0,E.useCallback)(()=>{window.setTimeout(()=>{M.current?.focus()},0)},[]),xt=(0,E.useCallback)(()=>{ae(!1),ut(O=>O+1)},[]),Pn=(0,E.useCallback)(()=>{le(!1),(_e.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??_e.current)?.focus?.()},[]);(0,E.useEffect)(()=>{!ie||!V.current||(V.current=!1,Pn())},[Pn,ie,N]);let Cn=(0,E.useCallback)((O,Ve)=>{let K=Ve?.popupBlocked??Er(O),Rt=Bc(K,g.inAppBrowser),Mt=In.current;if(Mt){let Gt=K&&g.inAppBrowser?new qt.FloPayError(Rt,"api_error",{code:Ve?.code??"paypal_popup_blocked"}):O;Mt("paypal",Gt,Ve);return}pn.current?.(Rt)},[g.inAppBrowser]),It=(0,E.useCallback)(O=>{let Ve=nt.current,K=rt.current;Ve===null||!K||(oe.log({...K,name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:O}),oe.performance({...K,stage:"overlay_return",durationMs:oe.elapsed(Ve),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:O}),nt.current=null)},[oe]),de=(0,E.useCallback)((O,Ve,K)=>{let Rt=rt.current;It("overlay_timeout"),Rt&&oe.error({...Rt,errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),Cn(Ve,K),le(!0),xt(),zt()},[It,zt,Cn,xt,oe]),{finishAttempt:on,generationRef:jn,invalidateAttempt:Wt,isAttemptCurrent:Vt,isAttemptInvalidated:an,startAttempt:rr}=zo(de),Dn=(0,E.useCallback)(()=>(le(!1),rr("paypal")),[rr]),Ht=(0,E.useCallback)(O=>{Wt(O?.generation),O?.showRetry&&le(!0),O?.remount&&xt(),O?.focus!==!1&&zt()},[zt,Wt,xt]),$e=O=>{let Ve=gt.current;return Ve&&Ot.current.set(O,Ve),O};(0,E.useEffect)(()=>{$t.current!==De&&($t.current=De,H.current=!1,Le.current=!1,ae(!1),Ce(!1),ze(!1),Xt.current?.("loading"))},[De]),(0,E.useEffect)(()=>{dt(()=>Fn.current?.(ie&&!Oe))},[ie,Oe]);let fn=(0,qt.normalizeGatewayEnvironment)(d);(0,E.useEffect)(()=>{let O={attempt:jn.current+1,...g,presentationMode:Fe},Ve=()=>rt.current??O,K={error:B=>oe.error({...B,...Ve()}),log:B=>oe.log({...B,...Ve()}),performance:B=>oe.performance({...B,...Ve()}),terminal:B=>oe.terminal({...B,...Ve()}),startTiming:oe.startTiming,elapsed:oe.elapsed},Rt=l?`${l.slice(0,6)}\u2026(len ${l.length})`:"(empty)",Mt=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(G(`mount clientId=${Rt} env=${d??"(unset)"}\u2192${fn??"live"} ccy=${u} sub=${m}`),G(`ua=${Mt.slice(0,80)}${Mt.length>80?"\u2026":""}`),!l){G("FAIL: clientId empty \u2014 gateway misconfigured"),ze(!0),K.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(!_e.current){G("FAIL: containerRef not attached");return}ge.current=K.startTiming(),K.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Gt=!1,Kn=!1,Ee=()=>Gt||Kn,sn,Wn=!1,Sr=()=>{sn=(0,qt.generateIdempotencyKey)(),sn||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),Wn=!0},or=null,Lr=!1,Or=null,ar=!1,Mr=()=>{!Or||ar||(ar=!0,Or.close().catch(()=>{}))},Rn=!1,ir=!1,Ft=_e.current,Nn=null,Hn=null,Gn=[],ht=null,_n=!1,Yn=!1,sr=null,gn=B=>{if(!B||typeof B.getBoundingClientRect!="function")return"(no rect)";let f=B.getBoundingClientRect();return`${Math.round(f.width)}\xD7${Math.round(f.height)}`},et=B=>{if(!B)return"(empty)";try{let f=new URL(B,typeof window>"u"?"https://localhost":window.location.href),L=f.pathname.toLowerCase();return L.includes("checkcaptcha")||L.includes("captcha")?`CAPTCHA(${f.host}${L})`:L.includes("risk")||L.includes("challenge")?`RISK(${f.host}${L})`:L.includes("smart/buttons")?`smart-buttons(${f.host})`:`${f.host}${L}`.slice(0,100)}catch{return B.slice(0,80)}},hn=B=>{let f=B.getAttribute("src"),L=B.getAttribute("srcdoc"),S=B.getAttribute("name"),I=B.getAttribute("sandbox"),A=[];return f&&A.push(`src=${et(f)}`),L&&A.push(`srcdoc[${L.length}ch]`),!f&&!L&&A.push("src=(empty) srcdoc=(empty)"),S&&A.push(`name=${S.slice(0,40)}`),I!==null&&A.push(`sandbox="${I.slice(0,40)}"`),A.join(" ")},ln=B=>{if(!(B instanceof HTMLIFrameElement))return"";try{let f=B.contentDocument;if(!f)return"cd=null";let L=f.body?.children.length??0,S=f.body?.innerHTML.length??0,I=f.head?.innerHTML.length??0;return`cd=same-origin readyState=${f.readyState} body[${L}children,${S}ch] head[${I}ch]`}catch(f){return`cd=cross-origin(${f.message.slice(0,30)})`}},Ln=[],wr=B=>{if(Ee())return;let f=B.message??String(B.error??"(no message)");f&&(f.toLowerCase().includes("paypal")||f.toLowerCase().includes("zoid")||f.toLowerCase().includes("postrobot")||f.toLowerCase().includes("storage"))&&(G(`window:error ${f.slice(0,140)}`),Ln.push(f))},zr=B=>{if(Ee())return;let f=B.reason instanceof Error?B.reason.message:String(B.reason??"(no reason)");f&&(f.toLowerCase().includes("paypal")||f.toLowerCase().includes("zoid")||f.toLowerCase().includes("postrobot")||f.toLowerCase().includes("storage"))&&(G(`window:rejection ${f.slice(0,140)}`),Ln.push(f))},kr={value:0},On=()=>{Nn?.disconnect(),Nn=null,Hn?.disconnect(),Hn=null;for(let B of Gn.splice(0))clearTimeout(B);Yn=!1,_n&&typeof window<"u"&&(window.removeEventListener("error",wr),window.removeEventListener("unhandledrejection",zr)),_n=!1},bn=()=>{if(!(_n||Ee()||Rn)){if(_n=!0,Ln.length=0,kr.value=0,typeof window<"u"&&(window.addEventListener("error",wr),window.addEventListener("unhandledrejection",zr)),typeof PerformanceObserver<"u")try{Hn=new PerformanceObserver(B=>{if(!Ee())for(let f of B.getEntries()){if(!f.name.toLowerCase().includes("paypal"))continue;kr.value+=1;let L=Math.round(f.duration);G(`net ${L}ms ${f.name.slice(0,90)}`)}}),Hn.observe({type:"resource",buffered:!0})}catch{}sr?.()}},Yr=()=>{ht&&(clearTimeout(ht),ht=null)},En=()=>{On(),Yr()},Br={setEnabled:B=>{B?bn():On()}};Tt.current=Br,St.current&&bn();let Sn=B=>{if(!B)return!1;let f=B.toLowerCase();return f.includes("zoid destroyed")||f.includes("destroyed all components")||f.includes("window closed")||f.includes("detected container element removed")},zn=B=>{if(Ee()||Sn(B))return;let f=Dr(B)??B;dt(()=>pn.current?.(f))},st=(B,f)=>{if(Gt||Lr)return;Lr=!0,Kn=!0,En(),Mr();let L=xc({kind:B,generationActive:!0,automaticRetryAllowed:U,automaticRetryUsed:H.current});if(L.action==="retry"){H.current=!0,ae(!1),Be(!1),Ce(!0),Xt.current?.("retrying"),or=setTimeout(()=>{Gt||ut(S=>S+1)},Ic);return}if(ae(!1),Be(!1),Ce(!1),ze(!0),L.action!=="ignore"){if(Xt.current?.("exhausted"),L.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",f);return}L.report&&K.error({errorCode:L.report.errorCode,stage:L.report.stage,operationOutcome:L.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime"}),Le.current||(Le.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",Mc(B,f)))}};ze(!1);let Jn=async(B,f=gt.current)=>{if(Ee())return;let L=f?.sessionId??e;if(Lt.current){await Lt.current(B,{sessionId:L,accountPatch:f?.accountPatch,nonce:f?.nonce});return}let S=K.startTiming();K.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let I=()=>{K.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),K.performance({stage:"processing",durationMs:K.elapsed(S),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let A=wt.current,w=f?.accountPatch?.email??rn.current,J=f?.accountPatch?.userId??A?.customer?.id??A?.accountData?.userId??"",Xe=f?.accountPatch?.firstName??A?.customer?.firstName??A?.accountData?.firstName,Dt=f?.accountPatch?.lastName??A?.customer?.lastName??A?.accountData?.lastName,me=await new ba.PaymentAPI(at,{telemetry:!1}).processPayment(J,{sessionId:L,nonce:f?.nonce??Vn.current,paymentMethodCategory:"paypal",tokenizedData:B,accountData:{userId:J,email:w??A?.customer?.email??"",...Xe?{firstName:Xe}:{},...Dt?{lastName:Dt}:{},country:f?.accountPatch?.country??A?.customer?.country??A?.accountData?.country??void 0,zip:f?.accountPatch?.zip??A?.customer?.zip??A?.accountData?.zip??void 0}});if(me.ok){if(Kn||Gt&&yn.current)return;I(),K.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),dt(()=>vn.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(Ee())return;let v=await me.json().catch(()=>null),x=v?.message??"PayPal payment failed.",re=Dr(x)??x;I(),me.status===400&&(typeof v?.declineCode=="string"||!Array.isArray(v?.fields))?K.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):me.status===400||me.status===422?K.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):K.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:Nc(me.status),failureCategory:me.status>=500?"server_error":void 0}),zn(re),dt(()=>mn.current?.(nn("paypal",re,{code:v?.code,declineCode:v?.declineCode})));return}catch(A){if(Ee())return;I(),K.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let w=A instanceof Error?A.message:"PayPal payment failed.",J=Dr(w)??w;zn(J),dt(()=>mn.current?.(nn("paypal",J)));return}},Zt=()=>new qt.FloPayError("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),_t=B=>Ee()?Promise.reject(Zt()):Promise.resolve(B),D=async B=>{if(Ee())throw Zt();Wn||Sr();let f=gt.current,L=f?.sessionId??e,S=f?.nonce??Vn.current;K.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let I;try{I=await new ba.PaymentAPI(at,{telemetry:!1}).createSessionIntent(L,S??"",Je?{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:qt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE,paymentMethodId:null,intentKind:be==="setup_token"?"setup":"payment"}:{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:null,intentKind:"payment"},{idempotencyKey:sn})}catch(A){throw K.error({...(0,qt.classifyTelemetryFailure)(A,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),A}if(Ee())throw Zt();if(I.provider!=="paypal"||I.providerObjectType!==be)throw new Error(B);return K.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),I.providerObjectId},F=(B,f)=>{let L=f?.nonce??Vn.current;if(!L)return;let S=f?.sessionId??e,I=po(B)??_r(B)??"provider_declined";new ba.PaymentAPI(at,{telemetry:!1}).reportSessionIntentDecline(S,L,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:I}).catch(()=>{})},j=N;G("loadScript:scheduled (deferred 1 tick)");let Y=null,pt=setTimeout(()=>{if(Gt){G("loadScript:skipped (cancelled before defer ran)");return}G("loadScript:start");let B=fn==="live"?"production":fn,f={};be==="subscription"?f={intent:"subscription",vault:!0}:be==="order"&&(f={intent:"capture"}),Y=(0,zs.loadScript)({clientId:l,currency:u,...f,...B?{environment:B}:{},...B==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let L=!1;Y.then(S=>{if(L=!0,G(`loadScript:resolved inactive=${Ee()} ns=${!!S} buttons=${!!S?.Buttons}`),Ee())return;if(!S?.Buttons){G("FAIL: namespace missing Buttons factory"),st("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}K.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),K.performance({stage:"provider_ready",durationMs:K.elapsed(ge.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),K.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let I=async(me,v)=>{if(Ee()||ot.current!==j)return;let x=me.vaultSetupToken??me.subscriptionID??me.orderID??"",re=x?Ot.current.get(x):At.current.get(j);if(!(!re||!Vt(re.generation))&&on(re.generation)){Ot.current.delete(x),At.current.delete(re.surfaceKey),It("approved");try{if(Be(!0),dt(()=>pn.current?.(null)),!x)throw new qt.FloPayError("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let ke=wt.current,xe=Vr(kt.current??[ke?.customer?.firstName,ke?.customer?.lastName].filter(Boolean).join(" ")),Ie=Mn({email:re.accountPatch?.email?.trim()||rn.current?.trim()||ke?.customer?.email?.trim(),firstName:re.accountPatch?.firstName?.trim()||xe.firstName,lastName:re.accountPatch?.lastName?.trim()||xe.lastName});if(!(0,qt.isValidEmail)(Ie.email)||!(Ie.firstName||Ie.lastName))try{let vt=Dc(await v?.order?.get?.());Ie=Mn({email:vt.email||Ie.email,firstName:vt.firstName||Ie.firstName,lastName:vt.lastName||Ie.lastName})}catch{}if((Ke.current||ee)&&!(0,qt.isValidEmail)(Ie.email)){let vt=await ce("PayPal",Ie);if(!vt)return;Ie=vt}(0,qt.isValidEmail)(Ie.email)&&(re.accountPatch=Mn({...re.accountPatch,...Ie}),await Ke.current?.(Ie));let tt;be==="setup_token"?tt={id:x,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:qt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE}:Je?tt={id:x,isPaypal:!0,gateway:"paypal",paymentMethodType:qt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE}:tt={id:x,isPaypal:!0},await Jn(tt,re)}catch(ke){zn(ke instanceof Error?ke.message:"PayPal capture failed.")}finally{Ee()||Be(!1)}}},A=me=>{let v=pe?()=>_t(pe):()=>D(me);return async()=>$e(await v())},w=S.Buttons({style:{layout:"horizontal",height:va,tagline:!1},...Fe==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(me,v)=>{if(Ee()){await v.reject();return}Sr();let x=Qe.current,re={};if(x)try{let Ie=await x("paypal");if(Ee()){await v.reject();return}if(!Ie.proceed){gt.current=null,At.current.delete(j),await v.reject();return}re={sessionId:Ie.sessionId,accountPatch:Ie.accountPatch,nonce:Ie.nonce}}catch(Ie){G(`onClick:runBeforeButtonClick rejected msg=${(Ie instanceof Error?Ie.message:String(Ie)).slice(0,120)}`),gt.current=null,At.current.delete(j),await v.reject();return}dt(()=>Bn.current?.("paypal"));let ke=Dn(),xe={generation:ke,surfaceKey:j,...re};gt.current=xe,At.current.set(j,xe),rt.current={...O,attempt:ke},await v.resolve(),K.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),K.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),nt.current=K.startTiming()},createOrder:be==="order"?A("Failed to create PayPal order."):void 0,createSubscription:be==="subscription"?A("Failed to create PayPal subscription."):void 0,createVaultSetupToken:be==="setup_token"?async()=>$e(await D("Failed to create PayPal setup token.")):void 0,onApprove:I,onCancel:()=>{if(Ee())return;let me=At.current.get(j)??gt.current;me&&At.current.delete(me.surfaceKey),gt.current=null,It("cancelled"),K.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),V.current=!0,Ht({generation:me?.generation,remount:!0,focus:!1})},onError:me=>{if(Ee()||ot.current!==j)return;let v=me instanceof Error?me.message:"PayPal failed to render.";if(G(`onError rendered=${Rn} msg=${v.slice(0,120)}`),Rn){let x=At.current.get(j)??gt.current;if(x&&!Vt(x.generation)||!x&&an())return;if(Sn(v)){on(x?.generation);return}let{errorCode:re,popupBlocked:ke,providerDeclined:xe,terminalReason:Ie}=Fc(me);if(It(Ie),xe){K.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:Ie}),F(me,x),dt(()=>mn.current?.(nn("paypal",v))),x&&At.current.delete(x.surfaceKey),gt.current=null,on(x?.generation);return}K.error({errorCode:re,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:Ie}),x&&At.current.delete(x.surfaceKey),gt.current=null,Ht({generation:x?.generation,remount:!0,showRetry:!0,focus:!0}),Cn(me,{code:"paypal_runtime_failed",popupBlocked:ke});return}st(Sn(v)?"teardown":"pre_ready_callback",v)}}),J=w.isEligible();if(G(`isEligible=${J}`),K.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!J){ae(!1),st("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}ir=!0,Or=w,sr=()=>{if(!_n||Yn||Ee()||Rn)return;Yn=!0,G(`container:dims ${gn(Ft)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(Nn=new MutationObserver(v=>{if(!Ee()){for(let x of v)if(x.type==="childList")x.addedNodes.forEach(re=>{if(!(re instanceof Element))return;let ke=re.tagName.toLowerCase(),xe=(re.getAttribute("title")??"").slice(0,40),Ie=ke==="iframe"?` ${hn(re)}`:"";G(`child+ ${ke}${xe?` title="${xe}"`:""}${Ie} dims=${gn(re)}`)});else if(x.type==="attributes"&&x.target instanceof Element){let re=x.target;if(re.tagName.toLowerCase()!=="iframe")continue;let ke=x.attributeName;(ke==="src"||ke==="srcdoc")&&G(`attr~ iframe ${ke}=${ke==="srcdoc"?`[${(re.getAttribute("srcdoc")??"").length}ch]`:et(re.getAttribute("src"))} dims=${gn(re)}`)}}}),Nn.observe(Ft,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let me=v=>{if(Ee()||Rn)return;let x=Ft.querySelectorAll("iframe"),re=typeof document<"u"&&"hasStorageAccess"in document;G(`watchdog:${v} container=${gn(Ft)} children=${Ft.childElementCount} iframes=${x.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${re} paypalNetRequests=${kr.value}`),x.forEach((ke,xe)=>{let Ie=(ke.getAttribute("title")??"").slice(0,40);G(` iframe[${xe}] ${gn(ke)}${Ie?` title="${Ie}"`:""} ${hn(ke)}`);let tt=ln(ke);tt&&G(` ${tt}`)}),Ln.length===0&&G(" (no PayPal/zoid window errors captured)")};Gn.push(setTimeout(()=>me("3s"),3e3)),Gn.push(setTimeout(()=>me("8s"),8e3)),Gn.push(setTimeout(()=>me("15s"),15e3))},sr(),G("render:start");let Dt=K.startTiming();ht=setTimeout(()=>{Ee()||Rn||(G("watchdog:11s retryable render timeout"),st("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},Rc);let Ae=w.render(Ft);(async()=>{try{if(await Ae,G(`render:resolved inactive=${Ee()}`),En(),Ee()){Mr();return}Rn=!0,ae(!0),Ce(!1),Xt.current?.("ready"),K.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),K.performance({stage:"checkout_render",durationMs:K.elapsed(Dt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(me){let v=me instanceof Error?me.message:"PayPal failed to render.";G(`render:rejected msg=${v.slice(0,120)}`),En(),st(Sn(v)?"teardown":"render_rejected",v)}})()}).catch(S=>{let I=S instanceof Error?S.message:"PayPal operation failed.";G(`provider:failed msg=${I.slice(0,120)}`);let A="script_rejected";L&&Sn(I)?A="teardown":L&&ir&&(A="render_rejected"),st(A,I)})},0);return()=>{Gt=!0,clearTimeout(pt),or&&clearTimeout(or),En(),Tt.current===Br&&(Tt.current=null),Mr(),nt.current=null,rt.current=null}},[U,at,l,u,d,be,Fe,Je,e,pe,N,oe,ce,ee,G,It]);let ve=we?(0,er.jsxs)("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:Oe?"#fef2f2":"#f3f4f6",border:`1px solid ${Oe?"#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=${ie} failed=${Oe})`,ft.length===0?`
2
2
  (waiting for first lifecycle event\u2026)`:`
3
- ${mn.join(`
4
- `)}`]}):null;return ct&&!X?ve?(0,Gn.jsx)("div",{children:xe}):null:(0,Gn.jsxs)("div",{children:[xe,Ce&&(0,Gn.jsx)(so,{identity:Ce.identity,methodLabel:Ce.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:Wt,onCancel:()=>Wt(null)}),(0,Gn.jsxs)("div",{"aria-hidden":Ke||Ce?!0:void 0,style:Ke||Ce?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:ha},children:[!ge&&!Ke&&(0,Gn.jsx)("div",{"data-testid":"flopay-direct-paypal-placeholder",style:{position:"absolute",inset:0,borderRadius:8,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite",pointerEvents:"none"}}),(0,Gn.jsx)("div",{ref:ke,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:ha,display:"flex",opacity:ge?1:0},"aria-busy":Je||se},Ie)]},Ie),Pe&&(0,Gn.jsx)("button",{ref:I,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:an,style:kc,children:"Try PayPal again"})]})}function Oo(e){return(0,Gn.jsx)(Ns,{...e})}function Os(e){return(0,Gn.jsx)(Ns,{...e})}var zo=require("react/jsx-runtime");function uo({children:e,margin:t,icon:n=!0,styleOverride:r}){return(0,zo.jsxs)("div",{role:"alert","data-testid":"flopay-error",style:{margin:t,padding:"0.625rem 0.875rem",background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:"8px",color:"#991B1B",fontSize:"0.85rem",fontWeight:600,...n?{display:"flex",alignItems:"center",gap:"0.5rem"}:{},...r??{}},children:[n&&(0,zo.jsx)("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,zo.jsx)("path",{d:"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"#DC2626",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),e]})}var ba=require("@flopay/shared");function po(){return typeof window<"u"&&typeof window.sessionStorage<"u"}var pi=":idempotency-key";function mi(e,t){if(!po())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 yi(e,t){if(!po())return null;try{let n=window.sessionStorage.getItem(e+pi);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 va(e,t){if(po())try{mi(e,t)&&window.sessionStorage.removeItem(e)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout session cache.",n)}}function Pa(e,t){if(va(e,t),!!po())try{yi(e,t)&&window.sessionStorage.removeItem(e+pi)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout idempotency key.",n)}}function Ca(e,t,n,r){if(po())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 Sa(e,t,n){if(po())try{window.sessionStorage.setItem(e+pi,JSON.stringify({canonicalIdentity:t,idempotencyKey:n}))}catch(r){console.warn("[FloPayCheckout] Failed to persist checkout idempotency key.",r)}}function ui(e,t){return`${e}:${t.totalAmount??""}:${t.overrideAmount??""}:${t.quantity??1}:${t.currency??""}`}function Bc(e){if(e==null)return e;let t=JSON.stringify(Object.entries(e).sort(([l],[d])=>l<d?-1:l>d?1:0)),n=1779033703,r=3144134277,o=1013904242,a=2773480762;for(let l=0;l<t.length;l++){let d=t.charCodeAt(l);n=r^Math.imul(n^d,597399067),r=o^Math.imul(r^d,2869860233),o=a^Math.imul(o^d,951274213),a=n^Math.imul(a^d,2716044179)}return n=Math.imul(o^n>>>18,597399067),r=Math.imul(a^r>>>22,2869860233),o=Math.imul(n^o>>>17,951274213),a=Math.imul(r^a>>>19,2716044179),n^=r^o^a,r^=n,o^=n,a^=n,[n,r,o,a].map(l=>(l>>>0).toString(16).padStart(8,"0")).join("")}function mo(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=>ui(`${o.type??""}:${o.code??o.providerItemId??o.providerPlanId??""}`,o)).sort(),i:e?.items?.map(o=>ui(o.code??o.providerItemId??"",o)).sort(),s:e?.subscriptions?.map(o=>ui(o.code??o.providerPlanId??"",o)).sort(),couponCodes:e?.couponCodes?[...e.couponCodes].sort():void 0,checkoutMetadata:Bc(e?.checkoutMetadata),...t?{tagsData:e?.tagsData,utmMetadata:e?.utmMetadata,tokenizedData:e?.tokenizedData,checkoutMode:e?.checkoutMode??"full"}:{}};return JSON.stringify(r)}function zs(e,t=!1){let n=mo(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 Us(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=(0,ba.resolveSessionCurrency)(t.currency,t.items,t.subscriptions,t.products);if(!o||e.currency.toUpperCase()!==o.toUpperCase())return!1;let a=(t.products??(0,ba.foldIntoProducts)(t.items,t.subscriptions)).map(g=>({type:g.type,code:g.code??g.providerItemId??g.providerPlanId??"",quantity:g.quantity??1,totalAmount:g.totalAmount,overrideAmount:g.overrideAmount??null,currency:(g.currency??o).toUpperCase()})).sort((g,y)=>`${g.code}:${g.type??""}`.localeCompare(`${y.code}:${y.type??""}`)),l=e.products.map(g=>({type:g.type,code:g.code??"",quantity:g.quantity??1,totalAmount:g.totalAmount,overrideAmount:g.overrideAmount??null,currency:(g.currency??e.currency).toUpperCase()})).sort((g,y)=>`${g.code}:${g.type??""}`.localeCompare(`${y.code}:${y.type??""}`));if(a.length!==l.length)return!1;for(let[g,y]of a.entries()){let b=l[g];if(b===void 0||y.code!==b.code||y.type!==void 0&&y.type!==b.type||y.quantity!==b.quantity||y.totalAmount!==b.totalAmount||y.overrideAmount!==b.overrideAmount||y.currency!==b.currency)return!1}let d=[...t.couponCodes??[]].sort(),u=[...e.coupons??[]].sort();return d.length===u.length&&d.every((g,y)=>g===u[y])}var Kt=require("react/jsx-runtime");var Fc={panel:{background:"white"},spinnerTrackColor:"#e5e7eb",spinnerAccentColor:"#4A49FF",labelColors:{processing:"#374151",success:"#16a34a",error:"#dc2626"},noteColor:"#6b7280"};function Yn({status:e,errorMessage:t,authorized:n=!1,processingLabel:r="PROCESSING...",successLabel:o,errorLabel:a="PAYMENT FAILED",successNote:l="You will be automatically redirected, do not close or navigate away from this window.",theme:d=Fc}){let u={fontSize:13,color:d.noteColor,fontWeight:400,maxWidth:260,lineHeight:1.4,margin:0};return(0,Kt.jsx)("div",{"data-testid":"flopay-processing-overlay","data-status":e,role:"dialog","aria-modal":"true",style:{position:"fixed",inset:0,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(2px)"},children:(0,Kt.jsxs)("div",{"data-testid":"flopay-processing-overlay-panel",style:{borderRadius:12,boxShadow:"0 8px 32px rgba(0,0,0,0.18)",...d.panel,padding:"2rem 2.5rem",textAlign:"center",minWidth:240,display:"flex",flexDirection:"column",alignItems:"center",gap:16},children:[(0,Kt.jsxs)("div",{style:{width:48,height:48,position:"relative"},children:[e==="processing"&&(0,Kt.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{animation:"flopay-spin 0.8s linear infinite"},children:[(0,Kt.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:d.spinnerTrackColor,strokeWidth:"3"}),(0,Kt.jsx)("path",{d:"M4 12a8 8 0 018-8v3a5 5 0 00-5 5H4z",fill:d.spinnerAccentColor})]}),e==="success"&&(0,Kt.jsx)("div",{style:{animation:"flopay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)"},children:(0,Kt.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,Kt.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#22c55e"}),(0,Kt.jsx)("path",{d:"M7 12.5l3 3 7-7",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:20,strokeDashoffset:20,animation:"flopay-draw 0.4s 0.15s ease forwards"}})]})}),e==="error"&&(0,Kt.jsx)("div",{style:{animation:"flopay-shake 0.4s ease"},children:(0,Kt.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,Kt.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#ef4444"}),(0,Kt.jsx)("path",{d:"M8 8l8 8M16 8l-8 8",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",style:{strokeDasharray:12,strokeDashoffset:12,animation:"flopay-draw 0.3s 0.1s ease forwards"}})]})})]}),(0,Kt.jsxs)("span",{style:{fontSize:14,fontWeight:600,letterSpacing:"0.05em",color:d.labelColors[e]},children:[e==="processing"&&r,e==="success"&&(o??(n?"PAYMENT AUTHORISED":"PAYMENT SUCCESSFUL")),e==="error"&&a]}),e==="success"&&l!==null&&(0,Kt.jsx)("p",{style:u,children:l}),e==="error"&&t&&(0,Kt.jsx)("p",{style:u,children:t}),(0,Kt.jsx)("style",{children:`
3
+ ${ft.join(`
4
+ `)}`]}):null;return Oe&&!W?we?(0,er.jsx)("div",{children:ve}):null:(0,er.jsxs)("div",{children:[ve,Ne&&(0,er.jsx)(uo,{identity:Ne.identity,methodLabel:Ne.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:dn,onCancel:()=>dn(null)}),(0,er.jsxs)("div",{"aria-hidden":Ye||Ne?!0:void 0,style:Ye||Ne?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:va},children:[!ie&&!Ye&&(0,er.jsx)("div",{"data-testid":"flopay-direct-paypal-placeholder",style:{position:"absolute",inset:0,borderRadius:8,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite",pointerEvents:"none"}}),(0,er.jsx)("div",{ref:_e,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:va,display:"flex",opacity:ie?1:0},"aria-busy":je||ue},N)]},N),he&&(0,er.jsx)("button",{ref:M,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:Pn,style:Ec,children:"Try PayPal again"})]})}function Uo(e){return(0,er.jsx)(Us,{...e})}function qs(e){return(0,er.jsx)(Us,{...e})}var qo=require("react/jsx-runtime");function yo({children:e,margin:t,icon:n=!0,styleOverride:r}){return(0,qo.jsxs)("div",{role:"alert","data-testid":"flopay-error",style:{margin:t,padding:"0.625rem 0.875rem",background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:"8px",color:"#991B1B",fontSize:"0.85rem",fontWeight:600,...n?{display:"flex",alignItems:"center",gap:"0.5rem"}:{},...r??{}},children:[n&&(0,qo.jsx)("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,qo.jsx)("path",{d:"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"#DC2626",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),e]})}var Pa=require("@flopay/shared");function fo(){return typeof window<"u"&&typeof window.sessionStorage<"u"}var fi=":idempotency-key";function gi(e,t){if(!fo())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 hi(e,t){if(!fo())return null;try{let n=window.sessionStorage.getItem(e+fi);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 Ca(e,t){if(fo())try{gi(e,t)&&window.sessionStorage.removeItem(e)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout session cache.",n)}}function Sa(e,t){if(Ca(e,t),!!fo())try{hi(e,t)&&window.sessionStorage.removeItem(e+fi)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout idempotency key.",n)}}function wa(e,t,n,r){if(fo())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 ka(e,t,n){if(fo())try{window.sessionStorage.setItem(e+fi,JSON.stringify({canonicalIdentity:t,idempotencyKey:n}))}catch(r){console.warn("[FloPayCheckout] Failed to persist checkout idempotency key.",r)}}function yi(e,t){return`${e}:${t.totalAmount??""}:${t.overrideAmount??""}:${t.quantity??1}:${t.currency??""}`}function Lc(e){if(e==null)return e;let t=JSON.stringify(Object.entries(e).sort(([l],[d])=>l<d?-1:l>d?1:0)),n=1779033703,r=3144134277,o=1013904242,a=2773480762;for(let l=0;l<t.length;l++){let d=t.charCodeAt(l);n=r^Math.imul(n^d,597399067),r=o^Math.imul(r^d,2869860233),o=a^Math.imul(o^d,951274213),a=n^Math.imul(a^d,2716044179)}return n=Math.imul(o^n>>>18,597399067),r=Math.imul(a^r>>>22,2869860233),o=Math.imul(n^o>>>17,951274213),a=Math.imul(r^a>>>19,2716044179),n^=r^o^a,r^=n,o^=n,a^=n,[n,r,o,a].map(l=>(l>>>0).toString(16).padStart(8,"0")).join("")}function go(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=>yi(`${o.type??""}:${o.code??o.providerItemId??o.providerPlanId??""}`,o)).sort(),i:e?.items?.map(o=>yi(o.code??o.providerItemId??"",o)).sort(),s:e?.subscriptions?.map(o=>yi(o.code??o.providerPlanId??"",o)).sort(),couponCodes:e?.couponCodes?[...e.couponCodes].sort():void 0,checkoutMetadata:Lc(e?.checkoutMetadata),...t?{tagsData:e?.tagsData,utmMetadata:e?.utmMetadata,tokenizedData:e?.tokenizedData,checkoutMode:e?.checkoutMode??"full"}:{}};return JSON.stringify(r)}function $s(e,t=!1){let n=go(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 Vs(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=(0,Pa.resolveSessionCurrency)(t.currency,t.items,t.subscriptions,t.products);if(!o||e.currency.toUpperCase()!==o.toUpperCase())return!1;let a=(t.products??(0,Pa.foldIntoProducts)(t.items,t.subscriptions)).map(m=>({type:m.type,code:m.code??m.providerItemId??m.providerPlanId??"",quantity:m.quantity??1,totalAmount:m.totalAmount,overrideAmount:m.overrideAmount??null,currency:(m.currency??o).toUpperCase()})).sort((m,h)=>`${m.code}:${m.type??""}`.localeCompare(`${h.code}:${h.type??""}`)),l=e.products.map(m=>({type:m.type,code:m.code??"",quantity:m.quantity??1,totalAmount:m.totalAmount,overrideAmount:m.overrideAmount??null,currency:(m.currency??e.currency).toUpperCase()})).sort((m,h)=>`${m.code}:${m.type??""}`.localeCompare(`${h.code}:${h.type??""}`));if(a.length!==l.length)return!1;for(let[m,h]of a.entries()){let b=l[m];if(b===void 0||h.code!==b.code||h.type!==void 0&&h.type!==b.type||h.quantity!==b.quantity||h.totalAmount!==b.totalAmount||h.overrideAmount!==b.overrideAmount||h.currency!==b.currency)return!1}let d=[...t.couponCodes??[]].sort(),u=[...e.coupons??[]].sort();return d.length===u.length&&d.every((m,h)=>m===u[h])}var Yt=require("react/jsx-runtime");var Oc={panel:{background:"white"},spinnerTrackColor:"#e5e7eb",spinnerAccentColor:"#4A49FF",labelColors:{processing:"#374151",success:"#16a34a",error:"#dc2626"},noteColor:"#6b7280"};function tr({status:e,errorMessage:t,authorized:n=!1,processingLabel:r="PROCESSING...",successLabel:o,errorLabel:a="PAYMENT FAILED",successNote:l="You will be automatically redirected, do not close or navigate away from this window.",theme:d=Oc}){let u={fontSize:13,color:d.noteColor,fontWeight:400,maxWidth:260,lineHeight:1.4,margin:0};return(0,Yt.jsx)("div",{"data-testid":"flopay-processing-overlay","data-status":e,role:"dialog","aria-modal":"true",style:{position:"fixed",inset:0,background:"rgba(0,0,0,0.35)",display:"flex",alignItems:"center",justifyContent:"center",zIndex:1e3,backdropFilter:"blur(2px)"},children:(0,Yt.jsxs)("div",{"data-testid":"flopay-processing-overlay-panel",style:{borderRadius:12,boxShadow:"0 8px 32px rgba(0,0,0,0.18)",...d.panel,padding:"2rem 2.5rem",textAlign:"center",minWidth:240,display:"flex",flexDirection:"column",alignItems:"center",gap:16},children:[(0,Yt.jsxs)("div",{style:{width:48,height:48,position:"relative"},children:[e==="processing"&&(0,Yt.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{animation:"flopay-spin 0.8s linear infinite"},children:[(0,Yt.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:d.spinnerTrackColor,strokeWidth:"3"}),(0,Yt.jsx)("path",{d:"M4 12a8 8 0 018-8v3a5 5 0 00-5 5H4z",fill:d.spinnerAccentColor})]}),e==="success"&&(0,Yt.jsx)("div",{style:{animation:"flopay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)"},children:(0,Yt.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,Yt.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#22c55e"}),(0,Yt.jsx)("path",{d:"M7 12.5l3 3 7-7",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{strokeDasharray:20,strokeDashoffset:20,animation:"flopay-draw 0.4s 0.15s ease forwards"}})]})}),e==="error"&&(0,Yt.jsx)("div",{style:{animation:"flopay-shake 0.4s ease"},children:(0,Yt.jsxs)("svg",{"aria-hidden":"true",width:"48",height:"48",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[(0,Yt.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#ef4444"}),(0,Yt.jsx)("path",{d:"M8 8l8 8M16 8l-8 8",stroke:"white",strokeWidth:"2.5",strokeLinecap:"round",style:{strokeDasharray:12,strokeDashoffset:12,animation:"flopay-draw 0.3s 0.1s ease forwards"}})]})})]}),(0,Yt.jsxs)("span",{style:{fontSize:14,fontWeight:600,letterSpacing:"0.05em",color:d.labelColors[e]},children:[e==="processing"&&r,e==="success"&&(o??(n?"PAYMENT AUTHORISED":"PAYMENT SUCCESSFUL")),e==="error"&&a]}),e==="success"&&l!==null&&(0,Yt.jsx)("p",{style:u,children:l}),e==="error"&&t&&(0,Yt.jsx)("p",{style:u,children:t}),(0,Yt.jsx)("style",{children:`
5
5
  @keyframes flopay-spin { to { transform: rotate(360deg); } }
6
6
  @keyframes flopay-pop { 0% { transform: scale(0); } 100% { transform: scale(1); } }
7
7
  @keyframes flopay-draw { to { stroke-dashoffset: 0; } }
8
8
  @keyframes flopay-shake { 0%,100% { transform: translateX(0); } 20%,60% { transform: translateX(-4px); } 40%,80% { transform: translateX(4px); } }
9
- `})]})})}var qs=require("@flopay/shared"),ln=require("react");var $s=require("react/jsx-runtime");function Uo({flopay:e,paypalFlopay:t,options:n,onInstrument:r,children:o}){let[a,l]=(0,ln.useState)(e instanceof Promise?null:e),[d,u]=(0,ln.useState)(t instanceof Promise||!t?null:t),g=(0,ln.useRef)(null),y=(0,ln.useRef)(null),b=co(r);(0,ln.useEffect)(()=>{b({class:"lifecycle",name:"checkout.mount"})},[b]),(0,ln.useEffect)(()=>{a&&b({class:"lifecycle",name:"sdk.initialize.ready"})},[b,a]),(0,ln.useEffect)(()=>{if(a)return en(a)?.subscribe?.(b)},[b,a]),(0,ln.useEffect)(()=>{if(!(!d||d===a))return en(d)?.subscribe?.(b)},[b,a,d]),(0,ln.useEffect)(()=>{if(!a)return;let F=en(a);return g.current=F?.beginCheckout()??F?.now()??0,F?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{F?.log({name:"checkout.unmount",stage:"unmount"})}},[a]),(0,ln.useEffect)(()=>{let F=!1;return e instanceof Promise?e.then(N=>{F||l(N)},()=>{F||b({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):l(e),()=>{F=!0}},[b,e]),(0,ln.useEffect)(()=>{let F=!1;if(!t){u(null);return}return t instanceof Promise?t.then(N=>{F||u(N)},()=>{F||b({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):u(t),()=>{F=!0}},[b,t]),(0,ln.useEffect)(()=>{if(!a||y.current===a)return;y.current=a;let F=en(a);F?.log({name:"checkout.rendered",stage:"checkout_render"}),b({class:"lifecycle",name:"checkout.rendered"}),F?.performance({stage:"checkout_render",durationMs:F.elapsed(g.current??0),durationMode:"machine"})},[b,a]);let h=(0,qs.resolveBillingApiUrl)(n?.billingApiUrl),k=(0,ln.useMemo)(()=>({flopay:a,paypalFlopay:d,billingApiUrl:h,emitInstrument:b}),[a,d,h,b]);return(0,$s.jsx)(Hn.Provider,{value:k,children:o})}var wa="flopay_recent_completion_";function yo(e){if(!(!e||typeof window>"u"))try{let t={expiresAt:Date.now()+6e4};window.sessionStorage.setItem(wa+e,JSON.stringify(t))}catch{}}function fi(e){if(!e||typeof window>"u")return!1;try{let t=window.sessionStorage.getItem(wa+e);if(!t)return!1;let n=JSON.parse(t);return typeof n?.expiresAt!="number"||n.expiresAt<=Date.now()?(window.sessionStorage.removeItem(wa+e),!1):!0}catch{return!1}}var fo=require("@flopay/js"),Ze=require("@flopay/shared");var $o="card";async function Dc(e,t,n){if(n){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:a,error:l}=await e.retrieveSetupIntent(t);return{error:l,intent:a??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 Lc(e,t,n,r){if(r){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:l,error:d}=await e.confirmCardSetup(t,n);return{error:d,intent:l??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:o,error:a}=await e.confirmCardPayment(t,n);return{error:a,intent:o??null}}function hi(e,t){return Object.assign(e,{checkoutMethod:t})}function Rr(e,t){let n=e instanceof Ze.FloPayError?e:new Ze.FloPayError(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 qo(e,t){try{return await e()}catch(n){throw Rr(n,t)}}function js(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 Nc(e){return e.status==="succeeded"||e.status==="authorized"||e.status==="declined"}async function Ks(e){if(typeof document>"u"||typeof window>"u")throw new Ze.FloPayError("3DS challenge requires a browser environment.","api_error",{code:"three_ds_no_window"});if(e.signal?.aborted)throw new Ze.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted"});let t=3e5,n=1e3,r=15e3,o=`${e.billingApiUrl.replace(/\/$/,"")}/v1/checkouts/sessions/${encodeURIComponent(e.sessionId)}/3ds/complete`,a=async()=>{let y=new AbortController,b=()=>y.abort();e.signal?.aborted?y.abort():e.signal?.addEventListener("abort",b);let h=window.setTimeout(()=>y.abort(),r);try{let k=await fetch(o,{method:"POST",headers:{"x-checkout-session-token":e.nonce,"content-type":"application/json"},body:"{}",signal:y.signal});if(!k.ok)return{status:"unknown"};let F=await k.json().catch(()=>null);return Oc(F)}catch{return{status:"unknown"}}finally{window.clearTimeout(h),e.signal?.removeEventListener("abort",b)}},l=document.activeElement instanceof HTMLElement?document.activeElement:null,d=document.createElement("div");d.setAttribute("data-flopay-auto-3ds-overlay","1"),d.setAttribute("role","dialog"),d.setAttribute("aria-modal","true"),d.setAttribute("aria-label","Card authentication"),d.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(";"),u.src=e.nextActionRedirectUrl,d.appendChild(u),document.body.appendChild(d),u.focus();let g=null;try{g=new URL(e.billingApiUrl,window.location.href).origin}catch{g=null}try{let y=await new Promise((b,h)=>{let k=!1,F=0,N=0,ye=0,se=!1,S=()=>{window.clearTimeout(F),window.clearInterval(N),window.clearTimeout(ye),window.removeEventListener("message",Se),u.removeEventListener("load",O),e.signal?.removeEventListener("abort",de)},V=async()=>{if(!(k||se)){se=!0;try{let le=await a();if(k||!Nc(le))return;k=!0,S(),b(le)}finally{se=!1}}},O=()=>{window.clearTimeout(ye),ye=window.setTimeout(()=>{V()},250)},de=()=>{k||(k=!0,S(),h(new Ze.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted"})))},Se=le=>{if(le.source!==u.contentWindow||g&&le.origin!==g)return;let fe=le.data;!fe||typeof fe!="object"||fe.source!=="flopay-vault-3ds-return"||k||(k=!0,S(),b(null))};F=window.setTimeout(()=>{k||(k=!0,S(),h(new Ze.FloPayError("Card authentication timed out.","api_error",{code:"three_ds_timeout"})))},t),N=window.setInterval(()=>{V()},n),u.addEventListener("load",O),window.addEventListener("message",Se),e.signal?.addEventListener("abort",de),e.signal?.aborted&&de()});return y||await a()}finally{d.parentNode?.removeChild(d),l?.isConnected&&l.focus()}}function Oc(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":return{status:"succeeded",providerIntentId:n};case"authorized":return{status:"authorized",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"pending":return{status:"pending",providerIntentId:n};case"timeout":return{status:"timeout",providerIntentId:n};case"no_attempt":return{status:"no_attempt"};default:return{status:"unknown"}}}function Ar(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,a=Tr(o)??o;return hi(new Ze.FloPayError(a,"api_error",{code:(0,Ze.normalizeCheckoutFailureOutcome)(e?.outcome)??(0,Ze.normalizeCheckoutFailureOutcome)(e?.type)??e?.gatewayErrorCode}),r)}function gi(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function ka(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function Ws(e,t){let n=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let o of n)if(typeof o=="string"&&o.length>0&&(!t?.requirePaymentIntentClientSecret||ka(o)))return o;let r=e?.data;if(r&&typeof r=="object"){let o=r,a=[o.threeDSecureToken,o.clientSecret,o.stripeClientSecret,o.id];for(let d of a)if(typeof d=="string"&&d.length>0&&(!t?.requirePaymentIntentClientSecret||ka(d)))return d;let l=o.gateways;if(l&&typeof l=="object"){let d=l.stripe;if(d&&typeof d=="object"){let u=d,g=[u.stripeClientSecret,u.clientSecret];for(let y of g)if(typeof y=="string"&&y.length>0&&(!t?.requirePaymentIntentClientSecret||ka(y)))return y}}}}async function zc({billingApiUrl:e,sessionId:t,nonce:n,responseJson:r}){let o=Ws(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 fo.PaymentAPI(e,{telemetry:!1}).getUnifiedCheckoutSession(t,n)).data.stripe?.clientSecret;if(ka(d))return{type:"3ds_required",threeDSecureToken:d}}catch{}return null}async function go({billingApiUrl:e,sessionId:t,session:n,nonce:r,tokenizedData:o,returnUrl:a,telemetry:l}){let d=e.replace(/\/+$/,""),u=t??n.id,g=r??n.clientSecret,y=n.customer?.id??n.accountData?.userId??"",b=n.customer?.email??n.accountData?.email??"",h=n.customer?.firstName??n.accountData?.firstName??"",k=n.customer?.lastName??n.accountData?.lastName??"",F=n.customer?.country??n.accountData?.country??void 0,N=n.customer?.zip??n.accountData?.zip??void 0,se=await new fo.PaymentAPI(d,l===!1?{telemetry:!1}:void 0).processPayment(y,{sessionId:u,nonce:g,paymentMethodCategory:"saved",tokenizedData:o,accountData:{userId:y,email:b,firstName:h,lastName:k,country:F,zip:N},returnUrl:a??gi(n)});if(se.ok){let O=typeof se.json=="function"?await se.json().catch(()=>null):null;return(0,Ze.isAuthorizationOnlySession)(n)||O?.status==="authorized"?{type:"success",result:{status:"authorized",paymentId:typeof O?.paymentId=="string"?O.paymentId:n.paymentId,sessionId:typeof O?.sessionId=="string"?O.sessionId:u,authorizationExpiresAt:typeof O?.authorizationExpiresAt=="string"?O.authorizationExpiresAt:n.authorizationExpiresAt,paymentMethodId:Fo(o),checkoutMethod:Vs(o)}}:{type:"success",result:{status:"succeeded",paymentIntentId:o?.threeDSecureActionResultTokenId,paymentMethodId:Fo(o),checkoutMethod:Vs(o)}}}let S;try{S=await se.json()}catch(O){throw new Ze.FloPayError("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:se.status,cause:O})}if(S?.type==="paypal_redirect_required"||S?.type==="3ds_required"){let O=Ws(S);if(!O)throw new Ze.FloPayError("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:se.status});return{type:S.type,threeDSecureToken:O,paymentMethodId:S.paymentMethodId}}if(S?.gatewayErrorCode==="authentication_required"){let O=await zc({billingApiUrl:d,sessionId:u,nonce:g,responseJson:S});if(O)return O;throw hi(new Ze.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let V=new Ze.FloPayError(S?.message??"Payment failed. Please try again.","api_error",{code:S?.code??S?.gatewayErrorCode,declineCode:S?.declineCode??S?.gatewayDeclineReason,statusCode:se.status});throw Object.assign(V,{telemetryOutcome:(0,Ze.classifyPaymentRejection)(se.status,S)})}async function Ia(e,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:a,session:l,returnUrl:d,telemetry:u}){let g=t?.getRawProvider();if(!g)throw Rr(new Ze.FloPayError("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!r||!e.threeDSecureToken)throw hi(new Ze.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let y=(0,Ze.isSetupIntentClientSecret)(e.threeDSecureToken),b=null,h=e.paymentMethodId,k=await qo(()=>Dc(g,e.threeDSecureToken,y),"card");if(k){if(k.error)throw Rr(new Ze.FloPayError(k.error.message??`Failed to retrieve 3DS ${y?"setup":"payment"} status.`,"api_error",{code:k.error.code}),"card");let N=k.intent;!h&&N?.payment_method&&(typeof N.payment_method=="string"?h=N.payment_method:"id"in N.payment_method&&(h=N.payment_method.id??void 0))}let F=h?await qo(()=>Lc(g,e.threeDSecureToken,{payment_method:h,return_url:d??gi(l)??window.location.href},y),"card"):null;if(F){if(F.error)throw Rr(new Ze.FloPayError(F.error.message??"3DS authentication failed.","api_error",{code:F.error.code}),"card");b=F.intent}else{let N=await qo(()=>g.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(N.error)throw Rr(new Ze.FloPayError(N.error.message??"3DS authentication failed.","api_error",{code:N.error.code}),"card");b=(y?N.setupIntent:N.paymentIntent)??null}if(b&&(b.status==="requires_capture"||b.status==="succeeded"||b.status==="processing")){let N=await go({billingApiUrl:o,sessionId:a,session:l,telemetry:u,tokenizedData:{id:b.id,type:"card",threeDSecureActionResultTokenId:b.id},returnUrl:d});return N.type==="success"?{...N.result,paymentIntentId:N.result.paymentIntentId??b.id,paymentMethodId:N.result.paymentMethodId??h}:Ia(N,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:a,session:l,returnUrl:d,telemetry:u})}throw Rr(new Ze.FloPayError("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let y=(n??t)?.getRawProvider();if(!y)throw Rr(new Ze.FloPayError("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:h}=await qo(()=>y.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(h)throw Rr(new Ze.FloPayError(h.message??"PayPal authorization failed.","api_error",{code:h.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:b}=await qo(()=>y.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:d??gi(l)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(b)throw Rr(new Ze.FloPayError(b.message??"PayPal authorization failed.","api_error",{code:b.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new Ze.FloPayError("Unsupported payment redirect state.","api_error")}function Vo(e){if(e instanceof Ze.FloPayError){let r=Tr(e.message);return r&&r!==e.message?Object.assign(new Ze.FloPayError(r,e.type,{code:e.code,declineCode:e.declineCode,param:e.param,statusCode:e.statusCode}),{checkoutMethod:e.checkoutMethod,telemetryFailureCategory:e.telemetryFailureCategory,telemetryOutcome:e.telemetryOutcome,telemetryRequestCategory:e.telemetryRequestCategory}):e}let t=e instanceof Error?e.message:"Payment failed. Please try again.",n=Tr(t)??t;return new Ze.FloPayError(n,"api_error")}function bi(e){let t=e.data.stripe?.publishableKey,n=!!e.data.paypal?.publishableKey,r=!!e.data.session?.vault?.html||Or(e.data.session);if(!t&&!n&&!r)throw new Ze.FloPayError("Session advertises no supported gateways or hosted vault (expected `gateways.stripe`, `gateways.paypal`, or vault markup).","validation_error");return t?{publishableKey:t,paypalPublishableKey:e.data.stripe?.paypalPublishableKey??t}:{}}function Vs(e){if(e)return e.isPaypal?"paypal":"card"}async function vi({publishableKey:e,paypalPublishableKey:t,billingApiUrl:n,locale:r,telemetry:o}){if(!e)return{flopay:null,paypalFlopay:null};let a=t&&t!==e?t:void 0,[l,d]=await Promise.all([(0,fo.loadFloPay)(e,{billingApiUrl:n,locale:r,telemetry:o}),a?(0,fo.loadFloPay)(a,{billingApiUrl:n,locale:r,telemetry:o}).catch(g=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",g),null)):Promise.resolve(null)]);if(!l)throw new Ze.FloPayError("The payment provider did not initialize.","authentication_error");let u=null;return a?u=d:t&&(u=l),{flopay:l,paypalFlopay:u}}var lr=require("@flopay/js"),p=require("@flopay/shared"),$t=require("@stripe/react-stripe-js"),s=Cs(require("react"),1);var Hs={alipay:"https://cdn.flopay.com/sdk-logos/v1/alipay.svg",bancontact:"https://cdn.flopay.com/sdk-logos/v1/bancontact.svg",blik:"https://cdn.flopay.com/sdk-logos/v1/blik.svg",eps:"https://cdn.flopay.com/sdk-logos/v1/eps.svg",giropay:"https://cdn.flopay.com/sdk-logos/v1/giropay.svg",ideal:"https://cdn.flopay.com/sdk-logos/v1/ideal.svg",klarna:"https://cdn.flopay.com/sdk-logos/v1/klarna.svg",p24:"https://cdn.flopay.com/sdk-logos/v1/p24.svg",sepa_debit:"https://cdn.flopay.com/sdk-logos/v1/sepa_debit.svg",wechat_pay:"https://cdn.flopay.com/sdk-logos/v1/wechat_pay.svg"};var Un=require("react");function Gs(e,t){if(!e)return t;let n=t??{},r=Object.keys(n),o=r.some(l=>l.startsWith("background")),a={};for(let[l,d]of Object.entries(e))l in n||o&&l.startsWith("background")||(a[l]=d);for(let l of r)a[l]=n[l];return a}var Uc=new Set(["animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);function qc(e){let t=e.replace(/^(Webkit|Moz|ms)(?=[A-Z])/,"");return Uc.has(t.charAt(0).toLowerCase()+t.slice(1))}function $c(e,t){return typeof t=="number"&&t!==0&&!qc(e)?`${t}px`:String(t).trim()}function Ys(e,t){if(e.style.cssText="",!!t){for(let[n,r]of Object.entries(t))if(!(r==null||r==="")){if(n.startsWith("--")){e.style.setProperty(n,String(r));continue}e.style[n]=$c(n,r)}}}var Js=require("react/jsx-runtime"),Pi=new WeakSet;function ho({capture:e,html:t,messageToken:n,expectedOrigin:r,theme:o,submitLabel:a,containerStyle:l,onReady:d,onError:u,onValidation:g}){let y=(0,Un.useRef)(null),b=(0,Un.useRef)(d),h=(0,Un.useRef)(u),k=(0,Un.useRef)(g);b.current=d,h.current=u,k.current=g;let F=(0,Un.useRef)(o);F.current=o;let N=(0,Un.useRef)(null),ye=a??void 0,se=(0,Un.useRef)(ye);se.current=ye;let S=(0,Un.useRef)(void 0);return(0,Un.useEffect)(()=>{let V=y.current;if(!V)return;let O=!0,de=!1,Se=()=>{!O||de||(de=!0,b.current?.())},le=e.on("ready",()=>{Se()}),fe=e.on("error",ve=>{h.current?.(ve.message??"There was a problem loading the secure card form.")}),be=e.on("validation",ve=>{k.current?.(ve.message??null)}),pt=se.current??(Pi.has(e)?null:void 0),Ge={html:t,...n?{messageToken:n}:{},...r?{expectedOrigin:r}:{},...F.current?{theme:F.current}:{},...pt===void 0?{}:{submitLabel:pt}};return N.current=F.current??null,S.current=se.current,se.current!==void 0&&Pi.add(e),e.mount(V,Ge).then(()=>{Se()}).catch(ve=>{O&&h.current?.(ve instanceof Error?ve.message:"Failed to load the secure card form.")}),()=>{O=!1,le(),fe(),be(),e.unmount()}},[e,t,n,r]),$r(()=>{let V=y.current;V&&Ys(V,l)},[l]),(0,Un.useEffect)(()=>{o!==void 0&&(o===null&&N.current===null||(N.current=o,e.applyTheme?.(o)))},[e,o]),(0,Un.useEffect)(()=>{ye!==S.current&&(S.current=ye,ye!==void 0&&Pi.add(e),e.setSubmitLabel?.(ye??null))},[e,ye]),(0,Js.jsx)("div",{ref:y,"data-testid":"flopay-vault-card-fields"})}var Zs=/^#([0-9a-f]{6})$/i,Vc=/^#([0-9a-f]{3})$/i,Qs=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i,el=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0|1|0?\.\d+|1\.0+)\s*\)$/i,jc=/^linear-gradient\(\s*(-?\d+(?:\.\d+)?)deg\s*,\s*(.+)\)$/i,Kc=/^(-?\d+(?:\.\d+)?)(?:px)?$/,Wc=/^(-?\d+(?:\.\d+)?)em$/,Hc=/^blur\(\s*(\d+(?:\.\d+)?)(?:px)?\s*\)$/i,Gc=/^[a-z][a-z0-9 -]{0,31}$/i,Yc=new Set(["none","uppercase","lowercase","capitalize"]);function tl(e){if(typeof e!="string")return null;let t=e.trim(),n=Zs.exec(t);if(n){let y=Number.parseInt(n[1],16);return{r:y>>16&255,g:y>>8&255,b:y&255,a:null}}let r=Vc.exec(t);if(r){let[y,b,h]=r[1].split("").map(k=>Number.parseInt(k+k,16));return{r:y,g:b,b:h,a:null}}let o=Qs.exec(t),a=o?null:el.exec(t),l=o??a;if(!l)return null;let d=Number(l[1]),u=Number(l[2]),g=Number(l[3]);return d>255||u>255||g>255?null:{r:d,g:u,b:g,a:a?Number(a[4]):null}}function nl({r:e,g:t,b:n,a:r}){return r===null?`#${(1<<24|e<<16|t<<8|n).toString(16).slice(1)}`:`rgba(${e},${t},${n},${r})`}function jo(e){if(typeof e!="string")return;let t=e.trim();if(Zs.test(t)||Qs.test(t))return t;let n=el.exec(t);if(n&&/^\d/.test(n[4]))return t;let r=tl(t);return r?nl(r):void 0}function Ra(e,t=.12){let n=tl(e);if(!n)return e;let r=Math.max(0,Math.min(1,1-t));return nl({r:Math.round(n.r*r),g:Math.round(n.g*r),b:Math.round(n.b*r),a:n.a})}function Ko(e,t){let n=[],r=0,o="";for(let a of e){if(a==="("&&(r+=1),a===")"&&(r-=1),a===t&&r===0){o.trim()&&n.push(o.trim()),o="";continue}o+=a}return o.trim()&&n.push(o.trim()),n}function jr(e,t,n){if(typeof e!="number"&&typeof e!="string")return;let r=Kc.exec(String(e).trim());if(!r)return;let o=Number(r[1]);return Number.isFinite(o)&&o>=t&&o<=n?o:void 0}function Jc(e,t,n){if(typeof e!="string")return;let r=Wc.exec(e.trim());if(!r)return;let o=Number(r[1]);return Number.isFinite(o)&&o>=t&&o<=n?o:void 0}function Xc(e){let t=Ko(e,",");if(t.length<2||t.length>5)return;let n=[];for(let[r,o]of t.entries()){let a=Ko(o," "),l=jo(a[0]);if(!l)return;let d=r/(t.length-1)*100,u=a[1]===void 0?d:Number(/^(\d+(?:\.\d+)?)%$/.exec(a[1])?.[1]),g=n[n.length-1]?.position??-1;if(!Number.isFinite(u)||u<0||u>100||u<g)return;n.push({color:l,position:u})}return{type:"linearGradient",angle:0,stops:n}}function Zc(e){if(typeof e!="string")return;let t=e.trim(),n=jo(t);if(n)return{type:"solid",color:n};let r=jc.exec(t);if(!r)return;let o=Number(r[1]);if(!Number.isFinite(o)||o<0||o>360)return;let a=Xc(r[2]);return a&&a.type==="linearGradient"?{...a,angle:o}:void 0}function Qc(e){return e.type==="solid"?{type:"solid",color:Ra(e.color)}:{...e,stops:e.stops.map(t=>({...t,color:Ra(t.color)}))}}function ed(e){let t=!1,n,r=[];for(let u of Ko(e," ")){if(u.toLowerCase()==="inset"){t=!0;continue}let g=jo(u);if(g){n=g;continue}let y=jr(u,-128,128);if(y===void 0)return;r.push(y)}if(!n||r.length<2||r.length>4)return;let[o,a,l=0,d=0]=r;if(!(Math.abs(o)>64||Math.abs(a)>64||l>128||Math.abs(d)>32))return{color:n,inset:t,offsetX:o,offsetY:a,blur:l,spread:d}}function td(e){if(typeof e!="string")return;let t=e.trim();if(t.toLowerCase()==="none")return[];let n=Ko(t,",").map(ed);if(!(n.length===0||n.length>4))return n.every(r=>r!==void 0)?n:void 0}function Xs(e){if(typeof e!="string")return;let t=Ko(e,",").map(n=>n.replace(/^['"]|['"]$/g,"").trim()).filter(n=>Gc.test(n)).slice(0,4);return t.length>0?t:void 0}function nd(e){let t=typeof e=="string"?e.trim().split(/\s+/):[e],n=jr(t[0],0,64),r=jr(t[1]??t[0],0,64);if(!(n===void 0||r===void 0))return{paddingBlock:n,paddingInline:r}}function rd(e){if(e==="bold")return 700;if(e==="normal")return 400;let t=Number(e);return Number.isInteger(t)&&t>=100&&t<=900?t:void 0}function rl({appearance:e,buttonsStyles:t,fontFamily:n}){let r=t.submitButton;if(!r)return;let o=e?.variables,a=Zc(r.background??r.backgroundColor),l=jo(o?.colorPrimaryHover),d=l?{type:"solid",color:l}:a&&Qc(a),u={fontFamilies:Xs(r.fontFamily)??Xs(n),fontSize:jr(r.fontSize??t.submitButtonFontSize,10,32)??16,fontWeight:rd(r.fontWeight)??600,letterSpacing:Jc(r.letterSpacing,-.1,.5)??.01,lineHeight:jr(r.lineHeight,.8,2)??1,textTransform:Yc.has(String(r.textTransform))?r.textTransform:"uppercase"},g=nd(r.padding),y=td(r.boxShadow),b=jr(r.borderRadius,0,9999),h=typeof r.backdropFilter=="string"?jr(Hc.exec(r.backdropFilter.trim())?.[1],0,40):void 0;return{foregroundColor:jo(r.color)??"#FFFFFF",...a?{background:a,disabledBackground:a}:{},...d?{hoverBackground:d}:{},typography:u,...g?{spacing:g}:{},...y?{shadow:y}:{},...b===void 0?{}:{borderRadius:b},disabledOpacity:e?.theme==="night"?.8:.6,...h===void 0?{}:{backdropBlur:h}}}function bo(e,t=.12){let n=e.trim(),r=/^[0-9a-fA-F]{6}$/.test(n)?`#${n}`:n;return/^#[0-9a-fA-F]{6}$/.test(r)?Ra(r,t):e}function Ci(e){if(typeof e=="number"||typeof e=="string")return e}function _a({appearance:e,buttonsStyles:t,layout:n="default"}){let r=e?.variables,o=b=>typeof b=="string"&&b?b:void 0,a=t.submitButton,l=o(r?.colorPrimary)??o(a?.backgroundColor)??"#4A49FF",d=n==="buttons",u=t.nameInput,g=o(u?.fontFamily)??o(r?.fontFamily)??"Poppins, sans-serif",y=rl({appearance:e,buttonsStyles:t,fontFamily:g});return{primaryColor:l,primaryHoverColor:o(r?.colorPrimaryHover)??bo(l,.12),inputBackgroundColor:o(t.cardInputBackground)??o(r?.colorBackground)??"#ffffff",textColor:o(t.cardInputColor)??o(u?.color)??o(r?.colorText)??"#262833",borderColor:o(t.cardInputBorder)??(d?"#e5e7eb":"#A4A4FF"),placeholderColor:o(t.cardInputPlaceholderColor)??"#9ca3af",errorColor:o(r?.colorDanger)??"#dc2626",successColor:"#16a34a",fontFamily:g,fontSize:o(t.cardInputFontSize)??o(r?.fontSizeBase)??"16px",fontWeight:String(Ci(u?.fontWeight)??400),borderRadius:o(r?.borderRadius)??"8px",...y?{submitButton:y}:{}}}var c=require("react/jsx-runtime"),br="flopay_stripe_resume",ol="flopay_wallet_resume",gl="fw1",od="fw2",hl=300*1e3,ad=900,id=25e3,sd=25e3,ld=1e4,Si={},wi={};function xi(e){return`${od}:${e}`}function Ea(e){if(typeof window>"u")return!1;try{return localStorage.removeItem(xi(e)),!0}catch{return!1}}function Ta(e,t){if(typeof window>"u")return null;let n=xi(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>hl||o.sessionId!==e||o.nonce!==t||typeof o.clientSecret!="string"||typeof o.providerObjectId!="string"||typeof o.paymentMethodType!="string"?(Ea(e),null):o}catch{return Ea(e),null}}function cd(e){if(typeof window>"u")return!1;try{return localStorage.setItem(xi(e.sessionId),JSON.stringify(e)),!0}catch{return!1}}function al(e,t,n){let r=Ta(e,t);return!r||r.clientSecret!==n?!1:Ea(e)}function ki(e,t,n){if(typeof window>"u")return;Ta(e,t)?.clientSecret===n&&Ea(e)}function dd(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function Ii(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":Bo(e.status),o=dd(e);return!r||!o?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:o}}async function il(e,t,n){let r=null;try{return await Promise.race([Ts(e,t),new Promise(o=>{r=window.setTimeout(()=>{r!==null&&n?.delete(r),o(null)},ld),n?.add(r)})])}finally{r!==null&&(window.clearTimeout(r),n?.delete(r))}}function ud(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function bl(e){return e instanceof p.FloPayError&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function xa(e,t,...n){let r=n[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:r});try{return await new lr.PaymentAPI(e,{telemetry:!1}).createSessionIntent(...n)}catch(o){throw bl(o)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:r}),o}}var Wo="flopay_paypal_resume",pd=250,sl="Just a moment \u2014 we are finalizing your order. Please press pay again.",md="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function Mi(e,t,n){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:n,requestCategory:"provider_sdk"})}async function Ma({billingApiUrl:e,sessionId:t,nonce:n,request:r}){if(!(!t||!n))try{await new lr.PaymentAPI(e,{telemetry:!1}).reportSessionIntentDecline(t,n,r)}catch{}}function yd(e){return e instanceof p.FloPayError&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Ri(e){return e?.html?{html:e.html,...e.messageToken?{messageToken:e.messageToken}:{},...e.expectedOrigin?{expectedOrigin:e.expectedOrigin}:{}}:null}function vl({event:e,fallbackEmail:t,fallbackName:n}){let r=e.billingDetails,o=t?.trim(),a=zr(n),l=a.firstName?a:zr(r?.name);return Fn({email:(0,p.isValidEmail)(o)?o:r?.email?.trim(),firstName:l.firstName,lastName:l.lastName})}async function fd({event:e,prepared:t,email:n,billingName:r,methodLabel:o,collect:a}){let l=vl({event:e,fallbackEmail:t?.accountPatch?.email??n,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||r});return(0,p.isValidEmail)(l.email)?l:a(o,l)}var gd=`
9
+ `})]})})}var js=require("@flopay/shared"),cn=require("react");var Ks=require("react/jsx-runtime");function $o({flopay:e,paypalFlopay:t,options:n,onInstrument:r,children:o}){let[a,l]=(0,cn.useState)(e instanceof Promise?null:e),[d,u]=(0,cn.useState)(t instanceof Promise||!t?null:t),m=(0,cn.useRef)(null),h=(0,cn.useRef)(null),b=mo(r);(0,cn.useEffect)(()=>{b({class:"lifecycle",name:"checkout.mount"})},[b]),(0,cn.useEffect)(()=>{a&&b({class:"lifecycle",name:"sdk.initialize.ready"})},[b,a]),(0,cn.useEffect)(()=>{if(a)return en(a)?.subscribe?.(b)},[b,a]),(0,cn.useEffect)(()=>{if(!(!d||d===a))return en(d)?.subscribe?.(b)},[b,a,d]),(0,cn.useEffect)(()=>{if(!a)return;let _=en(a);return m.current=_?.beginCheckout()??_?.now()??0,_?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{_?.log({name:"checkout.unmount",stage:"unmount"})}},[a]),(0,cn.useEffect)(()=>{let _=!1;return e instanceof Promise?e.then(ne=>{_||l(ne)},()=>{_||b({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):l(e),()=>{_=!0}},[b,e]),(0,cn.useEffect)(()=>{let _=!1;if(!t){u(null);return}return t instanceof Promise?t.then(ne=>{_||u(ne)},()=>{_||b({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):u(t),()=>{_=!0}},[b,t]),(0,cn.useEffect)(()=>{if(!a||h.current===a)return;h.current=a;let _=en(a);_?.log({name:"checkout.rendered",stage:"checkout_render"}),b({class:"lifecycle",name:"checkout.rendered"}),_?.performance({stage:"checkout_render",durationMs:_.elapsed(m.current??0),durationMode:"machine"})},[b,a]);let y=(0,js.resolveBillingApiUrl)(n?.billingApiUrl),C=(0,cn.useMemo)(()=>({flopay:a,paypalFlopay:d,billingApiUrl:y,emitInstrument:b}),[a,d,y,b]);return(0,Ks.jsx)(Qn.Provider,{value:C,children:o})}var Ia="flopay_recent_completion_";function ho(e){if(!(!e||typeof window>"u"))try{let t={expiresAt:Date.now()+6e4};window.sessionStorage.setItem(Ia+e,JSON.stringify(t))}catch{}}function bi(e){if(!e||typeof window>"u")return!1;try{let t=window.sessionStorage.getItem(Ia+e);if(!t)return!1;let n=JSON.parse(t);return typeof n?.expiresAt!="number"||n.expiresAt<=Date.now()?(window.sessionStorage.removeItem(Ia+e),!1):!0}catch{return!1}}async function Ra(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)}}var Hr=require("@flopay/js"),We=require("@flopay/shared");var jo="card",zc=1e3,Hs=3e5;async function Uc(e,t,n){if(n){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:a,error:l}=await e.retrieveSetupIntent(t);return{error:l,intent:a??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 qc(e,t,n,r){if(r){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:l,error:d}=await e.confirmCardSetup(t,n);return{error:d,intent:l??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:o,error:a}=await e.confirmCardPayment(t,n);return{error:a,intent:o??null}}function Ko(e){return new We.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function Pi(e,t){return Object.assign(e,{checkoutMethod:t})}function Ar(e,t){let n=e instanceof We.FloPayError?e:new We.FloPayError(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 Vo(e,t){try{return await e()}catch(n){throw Ar(n,t)}}function Gs(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 $c(e){return e.status==="succeeded"||e.status==="authorized"||e.status==="declined"}async function Ci(e){if(typeof document>"u"||typeof window>"u")throw new We.FloPayError("3DS challenge requires a browser environment.","api_error",{code:"three_ds_no_window"});if(e.signal?.aborted)throw new We.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted"});let t=1e3,n=15e3,r=`${e.billingApiUrl.replace(/\/$/,"")}/v1/checkouts/sessions/${encodeURIComponent(e.sessionId)}/3ds/complete`,o=async()=>{let b=new AbortController,y=()=>b.abort();e.signal?.aborted?b.abort():e.signal?.addEventListener("abort",y);let C=window.setTimeout(()=>b.abort(),n);try{let _=await fetch(r,{method:"POST",headers:{"x-checkout-session-token":e.nonce,"content-type":"application/json"},body:"{}",signal:b.signal});if(!_.ok)return{status:"unknown"};let ne=await _.json().catch(()=>null);return Vc(ne)}catch{return{status:"unknown"}}finally{window.clearTimeout(C),e.signal?.removeEventListener("abort",y)}},a,l=()=>e.pollCompletionEndpoint!==!1?o():(a??(a=o()),a),d=document.activeElement instanceof HTMLElement?document.activeElement:null,u=document.createElement("div");u.setAttribute("data-flopay-auto-3ds-overlay","1"),u.setAttribute("role","dialog"),u.setAttribute("aria-modal","true"),u.setAttribute("aria-label","Card authentication"),u.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 m=document.createElement("iframe");m.setAttribute("title","Card authentication"),m.setAttribute("allow","payment"),m.tabIndex=0,m.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 h=null;try{h=new URL(e.billingApiUrl,window.location.href).origin}catch{h=null}try{let b=await new Promise((y,C)=>{let _=!1,ne=0,z=0,ue=0,k=!1,$=()=>{window.clearTimeout(ne),window.clearInterval(z),window.clearTimeout(ue),window.removeEventListener("message",Pe),m.removeEventListener("load",se),e.signal?.removeEventListener("abort",Se)},U=async()=>{if(!(_||k)){k=!0;try{let pe=await l();if(_||!$c(pe))return;_=!0,$(),y(pe)}finally{k=!1}}},se=()=>{e.pollCompletionEndpoint!==!1&&(window.clearTimeout(ue),ue=window.setTimeout(()=>{U()},250))},Se=()=>{_||(_=!0,$(),C(new We.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted"})))},Pe=pe=>{if(pe.source!==m.contentWindow||h&&pe.origin!==h)return;let ye=pe.data;!ye||typeof ye!="object"||ye.source!=="flopay-vault-3ds-return"||_||(_=!0,$(),y(null))};ne=window.setTimeout(()=>{_||(_=!0,$(),C(new We.FloPayError("Card authentication timed out.","api_error",{code:"three_ds_timeout"})))},Hs),e.pollCompletionEndpoint!==!1&&(z=window.setInterval(()=>{U()},t)),m.addEventListener("load",se),window.addEventListener("message",Pe),e.signal?.addEventListener("abort",Se),m.src=e.nextActionRedirectUrl,u.appendChild(m),document.body.appendChild(u),m.focus(),e.signal?.aborted&&Se()});return b||await l()}finally{u.parentNode?.removeChild(u),d?.isConnected&&d.focus()}}async function bo(e,t){let n=t.nonce??t.session.clientSecret,r=new Hr.PaymentAPI(t.billingApiUrl,{telemetry:!1}),o=new AbortController,a=new AbortController,l=()=>{o.abort(t.signal.reason),a.abort(t.signal.reason)};t.signal.aborted?l():t.signal.addEventListener("abort",l,{once:!0});let d=Ci({billingApiUrl:t.billingApiUrl,sessionId:t.sessionId,nonce:n,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:o.signal,pollCompletionEndpoint:!1}),u=null,m=()=>(u??(u=r.waitForCheckoutSessionCompletion(t.sessionId,{initialDelayMs:zc,nonce:n,statusUrl:`${t.billingApiUrl.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(t.sessionId)}/status`,continueAfterActionRequired:!0,timeoutMs:Hs,signal:a.signal})),u),h=m(),b;try{let C=await Promise.race([d.then(_=>({kind:"challenge",outcome:_})),h.then(_=>({kind:"status",session:_}))]);if(C.kind==="status")o.abort(),b=C.session;else{if(C.outcome.status==="declined")throw br({type:C.outcome.declineReason??"authorization_declined",message:"Card was declined.",gatewayErrorCode:C.outcome.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"});b=await m()}}catch(C){throw t.signal.aborted||C instanceof Error&&C.name==="AbortError"?Ko(C):C}finally{t.signal.removeEventListener("abort",l),o.abort(),a.abort()}let y=b.data.session;if(!Nr(y))throw lo(y);return{...Ir(y,t.sessionId),checkoutMethod:"card"}}function Vc(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":return{status:"succeeded",providerIntentId:n};case"authorized":return{status:"authorized",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"pending":return{status:"pending",providerIntentId:n};case"timeout":return{status:"timeout",providerIntentId:n};case"no_attempt":return{status:"no_attempt"};default:return{status:"unknown"}}}function br(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,a=Dr(o)??o,l=Pi(new We.FloPayError(a,"api_error",{code:e?.code??(0,We.normalizeCheckoutFailureOutcome)(e?.outcome)??(0,We.normalizeCheckoutFailureOutcome)(e?.type)??e?.gatewayErrorCode}),r);return e?.orderId&&(l.orderId=e.orderId),l}function vi(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function _a(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function Ys(e,t){let n=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let o of n)if(typeof o=="string"&&o.length>0&&(!t?.requirePaymentIntentClientSecret||_a(o)))return o;let r=e?.data;if(r&&typeof r=="object"){let o=r,a=[o.threeDSecureToken,o.clientSecret,o.stripeClientSecret,o.id];for(let d of a)if(typeof d=="string"&&d.length>0&&(!t?.requirePaymentIntentClientSecret||_a(d)))return d;let l=o.gateways;if(l&&typeof l=="object"){let d=l.stripe;if(d&&typeof d=="object"){let u=d,m=[u.stripeClientSecret,u.clientSecret];for(let h of m)if(typeof h=="string"&&h.length>0&&(!t?.requirePaymentIntentClientSecret||_a(h)))return h}}}}async function jc({billingApiUrl:e,sessionId:t,nonce:n,responseJson:r}){let o=Ys(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 Hr.PaymentAPI(e,{telemetry:!1}).getUnifiedCheckoutSession(t,n)).data.stripe?.clientSecret;if(_a(d))return{type:"3ds_required",threeDSecureToken:d}}catch{}return null}async function vo({billingApiUrl:e,sessionId:t,session:n,nonce:r,tokenizedData:o,returnUrl:a,telemetry:l}){let d=e.replace(/\/+$/,""),u=t??n.id,m=r??n.clientSecret,h=n.customer?.id??n.accountData?.userId??"",b=n.customer?.email??n.accountData?.email??"",y=n.customer?.firstName??n.accountData?.firstName??"",C=n.customer?.lastName??n.accountData?.lastName??"",_=n.customer?.country??n.accountData?.country??void 0,ne=n.customer?.zip??n.accountData?.zip??void 0,ue=await new Hr.PaymentAPI(d,l===!1?{telemetry:!1}:void 0).processPayment(h,{sessionId:u,nonce:m,paymentMethodCategory:"saved",tokenizedData:o,accountData:{userId:h,email:b,firstName:y,lastName:C,country:_,zip:ne},returnUrl:a??vi(n)});if(ue.ok){let U=typeof ue.json=="function"?await ue.json().catch(()=>null):null;if((0,We.isAuthorizationOnlySession)(n)||U?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof U?.paymentId=="string"?U.paymentId:n.paymentId,sessionId:typeof U?.sessionId=="string"?U.sessionId:u,authorizationExpiresAt:typeof U?.authorizationExpiresAt=="string"?U.authorizationExpiresAt:n.authorizationExpiresAt,paymentMethodId:No(o),checkoutMethod:Ws(o,n)}};let se=o?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...se?{paymentIntentId:se}:{},paymentMethodId:No(o),checkoutMethod:Ws(o,n)}}}let k;try{k=await ue.json()}catch(U){throw new We.FloPayError("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:ue.status,cause:U})}if(k?.type==="3ds_required"&&typeof k.nextActionRedirectUrl=="string")return{type:"next_action_required",nextActionRedirectUrl:k.nextActionRedirectUrl};if(k?.type==="paypal_redirect_required"||k?.type==="3ds_required"){let U=Ys(k);if(!U)throw new We.FloPayError("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:ue.status});return{type:k.type,threeDSecureToken:U,paymentMethodId:k.paymentMethodId}}if(k?.gatewayErrorCode==="authentication_required"){let U=await jc({billingApiUrl:d,sessionId:u,nonce:m,responseJson:k});if(U)return U;throw Pi(new We.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let $=new We.FloPayError(k?.message??"Payment failed. Please try again.","api_error",{code:k?.code??k?.gatewayErrorCode,declineCode:k?.declineCode??k?.gatewayDeclineReason,statusCode:ue.status});throw Object.assign($,{telemetryOutcome:(0,We.classifyPaymentRejection)(ue.status,k)})}async function Ea(e,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:a,session:l,returnUrl:d,telemetry:u,signal:m}){let h=t?.getRawProvider();if(!h)throw Ar(new We.FloPayError("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!r||!e.threeDSecureToken)throw Pi(new We.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let b=(0,We.isSetupIntentClientSecret)(e.threeDSecureToken),y=null,C=e.paymentMethodId,_=await Vo(()=>Uc(h,e.threeDSecureToken,b),"card");if(_){if(_.error)throw Ar(new We.FloPayError(_.error.message??`Failed to retrieve 3DS ${b?"setup":"payment"} status.`,"api_error",{code:_.error.code}),"card");let z=_.intent;!C&&z?.payment_method&&(typeof z.payment_method=="string"?C=z.payment_method:"id"in z.payment_method&&(C=z.payment_method.id??void 0))}let ne=C?await Vo(()=>qc(h,e.threeDSecureToken,{payment_method:C,return_url:d??vi(l)??window.location.href},b),"card"):null;if(ne){if(ne.error)throw Ar(new We.FloPayError(ne.error.message??"3DS authentication failed.","api_error",{code:ne.error.code}),"card");y=ne.intent}else{let z=await Vo(()=>h.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(z.error)throw Ar(new We.FloPayError(z.error.message??"3DS authentication failed.","api_error",{code:z.error.code}),"card");y=(b?z.setupIntent:z.paymentIntent)??null}if(y&&(y.status==="requires_capture"||y.status==="succeeded"||y.status==="processing")){let z=await vo({billingApiUrl:o,sessionId:a,session:l,telemetry:u,tokenizedData:{id:y.id,type:"card",threeDSecureActionResultTokenId:y.id},returnUrl:d});return z.type==="success"?{...z.result,paymentIntentId:z.result.paymentIntentId??y.id,paymentMethodId:z.result.paymentMethodId??C}:z.type==="next_action_required"?bo(z,{billingApiUrl:o,sessionId:a??l.id,session:l,signal:m}):Ea(z,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:a,session:l,returnUrl:d,telemetry:u,signal:m})}throw Ar(new We.FloPayError("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let b=(n??t)?.getRawProvider();if(!b)throw Ar(new We.FloPayError("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:C}=await Vo(()=>b.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(C)throw Ar(new We.FloPayError(C.message??"PayPal authorization failed.","api_error",{code:C.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:y}=await Vo(()=>b.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:d??vi(l)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(y)throw Ar(new We.FloPayError(y.message??"PayPal authorization failed.","api_error",{code:y.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new We.FloPayError("Unsupported payment redirect state.","api_error")}function Wo(e){if(e instanceof We.FloPayError){let r=Dr(e.message);return r&&r!==e.message?Object.assign(new We.FloPayError(r,e.type,{code:e.code,declineCode:e.declineCode,param:e.param,statusCode:e.statusCode}),{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=Dr(t)??t;return new We.FloPayError(n,"api_error")}function Si(e){let t=e.data.stripe?.publishableKey,n=!!e.data.paypal?.publishableKey,r=!!e.data.session?.vault?.html||Fr(e.data.session);if(!t&&!n&&!r)throw new We.FloPayError("Session advertises no supported gateways or hosted vault (expected `gateways.stripe`, `gateways.paypal`, or vault markup).","validation_error");return t?{publishableKey:t,paypalPublishableKey:e.data.stripe?.paypalPublishableKey??t}:{}}function Ws(e,t){return e?e.isPaypal?"paypal":"card":t&&Fr(t)?"card":void 0}async function wi({publishableKey:e,paypalPublishableKey:t,billingApiUrl:n,locale:r,telemetry:o}){if(!e)return{flopay:null,paypalFlopay:null};let a=t&&t!==e?t:void 0,[l,d]=await Promise.all([(0,Hr.loadFloPay)(e,{billingApiUrl:n,locale:r,telemetry:o}),a?(0,Hr.loadFloPay)(a,{billingApiUrl:n,locale:r,telemetry:o}).catch(m=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",m),null)):Promise.resolve(null)]);if(!l)throw new We.FloPayError("The payment provider did not initialize.","authentication_error");let u=null;return a?u=d:t&&(u=l),{flopay:l,paypalFlopay:u}}var pr=require("@flopay/js"),p=require("@flopay/shared"),Kt=require("@stripe/react-stripe-js"),s=ks(require("react"),1);var Js={alipay:"https://cdn.flopay.com/sdk-logos/v1/alipay.svg",bancontact:"https://cdn.flopay.com/sdk-logos/v1/bancontact.svg",blik:"https://cdn.flopay.com/sdk-logos/v1/blik.svg",eps:"https://cdn.flopay.com/sdk-logos/v1/eps.svg",giropay:"https://cdn.flopay.com/sdk-logos/v1/giropay.svg",ideal:"https://cdn.flopay.com/sdk-logos/v1/ideal.svg",klarna:"https://cdn.flopay.com/sdk-logos/v1/klarna.svg",p24:"https://cdn.flopay.com/sdk-logos/v1/p24.svg",sepa_debit:"https://cdn.flopay.com/sdk-logos/v1/sepa_debit.svg",wechat_pay:"https://cdn.flopay.com/sdk-logos/v1/wechat_pay.svg"};var qn=require("react");function Xs(e,t){if(!e)return t;let n=t??{},r=Object.keys(n),o=r.some(l=>l.startsWith("background")),a={};for(let[l,d]of Object.entries(e))l in n||o&&l.startsWith("background")||(a[l]=d);for(let l of r)a[l]=n[l];return a}var Kc=new Set(["animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);function Wc(e){let t=e.replace(/^(Webkit|Moz|ms)(?=[A-Z])/,"");return Kc.has(t.charAt(0).toLowerCase()+t.slice(1))}function Hc(e,t){return typeof t=="number"&&t!==0&&!Wc(e)?`${t}px`:String(t).trim()}function Zs(e,t){if(e.style.cssText="",!!t){for(let[n,r]of Object.entries(t))if(!(r==null||r==="")){if(n.startsWith("--")){e.style.setProperty(n,String(r));continue}e.style[n]=Hc(n,r)}}}var Qs=require("react/jsx-runtime"),ki=new WeakSet;function Po({capture:e,html:t,messageToken:n,expectedOrigin:r,theme:o,submitLabel:a,containerStyle:l,onReady:d,onError:u,onValidation:m}){let h=(0,qn.useRef)(null),b=(0,qn.useRef)(d),y=(0,qn.useRef)(u),C=(0,qn.useRef)(m);b.current=d,y.current=u,C.current=m;let _=(0,qn.useRef)(o);_.current=o;let ne=(0,qn.useRef)(null),z=a??void 0,ue=(0,qn.useRef)(z);ue.current=z;let k=(0,qn.useRef)(void 0);return(0,qn.useEffect)(()=>{let $=h.current;if(!$)return;let U=!0,se=!1,Se=()=>{!U||se||(se=!0,b.current?.())},Pe=e.on("ready",()=>{Se()}),pe=e.on("error",we=>{y.current?.(we.message??"There was a problem loading the secure card form.")}),ye=e.on("validation",we=>{C.current?.(we.message??null)}),yt=ue.current??(ki.has(e)?null:void 0),He={html:t,...n?{messageToken:n}:{},...r?{expectedOrigin:r}:{},..._.current?{theme:_.current}:{},...yt===void 0?{}:{submitLabel:yt}};return ne.current=_.current??null,k.current=ue.current,ue.current!==void 0&&ki.add(e),e.mount($,He).then(()=>{Se()}).catch(we=>{U&&y.current?.(we instanceof Error?we.message:"Failed to load the secure card form.")}),()=>{U=!1,Pe(),pe(),ye(),e.unmount()}},[e,t,n,r]),Kr(()=>{let $=h.current;$&&Zs($,l)},[l]),(0,qn.useEffect)(()=>{o!==void 0&&(o===null&&ne.current===null||(ne.current=o,e.applyTheme?.(o)))},[e,o]),(0,qn.useEffect)(()=>{z!==k.current&&(k.current=z,z!==void 0&&ki.add(e),e.setSubmitLabel?.(z??null))},[e,z]),(0,Qs.jsx)("div",{ref:h,"data-testid":"flopay-vault-card-fields"})}var tl=/^#([0-9a-f]{6})$/i,Gc=/^#([0-9a-f]{3})$/i,nl=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i,rl=/^rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(0|1|0?\.\d+|1\.0+)\s*\)$/i,Yc=/^linear-gradient\(\s*(-?\d+(?:\.\d+)?)deg\s*,\s*(.+)\)$/i,Jc=/^(-?\d+(?:\.\d+)?)(?:px)?$/,Xc=/^(-?\d+(?:\.\d+)?)em$/,Zc=/^blur\(\s*(\d+(?:\.\d+)?)(?:px)?\s*\)$/i,Qc=/^[a-z][a-z0-9 -]{0,31}$/i,ed=new Set(["none","uppercase","lowercase","capitalize"]);function ol(e){if(typeof e!="string")return null;let t=e.trim(),n=tl.exec(t);if(n){let h=Number.parseInt(n[1],16);return{r:h>>16&255,g:h>>8&255,b:h&255,a:null}}let r=Gc.exec(t);if(r){let[h,b,y]=r[1].split("").map(C=>Number.parseInt(C+C,16));return{r:h,g:b,b:y,a:null}}let o=nl.exec(t),a=o?null:rl.exec(t),l=o??a;if(!l)return null;let d=Number(l[1]),u=Number(l[2]),m=Number(l[3]);return d>255||u>255||m>255?null:{r:d,g:u,b:m,a:a?Number(a[4]):null}}function al({r:e,g:t,b:n,a:r}){return r===null?`#${(1<<24|e<<16|t<<8|n).toString(16).slice(1)}`:`rgba(${e},${t},${n},${r})`}function Ho(e){if(typeof e!="string")return;let t=e.trim();if(tl.test(t)||nl.test(t))return t;let n=rl.exec(t);if(n&&/^\d/.test(n[4]))return t;let r=ol(t);return r?al(r):void 0}function Ta(e,t=.12){let n=ol(e);if(!n)return e;let r=Math.max(0,Math.min(1,1-t));return al({r:Math.round(n.r*r),g:Math.round(n.g*r),b:Math.round(n.b*r),a:n.a})}function Go(e,t){let n=[],r=0,o="";for(let a of e){if(a==="("&&(r+=1),a===")"&&(r-=1),a===t&&r===0){o.trim()&&n.push(o.trim()),o="";continue}o+=a}return o.trim()&&n.push(o.trim()),n}function Gr(e,t,n){if(typeof e!="number"&&typeof e!="string")return;let r=Jc.exec(String(e).trim());if(!r)return;let o=Number(r[1]);return Number.isFinite(o)&&o>=t&&o<=n?o:void 0}function td(e,t,n){if(typeof e!="string")return;let r=Xc.exec(e.trim());if(!r)return;let o=Number(r[1]);return Number.isFinite(o)&&o>=t&&o<=n?o:void 0}function nd(e){let t=Go(e,",");if(t.length<2||t.length>5)return;let n=[];for(let[r,o]of t.entries()){let a=Go(o," "),l=Ho(a[0]);if(!l)return;let d=r/(t.length-1)*100,u=a[1]===void 0?d:Number(/^(\d+(?:\.\d+)?)%$/.exec(a[1])?.[1]),m=n[n.length-1]?.position??-1;if(!Number.isFinite(u)||u<0||u>100||u<m)return;n.push({color:l,position:u})}return{type:"linearGradient",angle:0,stops:n}}function rd(e){if(typeof e!="string")return;let t=e.trim(),n=Ho(t);if(n)return{type:"solid",color:n};let r=Yc.exec(t);if(!r)return;let o=Number(r[1]);if(!Number.isFinite(o)||o<0||o>360)return;let a=nd(r[2]);return a&&a.type==="linearGradient"?{...a,angle:o}:void 0}function od(e){return e.type==="solid"?{type:"solid",color:Ta(e.color)}:{...e,stops:e.stops.map(t=>({...t,color:Ta(t.color)}))}}function ad(e){let t=!1,n,r=[];for(let u of Go(e," ")){if(u.toLowerCase()==="inset"){t=!0;continue}let m=Ho(u);if(m){n=m;continue}let h=Gr(u,-128,128);if(h===void 0)return;r.push(h)}if(!n||r.length<2||r.length>4)return;let[o,a,l=0,d=0]=r;if(!(Math.abs(o)>64||Math.abs(a)>64||l>128||Math.abs(d)>32))return{color:n,inset:t,offsetX:o,offsetY:a,blur:l,spread:d}}function id(e){if(typeof e!="string")return;let t=e.trim();if(t.toLowerCase()==="none")return[];let n=Go(t,",").map(ad);if(!(n.length===0||n.length>4))return n.every(r=>r!==void 0)?n:void 0}function el(e){if(typeof e!="string")return;let t=Go(e,",").map(n=>n.replace(/^['"]|['"]$/g,"").trim()).filter(n=>Qc.test(n)).slice(0,4);return t.length>0?t:void 0}function sd(e){let t=typeof e=="string"?e.trim().split(/\s+/):[e],n=Gr(t[0],0,64),r=Gr(t[1]??t[0],0,64);if(!(n===void 0||r===void 0))return{paddingBlock:n,paddingInline:r}}function ld(e){if(e==="bold")return 700;if(e==="normal")return 400;let t=Number(e);return Number.isInteger(t)&&t>=100&&t<=900?t:void 0}function il({appearance:e,buttonsStyles:t,fontFamily:n}){let r=t.submitButton;if(!r)return;let o=e?.variables,a=rd(r.background??r.backgroundColor),l=Ho(o?.colorPrimaryHover),d=l?{type:"solid",color:l}:a&&od(a),u={fontFamilies:el(r.fontFamily)??el(n),fontSize:Gr(r.fontSize??t.submitButtonFontSize,10,32)??16,fontWeight:ld(r.fontWeight)??600,letterSpacing:td(r.letterSpacing,-.1,.5)??.01,lineHeight:Gr(r.lineHeight,.8,2)??1,textTransform:ed.has(String(r.textTransform))?r.textTransform:"uppercase"},m=sd(r.padding),h=id(r.boxShadow),b=Gr(r.borderRadius,0,9999),y=typeof r.backdropFilter=="string"?Gr(Zc.exec(r.backdropFilter.trim())?.[1],0,40):void 0;return{foregroundColor:Ho(r.color)??"#FFFFFF",...a?{background:a,disabledBackground:a}:{},...d?{hoverBackground:d}:{},typography:u,...m?{spacing:m}:{},...h?{shadow:h}:{},...b===void 0?{}:{borderRadius:b},disabledOpacity:e?.theme==="night"?.8:.6,...y===void 0?{}:{backdropBlur:y}}}function Co(e,t=.12){let n=e.trim(),r=/^[0-9a-fA-F]{6}$/.test(n)?`#${n}`:n;return/^#[0-9a-fA-F]{6}$/.test(r)?Ta(r,t):e}function Ii(e){if(typeof e=="number"||typeof e=="string")return e}function Aa({appearance:e,buttonsStyles:t,layout:n="default"}){let r=e?.variables,o=b=>typeof b=="string"&&b?b:void 0,a=t.submitButton,l=o(r?.colorPrimary)??o(a?.backgroundColor)??"#4A49FF",d=n==="buttons",u=t.nameInput,m=o(u?.fontFamily)??o(r?.fontFamily)??"Poppins, sans-serif",h=il({appearance:e,buttonsStyles:t,fontFamily:m});return{primaryColor:l,primaryHoverColor:o(r?.colorPrimaryHover)??Co(l,.12),inputBackgroundColor:o(t.cardInputBackground)??o(r?.colorBackground)??"#ffffff",textColor:o(t.cardInputColor)??o(u?.color)??o(r?.colorText)??"#262833",borderColor:o(t.cardInputBorder)??(d?"#e5e7eb":"#A4A4FF"),placeholderColor:o(t.cardInputPlaceholderColor)??"#9ca3af",errorColor:o(r?.colorDanger)??"#dc2626",successColor:"#16a34a",fontFamily:m,fontSize:o(t.cardInputFontSize)??o(r?.fontSizeBase)??"16px",fontWeight:String(Ii(u?.fontWeight)??400),borderRadius:o(r?.borderRadius)??"8px",...h?{submitButton:h}:{}}}var c=require("react/jsx-runtime"),vr="flopay_stripe_resume",sl="flopay_wallet_resume",vl="fw1",cd="fw2",Pl=300*1e3,dd=900,ud=25e3,pd=25e3,md=1e4,Ri={},_i={};function Di(e){return`${cd}:${e}`}function xa(e){if(typeof window>"u")return!1;try{return localStorage.removeItem(Di(e)),!0}catch{return!1}}function Ma(e,t){if(typeof window>"u")return null;let n=Di(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>Pl||o.sessionId!==e||o.nonce!==t||typeof o.clientSecret!="string"||typeof o.providerObjectId!="string"||typeof o.paymentMethodType!="string"?(xa(e),null):o}catch{return xa(e),null}}function yd(e){if(typeof window>"u")return!1;try{return localStorage.setItem(Di(e.sessionId),JSON.stringify(e)),!0}catch{return!1}}function ll(e,t,n){let r=Ma(e,t);return!r||r.clientSecret!==n?!1:xa(e)}function Ei(e,t,n){if(typeof window>"u")return;Ma(e,t)?.clientSecret===n&&xa(e)}function fd(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function Ti(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":Do(e.status),o=fd(e);return!r||!o?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:o}}async function cl(e,t,n){let r=null;try{return await Promise.race([Ms(e,t),new Promise(o=>{r=window.setTimeout(()=>{r!==null&&n?.delete(r),o(null)},md),n?.add(r)})])}finally{r!==null&&(window.clearTimeout(r),n?.delete(r))}}function gd(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Cl(e){return e instanceof p.FloPayError&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function Fa(e,t,...n){let r=n[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:r});try{return await new pr.PaymentAPI(e,{telemetry:!1}).createSessionIntent(...n)}catch(o){throw Cl(o)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:r}),o}}var Yo="flopay_paypal_resume",hd=250,dl="Just a moment \u2014 we are finalizing your order. Please press pay again.",bd="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function Ni(e,t,n){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:n,requestCategory:"provider_sdk"})}async function Da({billingApiUrl:e,sessionId:t,nonce:n,request:r}){if(!(!t||!n))try{await new pr.PaymentAPI(e,{telemetry:!1}).reportSessionIntentDecline(t,n,r)}catch{}}function vd(e){return e instanceof p.FloPayError&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Ai(e){return e?.html?{html:e.html,...e.messageToken?{messageToken:e.messageToken}:{},...e.expectedOrigin?{expectedOrigin:e.expectedOrigin}:{}}:null}function Sl({event:e,fallbackEmail:t,fallbackName:n}){let r=e.billingDetails,o=t?.trim(),a=Vr(n),l=a.firstName?a:Vr(r?.name);return Mn({email:(0,p.isValidEmail)(o)?o:r?.email?.trim(),firstName:l.firstName,lastName:l.lastName})}async function Pd({event:e,prepared:t,email:n,billingName:r,methodLabel:o,collect:a}){let l=Sl({event:e,fallbackEmail:t?.accountPatch?.email??n,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||r});return(0,p.isValidEmail)(l.email)?l:a(o,l)}var Cd=`
10
10
  .paypal-buttons { margin: 0 !important; vertical-align: top !important; }
11
11
  @keyframes flopay-spin { to { transform: rotate(360deg); } }
12
12
  @keyframes flopay-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
@@ -27,7 +27,7 @@ ${mn.join(`
27
27
  0% { opacity: 1; transform: translateX(0) scale(1); }
28
28
  100% { opacity: 0; transform: translateX(16px) scale(0.97); }
29
29
  }
30
- `,Aa=44,Ho=180,ll=`flopay-card-enter ${Ho}ms cubic-bezier(0, 0, 0.2, 1) both`,cl=`flopay-card-exit ${Ho}ms cubic-bezier(0.4, 0, 0.2, 1) both`,hd=`flopay-buttons-enter ${Ho}ms cubic-bezier(0, 0, 0.2, 1) both`,bd=`flopay-buttons-exit ${Ho}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function vd(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function Bi(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 Pd={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function Cd(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 Ei={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 Sd(e){switch(e){case"paypal":return"PayPal";case"apple_pay":return"Apple Pay";case"google_pay":return"Google Pay";default:return"Card"}}function dl(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function Ti(e){return e==="paypal"?"PayPal":(0,p.getStripeMethodDisplayName)(e)}function wd(e,t){let n=`We couldn't open ${Ti(e)}. Try again or choose another payment method.`;return t?`${n} Allow pop-ups for this site, then try again.`:n}function kd(e){let t=(0,p.getPostalCodeExample)(e);return`Enter a valid ${(0,p.getPostalCodeLabel)(e)}${t?` (e.g. ${t})`:""}`}function Id(e,t,n){let r=(0,p.isPostalCodeSupported)(e),o=t.trim(),a=n&&r,l=a&&!o,d=a&&!!o&&!(0,p.isValidPostalCode)(e,o);return{visible:n,supported:r,required:a,empty:l,malformed:d}}function Rd(e,t){let n=e.trim(),r=t&&!n,o=t&&!!n&&!(0,p.isValidEmail)(n);return{required:t,empty:r,malformed:o,value:n}}function ul(e,t){return t instanceof p.FloPayError?t:new p.FloPayError(t instanceof Error?t.message:`${Sd(e)} before-click hook failed.`,"validation_error")}function _i(){return(0,c.jsx)("style",{children:gd})}function _d(e){return typeof e=="number"?`${e}px`:e}function Pl(e,t){let n=e.availablePaymentMethods;return n&&t.some(r=>n[r])?"ready":"unavailable"}function Cl({state:e,placeholderTestId:t,borderRadius:n=8,children:r}){return e==="unavailable"||e==="load_error"?null:(0,c.jsxs)("div",{style:{position:"relative",minHeight:44},children:[(0,c.jsx)("div",{"data-testid":t,"aria-hidden":e==="ready",style:{position:"absolute",inset:0,height:44,borderRadius:n,background:"#e5e7eb",animation:e==="ready"?void 0:"flopay-pulse 1.5s ease-in-out infinite",opacity:e==="ready"?0:1,transform:e==="ready"?"scale(0.985)":"scale(1)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:"none"}}),(0,c.jsx)("div",{style:{minHeight:44,opacity:e==="ready"?1:0,transform:e==="ready"?"translateY(0)":"translateY(2px)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:e==="ready"?"auto":"none"},children:r})]})}function pl(e){return e!=="unavailable"&&e!=="load_error"}function Ba(e){return(0,c.jsx)(Td,{...e})}function ml({sessionId:e,nonce:t,email:n,billingApiUrl:r,onTokenizedBody:o,onErrorChange:a,isProcessing:l=!1,onButtonClick:d,onDecline:u,onTechnicalFailure:g,runBeforeButtonClick:y,billingName:b,onBuyerIdentityReady:h,onLoadStateChange:k,placeholderBorderRadius:F}){let N=Ir(),{emitInstrument:ye}=(0,s.useContext)(Hn),se=(0,$t.useStripe)(),S=(0,$t.useElements)(),[V,O]=(0,s.useState)("loading");(0,s.useEffect)(()=>{k?.(V)},[V,k]);let[de,Se]=(0,s.useState)(!1),le=!(0,p.isValidEmail)(n?.trim())||!b?.trim(),{request:fe,collect:be,finish:pt}=io(),Ge=(0,s.useRef)(!1),ve=(0,s.useRef)(null),Ne=(0,s.useRef)(null),[ue,we]=(0,s.useState)(0),[Ye,Q]=(0,s.useState)(!1),ke=(0,s.useRef)(!1),pe=(0,s.useRef)(new Map),{startAttempt:nt,finishAttempt:rt,invalidateAttempt:I,isAttemptInvalidated:j,isAttemptCurrent:ge}=No((Pe,z,ie)=>{g?.(Pe,z,{...ie,popupBlocked:ie?.popupBlocked??kr(z)}),Q(!0),we(Oe=>Oe+1)});(0,s.useEffect)(()=>{Ye&&Ne.current?.focus()},[Ye,ue]);let ee=(0,s.useCallback)(()=>{we(Pe=>Pe+1)},[]),Ke=(0,s.useCallback)((Pe,z,ie)=>{I(ie),g?.("paypal",Pe,{code:z,popupBlocked:kr(Pe)}),Q(!0),ee()},[I,g,ee]),x=(0,s.useCallback)(()=>{window.setTimeout(()=>{(ve.current?.querySelector("iframe")??ve.current)?.focus()},0)},[]);(0,s.useEffect)(()=>{ke.current&&(ke.current=!1,x())},[x,ue]);let Ie=(0,s.useCallback)(()=>{Q(!1),a?.(null),x()},[x,a]);(0,s.useEffect)(()=>{if(!se||Ge.current)return;let Pe=new URLSearchParams(window.location.search),z=Pe.get("payment_intent"),ie=Pe.get("payment_intent_client_secret"),Oe=Pe.get("redirect_status");if(!z||!ie)return;Ge.current=!0;let ct;try{let Je=localStorage.getItem(Wo);if(Je){let De=JSON.parse(Je);De.clientSecret===ie&&(ct={...De.accountPatch?{accountPatch:De.accountPatch}:{},...De.sessionId?{sessionId:De.sessionId}:{},...De.nonce?{nonce:De.nonce}:{}})}}catch{}try{localStorage.removeItem(Wo)}catch{}let Fe=new URL(window.location.href);Fe.searchParams.delete("payment_intent"),Fe.searchParams.delete("payment_intent_client_secret"),Fe.searchParams.delete("redirect_status"),window.history.replaceState({},"",Fe.toString()),(async()=>{try{if(Se(!0),Oe==="failed"){let Ce="PayPal payment was declined. Please try again.";a?.(Ce),u?.(nn("paypal",Ce));return}let{paymentIntent:Je,error:De}=await se.retrievePaymentIntent(ie);if(De){a?.(De.message??"Failed to retrieve PayPal payment status.");return}if(Je&&(Je.status==="requires_capture"||Je.status==="succeeded")){let Ce=typeof Je.payment_method=="string"?Je.payment_method:Je.payment_method?.id;o({id:Ce??Je.id,type:"card",threeDSecureActionResultTokenId:Je.id,isPaypal:!0},ct)}else{let Ce="PayPal payment was not completed. Please try again.";a?.(Ce),u?.(nn("paypal",Ce))}}catch(Je){a?.(Je instanceof Error?Je.message:"Failed to complete PayPal payment.")}finally{Se(!1)}})()},[se,o,a,u]);let mt=(0,s.useCallback)(async Pe=>{if(l||de){Pe.reject();return}let z=y?await y("paypal"):{proceed:!0};if(!z.proceed){pe.current.delete(ue),Pe.reject();return}let ie=nt("paypal");pe.current.set(ue,{generation:ie,accountPatch:z.accountPatch,sessionId:z.sessionId,nonce:z.nonce}),Q(!1),d?.("paypal"),Pe.resolve()},[l,d,y,nt,de,ue]),Qe=(0,s.useCallback)(async Pe=>{if(!se||!S)return;let z=pe.current.get(ue);if(z&&!ge(z.generation)){pe.current.delete(ue);return}if(!z&&j()||z&&!rt(z.generation))return;z||rt();let ie=z??null;if(pe.current.delete(ue),!ie&&y){let Ce=await y("paypal");if(!Ce.proceed){Pe.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}ie={accountPatch:Ce.accountPatch,sessionId:Ce.sessionId,nonce:Ce.nonce}}let Oe=ie?.sessionId??e,ct=ie?.nonce??t,Fe=await fd({event:Pe,prepared:ie,email:n,billingName:b,methodLabel:"PayPal",collect:be});if(!Fe){Pe.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Je=Fe.email,De={...ie?.accountPatch,...Fn(Fe,!0)};try{if(Se(!0),a?.(null),!Oe||!(0,p.isValidEmail)(Je))throw new Error("Missing sessionId or email for PayPal payment");await h?.(Fe);let Ce=se.createPaymentMethod,{error:Ae,paymentMethod:Wt}=await Ce({type:"paypal"});if(Ae){Ke(Ae,"stripe_paypal_create_payment_method_failed",z?.generation),Pe.paymentFailed({reason:"fail"});return}let te=await xa(r,ye,Oe,ct??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:Wt?.id??null,intentKind:"payment"});if(te.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let At=te.clientSecret,gt={return_url:window.location.href};if(Wt?.id&&(gt.payment_method=Wt.id),typeof window<"u")try{localStorage.setItem(Wo,JSON.stringify({clientSecret:At,sessionId:Oe,nonce:ct,accountPatch:De}))}catch{}let{error:D,paymentIntent:me}=await se.confirmPayment({clientSecret:At,confirmParams:gt,redirect:"if_required"});if(D){if(typeof window<"u")try{localStorage.removeItem(Wo)}catch{}if(Do(D)){let A=D.message??"Your payment was declined.";a?.(A),u?.(nn("paypal",A,{code:wr(D),declineCode:lo(D)})),await Ma({billingApiUrl:r,sessionId:Oe,nonce:ct,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:wr(D)??"provider_declined"}})}else Ke(D,"stripe_paypal_confirm_failed",z?.generation);return}if(typeof window<"u")try{localStorage.removeItem(Wo)}catch{}let f=typeof me?.payment_method=="string"?me.payment_method:me?.payment_method?.id;o({id:f??me?.id,type:"card",threeDSecureActionResultTokenId:me?.id,isPaypal:!0},{accountPatch:De,paymentMethodCategory:"paypal",sessionId:Oe,nonce:ct});return}catch(Ce){Ke(Ce,"stripe_paypal_failed",z?.generation)}finally{Se(!1)}},[se,S,e,t,n,b,be,h,r,ye,o,a,u,y,Ke,rt,ge,j,ue]);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Cl,{state:V,placeholderTestId:"flopay-paypal-placeholder",borderRadius:F,children:(0,c.jsxs)("div",{ref:ve,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[Ye&&(0,c.jsx)("button",{ref:Ne,type:"button","data-testid":"flopay-paypal-retry-button",onClick:Ie,style:Ei,children:"Try PayPal again"}),fe&&(0,c.jsx)(so,{identity:fe.identity,methodLabel:fe.methodLabel,onComplete:pt,onCancel:()=>pt(null)},fe.id),(0,c.jsx)("div",{style:{display:fe?"none":void 0},children:(0,c.jsx)($t.ExpressCheckoutElement,{onReady:Pe=>O(Pl(Pe,["paypal"])),onLoadError:()=>{O("load_error"),Mi(en(N),"paypal","paypal")},onClick:mt,onConfirm:Qe,onCancel:()=>{let Pe=pe.current.get(ue);pe.current.delete(ue),en(N)?.terminal({outcome:"payment_cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),I(Pe?.generation),Q(!1),ke.current=!0,ee()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:le,emailRequired:le,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},ue)})]})}),de&&(0,c.jsx)(Yn,{status:"processing"})]})}function yl({sessionId:e,nonce:t,email:n,billingApiUrl:r,intentKind:o,expressMethods:a,onTokenizedBody:l,onErrorChange:d,onButtonClick:u,onDecline:g,onTechnicalFailure:y,runBeforeButtonClick:b,billingName:h,onBuyerIdentityReady:k,onLoadStateChange:F,placeholderBorderRadius:N}){let ye=Ir(),{emitInstrument:se}=(0,s.useContext)(Hn),S=(0,$t.useStripe)(),V=(0,$t.useElements)(),[O,de]=(0,s.useState)("loading");(0,s.useEffect)(()=>{F?.(O)},[O,F]);let[Se,le]=(0,s.useState)(!1),fe=(0,s.useRef)(!(0,p.isValidEmail)(n?.trim())||!h?.trim()).current,{request:be,collect:pt,finish:Ge}=io(),ve=(0,s.useRef)(null),Ne=(0,s.useRef)(null),[ue,we]=(0,s.useState)(0),[Ye,Q]=(0,s.useState)(!1),[ke,pe]=(0,s.useState)(()=>Ta(e,t)?"blocked":"idle"),[nt,rt]=(0,s.useState)("google_pay"),I=(0,s.useRef)(null),j=(0,s.useRef)(!0),ge=(0,s.useRef)(!1),ee=(0,s.useRef)("google_pay"),Ke=(0,s.useRef)("google_pay"),x=(0,s.useRef)(null),Ie=(0,s.useRef)(null),mt=(0,s.useRef)(new Set);(0,s.useEffect)(()=>(j.current=!0,()=>{j.current=!1;for(let D of mt.current)window.clearTimeout(D);mt.current.clear()}),[]);let Qe=(0,s.useRef)(new Map),{startAttempt:Pe,finishAttempt:z,invalidateAttempt:ie,isAttemptInvalidated:Oe,isAttemptCurrent:ct,generationRef:Fe}=No((D,me,f)=>{y?.(D,me,{...f,popupBlocked:f?.popupBlocked??kr(me)}),rt(D),Q(!0),we(A=>A+1)});(0,s.useEffect)(()=>{Ye&&Ne.current?.focus()},[Ye,ue]);let Je=(0,s.useCallback)(()=>{we(D=>D+1)},[]),De=(0,s.useCallback)((D,me,f,A)=>{ie(A),y?.(D,me,{code:f,popupBlocked:kr(me)}),rt(D),Q(!0),Je()},[ie,y,Je]),Ce=(0,s.useCallback)(()=>{window.setTimeout(()=>{(ve.current?.querySelector("iframe")??ve.current)?.focus()},0)},[]);(0,s.useEffect)(()=>{ge.current&&(ge.current=!1,Ce())},[Ce,ue]);let Ae=(0,s.useCallback)(()=>{Q(!1),d?.(null),Ce()},[Ce,d]),Wt=(0,s.useCallback)(()=>{I.current?.()},[]);(0,s.useEffect)(()=>{let D=Ta(e,t);if(!D)return;let me=!1,f=!1,A=async()=>{if(!f){f=!0,me||pe("checking");try{let ze=await il(S,D.clientSecret,mt.current);if(me)return;let _e=Ii(ze,D.providerObjectId,(0,p.isSetupIntentClientSecret)(D.clientSecret));if(_e.kind==="confirmed"){if(!al(e,t,D.clientSecret))return;I.current=null,pe("idle"),l({id:_e.paymentMethodId,type:"card",threeDSecureActionResultTokenId:_e.intentId},{...D.accountPatch?{accountPatch:D.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(_e.kind==="terminal"){ki(e,t,D.clientSecret),I.current=null,pe("idle"),rt(D.paymentMethodType),Q(!0),Je();return}pe("blocked")}catch{me||pe("blocked")}finally{f=!1}}};return I.current=A,pe("blocked"),()=>{me=!0,I.current===A&&(I.current=null)}},[t,l,Je,e,S]);let te=(0,s.useCallback)(async D=>{let me=!1,f=Le=>{me||(me=!0,D.paymentFailed({reason:"fail",...Le?{message:Le}:{}}))};if(!S||!V){f();return}let A=Qe.current.get(ue);if(A&&!ct(A.generation)){Qe.current.delete(ue),f();return}if(!A&&Oe()){f();return}if(A&&!z(A.generation)){f();return}A||z();let ze=D.expressPaymentType??A?.method??ee.current,_e=A??null,wt=dl(ze),st;ze==="apple_pay"?st="apple_pay":ze==="google_pay"&&(st="google_pay");let xt=A?.generation??Fe.current,X=en(ye),Ht=X?.now()??globalThis.performance?.now()??Date.now(),It=new AbortController,mn=!1,ur=!1,K=null,yn=e,wn="processing",cn="other",rn="provider_runtime",fn,Xn=new Promise((Le,We)=>{fn=We}),dn=window.setTimeout(()=>{mn=!0,It.abort(),fn(Si)},id),Gt=async(Le,We,on)=>{wn=Le,cn=We,rn=We==="intent_create"||We==="session_claim"?"transport_error":"provider_runtime";let yt=X?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([on,Xn])}finally{let $n=X?.now()??globalThis.performance?.now()??Date.now();X?.performance({stage:Le,durationMs:Math.max(0,$n-yt),durationMode:"machine",requestCategory:We,paymentMethodCategory:"wallet",provider:"stripe",...mn?{statusClass:"timeout"}:{}})}};try{if(le(!0),d?.(null),!_e&&b){let xe=await Gt("processing","other",b(wt));if(!xe.proceed){f();return}_e={accountPatch:xe.accountPatch,sessionId:xe.sessionId,nonce:xe.nonce}}let Le=_e?.sessionId??e;yn=Le;let We=_e?.nonce??t,on=x.current??_e?.accountPatch,yt=vl({event:D,fallbackEmail:on?.email??n,fallbackName:[on?.firstName,on?.lastName].join(" ").trim()||h});if(!(0,p.isValidEmail)(yt.email)){f("Buyer details are required."),pt(Ti(ze),yt).then(xe=>{xe&&(x.current=xe)});return}x.current=null;let $n={..._e?.accountPatch,...Fn(yt,!0)};await Gt("processing","session_claim",Promise.resolve(k?.(yt)));let{error:Mt}=await Gt("tokenization","provider_sdk",V.submit());if(Mt){f(),De(ze,Mt,"stripe_wallet_submit_failed",A?.generation);return}if(!Le)throw new Error("Missing sessionId or email for payment.");let Yt={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:ze,paymentMethodId:null,intentKind:o},bt=JSON.stringify({sessionId:Le,nonce:We??"",request:Yt}),Vt=Ie.current,un=Vt?.retryIdentity===bt?Vt.authorizationAttemptId:(0,p.randomUuidV4)();Ie.current={authorizationAttemptId:un,retryIdentity:bt};let Bt=await Gt("processing","intent_create",xa(r,se,Le,We??"",{...Yt,authorizationAttemptId:un},{signal:It.signal}));if(Bt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Rt=Bt.clientSecret,an=cd({createdAt:Date.now(),sessionId:Le,...We?{nonce:We}:{},clientSecret:Rt,providerObjectId:Bt.providerObjectId,paymentMethodType:ze,accountPatch:$n});window.clearTimeout(dn),ur=!0,X?.performance({stage:"callback",durationMs:Math.max(0,(X?.now()??globalThis.performance?.now()??Date.now())-Ht),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let Dn=X?.now()??globalThis.performance?.now()??Date.now(),Ct={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...st?{walletType:st}:{},attempt:xt},re=!1,gn=null;X?.log({name:"payment.provider_confirmation.started",...Ct}),K=window.setTimeout(()=>{K!==null&&mt.current.delete(K),re=!0;let xe=X?.now()??globalThis.performance?.now()??Date.now();X?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...Ct,operationOutcome:"watchdog_expired",durationMs:Math.max(0,xe-Dn),statusClass:"timeout",failureCategory:"provider_runtime"}),X?.flush?.().catch(()=>{}),gn?.()},sd),mt.current.add(K);let hn=xe=>{K!==null&&(window.clearTimeout(K),mt.current.delete(K),K=null);let L=X?.now()??globalThis.performance?.now()??Date.now(),Me=Math.max(0,L-Dn),M=xe;return re&&(xe==="resolved"?M="resolved_late":xe==="returned_error"?M="returned_error_late":M="rejected_late"),X?.log({name:"payment.provider_confirmation.returned",...Ct,operationOutcome:M}),X?.performance({...Ct,durationMs:Me,durationMode:"buyer",operationOutcome:M}),{durationMs:Me,operationOutcome:M}},Ft=!1,Ot=!1,Ln=xe=>{if(!xe||typeof xe!="object")return null;let L=xe;if(L.error)return null;let Me=L.setupIntent??L.paymentIntent,M=Ii(Me??null,void 0,!!L.setupIntent);return M.kind==="confirmed"?M:null},Vn=xe=>{if(Ft||A&&Fe.current!==A.generation)return;let L=Ln(xe);if(!L)return;if(an&&!al(Le,We,Rt)){Ft=!0;return}let{intentId:Me,paymentMethodId:M}=L;Ft=!0,Ot=!0,Ie.current=null,I.current=null,j.current&&(pe("idle"),le(!1));let Dt=`${gl}:${Le}`;if(typeof window<"u")try{localStorage.setItem(Dt,JSON.stringify({createdAt:Date.now(),sessionId:Le,nonce:We,accountPatch:$n,paymentMethodId:M,providerIntentId:Me,paymentMethodType:ze}))}catch{}try{l({id:M,type:"card",threeDSecureActionResultTokenId:Me},{accountPatch:$n,paymentMethodCategory:"wallet",sessionId:Le,nonce:We})}finally{if(typeof window<"u")try{localStorage.removeItem(Dt)}catch{}}},Zn=!1;gn=async()=>{if(!(Zn||Ft||Ot)){Zn=!0,j.current&&pe("checking");try{let xe=await il(S,Rt,mt.current);if(Ft||Ot)return;let L=(0,p.isSetupIntentClientSecret)(Rt),Me=Ii(xe,Bt.providerObjectId,L);if(Me.kind==="confirmed"){Vn(L?{setupIntent:xe}:{paymentIntent:xe});return}if(Me.kind==="terminal"){if(Ot=!0,ki(Le,We,Rt),Ie.current=null,I.current=null,!j.current)return;pe("idle"),f(),De(ze,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",A?.generation);return}j.current&&!Ot&&(pe("blocked"),le(!1))}catch{j.current&&!Ot&&(pe("blocked"),le(!1))}finally{Zn=!1}}},I.current=gn;let Jt,He;try{let xe=await((0,p.isSetupIntentClientSecret)(Rt)?S.confirmSetup({elements:V,clientSecret:Rt,redirect:"if_required"}):S.confirmPayment({elements:V,clientSecret:Rt,redirect:"if_required"}));if(!xe||typeof xe!="object"||(Jt=xe,!Jt.error&&!Ln(Jt)))throw wi;He=hn(Jt.error?"returned_error":"resolved")}catch(xe){let L=xe===wi,Me=hn(L?"returned_error":"rejected");if(X?.error({...L?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response"}:si(xe),...Ct,operationOutcome:Me.operationOutcome,durationMs:Me.durationMs,statusClass:"unknown"}),!j.current||Ft)return;await gn?.();return}let zt=Jt.error;if(zt){if(!j.current||Ft)return;if(Do(zt)){Ot=!0,ki(Le,We,Rt),Ie.current=null,I.current=null,pe("idle");let xe=zt.message??"Your payment was declined.";f(xe),d?.(xe),g?.(nn(wt,xe,{code:wr(zt),declineCode:lo(zt)})),Ma({billingApiUrl:r,sessionId:Le,nonce:We,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:ze,providerDeclineReason:wr(zt)??"provider_declined",...Bt.intentKind==="payment"&&Bt.providerObjectId.startsWith("pi_")?{providerIntentId:Bt.providerObjectId}:{}}})}else X?.error({...si(zt),...Ct,operationOutcome:He.operationOutcome,durationMs:He.durationMs,statusClass:"unknown"}),await gn?.();return}if(Vn(Jt),!Ft)throw new Error("Invalid provider returned for APM intent")}catch(Le){if(Le===Si){let We=X?.now()??globalThis.performance?.now()??Date.now();X?.error({errorCode:ud(cn),stage:wn,requestCategory:cn,paymentMethodCategory:"wallet",provider:"stripe",...st?{walletType:st}:{},operationOutcome:"watchdog_expired",checkoutSessionId:yn,durationMs:Math.max(0,We-Ht),statusClass:"timeout",failureCategory:rn,attempt:xt}),X?.flush?.().catch(()=>{})}f(),De(ze,Le,Le===Si?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",A?.generation)}finally{if(window.clearTimeout(dn),K!==null&&(window.clearTimeout(K),mt.current.delete(K)),!ur){let Le=X?.now()??globalThis.performance?.now()??Date.now();X?.performance({stage:"callback",durationMs:Math.max(0,Le-Ht),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...mn?{statusClass:"timeout"}:{}})}j.current&&le(!1)}},[S,V,e,t,n,h,pt,k,r,se,o,l,d,g,b,De,z,ct,Oe,Fe,ye,ue]),At=(0,s.useMemo)(()=>{let D=["applePay","googlePay","paypal","link","amazonPay","klarna"],me=new Set(["applePay","googlePay"]),f=new Set(a.map(p.stripeExpressMethodToOptionKey)),A={};for(let ze of D)f.has(ze)?A[ze]=me.has(ze)?"always":"auto":A[ze]="never";return A},[a]),gt=(0,s.useMemo)(()=>a.map(p.stripeExpressMethodToOptionKey),[a]);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(Cl,{state:O,placeholderTestId:"flopay-wallet-placeholder",borderRadius:N,children:(0,c.jsxs)("div",{ref:ve,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[Ye&&(0,c.jsxs)("button",{ref:Ne,type:"button","data-testid":"flopay-wallet-retry-button",onClick:Ae,style:Ei,children:["Try ",Ti(nt)," again"]}),ke!=="idle"&&(0,c.jsxs)("div",{role:"status","aria-live":"polite",children:[(0,c.jsx)("p",{children:"We are still confirming your payment. Check its status before trying again."}),(0,c.jsx)("button",{type:"button",onClick:Wt,disabled:ke==="checking",style:Ei,children:ke==="checking"?"Checking payment status\u2026":"Check payment status"})]}),be&&(0,c.jsx)(so,{identity:be.identity,methodLabel:be.methodLabel,onComplete:Ge,onCancel:()=>Ge(null)},be.id),ke==="idle"&&(0,c.jsx)("div",{style:{display:be?"none":void 0},children:(0,c.jsx)($t.ExpressCheckoutElement,{onReady:D=>{de(Pl(D,gt))},onLoadError:D=>{de("load_error"),Mi(en(ye),"stripe","wallet")},onClick:async D=>{ee.current=D.expressPaymentType,Ke.current=dl(D.expressPaymentType);let me=!0,f=window.setTimeout(()=>{me=!1,D.reject()},ad),A=b?await b(Ke.current):{proceed:!0};if(window.clearTimeout(f),!me)return;if(!A.proceed){Qe.current.delete(ue),D.reject();return}let ze=Pe(D.expressPaymentType);Qe.current.set(ue,{generation:ze,method:D.expressPaymentType,accountPatch:A.accountPatch,sessionId:A.sessionId,nonce:A.nonce}),Q(!1),u?.(Ke.current),D.resolve()},onConfirm:te,onCancel:()=>{let D=Qe.current.get(ue);Qe.current.delete(ue),en(ye)?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet"}),ie(D?.generation),Ie.current=null,Q(!1),ge.current=!0,Je()},options:{buttonType:{applePay:"plain",googlePay:"plain"},paymentMethods:At,emailRequired:fe,billingAddressRequired:fe,layout:{maxColumns:1,overflow:"never"}}},ue)})]})}),Se&&(0,c.jsx)(Yn,{status:"processing"})]})}function Sl(e,t){return{...e,paymentMethodTypes:[t],...t==="revolut_pay"||t==="sepa_debit"||t==="us_bank_account"?{setupFutureUsage:"off_session"}:null}}function Ed({method:e,themeId:t,submitting:n=!1,disabled:r=!1,highlighted:o=!1,hasNextStep:a=!1,onClick:l,backgroundColor:d,borderColor:u,textColor:g,borderRadius:y,fontFamily:b}){let h=(0,p.resolveStripeMethodBrandVariant)(e,t),k=Hs[e],[F,N]=(0,s.useState)(!1),ye=!!k&&!F,se=h?.backgroundColor??d??"#ffffff",S=h?.borderColor??u??"#d1d5db",V=h?.textColor??g??"#262833";return(0,c.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-button-${e}`,"data-method":e,onClick:()=>{!n&&!r&&l()},disabled:n||r,"aria-busy":n||void 0,style:{position:"relative",width:"100%",boxSizing:"border-box",height:Aa,padding:"0 1rem",backgroundColor:se,color:V,border:`1px solid ${S}`,borderRadius:y??8,fontSize:"0.95rem",fontWeight:600,fontFamily:b,cursor:n||r?"not-allowed":"pointer",opacity:r&&!n?.55:1,animation:n?"flopay-pulse 1.5s ease-in-out infinite":void 0,display:"flex",alignItems:"center",justifyContent:"center",gap:8,transition:"transform 0.1s, opacity 140ms ease-out, border-color 140ms ease-out",boxShadow:o?"0 0 0 2px rgba(74, 73, 255, 0.15)":void 0},children:n?(0,c.jsx)("span",{style:{margin:"0 auto"},children:`Connecting to ${(0,p.getStripeMethodDisplayName)(e)}\u2026`}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:(0,p.hasVendoredStripeMethodLogo)(e)?8:0},children:[ye?(0,c.jsx)("img",{src:k,alt:"","aria-hidden":"true",onError:()=>N(!0),loading:"lazy",decoding:"async",width:30,height:20,style:{width:30,height:20,flexShrink:0,borderRadius:3,objectFit:"contain",display:"inline-flex"}}):null,!ye&&h?.logoSvg?(0,c.jsx)("span",{"aria-hidden":"true",style:{width:30,height:20,flexShrink:0,display:"inline-flex",borderRadius:3,overflow:"hidden"},dangerouslySetInnerHTML:{__html:h.logoSvg}}):null,(0,c.jsx)("span",{children:(0,p.getStripeMethodDisplayName)(e)})]}),a&&(0,c.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:V,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem",top:"50%",transform:"translateY(-50%)",flexShrink:0,opacity:.7},"aria-hidden":"true",children:(0,c.jsx)("path",{d:"M9 18l6-6-6-6"})})]})})}function Ai({method:e,sessionId:t,nonce:n,email:r,billingName:o,onBuyerIdentityReady:a,billingApiUrl:l,onTokenizedBody:d,onErrorChange:u,onDecline:g,onCancel:y,runBeforeButtonClick:b,onButtonClick:h,isProcessing:k,submitButtonColor:F,submitButtonBorderRadius:N,submitButtonStyle:ye,errorText:se}){let S=Ir(),{emitInstrument:V}=(0,s.useContext)(Hn),O=(0,$t.useStripe)(),de=(0,$t.useElements)(),[Se,le]=(0,s.useState)(!1),fe=(0,s.useRef)(!1),[be,pt]=(0,s.useState)(!1),[Ge,ve]=(0,s.useState)("loading"),[Ne,ue]=(0,s.useState)(""),we=!(0,p.isValidEmail)(r?.trim()),Ye=!we||(0,p.isValidEmail)(Ne.trim()),Q=(0,s.useCallback)(async()=>{if(!O||!de||k||fe.current||!be)return;fe.current=!0,le(!0);let ke=b?await b("card"):{proceed:!0};if(!ke.proceed){fe.current=!1,le(!1);return}h?.("card");let pe=ke.sessionId??t,nt=ke.nonce??n,rt=zr(o?.trim()),I=Fn({email:ke.accountPatch?.email?.trim()||r?.trim()||Ne.trim(),firstName:ke.accountPatch?.firstName?.trim()||rt.firstName,lastName:ke.accountPatch?.lastName?.trim()||rt.lastName}),j=I.email,ge=Fn({...ke.accountPatch,...I});try{if(u?.(null),!(0,p.isValidEmail)(j))throw new Error("A valid email address is required for payment.");await a?.(I);let ee=await de.submit();if(ee.error){u?.(ee.error.message??"Payment failed.");return}let Ke=[I.firstName,I.lastName].filter(Boolean).join(" "),x=await O.createPaymentMethod({elements:de,params:{billing_details:{email:j,...Ke?{name:Ke}:{}}}});if(x.error||!x.paymentMethod){u?.(x.error?.message??"Failed to create payment method.");return}let Ie=x.paymentMethod;if(!pe||!j)throw new Error("Missing sessionId or email for payment.");let mt=Ie.type||e,Qe=await xa(l,V,pe,nt??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:mt,paymentMethodId:null,intentKind:"payment"});if(Qe.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Pe=Qe.clientSecret;if(typeof window<"u")try{localStorage.setItem(br,JSON.stringify({clientSecret:Pe,sessionId:pe,nonce:nt,accountPatch:ge,paymentMethodId:Ie.id,paymentMethodType:Ie.type??e,gateway:"stripe"}))}catch{}let{error:z,paymentIntent:ie}=await O.confirmPayment({clientSecret:Pe,confirmParams:{return_url:window.location.href,payment_method:Ie.id},redirect:"if_required"});if(z){if(typeof window<"u")try{localStorage.removeItem(br)}catch{}let Fe=z.message??"Payment failed.";u?.(Fe),g?.(nn("card",Fe,{code:z.code})),await Ma({billingApiUrl:l,sessionId:pe,nonce:nt,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:z.code??"provider_declined"}});return}let Oe=ie?.status;if(!Bo(Oe)){if(typeof window<"u")try{localStorage.removeItem(br)}catch{}let Fe=Oe==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";u?.(Fe),g?.(nn("card",Fe,{code:Oe??"missing_payment_intent"}));return}if(typeof window<"u")try{localStorage.removeItem(br)}catch{}let ct=typeof ie?.payment_method=="string"?ie.payment_method:ie?.payment_method?.id;d({id:ct??Ie.id,type:"card",threeDSecureActionResultTokenId:ie?.id,gateway:"stripe",paymentMethodType:Ie.type??e},{accountPatch:ge,paymentMethodCategory:"apm",sessionId:pe,nonce:nt})}catch(ee){u?.(ee instanceof Error?ee.message:"Payment failed. Please try again.")}finally{fe.current=!1,le(!1)}},[O,de,k,be,b,h,t,n,r,o,Ne,a,l,V,e,d,u,g]);return(0,c.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[we&&(0,c.jsx)("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:we&&(0,c.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,c.jsx)("input",{type:"email",autoComplete:"email",required:!0,value:Ne,onChange:ke=>ue(ke.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),(0,c.jsx)($t.PaymentElement,{onReady:()=>ve("ready"),onLoadError:()=>{ve("load_error"),Mi(en(S),"stripe","apm")},onChange:ke=>{pt(!!ke.complete)},options:{layout:{type:"accordion",defaultCollapsed:!1,radios:"never"},fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...o?.trim()?{name:o.trim()}:{},...(0,p.isValidEmail)(r?.trim())?{email:r?.trim()}:{}}}}}),(0,c.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-pay-${e}`,onClick:()=>{Q()},disabled:!be||!Ye||Se||k||Ge!=="ready",style:{width:"100%",marginTop:"0.75rem",padding:"0.875rem",backgroundColor:F,color:"white",border:"none",borderRadius:N,fontSize:"1rem",fontWeight:600,cursor:!be||!Ye||Se||k||Ge!=="ready"?"not-allowed":"pointer",opacity:!be||!Ye||Se||k||Ge!=="ready"?.5:1,transition:"opacity 120ms ease-out",...ye??{}},children:Se?"Processing\u2026":`Pay with ${(0,p.getStripeMethodDisplayName)(e)}`}),se&&(0,c.jsx)(uo,{margin:"0.75rem 0 0",children:se})]})}function fl({sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:a,paymentElementMethods:l,stripeInstance:d,paymentElementBaseOptions:u,onTokenizedBody:g,onErrorChange:y,onButtonClick:b,onDecline:h,runBeforeButtonClick:k,onLoadStateChange:F,isProcessing:N=!1,submitButtonColor:ye="#4A49FF",submitButtonBorderRadius:se=8,submitButtonStyle:S,buttonAppearance:V,themeId:O,onExpandApm:de,expandedApmMethod:Se}){let{emitInstrument:le}=(0,s.useContext)(Hn),[fe,be]=(0,s.useState)(null),[pt,Ge]=(0,s.useState)(null),ve=(0,s.useRef)(!1),{request:Ne,collect:ue,finish:we}=io();(0,s.useEffect)(()=>{l.length>0&&d?F?.("ready"):d||F?.("loading")},[l.length,d,F]);let Ye=(0,s.useCallback)(async I=>{if(!d||ve.current||N)return;ve.current=!0,Ge(I);let j=k?await k("card"):{proceed:!0};if(!j.proceed){ve.current=!1,Ge(null);return}b?.("card");let ge=j.sessionId??e,ee=j.nonce??t,Ke=zr([j.accountPatch?.firstName,j.accountPatch?.lastName].filter(Boolean).join(" ")||r),x=Fn({email:j.accountPatch?.email?.trim()||n?.trim(),firstName:j.accountPatch?.firstName?.trim()||Ke.firstName,lastName:j.accountPatch?.lastName?.trim()||Ke.lastName});if(!(0,p.isValidEmail)(x.email)){Ge(null);let Qe=await ue((0,p.getStripeMethodDisplayName)(I),x);if(!Qe){ve.current=!1;return}x=Qe,Ge(I)}let Ie=x.email,mt=Fn({...j.accountPatch,...x});try{if(y?.(null),!ge||!(0,p.isValidEmail)(Ie))throw new Error("Missing sessionId or email for payment.");await o?.(x);let Qe=await xa(a,le,ge,ee??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:I,paymentMethodId:null,intentKind:"payment"});if(Qe.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Pe=Qe.clientSecret;if(typeof window<"u")try{localStorage.setItem(br,JSON.stringify({clientSecret:Pe,sessionId:ge,nonce:ee,accountPatch:mt,paymentMethodType:I,gateway:"stripe"}))}catch{}let{error:z,paymentIntent:ie}=await d.confirmPayment({clientSecret:Pe,confirmParams:{return_url:window.location.href,payment_method_data:{type:I,billing_details:{name:[x.firstName,x.lastName].filter(Boolean).join(" "),...Ie?{email:Ie}:{}}}},redirect:"if_required"});if(z){if(typeof window<"u")try{localStorage.removeItem(br)}catch{}let Fe=z.message??"Payment failed.";y?.(Fe),h?.(nn("card",Fe,{code:z.code})),await Ma({billingApiUrl:a,sessionId:ge,nonce:ee,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:I,providerDeclineReason:z.code??"provider_declined"}});return}let Oe=ie?.status;if(!Bo(Oe)){if(typeof window<"u")try{localStorage.removeItem(br)}catch{}let Fe=Oe==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";y?.(Fe),h?.(nn("card",Fe,{code:Oe??"missing_payment_intent"}));return}if(typeof window<"u")try{localStorage.removeItem(br)}catch{}let ct=typeof ie?.payment_method=="string"?ie.payment_method:ie?.payment_method?.id;g({id:ct??ie?.id,type:"card",threeDSecureActionResultTokenId:ie?.id,gateway:"stripe",paymentMethodType:I},{accountPatch:mt,paymentMethodCategory:"apm",sessionId:ge,nonce:ee})}catch(Qe){y?.(Qe instanceof Error?Qe.message:"Payment failed. Please try again.")}finally{ve.current=!1,Ge(null)}},[d,N,k,b,e,t,n,ue,a,le,r,o,g,y,h]),[Q,ke]=(0,s.useState)(null),pe=de?Se??null:Q,nt=(0,s.useCallback)(I=>{ve.current||N||pe&&pe!==I||((0,p.needsStripeMethodExplicitConfirm)(I)?de?de(I):ke(I):Ye(I))},[pe,N,Ye,de]),rt=(0,s.useMemo)(()=>Q?Sl(u,Q):null,[Q,u]);return(0,c.jsx)("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:Ne?(0,c.jsx)(so,{identity:Ne.identity,methodLabel:Ne.methodLabel,onComplete:we,onCancel:()=>we(null)},Ne.id):l.map(I=>{let j=Se===I,ge=pt===I,ee=pt!==null&&pt!==I||Se!=null&&Se!==I;return(0,c.jsxs)(s.default.Fragment,{children:[(0,c.jsx)(Ed,{method:I,themeId:O,submitting:ge,disabled:ee,highlighted:j,hasNextStep:(0,p.needsStripeMethodExplicitConfirm)(I),onClick:()=>nt(I),backgroundColor:V?.backgroundColor,borderColor:V?.borderColor,textColor:V?.textColor,borderRadius:V?.borderRadius,fontFamily:V?.fontFamily}),!de&&Q===I&&rt&&d&&(0,c.jsx)($t.Elements,{stripe:d,options:rt,children:(0,c.jsx)(Ai,{method:I,sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:a,onTokenizedBody:g,onErrorChange:y,onDecline:h,onCancel:()=>ke(null),runBeforeButtonClick:k,onButtonClick:b,isProcessing:N,submitButtonColor:ye,submitButtonBorderRadius:se,submitButtonStyle:S})},I)]},I)})})}function Td({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,email:o,userId:a,onComplete:l,onError:d,onDecline:u,onTokenizedBody:g,firstName:y,lastName:b,chv:h,className:k,submitLabel:F,isProcessing:N,error:ye,onErrorChange:se,showPayPal:S=!0,showStripe:V=!0,enabledPaymentMethods:O,enabledPaymentMethodCountries:de,showApplePay:Se=!0,showGooglePay:le=!0,layout:fe="default",theme:be,buttonsTheme:pt,buttonsStyles:Ge,appearance:ve,cardButtonContent:Ne,cardBackButtonContent:ue,cardTitleContent:we,showSecurityFooter:Ye,onButtonClick:Q,onBeforeButtonClick:ke,onBuyerIdentityReady:pe,enableAVS:nt,cardFieldOrder:rt,cardPreFormSlot:I,avsLayout:j="row",country:ge,zip:ee,addressLine1:Ke,addressLine2:x,city:Ie,state:mt,onCountryChange:Qe,onZipChange:Pe,avsCheck:z,checkoutType:ie,checkoutLayout:Oe,totalAmount:ct=0,currency:Fe="usd",initialCardOpen:Je=!1,directPaypal:De,isSubscription:Ce=!1,session:Ae,dataAttachmentPending:Wt=!1,dataAttachmentRequiresIdentity:te=!1,debug:At=!1}){let gt=Ir(),D=ua(),me=(0,s.useContext)(ir),{emitInstrument:f}=(0,s.useContext)(Hn),A=Ae??me.session,ze=A?.gateways?.paypal?.providerObjectType??De?.providerObjectType,_e=Wt||me.claimPending===!0,wt=te||me.claimRequiresIdentity===!0,st=_e&&!wt,xt=Fs(),X=n||xt,[Ht,It]=(0,s.useState)(!1),[mn,ur]=(0,s.useState)(null),[K,yn]=(0,s.useState)(ge??"US"),[wn,cn]=(0,s.useState)(ee??""),[rn,fn]=(0,s.useState)(Ke??""),[Xn,dn]=(0,s.useState)(x??""),[Gt,Le]=(0,s.useState)(Ie??""),[We,on]=(0,s.useState)(mt??""),[yt,$n]=(0,s.useState)(""),[Mt,Yt]=(0,s.useState)({}),bt=(0,s.useRef)(ee??""),Vt=(0,s.useRef)(ge??"US"),un=(0,s.useRef)(Ke??""),Bt=(0,s.useRef)(x??""),Rt=(0,s.useRef)(Ie??""),an=(0,s.useRef)(mt??""),Dn=(0,s.useRef)(""),Ct=(0,s.useRef)({});(0,s.useEffect)(()=>{let i=(w,H,Ve,J,dt)=>{if(Ct.current[w])return;let at=H?.trim();!at||at===Ve.current||(Ve.current=at,J(at),dt?.(at))};i("country",ge,Vt,yn,Qe),i("zip",ee,bt,cn,Pe),i("addressLine1",Ke,un,fn),i("addressLine2",x,Bt,dn),i("city",Ie,Rt,Le),i("state",mt,an,on)},[ge,ee,Ke,x,Ie,mt,Qe,Pe]);let re=(0,s.useMemo)(()=>(0,p.resolveAVSConfig)(nt),[nt]),gn=re!==null,hn=(0,s.useMemo)(()=>(0,p.isAuthorizationOnlySession)(Ae),[Ae]),Ft=!!Ae?.vault?.html,Ot=!!Ae?.gateways?.pcivault,Ln=oi(Ae),Zn=!!(Ae?.gateways?.stripe?.enabledPaymentMethods??O)?.includes("card")||Or(Ae),Jt=Ft||Zn||Ot,He=!!(V&&Jt&&e),[zt,xe]=(0,s.useState)(()=>fe!=="buttons"||Je?e??null:null),[L,Me]=(0,s.useState)(0),M=fe!=="buttons"||Je||!!e&&zt===e,Dt=Ae?.captureMethod,bn=(0,s.useRef)(gt);(0,s.useEffect)(()=>{bn.current=gt},[gt]);let[sn,Nn]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!He||!e||!M){Nn(null);return}let i=bn.current?bn.current.cardCapture({sessionId:e,captureMethod:Dt}):new lr.PciVaultCardCapture({sessionId:e,captureMethod:Dt,billingApiUrl:X,telemetry:r});return Nn({sessionId:e,captureMethod:Dt,billingApiUrl:X,telemetry:r,capture:i}),()=>{i.unmount()}},[He,e,M,Dt,X,r]);let he=He&&e&&M&&sn?.sessionId===e&&sn.captureMethod===Dt&&sn.billingApiUrl===X&&sn.telemetry===r?sn.capture:null,vn=(0,s.useMemo)(()=>{let i=K,w=re?(0,p.isAVSFieldVisible)(re.postal_code,i):!1;return Id(i,wn,w)},[re,K,wn]),{avsInvalid:xr,invalidAvsFields:Kr}=(0,s.useMemo)(()=>{let i={line1:!1,city:!1,state:!1,zip:!1};if(!He||!re)return{avsInvalid:!1,invalidAvsFields:i};let w=K,H=(dt,at)=>(0,p.isAVSFieldVisible)(dt,w)&&!at.trim(),Ve={line1:H(re.address_line_1,rn),city:H(re.city,Gt),state:H(re.state,We),zip:vn.empty||vn.malformed};return{avsInvalid:Ve.line1||Ve.city||Ve.state||Ve.zip,invalidAvsFields:Ve}},[He,re,K,rn,Gt,We,vn]),[kn,Er]=(0,s.useState)(!1),[pr,Qn]=(0,s.useState)(!1),[jt,In]=(0,s.useState)(!1),[Cr,On]=(0,s.useState)({line1:!1,city:!1,state:!1}),Rn=(0,s.useRef)(!1),er=(0,s.useRef)({email:!1,line1:!1,city:!1,state:!1,zip:!1}),tr=(0,s.useRef)(!1),St=(0,s.useCallback)(i=>{er.current[i]=!0,tr.current=!0},[]),Pn=(0,s.useCallback)(i=>!Rn.current&&er.current[i],[]),jn=(0,s.useCallback)(i=>{Pn(i)&&On(w=>w[i]?w:{...w,[i]:!0})},[Pn]),[nr,_n]=(0,s.useState)(()=>Ri(Ae?.vault)),[Xe,tn]=(0,s.useState)(Je&&Jt?"card":"buttons"),[pn,mr]=(0,s.useState)(null),Mr=Xe==="expanding"||Xe==="card",rr=Ae?.gateways?.stripe&&!Ln?"stripe":void 0,yr=(0,s.useCallback)(()=>{f?.({class:"card_surface",provider:rr})},[rr,f]),En=(0,s.useRef)(null),Tn=(0,s.useCallback)(i=>{En.current&&clearTimeout(En.current),En.current=setTimeout(()=>{En.current=null,i()},Ho)},[]);(0,s.useEffect)(()=>()=>{En.current&&clearTimeout(En.current)},[]);let Br=(0,s.useCallback)(()=>{yr(),xe(e??null),Me(i=>i+1),tn("expanding"),Tn(()=>tn("card"))},[Tn,yr,e]),zn=(0,s.useCallback)(()=>{tn("collapsing"),Tn(()=>tn("buttons"))},[Tn]),Fr=(0,s.useCallback)(i=>{mr(i),tn("apm-expanding"),Tn(()=>tn("apm-form"))},[Tn]),Xt=(0,s.useCallback)(()=>{tn("apm-collapsing"),Tn(()=>{tn("buttons"),mr(null)})},[Tn]);(0,s.useEffect)(()=>{fe==="buttons"&&Je&&Jt&&(xe(e??null),tn("card"))},[fe,Je,Jt,e]);let[B,P]=(0,s.useState)(null),ne=(0,s.useRef)(!1),U=(0,s.useRef)(null),Be=(0,s.useRef)("idle"),[ut,Ee]=(0,s.useState)(!1),G=(0,s.useRef)(ut);G.current=ut;let[oe,q]=(0,s.useState)(null),v=(0,s.useRef)(oe);(0,s.useEffect)(()=>{v.current=oe},[oe]);let m=(0,s.useRef)(null),_=(0,s.useMemo)(()=>{if(pe||me.claimBuyerIdentity||Ae?.buyerIdentified!==!1||!e||!t)return;let i=`${X}|${e}|${t}`;m.current?.key!==i&&(m.current={key:i,claim:oo(new lr.PaymentAPI(X,{telemetry:!1}),e,t,{...a?{userId:a}:{},...y?{firstName:y}:{},...b?{lastName:b}:{}})});let w=m.current.claim;return async H=>{await w(H)}},[pe,me.claimBuyerIdentity,Ae?.buyerIdentified,e,t,X,a,y,b]),W=pe??me.claimBuyerIdentity??_,ce=ye??mn,Z=(0,s.useMemo)(()=>(0,p.resolveTheme)(be),[be]),R=(0,s.useMemo)(()=>{let i=Z?.buttonsLayout??(0,p.resolveButtonsLayoutTheme)(pt);return Ge?{...i,...Ge,cardButton:{...i.cardButton,...Ge.cardButton},cardFormContainer:{...i.cardFormContainer,...Ge.cardFormContainer},backButton:{...i.backButton,...Ge.backButton},backButtonIcon:{...i.backButtonIcon,...Ge.backButtonIcon},submitButton:{...i.submitButton,...Ge.submitButton},title:{...i.title,...Ge.title}}:i},[Z,pt,Ge]),ae=ve??Z?.appearance,ft=(0,s.useMemo)(()=>_a({appearance:ae,buttonsStyles:R,layout:fe}),[ae,R,fe]),Ut=me.inlineSessionPatchProcessing??!1,Ue=(N??Ht)||Ut,Te=X.replace(/\/+$/,""),$=(0,s.useMemo)(()=>ii({userId:a,email:o,firstName:y,lastName:b,country:ge,zip:ee},Mt),[a,o,y,b,ge,ee,Mt]),Y=[$.firstName,$.lastName].filter(i=>!!i?.trim()).join(" "),qe=!(0,p.isValidEmail)($.email?.trim()),$e=(0,s.useRef)(null);He&&$e.current===null&&($e.current=qe);let _t=He&&($e.current??qe),et=(0,s.useMemo)(()=>Rd(yt,_t),[yt,_t]),An=et.empty||et.malformed,Zt=(0,s.useMemo)(()=>gt?gt.getRawProvider():null,[gt]),Wr=(0,s.useMemo)(()=>D?D.getRawProvider():null,[D]),Po=ct||100,Hr=Fe.toLowerCase(),Ua=(0,s.useMemo)(()=>ae?(0,lr.toStripeAppearance)(ae):null,[ae]),Gr=Ua,$i=(0,s.useMemo)(()=>{let i=Ua??{},w=i.rules??{};return{...i,rules:{...w,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...w[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...w[".AccordionItemContents"]??{}}}}},[Ua]),Vi=(0,s.useMemo)(()=>({...As(ct,Ae?.captureMethod),currency:Hr,...Gr?{appearance:Gr}:null}),[ct,Hr,Ae?.captureMethod,Gr]),ji=(0,s.useMemo)(()=>({mode:"payment",amount:Po,currency:Hr,captureMethod:"manual",setupFutureUsage:"off_session",...Gr?{appearance:Gr}:null}),[Po,Hr,Gr]),Re=(0,s.useCallback)(i=>{ur(i),se?.(i)},[se]),qa=(0,s.useRef)(""),[Ki,Ll]=(0,s.useState)(!1),$a=(0,s.useCallback)(()=>{Ll(!0)},[]);(0,s.useEffect)(()=>{if(!He||!_t||!W||!Ki||An||qa.current)return;let i=Fn({email:(0,p.isValidEmail)($.email?.trim())?$.email?.trim():Dn.current.trim(),firstName:$.firstName?.trim(),lastName:$.lastName?.trim()});qa.current=JSON.stringify(i),Yt(w=>({...w,...i})),Promise.resolve(W(i)).catch(w=>{qa.current="",Re(w instanceof Error?w.message:"Failed to attach buyer details.")})},[He,_t,W,Ki,An,$.email,$.firstName,$.lastName,Re]),(0,s.useEffect)(()=>{!He||!he||he.setCardFieldOrder?.(rt??null,re==null&&!_t)},[He,he,rt,re,_t]),(0,s.useEffect)(()=>{(Xe==="expanding"||Xe==="collapsing"||Xe==="apm-expanding"||Xe==="apm-collapsing")&&Re(null)},[Xe,Re]);let fr=(0,s.useCallback)((i,w,H)=>{u?.(nn(i,w,H))},[u]),Yr=(0,s.useCallback)((i,w,H)=>{let Ve=H?.popupBlocked??kr(w),J=wd(i,Ve),dt=qr(H?.code)??wr(w)??"external_payment_method_failed",at=new p.FloPayError(J,"api_error",{code:"external_payment_method_failed",param:i});P(null),fe==="buttons"&&(tn("buttons"),mr(null)),Re(J),d?.(at),console.error("[FloPay] External payment method failed:",{method:i,code:dt,popupBlocked:Ve})},[fe,d,Re]);(0,s.useEffect)(()=>{if(!He||!e){_n(null);return}let i=Ri(Ae?.vault);if(i){_n(i);return}if(!M){_n(null);return}_n(null);let w=!0;return new lr.PaymentAPI(Te).getVaultCapture(e,t).then(H=>{if(!w)return;let Ve=Ri(H);Ve?_n(Ve):Re("Failed to load the secure card form.")}).catch(H=>{w&&Re(H instanceof Error?H.message:"Failed to load the secure card form.")}),()=>{w=!1}},[He,M,L,e,Ae?.vault,Te,t,Re]);let or=(0,s.useRef)({onComplete:l,onError:d,updateError:Re,emitDecline:fr,resolvedAccount:$,avsConfig:re,avsCheckProp:z,sessionId:e,nonce:t,baseUrl:Te,captureMethod:Ae?.captureMethod,paymentId:Ae?.paymentId,authorizationExpiresAt:Ae?.authorizationExpiresAt,serverSideCardGateway:Ln});or.current={onComplete:l,onError:d,updateError:Re,emitDecline:fr,resolvedAccount:$,avsConfig:re,avsCheckProp:z,sessionId:e,nonce:t,baseUrl:Te,captureMethod:Ae?.captureMethod,paymentId:Ae?.paymentId,authorizationExpiresAt:Ae?.authorizationExpiresAt,serverSideCardGateway:Ln};let Va=(0,s.useRef)(!1),Wi=(0,s.useCallback)(()=>{let i=or.current,w=i.resolvedAccount.email?.trim(),H=(0,p.isValidEmail)(w)?w:Dn.current.trim();if(!(0,p.isValidEmail)(H))return null;let Ve=i.resolvedAccount.firstName?.trim(),J=i.resolvedAccount.lastName?.trim(),dt=Vt.current||i.resolvedAccount.country||"US",at=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.state,dt):!1,hr=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.address_line_1,dt):!1,ot=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.postal_code,dt):!1,Et=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.city,dt):!1,ht=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.address_line_2,dt):!1,it=hr&&!at&&ot?(0,p.getStateFromPostalCode)(dt,(bt.current??"").trim()):null,Bn=at?an.current:it;return{accountData:{userId:i.resolvedAccount.userId??"",email:H,...Ve?{firstName:Ve}:{},...J?{lastName:J}:{},...ot&&bt.current?{zip:bt.current}:{},...Et&&Rt.current?{city:Rt.current}:{},...Bn?{state:Bn}:{},...hr&&un.current?{addressLine1:un.current}:{},...ht&&Bt.current?{addressLine2:Bt.current}:{},country:dt},...i.avsCheckProp===void 0?{}:{avsCheck:i.avsCheckProp},...i.avsConfig?{avsConfig:{country:(0,p.isAVSFieldVisible)(i.avsConfig.country,dt),postal_code:ot,address_line_1:hr,address_line_2:ht,city:Et,state:at}}:{}}},[]),Hi=(0,s.useRef)(_e);Hi.current=_e,(0,s.useEffect)(()=>{_e||ce!==sl||or.current.updateError(null)},[_e,ce]),(0,s.useEffect)(()=>{!He||!he||he.setSubmitGate?.(xr||_e||An||ut)},[He,he,xr,_e,An,ut]),(0,s.useEffect)(()=>{if(!He||!he)return;Va.current=!1;let i=null,w=()=>{i&&clearTimeout(i),i=setTimeout(()=>{i=null,Be.current="idle",P(null)},400)},H=he.on("submitting",()=>{Er(!0),U.current&&clearTimeout(U.current),Be.current="validation-window",U.current=setTimeout(()=>{U.current=null,Be.current==="validation-window"&&(Be.current="processing")},pd),P("processing");let ot=or.current;if(!ot.sessionId||!ot.nonce)return;let Et=Wi();if(!Et){ot.updateError("Enter a valid email address."),Be.current="idle",P(null);return}new lr.PaymentAPI(ot.baseUrl).patchAccountSnapshot(ot.sessionId,ot.nonce,Et,{telemetryMode:"best_effort"}).catch(ht=>{if(!yd(ht))return;let it=ht instanceof Error?ht.message:"Please check your billing address and try again.";ot.updateError(it),Be.current="idle",P(null),ot.onError?.(ht instanceof p.FloPayError?ht:new p.FloPayError(it,"api_error"))})}),Ve=he.on("complete",async ot=>{if(yo(ot.sessionId??or.current.sessionId),Be.current="terminal",Ee(!1),P("success"),await new Promise(Bn=>setTimeout(Bn,600)),Va.current)return;Va.current=!0;let Et=or.current,ht=(0,p.isAuthorizationOnlySession)(Et)||ot.outcome==="authorized",it=Et.serverSideCardGateway?{}:{paymentIntentId:ot.intentId};or.current.onComplete?.(ht?{status:"authorized",...it,paymentId:ot.paymentId??Et.paymentId,sessionId:ot.sessionId??Et.sessionId,authorizationExpiresAt:ot.authorizationExpiresAt??Et.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...it,checkoutMethod:"card"})}),J=he.on("decline",ot=>{let Et=or.current,ht=ot.message??"Your payment was declined. Please try another card or contact your bank.";Be.current="terminal",Ee(!1),Et.updateError(ht),P("error");let it=ot.failureOutcome??(0,p.normalizeCheckoutFailureOutcome)(ot.declineReason)??"authorization_declined";Et.emitDecline("card",ht,{code:it,declineCode:it}),w()}),dt=he.on("error",ot=>{let Et=or.current,ht=ot.message??"There was a problem processing your payment. Please try again.";Be.current="terminal",Ee(!1),Et.updateError(ht),P("error"),Et.onError?.(new p.FloPayError(ht,"api_error",{code:ot.failureOutcome??"capture_failed"})),w()}),at=he.on("challenge_dismissed",()=>{U.current&&(clearTimeout(U.current),U.current=null),Be.current="processing",Ee(!0),P(null)}),hr=he.on("blocked",()=>{if(G.current){or.current.updateError(md);return}if(!Hi.current){Er(!0);return}$a(),or.current.updateError(sl)});return()=>{i&&(clearTimeout(i),i=null),U.current&&(clearTimeout(U.current),U.current=null),Be.current="idle",Ee(!1),P(null),H(),Ve(),J(),dt(),at(),hr()}},[He,he,$a,Wi]);let gr=!!De?.clientId,Co=Array.isArray(O),Xo=Co&&O.length>0,Nl=Co&&O.includes("paypal"),{expressMethods:Zo,paymentElementMethods:So}=(0,s.useMemo)(()=>(0,p.partitionStripeMethods)(O,{excludePaypal:gr}),[O,gr]),Gi=gr||!!D,Ol=(0,s.useMemo)(()=>Gi?Zo.filter(i=>i!=="paypal"):Zo,[Zo,Gi]),zl=(0,s.useMemo)(()=>{let i=[];return Se&&i.push("apple_pay"),le&&i.push("google_pay"),i},[Se,le]),Jr=Co?Ol:zl,Ul=V&&Jr.length>0,ja=gn?K:ge,Qo=(0,s.useMemo)(()=>{let i=ja?.trim().toUpperCase();return i?de?So.filter(w=>{let H=de[w];return!H||H.length===0||H.includes(i)}):(0,p.filterStripeMethodsByCountry)(So,ja):So},[So,ja,de]),Ka=(0,s.useMemo)(()=>({mode:"payment",amount:Po,currency:Hr,paymentMethodCreation:"manual",appearance:$i}),[Po,Hr,$i]),[Yi,Ji]=(0,s.useState)("loading"),[Xi,Zi]=(0,s.useState)("loading"),[Qi,es]=(0,s.useState)("loading"),[ql,Wa]=(0,s.useState)(!1),[ts,Ha]=(0,s.useState)("loading"),[Ga,$l]=(0,s.useState)();(0,s.useEffect)(()=>{$l(pa())},[]);let ea=Ga?.inAppBrowser,ta=Ga?ma(Ga,De?.approvalPresentation,ze??(Ce?"subscription":"order")):"popup",ns=S&&(gr||(Co?Nl:ea===!1)),rs=V&&Ul,wo=(!st||!!me.waitForDataAttachment)&&ns&&gr,os=ts==="retrying"||ts==="exhausted",ko=!st&&ns&&!!Wr&&(!gr||os),Xr=!st&&rs&&!!Zt,Io=!st&&V&&Xo&&Qo.length>0&&!!Zt,Vl=wo&&!os?ql:ko&&pl(Yi),jl=Xr&&pl(Xi),Kl=Io&&Qi!=="load_error",as=i=>i==="loading"||i==="ready",is=wo||ko&&as(Yi)||Xr&&as(Xi)||Io&&Qi!=="load_error",na=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(!na.current){if(!V&&!S){na.current=!0;let i=new p.FloPayError("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");d?.(i),Re(i.message)}else if(!V&&S&&!gr&&!Wr){na.current=!0;let i=new p.FloPayError("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");d?.(i),Re(i.message)}else if(ea!==void 0&&!st&&!Jt&&!is){na.current=!0;let i=new p.FloPayError("FloPay: this checkout session has no vault card capability and no usable supported non-card payment methods. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});d?.(i),Re(i.message)}}},[V,S,gr,Wr,ea,st,Jt,is,d,Re]);let ss=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(ss.current||!Xo)return;let i=[];Se!==!0&&i.push("showApplePay"),le!==!0&&i.push("showGooglePay"),i.length!==0&&(ss.current=!0,console.warn(`[FloPay] ${i.join(" / ")} ${i.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.`))},[Xo,Se,le]);let ls=(0,s.useCallback)((i,w)=>me.applyInlineSessionPatch?me.applyInlineSessionPatch(i).then(H=>({error:null,sessionId:H.sessionId||e,nonce:H.session?.clientSecret||t})).catch(H=>{let Ve=ul(w,H);return Re(Ve.message),d?.(Ve),{error:Ve,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[me.applyInlineSessionPatch,t,d,e,Re]),ar=(0,s.useCallback)(async i=>{if(i!=="card"&&st&&await me.waitForDataAttachment?.(),!ke)return{proceed:!0};try{let w=await ke({method:i,sessionId:e||void 0,createSession:me.inlineSessionDraft});if(w===!1)return{proceed:!1};if(w&&typeof w=="object"){w.account&&Yt(Ve=>({...Ve??{},...w.account}));let H=await ls(w,i);return H.error?{proceed:!1,accountPatch:w.account}:{proceed:!0,accountPatch:w.account,sessionId:H.sessionId,nonce:H.nonce}}return{proceed:!0}}catch(w){let H=ul(i,w);return Re(H.message),d?.(H),{proceed:!1}}},[ls,me.inlineSessionDraft,me.waitForDataAttachment,st,ke,d,e,Re]),cs=(0,s.useCallback)(async(i,w)=>{if(ne.current)return;ne.current=!0,It(!0),P("processing"),Re(null);let H=w?.sessionId??e,Ve=w?.nonce??t,J=ii($,w?.accountPatch),dt=w?.completionPaymentMethodId??Fo(i),at=i.originalPaymentMethodId?{...i,originalPaymentMethodId:void 0}:i,hr=vd(i),ot=()=>{f?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:hr})};try{let ht=await new lr.PaymentAPI(Te).processPayment(J.userId??"",{sessionId:H,nonce:Ve,paymentMethodCategory:w?.paymentMethodCategory??Cd(i),tokenizedData:at,accountData:{...w?.accountPatch,userId:J.userId??"",email:J.email??"",firstName:J.firstName||void 0,lastName:J.lastName||void 0,...re?(()=>{let vt=Vt.current,Wn=(0,p.isAVSFieldVisible)(re.state,vt),Cn=(0,p.isAVSFieldVisible)(re.address_line_1,vt),Qt=(0,p.isAVSFieldVisible)(re.postal_code,vt),Nr=Cn&&!Wn&&Qt?(0,p.getStateFromPostalCode)(vt,(bt.current??"").trim()):null,xo=Wn?an.current:Nr;return{country:vt,...Qt&&bt.current?{zip:bt.current}:{},...(0,p.isAVSFieldVisible)(re.city,vt)&&Rt.current?{city:Rt.current}:{},...xo?{state:xo}:{},...Cn&&un.current?{addressLine1:un.current}:{},...(0,p.isAVSFieldVisible)(re.address_line_2,vt)&&Bt.current?{addressLine2:Bt.current}:{}}})():{}},chv:h,avsCheck:z??!1,checkoutType:ie,checkoutLayout:Oe,avsConfig:re?{country:(0,p.isAVSFieldVisible)(re.country,Vt.current),postal_code:(0,p.isAVSFieldVisible)(re.postal_code,Vt.current),address_line_1:(0,p.isAVSFieldVisible)(re.address_line_1,Vt.current),address_line_2:(0,p.isAVSFieldVisible)(re.address_line_2,Vt.current),city:(0,p.isAVSFieldVisible)(re.city,Vt.current),state:(0,p.isAVSFieldVisible)(re.state,Vt.current)}:void 0});if(ht.ok){let vt=ht.status===204?null:await ht.json().catch(()=>null),Wn=(0,p.isAuthorizationOnlySession)(Ae)||vt?.status==="authorized";yo(H),P("success"),q(null),await new Promise(Nr=>setTimeout(Nr,600));let Cn;typeof vt?.paymentId=="string"?Cn=vt.paymentId:Ae?.paymentId&&(Cn=Ae.paymentId);let Qt;typeof vt?.authorizationExpiresAt=="string"?Qt=vt.authorizationExpiresAt:Ae?.authorizationExpiresAt&&(Qt=Ae.authorizationExpiresAt),l?.(Wn?{status:"authorized",...Cn===void 0?{}:{paymentId:Cn},sessionId:typeof vt?.sessionId=="string"?vt.sessionId:H,...Qt===void 0?{}:{authorizationExpiresAt:Qt},paymentIntentId:i.threeDSecureActionResultTokenId,paymentMethodId:dt,checkoutMethod:i.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:i.threeDSecureActionResultTokenId,paymentMethodId:dt,checkoutMethod:i.isPaypal?"paypal":"card"});return}let it=await ht.json().catch(()=>null);if(it?.type==="paypal_redirect_required"){let vt=it.threeDSecureToken,Wn=it.paymentMethodId||i.id||"";if(!gt||!vt){P("error"),Re("PayPal authorization required but no token provided.");return}try{let Cn=D?.getRawProvider();if(!Cn){Re("PayPal is not available.");return}let Qt={return_url:window.location.href};Wn&&(Qt.payment_method=Wn);let{error:Nr}=await Cn.confirmPayment({clientSecret:vt,confirmParams:Qt,redirect:"if_required"});if(Nr){P("error");let xo=Nr.message??"PayPal payment failed.";Re(xo),fr("paypal",xo,{code:Nr.code})}}catch(Cn){P("error"),Re(Cn instanceof Error?Cn.message:"PayPal authorization failed.")}return}if(it?.type==="paypal_direct_required"){let vt=it.orderId;if(!vt){P("error"),Re("PayPal retry required but no order id provided.");return}let Wn=v.current?.attempts??0;if(Wn>=2){P("error"),Re("PayPal payment could not be completed after multiple attempts."),fr("paypal","paypal_direct_required retry limit exceeded");return}Wa(!1),Ha("loading"),q({orderId:vt,attempts:Wn+1}),P(null);return}(0,p.classifyPaymentRejection)(ht.status,it)||ot(),P("error");let Bn=it?.message??"Payment failed. Please try again.";Re(Bn),fr(i.isPaypal?"paypal":"card",Bn,{code:it?.code??it?.gatewayErrorCode,declineCode:it?.declineCode??it?.gatewayDeclineReason}),await new Promise(vt=>setTimeout(vt,400))}catch(Et){bl(Et)||ot(),P("error"),Re(Et instanceof Error?Et.message:"An unexpected error occurred"),await new Promise(ht=>setTimeout(ht,400))}finally{It(!1),P(null),ne.current=!1}},[Te,e,t,$,re,z,ie,Oe,h,gt,D,Ae,l,Re,fr,f]),xn=(0,s.useCallback)((i,w)=>{g?g(i):cs(i,w)},[g,cs]),Ro=`${gl}:${e}`;(0,s.useEffect)(()=>{if(typeof window>"u")return;let i=localStorage.getItem(Ro);if(!i)return;let w;try{w=JSON.parse(i)}catch{localStorage.removeItem(Ro);return}if(!w||typeof w.createdAt!="number"||Date.now()-w.createdAt<0||Date.now()-w.createdAt>hl||typeof w.paymentMethodId!="string"||typeof w.providerIntentId!="string"||typeof w.paymentMethodType!="string"||w.sessionId!==e||!t||w.nonce!==t||!Jr.includes(w.paymentMethodType)){localStorage.removeItem(Ro);return}localStorage.removeItem(Ro),xn({id:w.paymentMethodId,type:"card",threeDSecureActionResultTokenId:w.providerIntentId,gateway:"stripe",paymentMethodType:w.paymentMethodType},{...w.accountPatch?{accountPatch:w.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[xn,t,e,Ro,Jr]);let ds=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(typeof window>"u"||ds.current)return;let i=new URLSearchParams(window.location.search),w=i.get("payment_intent"),H=i.get("payment_intent_client_secret"),Ve=i.get("redirect_status");if(!w||!H||!gt)return;let J=gt.getRawProvider();if(!J)return;let dt=it=>{let Bn=localStorage.getItem(it);if(!Bn)return null;try{return JSON.parse(Bn)}catch{return localStorage.removeItem(it),null}},at=dt(br)??dt(ol),hr;if(at?.clientSecret){if(at.clientSecret!==H)return;hr={...at.accountPatch?{accountPatch:at.accountPatch}:{},...at.sessionId?{sessionId:at.sessionId}:{},...at.nonce?{nonce:at.nonce}:{}}}else if(at?.sessionId&&at.sessionId!==e)return;ds.current=!0,localStorage.removeItem(br),localStorage.removeItem(ol);let ot=new URL(window.location.href);ot.searchParams.delete("payment_intent"),ot.searchParams.delete("payment_intent_client_secret"),ot.searchParams.delete("redirect_status"),window.history.replaceState({},"",ot.toString());let Et=at?.paymentMethodType??at?.tokenType??"card",ht="card";(async()=>{if(Ve==="failed"){let Qt="Payment was declined. Please try again.";Re(Qt),fr(ht,Qt);return}let{paymentIntent:it,error:Bn}=await J.retrievePaymentIntent(H);if(Bn){let Qt=Bn.message??"Failed to retrieve payment status.";Re(Qt),fr(ht,Qt,{code:Bn.code});return}let vt=it?.status,Wn=Bo(vt);if(!it||!Wn){let Qt=vt==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";Re(Qt),fr(ht,Qt,{code:vt??"missing_payment_intent"});return}let Cn=typeof it.payment_method=="string"?it.payment_method:it.payment_method?.id;xn({id:Cn??at?.paymentMethodId??at?.tokenId??it.id,type:"card",threeDSecureActionResultTokenId:it.id,gateway:at?.gateway??"stripe",paymentMethodType:Et},hr)})()},[e,xn,gt,Re,fr]);let Ya=(0,s.useCallback)(i=>{i.preventDefault()},[]);if(!(He||gt!==null))return(0,c.jsx)("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let _o=fe==="buttons",Mn=ae?.variables,Wl=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Ja=Mn?.colorBackground,Hl=Ja&&!Wl.has(Ja)?Ja:void 0,Eo=R.cardInputBorder??(_o?"#e5e7eb":"#A4A4FF"),us=Mn?.colorDanger??"#dc2626",Lt=i=>Kr[i]&&(Cr[i]||kn),ra=An&&(jt||kn),Kn=i=>i?us:Eo,oa=(vn.malformed||vn.empty)&&(pr||kn),Gl=Kn(oa),Xa=R.cardFormContainer?.backgroundColor??Hl??(_o?"white":"#EDEDFF"),Zr=R.cardInputBackground??Mn?.colorBackground??"white",Za=to(ue),ps=to(we),Qr=R.nameInput,ms=R.cardInputFontSize??_d(Qr?.fontSize)??Mn?.fontSizeBase??"16px",ys=typeof Qr?.fontFamily=="string"?Qr.fontFamily:Mn?.fontFamily??"Poppins, sans-serif",fs=Ci(Qr?.fontWeight)??400,Yl=R.cardInputColor??(typeof Qr?.color=="string"?Qr.color:void 0)??Mn?.colorText??"#262833",Jl=R.cardInputPlaceholderColor??"#9ca3af",qt=Mn?.borderRadius??"8px",Dr=Mn?.borderRadius??R.cardButton?.borderRadius??qt,Lr=Mn?.colorPrimary??"#4A49FF",Xl=Mn?.colorPrimaryHover??bo(Lr,.12),Qa=Mn?.colorText??"#262833",ei={fontSize:ms,fontFamily:ys,fontWeight:fs,color:Yl,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},To={marginTop:"0.375rem",...ei,fontSize:"0.75rem",lineHeight:1.4,color:us},Zl={"--flopay-input-placeholder-color":Jl,"--flopay-input-font-size":ms,"--flopay-input-font-family":ys,"--flopay-input-font-weight":String(fs)},Ao=R.cardFormContainer??{},ti=Ao.padding??(_o?"0":"1rem"),ni=Ao.borderRadius??qt,Ql=he&&nr?(0,c.jsx)(ho,{capture:he,html:nr.html,messageToken:nr.messageToken,expectedOrigin:nr.expectedOrigin,theme:ft,submitLabel:F,onReady:()=>{if(!_t&&!re||typeof document>"u")return;let i=()=>{let H=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(H){Rn.current=!0;try{H.focus()}finally{Rn.current=!1}}};tr.current||i()},onError:i=>Re(i),onValidation:i=>{let w=Be.current;(w==="idle"||w==="validation-window")&&(Re(i),i&&Be.current==="validation-window"&&(U.current&&(clearTimeout(U.current),U.current=null),Be.current="idle",P(null)))}}):(0,c.jsx)("div",{"data-testid":"flopay-vault-loading",style:{minHeight:120,display:"flex",alignItems:"center",justifyContent:"center",color:"#6b7280",fontSize:14},children:"Loading secure card form\u2026"}),gs=(0,c.jsxs)("div",{onFocusCapture:i=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(i.target.tagName)&&yr()},style:{backgroundColor:Xa,borderRadius:ni,...Ao,padding:ti,...Zl,display:"flex",flexDirection:"column"},children:[(0,c.jsx)("style",{children:`
30
+ `,Ba=44,Jo=180,ul=`flopay-card-enter ${Jo}ms cubic-bezier(0, 0, 0.2, 1) both`,pl=`flopay-card-exit ${Jo}ms cubic-bezier(0.4, 0, 0.2, 1) both`,Sd=`flopay-buttons-enter ${Jo}ms cubic-bezier(0, 0, 0.2, 1) both`,wd=`flopay-buttons-exit ${Jo}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function kd(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function Li(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 Id={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function Rd(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 Mi={width:"100%",minHeight:Ba,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 _d(e){switch(e){case"paypal":return"PayPal";case"apple_pay":return"Apple Pay";case"google_pay":return"Google Pay";default:return"Card"}}function ml(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function Bi(e){return e==="paypal"?"PayPal":(0,p.getStripeMethodDisplayName)(e)}function Ed(e,t){let n=`We couldn't open ${Bi(e)}. Try again or choose another payment method.`;return t?`${n} Allow pop-ups for this site, then try again.`:n}function Td(e){let t=(0,p.getPostalCodeExample)(e);return`Enter a valid ${(0,p.getPostalCodeLabel)(e)}${t?` (e.g. ${t})`:""}`}function Ad(e,t,n){let r=(0,p.isPostalCodeSupported)(e),o=t.trim(),a=n&&r,l=a&&!o,d=a&&!!o&&!(0,p.isValidPostalCode)(e,o);return{visible:n,supported:r,required:a,empty:l,malformed:d}}function xd(e,t){let n=e.trim(),r=t&&!n,o=t&&!!n&&!(0,p.isValidEmail)(n);return{required:t,empty:r,malformed:o,value:n}}function yl(e,t){return t instanceof p.FloPayError?t:new p.FloPayError(t instanceof Error?t.message:`${_d(e)} before-click hook failed.`,"validation_error")}function xi(){return(0,c.jsx)("style",{children:Cd})}function Md(e){return typeof e=="number"?`${e}px`:e}function wl(e,t){let n=e.availablePaymentMethods;return n&&t.some(r=>n[r])?"ready":"unavailable"}function kl({state:e,placeholderTestId:t,borderRadius:n=8,children:r}){return e==="unavailable"||e==="load_error"?null:(0,c.jsxs)("div",{style:{position:"relative",minHeight:44},children:[(0,c.jsx)("div",{"data-testid":t,"aria-hidden":e==="ready",style:{position:"absolute",inset:0,height:44,borderRadius:n,background:"#e5e7eb",animation:e==="ready"?void 0:"flopay-pulse 1.5s ease-in-out infinite",opacity:e==="ready"?0:1,transform:e==="ready"?"scale(0.985)":"scale(1)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:"none"}}),(0,c.jsx)("div",{style:{minHeight:44,opacity:e==="ready"?1:0,transform:e==="ready"?"translateY(0)":"translateY(2px)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:e==="ready"?"auto":"none"},children:r})]})}function fl(e){return e!=="unavailable"&&e!=="load_error"}function Na(e){return(0,c.jsx)(Fd,{...e})}function gl({sessionId:e,nonce:t,email:n,billingApiUrl:r,onTokenizedBody:o,onErrorChange:a,isProcessing:l=!1,onButtonClick:d,onDecline:u,onTechnicalFailure:m,runBeforeButtonClick:h,billingName:b,onBuyerIdentityReady:y,onLoadStateChange:C,placeholderBorderRadius:_}){let ne=Tr(),{emitInstrument:z}=(0,s.useContext)(Qn),ue=(0,Kt.useStripe)(),k=(0,Kt.useElements)(),[$,U]=(0,s.useState)("loading");(0,s.useEffect)(()=>{C?.($)},[$,C]);let[se,Se]=(0,s.useState)(!1),Pe=!(0,p.isValidEmail)(n?.trim())||!b?.trim(),{request:pe,collect:ye,finish:yt}=co(),He=(0,s.useRef)(!1),we=(0,s.useRef)(null),Me=(0,s.useRef)(null),[fe,Re]=(0,s.useState)(0),[Ge,oe]=(0,s.useState)(!1),_e=(0,s.useRef)(!1),ge=(0,s.useRef)(new Map),{startAttempt:nt,finishAttempt:rt,invalidateAttempt:M,isAttemptInvalidated:V,isAttemptCurrent:ie}=zo((he,le,H)=>{m?.(he,le,{...H,popupBlocked:H?.popupBlocked??Er(le)}),oe(!0),Re(Le=>Le+1)});(0,s.useEffect)(()=>{Ge&&Me.current?.focus()},[Ge,fe]);let ae=(0,s.useCallback)(()=>{Re(he=>he+1)},[]),Ye=(0,s.useCallback)((he,le,H)=>{M(H),m?.("paypal",he,{code:le,popupBlocked:Er(he)}),oe(!0),ae()},[M,m,ae]),Ce=(0,s.useCallback)(()=>{window.setTimeout(()=>{(we.current?.querySelector("iframe")??we.current)?.focus()},0)},[]);(0,s.useEffect)(()=>{_e.current&&(_e.current=!1,Ce())},[Ce,fe]);let N=(0,s.useCallback)(()=>{oe(!1),a?.(null),Ce()},[Ce,a]);(0,s.useEffect)(()=>{if(!ue||He.current)return;let he=new URLSearchParams(window.location.search),le=he.get("payment_intent"),H=he.get("payment_intent_client_secret"),Le=he.get("redirect_status");if(!le||!H)return;He.current=!0;let Oe;try{let je=localStorage.getItem(Yo);if(je){let Be=JSON.parse(je);Be.clientSecret===H&&(Oe={...Be.accountPatch?{accountPatch:Be.accountPatch}:{},...Be.sessionId?{sessionId:Be.sessionId}:{},...Be.nonce?{nonce:Be.nonce}:{}})}}catch{}try{localStorage.removeItem(Yo)}catch{}let ze=new URL(window.location.href);ze.searchParams.delete("payment_intent"),ze.searchParams.delete("payment_intent_client_secret"),ze.searchParams.delete("redirect_status"),window.history.replaceState({},"",ze.toString()),(async()=>{try{if(Se(!0),Le==="failed"){let Ne="PayPal payment was declined. Please try again.";a?.(Ne),u?.(nn("paypal",Ne));return}let{paymentIntent:je,error:Be}=await ue.retrievePaymentIntent(H);if(Be){a?.(Be.message??"Failed to retrieve PayPal payment status.");return}if(je&&(je.status==="requires_capture"||je.status==="succeeded")){let Ne=typeof je.payment_method=="string"?je.payment_method:je.payment_method?.id;o({id:Ne??je.id,type:"card",threeDSecureActionResultTokenId:je.id,isPaypal:!0},Oe)}else{let Ne="PayPal payment was not completed. Please try again.";a?.(Ne),u?.(nn("paypal",Ne))}}catch(je){a?.(je instanceof Error?je.message:"Failed to complete PayPal payment.")}finally{Se(!1)}})()},[ue,o,a,u]);let ut=(0,s.useCallback)(async he=>{if(l||se){he.reject();return}let le=h?await h("paypal"):{proceed:!0};if(!le.proceed){ge.current.delete(fe),he.reject();return}let H=nt("paypal");ge.current.set(fe,{generation:H,accountPatch:le.accountPatch,sessionId:le.sessionId,nonce:le.nonce}),oe(!1),d?.("paypal"),he.resolve()},[l,d,h,nt,se,fe]),ot=(0,s.useCallback)(async he=>{if(!ue||!k)return;let le=ge.current.get(fe);if(le&&!ie(le.generation)){ge.current.delete(fe);return}if(!le&&V()||le&&!rt(le.generation))return;le||rt();let H=le??null;if(ge.current.delete(fe),!H&&h){let Ne=await h("paypal");if(!Ne.proceed){he.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}H={accountPatch:Ne.accountPatch,sessionId:Ne.sessionId,nonce:Ne.nonce}}let Le=H?.sessionId??e,Oe=H?.nonce??t,ze=await Pd({event:he,prepared:H,email:n,billingName:b,methodLabel:"PayPal",collect:ye});if(!ze){he.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let je=ze.email,Be={...H?.accountPatch,...Mn(ze,!0)};try{if(Se(!0),a?.(null),!Le||!(0,p.isValidEmail)(je))throw new Error("Missing sessionId or email for PayPal payment");await y?.(ze);let Ne=ue.createPaymentMethod,{error:ce,paymentMethod:dn}=await Ne({type:"paypal"});if(ce){Ye(ce,"stripe_paypal_create_payment_method_failed",le?.generation),he.paymentFailed({reason:"fail"});return}let Jt=await Fa(r,z,Le,Oe??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:dn?.id??null,intentKind:"payment"});if(Jt.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let ee=Jt.clientSecret,at={return_url:window.location.href};if(dn?.id&&(at.payment_method=dn.id),typeof window<"u")try{localStorage.setItem(Yo,JSON.stringify({clientSecret:ee,sessionId:Le,nonce:Oe,accountPatch:Be}))}catch{}let{error:Z,paymentIntent:Q}=await ue.confirmPayment({clientSecret:ee,confirmParams:at,redirect:"if_required"});if(Z){if(typeof window<"u")try{localStorage.removeItem(Yo)}catch{}if(Lo(Z)){let g=Z.message??"Your payment was declined.";a?.(g),u?.(nn("paypal",g,{code:_r(Z),declineCode:po(Z)})),await Da({billingApiUrl:r,sessionId:Le,nonce:Oe,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:_r(Z)??"provider_declined"}})}else Ye(Z,"stripe_paypal_confirm_failed",le?.generation);return}if(typeof window<"u")try{localStorage.removeItem(Yo)}catch{}let be=typeof Q?.payment_method=="string"?Q.payment_method:Q?.payment_method?.id;o({id:be??Q?.id,type:"card",threeDSecureActionResultTokenId:Q?.id,isPaypal:!0},{accountPatch:Be,paymentMethodCategory:"paypal",sessionId:Le,nonce:Oe});return}catch(Ne){Ye(Ne,"stripe_paypal_failed",le?.generation)}finally{Se(!1)}},[ue,k,e,t,n,b,ye,y,r,z,o,a,u,h,Ye,rt,ie,V,fe]);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(kl,{state:$,placeholderTestId:"flopay-paypal-placeholder",borderRadius:_,children:(0,c.jsxs)("div",{ref:we,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[Ge&&(0,c.jsx)("button",{ref:Me,type:"button","data-testid":"flopay-paypal-retry-button",onClick:N,style:Mi,children:"Try PayPal again"}),pe&&(0,c.jsx)(uo,{identity:pe.identity,methodLabel:pe.methodLabel,onComplete:yt,onCancel:()=>yt(null)},pe.id),(0,c.jsx)("div",{style:{display:pe?"none":void 0},children:(0,c.jsx)(Kt.ExpressCheckoutElement,{onReady:he=>U(wl(he,["paypal"])),onLoadError:()=>{U("load_error"),Ni(en(ne),"paypal","paypal")},onClick:ut,onConfirm:ot,onCancel:()=>{let he=ge.current.get(fe);ge.current.delete(fe),en(ne)?.terminal({outcome:"payment_cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),M(he?.generation),oe(!1),_e.current=!0,ae()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:Pe,emailRequired:Pe,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},fe)})]})}),se&&(0,c.jsx)(tr,{status:"processing"})]})}function hl({sessionId:e,nonce:t,email:n,billingApiUrl:r,intentKind:o,expressMethods:a,onTokenizedBody:l,onErrorChange:d,onButtonClick:u,onDecline:m,onTechnicalFailure:h,runBeforeButtonClick:b,billingName:y,onBuyerIdentityReady:C,onLoadStateChange:_,placeholderBorderRadius:ne}){let z=Tr(),{emitInstrument:ue}=(0,s.useContext)(Qn),k=(0,Kt.useStripe)(),$=(0,Kt.useElements)(),[U,se]=(0,s.useState)("loading");(0,s.useEffect)(()=>{_?.(U)},[U,_]);let[Se,Pe]=(0,s.useState)(!1),pe=(0,s.useRef)(!(0,p.isValidEmail)(n?.trim())||!y?.trim()).current,{request:ye,collect:yt,finish:He}=co(),we=(0,s.useRef)(null),Me=(0,s.useRef)(null),[fe,Re]=(0,s.useState)(0),[Ge,oe]=(0,s.useState)(!1),[_e,ge]=(0,s.useState)(()=>Ma(e,t)?"blocked":"idle"),[nt,rt]=(0,s.useState)("google_pay"),M=(0,s.useRef)(null),V=(0,s.useRef)(!0),ie=(0,s.useRef)(!1),ae=(0,s.useRef)("google_pay"),Ye=(0,s.useRef)("google_pay"),Ce=(0,s.useRef)(null),N=(0,s.useRef)(null),ut=(0,s.useRef)(new Set);(0,s.useEffect)(()=>(V.current=!0,()=>{V.current=!1;for(let Z of ut.current)window.clearTimeout(Z);ut.current.clear()}),[]);let ot=(0,s.useRef)(new Map),{startAttempt:he,finishAttempt:le,invalidateAttempt:H,isAttemptInvalidated:Le,isAttemptCurrent:Oe,generationRef:ze}=zo((Z,Q,be)=>{h?.(Z,Q,{...be,popupBlocked:be?.popupBlocked??Er(Q)}),rt(Z),oe(!0),Re(g=>g+1)});(0,s.useEffect)(()=>{Ge&&Me.current?.focus()},[Ge,fe]);let je=(0,s.useCallback)(()=>{Re(Z=>Z+1)},[]),Be=(0,s.useCallback)((Z,Q,be,g)=>{H(g),h?.(Z,Q,{code:be,popupBlocked:Er(Q)}),rt(Z),oe(!0),je()},[H,h,je]),Ne=(0,s.useCallback)(()=>{window.setTimeout(()=>{(we.current?.querySelector("iframe")??we.current)?.focus()},0)},[]);(0,s.useEffect)(()=>{ie.current&&(ie.current=!1,Ne())},[Ne,fe]);let ce=(0,s.useCallback)(()=>{oe(!1),d?.(null),Ne()},[Ne,d]),dn=(0,s.useCallback)(()=>{M.current?.()},[]);(0,s.useEffect)(()=>{let Z=Ma(e,t);if(!Z)return;let Q=!1,be=!1,g=async()=>{if(!be){be=!0,Q||ge("checking");try{let q=await cl(k,Z.clientSecret,ut.current);if(Q)return;let Fe=Ti(q,Z.providerObjectId,(0,p.isSetupIntentClientSecret)(Z.clientSecret));if(Fe.kind==="confirmed"){if(!ll(e,t,Z.clientSecret))return;M.current=null,ge("idle"),l({id:Fe.paymentMethodId,type:"card",threeDSecureActionResultTokenId:Fe.intentId},{...Z.accountPatch?{accountPatch:Z.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(Fe.kind==="terminal"){Ei(e,t,Z.clientSecret),M.current=null,ge("idle"),rt(Z.paymentMethodType),oe(!0),je();return}ge("blocked")}catch{Q||ge("blocked")}finally{be=!1}}};return M.current=g,ge("blocked"),()=>{Q=!0,M.current===g&&(M.current=null)}},[t,l,je,e,k]);let Jt=(0,s.useCallback)(async Z=>{let Q=!1,be=Ke=>{Q||(Q=!0,Z.paymentFailed({reason:"fail",...Ke?{message:Ke}:{}}))};if(!k||!$){be();return}let g=ot.current.get(fe);if(g&&!Oe(g.generation)){ot.current.delete(fe),be();return}if(!g&&Le()){be();return}if(g&&!le(g.generation)){be();return}g||le();let q=Z.expressPaymentType??g?.method??ae.current,Fe=g??null,Je=ml(q),De;q==="apple_pay"?De="apple_pay":q==="google_pay"&&(De="google_pay");let $t=g?.generation??ze.current,W=en(z),St=W?.now()??globalThis.performance?.now()??Date.now(),Tt=new AbortController,ft=!1,un=!1,G=null,Lt=e,vn="processing",pn="other",mn="provider_runtime",In,Bn=new Promise((Ke,Qe)=>{In=Qe}),Fn=window.setTimeout(()=>{ft=!0,Tt.abort(),In(Ri)},ud),Xt=async(Ke,Qe,wt)=>{vn=Ke,pn=Qe,mn=Qe==="intent_create"||Qe==="session_claim"?"transport_error":"provider_runtime";let rn=W?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([wt,Bn])}finally{let kt=W?.now()??globalThis.performance?.now()??Date.now();W?.performance({stage:Ke,durationMs:Math.max(0,kt-rn),durationMode:"machine",requestCategory:Qe,paymentMethodCategory:"wallet",provider:"stripe",...ft?{statusClass:"timeout"}:{}})}};try{if(Pe(!0),d?.(null),!Fe&&b){let ve=await Xt("processing","other",b(Je));if(!ve.proceed){be();return}Fe={accountPatch:ve.accountPatch,sessionId:ve.sessionId,nonce:ve.nonce}}let Ke=Fe?.sessionId??e;Lt=Ke;let Qe=Fe?.nonce??t,wt=Ce.current??Fe?.accountPatch,rn=Sl({event:Z,fallbackEmail:wt?.email??n,fallbackName:[wt?.firstName,wt?.lastName].join(" ").trim()||y});if(!(0,p.isValidEmail)(rn.email)){be("Buyer details are required."),yt(Bi(q),rn).then(ve=>{ve&&(Ce.current=ve)});return}Ce.current=null;let kt={...Fe?.accountPatch,...Mn(rn,!0)};await Xt("processing","session_claim",Promise.resolve(C?.(rn)));let{error:Vn}=await Xt("tokenization","provider_sdk",$.submit());if(Vn){be(),Be(q,Vn,"stripe_wallet_submit_failed",g?.generation);return}if(!Ke)throw new Error("Missing sessionId or email for payment.");let gt={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:q,paymentMethodId:null,intentKind:o},At=JSON.stringify({sessionId:Ke,nonce:Qe??"",request:gt}),Ot=N.current,yn=Ot?.retryIdentity===At?Ot.authorizationAttemptId:(0,p.randomUuidV4)();N.current={authorizationAttemptId:yn,retryIdentity:At};let zt=await Xt("processing","intent_create",Fa(r,ue,Ke,Qe??"",{...gt,authorizationAttemptId:yn},{signal:Tt.signal}));if(zt.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let xt=zt.clientSecret,Pn=yd({createdAt:Date.now(),sessionId:Ke,...Qe?{nonce:Qe}:{},clientSecret:xt,providerObjectId:zt.providerObjectId,paymentMethodType:q,accountPatch:kt});window.clearTimeout(Fn),un=!0,W?.performance({stage:"callback",durationMs:Math.max(0,(W?.now()??globalThis.performance?.now()??Date.now())-St),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let Cn=W?.now()??globalThis.performance?.now()??Date.now(),It={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...De?{walletType:De}:{},attempt:$t},de=!1,on=null;W?.log({name:"payment.provider_confirmation.started",...It}),G=window.setTimeout(()=>{G!==null&&ut.current.delete(G),de=!0;let ve=W?.now()??globalThis.performance?.now()??Date.now();W?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...It,operationOutcome:"watchdog_expired",durationMs:Math.max(0,ve-Cn),statusClass:"timeout",failureCategory:"provider_runtime"}),W?.flush?.().catch(()=>{}),on?.()},pd),ut.current.add(G);let jn=ve=>{G!==null&&(window.clearTimeout(G),ut.current.delete(G),G=null);let O=W?.now()??globalThis.performance?.now()??Date.now(),Ve=Math.max(0,O-Cn),K=ve;return de&&(ve==="resolved"?K="resolved_late":ve==="returned_error"?K="returned_error_late":K="rejected_late"),W?.log({name:"payment.provider_confirmation.returned",...It,operationOutcome:K}),W?.performance({...It,durationMs:Ve,durationMode:"buyer",operationOutcome:K}),{durationMs:Ve,operationOutcome:K}},Wt=!1,Vt=!1,an=ve=>{if(!ve||typeof ve!="object")return null;let O=ve;if(O.error)return null;let Ve=O.setupIntent??O.paymentIntent,K=Ti(Ve??null,void 0,!!O.setupIntent);return K.kind==="confirmed"?K:null},rr=ve=>{if(Wt||g&&ze.current!==g.generation)return;let O=an(ve);if(!O)return;if(Pn&&!ll(Ke,Qe,xt)){Wt=!0;return}let{intentId:Ve,paymentMethodId:K}=O;Wt=!0,Vt=!0,N.current=null,M.current=null,V.current&&(ge("idle"),Pe(!1));let Rt=`${vl}:${Ke}`;if(typeof window<"u")try{localStorage.setItem(Rt,JSON.stringify({createdAt:Date.now(),sessionId:Ke,nonce:Qe,accountPatch:kt,paymentMethodId:K,providerIntentId:Ve,paymentMethodType:q}))}catch{}try{l({id:K,type:"card",threeDSecureActionResultTokenId:Ve},{accountPatch:kt,paymentMethodCategory:"wallet",sessionId:Ke,nonce:Qe})}finally{if(typeof window<"u")try{localStorage.removeItem(Rt)}catch{}}},Dn=!1;on=async()=>{if(!(Dn||Wt||Vt)){Dn=!0,V.current&&ge("checking");try{let ve=await cl(k,xt,ut.current);if(Wt||Vt)return;let O=(0,p.isSetupIntentClientSecret)(xt),Ve=Ti(ve,zt.providerObjectId,O);if(Ve.kind==="confirmed"){rr(O?{setupIntent:ve}:{paymentIntent:ve});return}if(Ve.kind==="terminal"){if(Vt=!0,Ei(Ke,Qe,xt),N.current=null,M.current=null,!V.current)return;ge("idle"),be(),Be(q,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",g?.generation);return}V.current&&!Vt&&(ge("blocked"),Pe(!1))}catch{V.current&&!Vt&&(ge("blocked"),Pe(!1))}finally{Dn=!1}}},M.current=on;let Ht,$e;try{let ve=await((0,p.isSetupIntentClientSecret)(xt)?k.confirmSetup({elements:$,clientSecret:xt,redirect:"if_required"}):k.confirmPayment({elements:$,clientSecret:xt,redirect:"if_required"}));if(!ve||typeof ve!="object"||(Ht=ve,!Ht.error&&!an(Ht)))throw _i;$e=jn(Ht.error?"returned_error":"resolved")}catch(ve){let O=ve===_i,Ve=jn(O?"returned_error":"rejected");if(W?.error({...O?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response"}:di(ve),...It,operationOutcome:Ve.operationOutcome,durationMs:Ve.durationMs,statusClass:"unknown"}),!V.current||Wt)return;await on?.();return}let fn=Ht.error;if(fn){if(!V.current||Wt)return;if(Lo(fn)){Vt=!0,Ei(Ke,Qe,xt),N.current=null,M.current=null,ge("idle");let ve=fn.message??"Your payment was declined.";be(ve),d?.(ve),m?.(nn(Je,ve,{code:_r(fn),declineCode:po(fn)})),Da({billingApiUrl:r,sessionId:Ke,nonce:Qe,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:q,providerDeclineReason:_r(fn)??"provider_declined",...zt.intentKind==="payment"&&zt.providerObjectId.startsWith("pi_")?{providerIntentId:zt.providerObjectId}:{}}})}else W?.error({...di(fn),...It,operationOutcome:$e.operationOutcome,durationMs:$e.durationMs,statusClass:"unknown"}),await on?.();return}if(rr(Ht),!Wt)throw new Error("Invalid provider returned for APM intent")}catch(Ke){if(Ke===Ri){let Qe=W?.now()??globalThis.performance?.now()??Date.now();W?.error({errorCode:gd(pn),stage:vn,requestCategory:pn,paymentMethodCategory:"wallet",provider:"stripe",...De?{walletType:De}:{},operationOutcome:"watchdog_expired",checkoutSessionId:Lt,durationMs:Math.max(0,Qe-St),statusClass:"timeout",failureCategory:mn,attempt:$t}),W?.flush?.().catch(()=>{})}be(),Be(q,Ke,Ke===Ri?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",g?.generation)}finally{if(window.clearTimeout(Fn),G!==null&&(window.clearTimeout(G),ut.current.delete(G)),!un){let Ke=W?.now()??globalThis.performance?.now()??Date.now();W?.performance({stage:"callback",durationMs:Math.max(0,Ke-St),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...ft?{statusClass:"timeout"}:{}})}V.current&&Pe(!1)}},[k,$,e,t,n,y,yt,C,r,ue,o,l,d,m,b,Be,le,Oe,Le,ze,z,fe]),ee=(0,s.useMemo)(()=>{let Z=["applePay","googlePay","paypal","link","amazonPay","klarna"],Q=new Set(["applePay","googlePay"]),be=new Set(a.map(p.stripeExpressMethodToOptionKey)),g={};for(let q of Z)be.has(q)?g[q]=Q.has(q)?"always":"auto":g[q]="never";return g},[a]),at=(0,s.useMemo)(()=>a.map(p.stripeExpressMethodToOptionKey),[a]);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(kl,{state:U,placeholderTestId:"flopay-wallet-placeholder",borderRadius:ne,children:(0,c.jsxs)("div",{ref:we,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[Ge&&(0,c.jsxs)("button",{ref:Me,type:"button","data-testid":"flopay-wallet-retry-button",onClick:ce,style:Mi,children:["Try ",Bi(nt)," again"]}),_e!=="idle"&&(0,c.jsxs)("div",{role:"status","aria-live":"polite",children:[(0,c.jsx)("p",{children:"We are still confirming your payment. Check its status before trying again."}),(0,c.jsx)("button",{type:"button",onClick:dn,disabled:_e==="checking",style:Mi,children:_e==="checking"?"Checking payment status\u2026":"Check payment status"})]}),ye&&(0,c.jsx)(uo,{identity:ye.identity,methodLabel:ye.methodLabel,onComplete:He,onCancel:()=>He(null)},ye.id),_e==="idle"&&(0,c.jsx)("div",{style:{display:ye?"none":void 0},children:(0,c.jsx)(Kt.ExpressCheckoutElement,{onReady:Z=>{se(wl(Z,at))},onLoadError:Z=>{se("load_error"),Ni(en(z),"stripe","wallet")},onClick:async Z=>{ae.current=Z.expressPaymentType,Ye.current=ml(Z.expressPaymentType);let Q=!0,be=window.setTimeout(()=>{Q=!1,Z.reject()},dd),g=b?await b(Ye.current):{proceed:!0};if(window.clearTimeout(be),!Q)return;if(!g.proceed){ot.current.delete(fe),Z.reject();return}let q=he(Z.expressPaymentType);ot.current.set(fe,{generation:q,method:Z.expressPaymentType,accountPatch:g.accountPatch,sessionId:g.sessionId,nonce:g.nonce}),oe(!1),u?.(Ye.current),Z.resolve()},onConfirm:Jt,onCancel:()=>{let Z=ot.current.get(fe);ot.current.delete(fe),en(z)?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet"}),H(Z?.generation),N.current=null,oe(!1),ie.current=!0,je()},options:{buttonType:{applePay:"plain",googlePay:"plain"},paymentMethods:ee,emailRequired:pe,billingAddressRequired:pe,layout:{maxColumns:1,overflow:"never"}}},fe)})]})}),Se&&(0,c.jsx)(tr,{status:"processing"})]})}function Il(e,t){return{...e,paymentMethodTypes:[t],...t==="revolut_pay"||t==="sepa_debit"||t==="us_bank_account"?{setupFutureUsage:"off_session"}:null}}function Bd({method:e,themeId:t,submitting:n=!1,disabled:r=!1,highlighted:o=!1,hasNextStep:a=!1,onClick:l,backgroundColor:d,borderColor:u,textColor:m,borderRadius:h,fontFamily:b}){let y=(0,p.resolveStripeMethodBrandVariant)(e,t),C=Js[e],[_,ne]=(0,s.useState)(!1),z=!!C&&!_,ue=y?.backgroundColor??d??"#ffffff",k=y?.borderColor??u??"#d1d5db",$=y?.textColor??m??"#262833";return(0,c.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-button-${e}`,"data-method":e,onClick:()=>{!n&&!r&&l()},disabled:n||r,"aria-busy":n||void 0,style:{position:"relative",width:"100%",boxSizing:"border-box",height:Ba,padding:"0 1rem",backgroundColor:ue,color:$,border:`1px solid ${k}`,borderRadius:h??8,fontSize:"0.95rem",fontWeight:600,fontFamily:b,cursor:n||r?"not-allowed":"pointer",opacity:r&&!n?.55:1,animation:n?"flopay-pulse 1.5s ease-in-out infinite":void 0,display:"flex",alignItems:"center",justifyContent:"center",gap:8,transition:"transform 0.1s, opacity 140ms ease-out, border-color 140ms ease-out",boxShadow:o?"0 0 0 2px rgba(74, 73, 255, 0.15)":void 0},children:n?(0,c.jsx)("span",{style:{margin:"0 auto"},children:`Connecting to ${(0,p.getStripeMethodDisplayName)(e)}\u2026`}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:(0,p.hasVendoredStripeMethodLogo)(e)?8:0},children:[z?(0,c.jsx)("img",{src:C,alt:"","aria-hidden":"true",onError:()=>ne(!0),loading:"lazy",decoding:"async",width:30,height:20,style:{width:30,height:20,flexShrink:0,borderRadius:3,objectFit:"contain",display:"inline-flex"}}):null,!z&&y?.logoSvg?(0,c.jsx)("span",{"aria-hidden":"true",style:{width:30,height:20,flexShrink:0,display:"inline-flex",borderRadius:3,overflow:"hidden"},dangerouslySetInnerHTML:{__html:y.logoSvg}}):null,(0,c.jsx)("span",{children:(0,p.getStripeMethodDisplayName)(e)})]}),a&&(0,c.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:$,strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{position:"absolute",right:"1rem",top:"50%",transform:"translateY(-50%)",flexShrink:0,opacity:.7},"aria-hidden":"true",children:(0,c.jsx)("path",{d:"M9 18l6-6-6-6"})})]})})}function Fi({method:e,sessionId:t,nonce:n,email:r,billingName:o,onBuyerIdentityReady:a,billingApiUrl:l,onTokenizedBody:d,onErrorChange:u,onDecline:m,onCancel:h,runBeforeButtonClick:b,onButtonClick:y,isProcessing:C,submitButtonColor:_,submitButtonBorderRadius:ne,submitButtonStyle:z,errorText:ue}){let k=Tr(),{emitInstrument:$}=(0,s.useContext)(Qn),U=(0,Kt.useStripe)(),se=(0,Kt.useElements)(),[Se,Pe]=(0,s.useState)(!1),pe=(0,s.useRef)(!1),[ye,yt]=(0,s.useState)(!1),[He,we]=(0,s.useState)("loading"),[Me,fe]=(0,s.useState)(""),Re=!(0,p.isValidEmail)(r?.trim()),Ge=!Re||(0,p.isValidEmail)(Me.trim()),oe=(0,s.useCallback)(async()=>{if(!U||!se||C||pe.current||!ye)return;pe.current=!0,Pe(!0);let _e=b?await b("card"):{proceed:!0};if(!_e.proceed){pe.current=!1,Pe(!1);return}y?.("card");let ge=_e.sessionId??t,nt=_e.nonce??n,rt=Vr(o?.trim()),M=Mn({email:_e.accountPatch?.email?.trim()||r?.trim()||Me.trim(),firstName:_e.accountPatch?.firstName?.trim()||rt.firstName,lastName:_e.accountPatch?.lastName?.trim()||rt.lastName}),V=M.email,ie=Mn({..._e.accountPatch,...M});try{if(u?.(null),!(0,p.isValidEmail)(V))throw new Error("A valid email address is required for payment.");await a?.(M);let ae=await se.submit();if(ae.error){u?.(ae.error.message??"Payment failed.");return}let Ye=[M.firstName,M.lastName].filter(Boolean).join(" "),Ce=await U.createPaymentMethod({elements:se,params:{billing_details:{email:V,...Ye?{name:Ye}:{}}}});if(Ce.error||!Ce.paymentMethod){u?.(Ce.error?.message??"Failed to create payment method.");return}let N=Ce.paymentMethod;if(!ge||!V)throw new Error("Missing sessionId or email for payment.");let ut=N.type||e,ot=await Fa(l,$,ge,nt??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ut,paymentMethodId:null,intentKind:"payment"});if(ot.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let he=ot.clientSecret;if(typeof window<"u")try{localStorage.setItem(vr,JSON.stringify({clientSecret:he,sessionId:ge,nonce:nt,accountPatch:ie,paymentMethodId:N.id,paymentMethodType:N.type??e,gateway:"stripe"}))}catch{}let{error:le,paymentIntent:H}=await U.confirmPayment({clientSecret:he,confirmParams:{return_url:window.location.href,payment_method:N.id},redirect:"if_required"});if(le){if(typeof window<"u")try{localStorage.removeItem(vr)}catch{}let ze=le.message??"Payment failed.";u?.(ze),m?.(nn("card",ze,{code:le.code})),await Da({billingApiUrl:l,sessionId:ge,nonce:nt,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:le.code??"provider_declined"}});return}let Le=H?.status;if(!Do(Le)){if(typeof window<"u")try{localStorage.removeItem(vr)}catch{}let ze=Le==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";u?.(ze),m?.(nn("card",ze,{code:Le??"missing_payment_intent"}));return}if(typeof window<"u")try{localStorage.removeItem(vr)}catch{}let Oe=typeof H?.payment_method=="string"?H.payment_method:H?.payment_method?.id;d({id:Oe??N.id,type:"card",threeDSecureActionResultTokenId:H?.id,gateway:"stripe",paymentMethodType:N.type??e},{accountPatch:ie,paymentMethodCategory:"apm",sessionId:ge,nonce:nt})}catch(ae){u?.(ae instanceof Error?ae.message:"Payment failed. Please try again.")}finally{pe.current=!1,Pe(!1)}},[U,se,C,ye,b,y,t,n,r,o,Me,a,l,$,e,d,u,m]);return(0,c.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[Re&&(0,c.jsx)("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:Re&&(0,c.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,c.jsx)("input",{type:"email",autoComplete:"email",required:!0,value:Me,onChange:_e=>fe(_e.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),(0,c.jsx)(Kt.PaymentElement,{onReady:()=>we("ready"),onLoadError:()=>{we("load_error"),Ni(en(k),"stripe","apm")},onChange:_e=>{yt(!!_e.complete)},options:{layout:{type:"accordion",defaultCollapsed:!1,radios:"never"},fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...o?.trim()?{name:o.trim()}:{},...(0,p.isValidEmail)(r?.trim())?{email:r?.trim()}:{}}}}}),(0,c.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-pay-${e}`,onClick:()=>{oe()},disabled:!ye||!Ge||Se||C||He!=="ready",style:{width:"100%",marginTop:"0.75rem",padding:"0.875rem",backgroundColor:_,color:"white",border:"none",borderRadius:ne,fontSize:"1rem",fontWeight:600,cursor:!ye||!Ge||Se||C||He!=="ready"?"not-allowed":"pointer",opacity:!ye||!Ge||Se||C||He!=="ready"?.5:1,transition:"opacity 120ms ease-out",...z??{}},children:Se?"Processing\u2026":`Pay with ${(0,p.getStripeMethodDisplayName)(e)}`}),ue&&(0,c.jsx)(yo,{margin:"0.75rem 0 0",children:ue})]})}function bl({sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:a,paymentElementMethods:l,stripeInstance:d,paymentElementBaseOptions:u,onTokenizedBody:m,onErrorChange:h,onButtonClick:b,onDecline:y,runBeforeButtonClick:C,onLoadStateChange:_,isProcessing:ne=!1,submitButtonColor:z="#4A49FF",submitButtonBorderRadius:ue=8,submitButtonStyle:k,buttonAppearance:$,themeId:U,onExpandApm:se,expandedApmMethod:Se}){let{emitInstrument:Pe}=(0,s.useContext)(Qn),[pe,ye]=(0,s.useState)(null),[yt,He]=(0,s.useState)(null),we=(0,s.useRef)(!1),{request:Me,collect:fe,finish:Re}=co();(0,s.useEffect)(()=>{l.length>0&&d?_?.("ready"):d||_?.("loading")},[l.length,d,_]);let Ge=(0,s.useCallback)(async M=>{if(!d||we.current||ne)return;we.current=!0,He(M);let V=C?await C("card"):{proceed:!0};if(!V.proceed){we.current=!1,He(null);return}b?.("card");let ie=V.sessionId??e,ae=V.nonce??t,Ye=Vr([V.accountPatch?.firstName,V.accountPatch?.lastName].filter(Boolean).join(" ")||r),Ce=Mn({email:V.accountPatch?.email?.trim()||n?.trim(),firstName:V.accountPatch?.firstName?.trim()||Ye.firstName,lastName:V.accountPatch?.lastName?.trim()||Ye.lastName});if(!(0,p.isValidEmail)(Ce.email)){He(null);let ot=await fe((0,p.getStripeMethodDisplayName)(M),Ce);if(!ot){we.current=!1;return}Ce=ot,He(M)}let N=Ce.email,ut=Mn({...V.accountPatch,...Ce});try{if(h?.(null),!ie||!(0,p.isValidEmail)(N))throw new Error("Missing sessionId or email for payment.");await o?.(Ce);let ot=await Fa(a,Pe,ie,ae??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:M,paymentMethodId:null,intentKind:"payment"});if(ot.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let he=ot.clientSecret;if(typeof window<"u")try{localStorage.setItem(vr,JSON.stringify({clientSecret:he,sessionId:ie,nonce:ae,accountPatch:ut,paymentMethodType:M,gateway:"stripe"}))}catch{}let{error:le,paymentIntent:H}=await d.confirmPayment({clientSecret:he,confirmParams:{return_url:window.location.href,payment_method_data:{type:M,billing_details:{name:[Ce.firstName,Ce.lastName].filter(Boolean).join(" "),...N?{email:N}:{}}}},redirect:"if_required"});if(le){if(typeof window<"u")try{localStorage.removeItem(vr)}catch{}let ze=le.message??"Payment failed.";h?.(ze),y?.(nn("card",ze,{code:le.code})),await Da({billingApiUrl:a,sessionId:ie,nonce:ae,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:M,providerDeclineReason:le.code??"provider_declined"}});return}let Le=H?.status;if(!Do(Le)){if(typeof window<"u")try{localStorage.removeItem(vr)}catch{}let ze=Le==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";h?.(ze),y?.(nn("card",ze,{code:Le??"missing_payment_intent"}));return}if(typeof window<"u")try{localStorage.removeItem(vr)}catch{}let Oe=typeof H?.payment_method=="string"?H.payment_method:H?.payment_method?.id;m({id:Oe??H?.id,type:"card",threeDSecureActionResultTokenId:H?.id,gateway:"stripe",paymentMethodType:M},{accountPatch:ut,paymentMethodCategory:"apm",sessionId:ie,nonce:ae})}catch(ot){h?.(ot instanceof Error?ot.message:"Payment failed. Please try again.")}finally{we.current=!1,He(null)}},[d,ne,C,b,e,t,n,fe,a,Pe,r,o,m,h,y]),[oe,_e]=(0,s.useState)(null),ge=se?Se??null:oe,nt=(0,s.useCallback)(M=>{we.current||ne||ge&&ge!==M||((0,p.needsStripeMethodExplicitConfirm)(M)?se?se(M):_e(M):Ge(M))},[ge,ne,Ge,se]),rt=(0,s.useMemo)(()=>oe?Il(u,oe):null,[oe,u]);return(0,c.jsx)("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:Me?(0,c.jsx)(uo,{identity:Me.identity,methodLabel:Me.methodLabel,onComplete:Re,onCancel:()=>Re(null)},Me.id):l.map(M=>{let V=Se===M,ie=yt===M,ae=yt!==null&&yt!==M||Se!=null&&Se!==M;return(0,c.jsxs)(s.default.Fragment,{children:[(0,c.jsx)(Bd,{method:M,themeId:U,submitting:ie,disabled:ae,highlighted:V,hasNextStep:(0,p.needsStripeMethodExplicitConfirm)(M),onClick:()=>nt(M),backgroundColor:$?.backgroundColor,borderColor:$?.borderColor,textColor:$?.textColor,borderRadius:$?.borderRadius,fontFamily:$?.fontFamily}),!se&&oe===M&&rt&&d&&(0,c.jsx)(Kt.Elements,{stripe:d,options:rt,children:(0,c.jsx)(Fi,{method:M,sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:a,onTokenizedBody:m,onErrorChange:h,onDecline:y,onCancel:()=>_e(null),runBeforeButtonClick:C,onButtonClick:b,isProcessing:ne,submitButtonColor:z,submitButtonBorderRadius:ue,submitButtonStyle:k})},M)]},M)})})}function Fd({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,email:o,userId:a,onComplete:l,onError:d,onDecline:u,onTokenizedBody:m,firstName:h,lastName:b,chv:y,className:C,submitLabel:_,isProcessing:ne,error:z,onErrorChange:ue,showPayPal:k=!0,showStripe:$=!0,enabledPaymentMethods:U,enabledPaymentMethodCountries:se,showApplePay:Se=!0,showGooglePay:Pe=!0,layout:pe="default",theme:ye,buttonsTheme:yt,buttonsStyles:He,appearance:we,cardButtonContent:Me,cardBackButtonContent:fe,cardTitleContent:Re,showSecurityFooter:Ge,onButtonClick:oe,onBeforeButtonClick:_e,onBuyerIdentityReady:ge,enableAVS:nt,cardFieldOrder:rt,cardPreFormSlot:M,avsLayout:V="row",country:ie,zip:ae,addressLine1:Ye,addressLine2:Ce,city:N,state:ut,onCountryChange:ot,onZipChange:he,avsCheck:le,checkoutType:H,checkoutLayout:Le,totalAmount:Oe=0,currency:ze="usd",initialCardOpen:je=!1,directPaypal:Be,isSubscription:Ne=!1,session:ce,dataAttachmentPending:dn=!1,dataAttachmentRequiresIdentity:Jt=!1,debug:ee=!1}){let at=Tr(),Z=ma(),Q=(0,s.useContext)(dr),{emitInstrument:be}=(0,s.useContext)(Qn),g=ce??Q.session,q=g?.gateways?.paypal?.providerObjectType??Be?.providerObjectType,Fe=dn||Q.claimPending===!0,Je=Jt||Q.claimRequiresIdentity===!0,De=Fe&&!Je,$t=Ls(),W=n||$t,[St,Tt]=(0,s.useState)(!1),[ft,un]=(0,s.useState)(null),[G,Lt]=(0,s.useState)(ie??"US"),[vn,pn]=(0,s.useState)(ae??""),[mn,In]=(0,s.useState)(Ye??""),[Bn,Fn]=(0,s.useState)(Ce??""),[Xt,Ke]=(0,s.useState)(N??""),[Qe,wt]=(0,s.useState)(ut??""),[rn,kt]=(0,s.useState)(""),[Vn,gt]=(0,s.useState)({}),At=(0,s.useRef)(ae??""),Ot=(0,s.useRef)(ie??"US"),yn=(0,s.useRef)(Ye??""),zt=(0,s.useRef)(Ce??""),xt=(0,s.useRef)(N??""),Pn=(0,s.useRef)(ut??""),Cn=(0,s.useRef)(""),It=(0,s.useRef)({});(0,s.useEffect)(()=>{let i=(R,X,Ue,te,mt)=>{if(It.current[R])return;let lt=X?.trim();!lt||lt===Ue.current||(Ue.current=lt,te(lt),mt?.(lt))};i("country",ie,Ot,Lt,ot),i("zip",ae,At,pn,he),i("addressLine1",Ye,yn,In),i("addressLine2",Ce,zt,Fn),i("city",N,xt,Ke),i("state",ut,Pn,wt)},[ie,ae,Ye,Ce,N,ut,ot,he]);let de=(0,s.useMemo)(()=>(0,p.resolveAVSConfig)(nt),[nt]),on=de!==null,jn=(0,s.useMemo)(()=>(0,p.isAuthorizationOnlySession)(ce),[ce]),Wt=!!ce?.vault?.html,Vt=!!ce?.gateways?.pcivault,an=si(ce),Dn=!!(ce?.gateways?.stripe?.enabledPaymentMethods??U)?.includes("card")||Fr(ce),Ht=Wt||Dn||Vt,$e=!!($&&Ht&&e),[fn,ve]=(0,s.useState)(()=>pe!=="buttons"||je?e??null:null),[O,Ve]=(0,s.useState)(0),K=pe!=="buttons"||je||!!e&&fn===e,Rt=ce?.captureMethod,Mt=(0,s.useRef)(at);(0,s.useEffect)(()=>{Mt.current=at},[at]);let[Gt,Kn]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!$e||!e||!K){Kn(null);return}let i=Mt.current?Mt.current.cardCapture({sessionId:e,captureMethod:Rt}):new pr.PciVaultCardCapture({sessionId:e,captureMethod:Rt,billingApiUrl:W,telemetry:r});return Kn({sessionId:e,captureMethod:Rt,billingApiUrl:W,telemetry:r,capture:i}),()=>{i.unmount()}},[$e,e,K,Rt,W,r]);let Ee=$e&&e&&K&&Gt?.sessionId===e&&Gt.captureMethod===Rt&&Gt.billingApiUrl===W&&Gt.telemetry===r?Gt.capture:null,sn=(0,s.useMemo)(()=>{let i=G,R=de?(0,p.isAVSFieldVisible)(de.postal_code,i):!1;return Ad(i,vn,R)},[de,G,vn]),{avsInvalid:Wn,invalidAvsFields:Sr}=(0,s.useMemo)(()=>{let i={line1:!1,city:!1,state:!1,zip:!1};if(!$e||!de)return{avsInvalid:!1,invalidAvsFields:i};let R=G,X=(mt,lt)=>(0,p.isAVSFieldVisible)(mt,R)&&!lt.trim(),Ue={line1:X(de.address_line_1,mn),city:X(de.city,Xt),state:X(de.state,Qe),zip:sn.empty||sn.malformed};return{avsInvalid:Ue.line1||Ue.city||Ue.state||Ue.zip,invalidAvsFields:Ue}},[$e,de,G,mn,Xt,Qe,sn]),[or,Lr]=(0,s.useState)(!1),[Or,ar]=(0,s.useState)(!1),[Mr,Rn]=(0,s.useState)(!1),[ir,Ft]=(0,s.useState)({line1:!1,city:!1,state:!1}),Nn=(0,s.useRef)(!1),Hn=(0,s.useRef)({email:!1,line1:!1,city:!1,state:!1,zip:!1}),Gn=(0,s.useRef)(!1),ht=(0,s.useCallback)(i=>{Hn.current[i]=!0,Gn.current=!0},[]),_n=(0,s.useCallback)(i=>!Nn.current&&Hn.current[i],[]),Yn=(0,s.useCallback)(i=>{_n(i)&&Ft(R=>R[i]?R:{...R,[i]:!0})},[_n]),[sr,gn]=(0,s.useState)(()=>Ai(ce?.vault)),[et,hn]=(0,s.useState)(je&&Ht?"card":"buttons"),[ln,Ln]=(0,s.useState)(null),wr=et==="expanding"||et==="card",zr=ce?.gateways?.stripe&&!an?"stripe":void 0,kr=(0,s.useCallback)(()=>{be?.({class:"card_surface",provider:zr})},[zr,be]),On=(0,s.useRef)(null),bn=(0,s.useCallback)(i=>{On.current&&clearTimeout(On.current),On.current=setTimeout(()=>{On.current=null,i()},Jo)},[]);(0,s.useEffect)(()=>()=>{On.current&&clearTimeout(On.current)},[]);let Yr=(0,s.useCallback)(()=>{kr(),ve(e??null),Ve(i=>i+1),hn("expanding"),bn(()=>hn("card"))},[bn,kr,e]),En=(0,s.useCallback)(()=>{hn("collapsing"),bn(()=>hn("buttons"))},[bn]),Br=(0,s.useCallback)(i=>{Ln(i),hn("apm-expanding"),bn(()=>hn("apm-form"))},[bn]),Sn=(0,s.useCallback)(()=>{hn("apm-collapsing"),bn(()=>{hn("buttons"),Ln(null)})},[bn]);(0,s.useEffect)(()=>{pe==="buttons"&&je&&Ht&&(ve(e??null),hn("card"))},[pe,je,Ht,e]);let[zn,st]=(0,s.useState)(null),Jn=(0,s.useRef)(!1),Zt=(0,s.useRef)(null),_t=(0,s.useRef)("idle"),[D,F]=(0,s.useState)(!1),j=(0,s.useRef)(D);j.current=D;let[Y,pt]=(0,s.useState)(()=>Be?.existingOrderId?{orderId:Be.existingOrderId,attempts:1}:null),B=(0,s.useRef)(Y);(0,s.useEffect)(()=>{B.current=Y},[Y]);let f=(0,s.useRef)(null),L=(0,s.useMemo)(()=>{if(ge||Q.claimBuyerIdentity||ce?.buyerIdentified!==!1||!e||!t)return;let i=`${W}|${e}|${t}`;f.current?.key!==i&&(f.current={key:i,claim:so(new pr.PaymentAPI(W,{telemetry:!1}),e,t,{...a?{userId:a}:{},...h?{firstName:h}:{},...b?{lastName:b}:{}})});let R=f.current.claim;return async X=>{await R(X)}},[ge,Q.claimBuyerIdentity,ce?.buyerIdentified,e,t,W,a,h,b]),S=ge??Q.claimBuyerIdentity??L,I=z??ft,A=(0,s.useMemo)(()=>(0,p.resolveTheme)(ye),[ye]),w=(0,s.useMemo)(()=>{let i=A?.buttonsLayout??(0,p.resolveButtonsLayoutTheme)(yt);return He?{...i,...He,cardButton:{...i.cardButton,...He.cardButton},cardFormContainer:{...i.cardFormContainer,...He.cardFormContainer},backButton:{...i.backButton,...He.backButton},backButtonIcon:{...i.backButtonIcon,...He.backButtonIcon},submitButton:{...i.submitButton,...He.submitButton},title:{...i.title,...He.title}}:i},[A,yt,He]),J=we??A?.appearance,Xe=(0,s.useMemo)(()=>Aa({appearance:J,buttonsStyles:w,layout:pe}),[J,w,pe]),Dt=Q.inlineSessionPatchProcessing??!1,Ae=(ne??St)||Dt,me=W.replace(/\/+$/,""),v=(0,s.useMemo)(()=>ci({userId:a,email:o,firstName:h,lastName:b,country:ie,zip:ae},Vn),[a,o,h,b,ie,ae,Vn]),x=[v.firstName,v.lastName].filter(i=>!!i?.trim()).join(" "),re=!(0,p.isValidEmail)(v.email?.trim()),ke=(0,s.useRef)(null);$e&&ke.current===null&&(ke.current=re);let xe=$e&&(ke.current??re),Ie=(0,s.useMemo)(()=>xd(rn,xe),[rn,xe]),tt=Ie.empty||Ie.malformed,vt=(0,s.useMemo)(()=>at?at.getRawProvider():null,[at]),tn=(0,s.useMemo)(()=>Z?Z.getRawProvider():null,[Z]),Un=Oe||100,Jr=ze.toLowerCase(),Va=(0,s.useMemo)(()=>J?(0,pr.toStripeAppearance)(J):null,[J]),Xr=Va,Ki=(0,s.useMemo)(()=>{let i=Va??{},R=i.rules??{};return{...i,rules:{...R,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...R[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...R[".AccordionItemContents"]??{}}}}},[Va]),Wi=(0,s.useMemo)(()=>({...Bs(Oe,ce?.captureMethod),currency:Jr,...Xr?{appearance:Xr}:null}),[Oe,Jr,ce?.captureMethod,Xr]),Hi=(0,s.useMemo)(()=>({mode:"payment",amount:Un,currency:Jr,captureMethod:"manual",setupFutureUsage:"off_session",...Xr?{appearance:Xr}:null}),[Un,Jr,Xr]),Te=(0,s.useCallback)(i=>{un(i),ue?.(i)},[ue]),ja=(0,s.useRef)(""),[Gi,Ul]=(0,s.useState)(!1),Ka=(0,s.useCallback)(()=>{Ul(!0)},[]);(0,s.useEffect)(()=>{if(!$e||!xe||!S||!Gi||tt||ja.current)return;let i=Mn({email:(0,p.isValidEmail)(v.email?.trim())?v.email?.trim():Cn.current.trim(),firstName:v.firstName?.trim(),lastName:v.lastName?.trim()});ja.current=JSON.stringify(i),gt(R=>({...R,...i})),Promise.resolve(S(i)).catch(R=>{ja.current="",Te(R instanceof Error?R.message:"Failed to attach buyer details.")})},[$e,xe,S,Gi,tt,v.email,v.firstName,v.lastName,Te]),(0,s.useEffect)(()=>{!$e||!Ee||Ee.setCardFieldOrder?.(rt??null,de==null&&!xe)},[$e,Ee,rt,de,xe]),(0,s.useEffect)(()=>{(et==="expanding"||et==="collapsing"||et==="apm-expanding"||et==="apm-collapsing")&&Te(null)},[et,Te]);let fr=(0,s.useCallback)((i,R,X)=>{u?.(nn(i,R,X))},[u]),Zr=(0,s.useCallback)((i,R,X)=>{let Ue=X?.popupBlocked??Er(R),te=Ed(i,Ue),mt=jr(X?.code)??_r(R)??"external_payment_method_failed",lt=new p.FloPayError(te,"api_error",{code:"external_payment_method_failed",param:i});st(null),pe==="buttons"&&(hn("buttons"),Ln(null)),Te(te),d?.(lt),console.error("[FloPay] External payment method failed:",{method:i,code:mt,popupBlocked:Ue})},[pe,d,Te]);(0,s.useEffect)(()=>{if(!$e||!e){gn(null);return}let i=Ai(ce?.vault);if(i){gn(i);return}if(!K){gn(null);return}gn(null);let R=!0;return new pr.PaymentAPI(me).getVaultCapture(e,t).then(X=>{if(!R)return;let Ue=Ai(X);Ue?gn(Ue):Te("Failed to load the secure card form.")}).catch(X=>{R&&Te(X instanceof Error?X.message:"Failed to load the secure card form.")}),()=>{R=!1}},[$e,K,O,e,ce?.vault,me,t,Te]);let lr=(0,s.useRef)({onComplete:l,onError:d,updateError:Te,emitDecline:fr,resolvedAccount:v,avsConfig:de,avsCheckProp:le,sessionId:e,nonce:t,baseUrl:me,captureMethod:ce?.captureMethod,paymentId:ce?.paymentId,authorizationExpiresAt:ce?.authorizationExpiresAt,serverSideCardGateway:an});lr.current={onComplete:l,onError:d,updateError:Te,emitDecline:fr,resolvedAccount:v,avsConfig:de,avsCheckProp:le,sessionId:e,nonce:t,baseUrl:me,captureMethod:ce?.captureMethod,paymentId:ce?.paymentId,authorizationExpiresAt:ce?.authorizationExpiresAt,serverSideCardGateway:an};let Wa=(0,s.useRef)(!1),Yi=(0,s.useCallback)(()=>{let i=lr.current,R=i.resolvedAccount.email?.trim(),X=(0,p.isValidEmail)(R)?R:Cn.current.trim();if(!(0,p.isValidEmail)(X))return null;let Ue=i.resolvedAccount.firstName?.trim(),te=i.resolvedAccount.lastName?.trim(),mt=Ot.current||i.resolvedAccount.country||"US",lt=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.state,mt):!1,hr=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.address_line_1,mt):!1,it=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.postal_code,mt):!1,Bt=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.city,mt):!1,bt=i.avsConfig?(0,p.isAVSFieldVisible)(i.avsConfig.address_line_2,mt):!1,ct=hr&&!lt&&it?(0,p.getStateFromPostalCode)(mt,(At.current??"").trim()):null,xn=lt?Pn.current:ct;return{accountData:{userId:i.resolvedAccount.userId??"",email:X,...Ue?{firstName:Ue}:{},...te?{lastName:te}:{},...it&&At.current?{zip:At.current}:{},...Bt&&xt.current?{city:xt.current}:{},...xn?{state:xn}:{},...hr&&yn.current?{addressLine1:yn.current}:{},...bt&&zt.current?{addressLine2:zt.current}:{},country:mt},...i.avsCheckProp===void 0?{}:{avsCheck:i.avsCheckProp},...i.avsConfig?{avsConfig:{country:(0,p.isAVSFieldVisible)(i.avsConfig.country,mt),postal_code:it,address_line_1:hr,address_line_2:bt,city:Bt,state:lt}}:{}}},[]),Ji=(0,s.useRef)(Fe);Ji.current=Fe,(0,s.useEffect)(()=>{Fe||I!==dl||lr.current.updateError(null)},[Fe,I]),(0,s.useEffect)(()=>{!$e||!Ee||Ee.setSubmitGate?.(Wn||Fe||tt||D)},[$e,Ee,Wn,Fe,tt,D]),(0,s.useEffect)(()=>{if(!$e||!Ee)return;Wa.current=!1;let i=null,R=()=>{i&&clearTimeout(i),i=setTimeout(()=>{i=null,_t.current="idle",st(null)},400)},X=Ee.on("submitting",()=>{Lr(!0),Zt.current&&clearTimeout(Zt.current),_t.current="validation-window",Zt.current=setTimeout(()=>{Zt.current=null,_t.current==="validation-window"&&(_t.current="processing")},hd),st("processing");let it=lr.current;if(!it.sessionId||!it.nonce)return;let Bt=Yi();if(!Bt){it.updateError("Enter a valid email address."),_t.current="idle",st(null);return}new pr.PaymentAPI(it.baseUrl).patchAccountSnapshot(it.sessionId,it.nonce,Bt,{telemetryMode:"best_effort"}).catch(bt=>{if(!vd(bt))return;let ct=bt instanceof Error?bt.message:"Please check your billing address and try again.";it.updateError(ct),_t.current="idle",st(null),it.onError?.(bt instanceof p.FloPayError?bt:new p.FloPayError(ct,"api_error"))})}),Ue=Ee.on("complete",async it=>{if(ho(it.sessionId??lr.current.sessionId),_t.current="terminal",F(!1),st("success"),await new Promise(xn=>setTimeout(xn,600)),Wa.current)return;Wa.current=!0;let Bt=lr.current,bt=(0,p.isAuthorizationOnlySession)(Bt)||it.outcome==="authorized",ct=Bt.serverSideCardGateway?{}:{paymentIntentId:it.intentId};lr.current.onComplete?.(bt?{status:"authorized",...ct,paymentId:it.paymentId??Bt.paymentId,sessionId:it.sessionId??Bt.sessionId,authorizationExpiresAt:it.authorizationExpiresAt??Bt.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...ct,checkoutMethod:"card"})}),te=Ee.on("decline",it=>{let Bt=lr.current,bt=it.message??"Your payment was declined. Please try another card or contact your bank.";_t.current="terminal",F(!1),Bt.updateError(bt),st("error");let ct=it.failureOutcome??(0,p.normalizeCheckoutFailureOutcome)(it.declineReason)??"authorization_declined";Bt.emitDecline("card",bt,{code:ct,declineCode:ct}),R()}),mt=Ee.on("error",it=>{let Bt=lr.current,bt=it.message??"There was a problem processing your payment. Please try again.";_t.current="terminal",F(!1),Bt.updateError(bt),st("error"),Bt.onError?.(new p.FloPayError(bt,"api_error",{code:it.failureOutcome??"capture_failed"})),R()}),lt=Ee.on("challenge_dismissed",()=>{Zt.current&&(clearTimeout(Zt.current),Zt.current=null),_t.current="processing",F(!0),st(null)}),hr=Ee.on("blocked",()=>{if(j.current){lr.current.updateError(bd);return}if(!Ji.current){Lr(!0);return}Ka(),lr.current.updateError(dl)});return()=>{i&&(clearTimeout(i),i=null),Zt.current&&(clearTimeout(Zt.current),Zt.current=null),_t.current="idle",F(!1),st(null),X(),Ue(),te(),mt(),lt(),hr()}},[$e,Ee,Ka,Yi]);let gr=!!Be?.clientId,wo=Array.isArray(U),ea=wo&&U.length>0,ql=wo&&U.includes("paypal"),{expressMethods:ta,paymentElementMethods:ko}=(0,s.useMemo)(()=>(0,p.partitionStripeMethods)(U,{excludePaypal:gr}),[U,gr]),Xi=gr||!!Z,$l=(0,s.useMemo)(()=>Xi?ta.filter(i=>i!=="paypal"):ta,[ta,Xi]),Vl=(0,s.useMemo)(()=>{let i=[];return Se&&i.push("apple_pay"),Pe&&i.push("google_pay"),i},[Se,Pe]),Qr=wo?$l:Vl,jl=$&&Qr.length>0,Ha=on?G:ie,na=(0,s.useMemo)(()=>{let i=Ha?.trim().toUpperCase();return i?se?ko.filter(R=>{let X=se[R];return!X||X.length===0||X.includes(i)}):(0,p.filterStripeMethodsByCountry)(ko,Ha):ko},[ko,Ha,se]),Ga=(0,s.useMemo)(()=>({mode:"payment",amount:Un,currency:Jr,paymentMethodCreation:"manual",appearance:Ki}),[Un,Jr,Ki]),[Zi,Qi]=(0,s.useState)("loading"),[es,ts]=(0,s.useState)("loading"),[ns,rs]=(0,s.useState)("loading"),[Kl,Ya]=(0,s.useState)(!1),[os,Ja]=(0,s.useState)("loading"),[Xa,Wl]=(0,s.useState)();(0,s.useEffect)(()=>{Wl(ya())},[]);let ra=Xa?.inAppBrowser,oa=Xa?fa(Xa,Be?.approvalPresentation,q??(Ne?"subscription":"order")):"popup",as=k&&(gr||(wo?ql:ra===!1)),is=$&&jl,Io=(!De||!!Q.waitForDataAttachment)&&as&&gr,ss=os==="retrying"||os==="exhausted",Ro=!De&&as&&!!tn&&(!gr||ss),eo=!De&&is&&!!vt,_o=!De&&$&&ea&&na.length>0&&!!vt,Hl=Io&&!ss?Kl:Ro&&fl(Zi),Gl=eo&&fl(es),Yl=_o&&ns!=="load_error",ls=i=>i==="loading"||i==="ready",cs=Io||Ro&&ls(Zi)||eo&&ls(es)||_o&&ns!=="load_error",aa=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(!aa.current){if(!$&&!k){aa.current=!0;let i=new p.FloPayError("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");d?.(i),Te(i.message)}else if(!$&&k&&!gr&&!tn){aa.current=!0;let i=new p.FloPayError("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");d?.(i),Te(i.message)}else if(ra!==void 0&&!De&&!Ht&&!cs){aa.current=!0;let i=new p.FloPayError("FloPay: this checkout session has no vault card capability and no usable supported non-card payment methods. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});d?.(i),Te(i.message)}}},[$,k,gr,tn,ra,De,Ht,cs,d,Te]);let ds=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(ds.current||!ea)return;let i=[];Se!==!0&&i.push("showApplePay"),Pe!==!0&&i.push("showGooglePay"),i.length!==0&&(ds.current=!0,console.warn(`[FloPay] ${i.join(" / ")} ${i.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,Se,Pe]);let us=(0,s.useCallback)((i,R)=>Q.applyInlineSessionPatch?Q.applyInlineSessionPatch(i).then(X=>({error:null,sessionId:X.sessionId||e,nonce:X.session?.clientSecret||t})).catch(X=>{let Ue=yl(R,X);return Te(Ue.message),d?.(Ue),{error:Ue,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Q.applyInlineSessionPatch,t,d,e,Te]),cr=(0,s.useCallback)(async i=>{if(i!=="card"&&De&&await Q.waitForDataAttachment?.(),!_e)return{proceed:!0};try{let R=await _e({method:i,sessionId:e||void 0,createSession:Q.inlineSessionDraft});if(R===!1)return{proceed:!1};if(R&&typeof R=="object"){R.account&&gt(Ue=>({...Ue??{},...R.account}));let X=await us(R,i);return X.error?{proceed:!1,accountPatch:R.account}:{proceed:!0,accountPatch:R.account,sessionId:X.sessionId,nonce:X.nonce}}return{proceed:!0}}catch(R){let X=yl(i,R);return Te(X.message),d?.(X),{proceed:!1}}},[us,Q.inlineSessionDraft,Q.waitForDataAttachment,De,_e,d,e,Te]),ps=(0,s.useCallback)(async(i,R)=>{if(Jn.current)return;Jn.current=!0,Tt(!0),st("processing"),Te(null);let X=R?.sessionId??e,Ue=R?.nonce??t,te=ci(v,R?.accountPatch),mt=R?.completionPaymentMethodId??No(i),lt=i.originalPaymentMethodId?{...i,originalPaymentMethodId:void 0}:i,hr=kd(i),it=()=>{be?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:hr})};try{let bt=await new pr.PaymentAPI(me).processPayment(te.userId??"",{sessionId:X,nonce:Ue,paymentMethodCategory:R?.paymentMethodCategory??Rd(i),tokenizedData:lt,accountData:{...R?.accountPatch,userId:te.userId??"",email:te.email??"",firstName:te.firstName||void 0,lastName:te.lastName||void 0,...de?(()=>{let Pt=Ot.current,Zn=(0,p.isAVSFieldVisible)(de.state,Pt),wn=(0,p.isAVSFieldVisible)(de.address_line_1,Pt),Qt=(0,p.isAVSFieldVisible)(de.postal_code,Pt),$r=wn&&!Zn&&Qt?(0,p.getStateFromPostalCode)(Pt,(At.current??"").trim()):null,Bo=Zn?Pn.current:$r;return{country:Pt,...Qt&&At.current?{zip:At.current}:{},...(0,p.isAVSFieldVisible)(de.city,Pt)&&xt.current?{city:xt.current}:{},...Bo?{state:Bo}:{},...wn&&yn.current?{addressLine1:yn.current}:{},...(0,p.isAVSFieldVisible)(de.address_line_2,Pt)&&zt.current?{addressLine2:zt.current}:{}}})():{}},chv:y,avsCheck:le??!1,checkoutType:H,checkoutLayout:Le,avsConfig:de?{country:(0,p.isAVSFieldVisible)(de.country,Ot.current),postal_code:(0,p.isAVSFieldVisible)(de.postal_code,Ot.current),address_line_1:(0,p.isAVSFieldVisible)(de.address_line_1,Ot.current),address_line_2:(0,p.isAVSFieldVisible)(de.address_line_2,Ot.current),city:(0,p.isAVSFieldVisible)(de.city,Ot.current),state:(0,p.isAVSFieldVisible)(de.state,Ot.current)}:void 0});if(bt.ok){let Pt=bt.status===204?null:await bt.json().catch(()=>null),Zn=(0,p.isAuthorizationOnlySession)(ce)||Pt?.status==="authorized";ho(X),st("success"),pt(null),await new Promise($r=>setTimeout($r,600));let wn;typeof Pt?.paymentId=="string"?wn=Pt.paymentId:ce?.paymentId&&(wn=ce.paymentId);let Qt;typeof Pt?.authorizationExpiresAt=="string"?Qt=Pt.authorizationExpiresAt:ce?.authorizationExpiresAt&&(Qt=ce.authorizationExpiresAt),l?.(Zn?{status:"authorized",...wn===void 0?{}:{paymentId:wn},sessionId:typeof Pt?.sessionId=="string"?Pt.sessionId:X,...Qt===void 0?{}:{authorizationExpiresAt:Qt},paymentIntentId:i.threeDSecureActionResultTokenId,paymentMethodId:mt,checkoutMethod:i.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:i.threeDSecureActionResultTokenId,paymentMethodId:mt,checkoutMethod:i.isPaypal?"paypal":"card"});return}let ct=await bt.json().catch(()=>null);if(ct?.type==="paypal_redirect_required"){let Pt=ct.threeDSecureToken,Zn=ct.paymentMethodId||i.id||"";if(!at||!Pt){st("error"),Te("PayPal authorization required but no token provided.");return}try{let wn=Z?.getRawProvider();if(!wn){Te("PayPal is not available.");return}let Qt={return_url:window.location.href};Zn&&(Qt.payment_method=Zn);let{error:$r}=await wn.confirmPayment({clientSecret:Pt,confirmParams:Qt,redirect:"if_required"});if($r){st("error");let Bo=$r.message??"PayPal payment failed.";Te(Bo),fr("paypal",Bo,{code:$r.code})}}catch(wn){st("error"),Te(wn instanceof Error?wn.message:"PayPal authorization failed.")}return}if(ct?.type==="paypal_direct_required"){let Pt=ct.orderId;if(!Pt){st("error"),Te("PayPal retry required but no order id provided.");return}let Zn=B.current?.attempts??0;if(Zn>=2){st("error"),Te("PayPal payment could not be completed after multiple attempts."),fr("paypal","paypal_direct_required retry limit exceeded");return}Ya(!1),Ja("loading"),pt({orderId:Pt,attempts:Zn+1}),st(null);return}(0,p.classifyPaymentRejection)(bt.status,ct)||it(),st("error");let xn=ct?.message??"Payment failed. Please try again.";Te(xn),fr(i.isPaypal?"paypal":"card",xn,{code:ct?.code??ct?.gatewayErrorCode,declineCode:ct?.declineCode??ct?.gatewayDeclineReason}),await new Promise(Pt=>setTimeout(Pt,400))}catch(Bt){Cl(Bt)||it(),st("error"),Te(Bt instanceof Error?Bt.message:"An unexpected error occurred"),await new Promise(bt=>setTimeout(bt,400))}finally{Tt(!1),st(null),Jn.current=!1}},[me,e,t,v,de,le,H,Le,y,at,Z,ce,l,Te,fr,be]),Tn=(0,s.useCallback)((i,R)=>{m?m(i):ps(i,R)},[m,ps]),Eo=`${vl}:${e}`;(0,s.useEffect)(()=>{if(typeof window>"u")return;let i=localStorage.getItem(Eo);if(!i)return;let R;try{R=JSON.parse(i)}catch{localStorage.removeItem(Eo);return}if(!R||typeof R.createdAt!="number"||Date.now()-R.createdAt<0||Date.now()-R.createdAt>Pl||typeof R.paymentMethodId!="string"||typeof R.providerIntentId!="string"||typeof R.paymentMethodType!="string"||R.sessionId!==e||!t||R.nonce!==t||!Qr.includes(R.paymentMethodType)){localStorage.removeItem(Eo);return}localStorage.removeItem(Eo),Tn({id:R.paymentMethodId,type:"card",threeDSecureActionResultTokenId:R.providerIntentId,gateway:"stripe",paymentMethodType:R.paymentMethodType},{...R.accountPatch?{accountPatch:R.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[Tn,t,e,Eo,Qr]);let ms=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(typeof window>"u"||ms.current)return;let i=new URLSearchParams(window.location.search),R=i.get("payment_intent"),X=i.get("payment_intent_client_secret"),Ue=i.get("redirect_status");if(!R||!X||!at)return;let te=at.getRawProvider();if(!te)return;let mt=ct=>{let xn=localStorage.getItem(ct);if(!xn)return null;try{return JSON.parse(xn)}catch{return localStorage.removeItem(ct),null}},lt=mt(vr)??mt(sl),hr;if(lt?.clientSecret){if(lt.clientSecret!==X)return;hr={...lt.accountPatch?{accountPatch:lt.accountPatch}:{},...lt.sessionId?{sessionId:lt.sessionId}:{},...lt.nonce?{nonce:lt.nonce}:{}}}else if(lt?.sessionId&&lt.sessionId!==e)return;ms.current=!0,localStorage.removeItem(vr),localStorage.removeItem(sl);let it=new URL(window.location.href);it.searchParams.delete("payment_intent"),it.searchParams.delete("payment_intent_client_secret"),it.searchParams.delete("redirect_status"),window.history.replaceState({},"",it.toString());let Bt=lt?.paymentMethodType??lt?.tokenType??"card",bt="card";(async()=>{if(Ue==="failed"){let Qt="Payment was declined. Please try again.";Te(Qt),fr(bt,Qt);return}let{paymentIntent:ct,error:xn}=await te.retrievePaymentIntent(X);if(xn){let Qt=xn.message??"Failed to retrieve payment status.";Te(Qt),fr(bt,Qt,{code:xn.code});return}let Pt=ct?.status,Zn=Do(Pt);if(!ct||!Zn){let Qt=Pt==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";Te(Qt),fr(bt,Qt,{code:Pt??"missing_payment_intent"});return}let wn=typeof ct.payment_method=="string"?ct.payment_method:ct.payment_method?.id;Tn({id:wn??lt?.paymentMethodId??lt?.tokenId??ct.id,type:"card",threeDSecureActionResultTokenId:ct.id,gateway:lt?.gateway??"stripe",paymentMethodType:Bt},hr)})()},[e,Tn,at,Te,fr]);let Za=(0,s.useCallback)(i=>{i.preventDefault()},[]);if(!($e||at!==null))return(0,c.jsx)("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let To=pe==="buttons",An=J?.variables,Jl=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Qa=An?.colorBackground,Xl=Qa&&!Jl.has(Qa)?Qa:void 0,Ao=w.cardInputBorder??(To?"#e5e7eb":"#A4A4FF"),ys=An?.colorDanger??"#dc2626",Ut=i=>Sr[i]&&(ir[i]||or),ia=tt&&(Mr||or),Xn=i=>i?ys:Ao,sa=(sn.malformed||sn.empty)&&(Or||or),Zl=Xn(sa),ei=w.cardFormContainer?.backgroundColor??Xl??(To?"white":"#EDEDFF"),to=w.cardInputBackground??An?.colorBackground??"white",ti=oo(fe),fs=oo(Re),no=w.nameInput,gs=w.cardInputFontSize??Md(no?.fontSize)??An?.fontSizeBase??"16px",hs=typeof no?.fontFamily=="string"?no.fontFamily:An?.fontFamily??"Poppins, sans-serif",bs=Ii(no?.fontWeight)??400,Ql=w.cardInputColor??(typeof no?.color=="string"?no.color:void 0)??An?.colorText??"#262833",ec=w.cardInputPlaceholderColor??"#9ca3af",jt=An?.borderRadius??"8px",Ur=An?.borderRadius??w.cardButton?.borderRadius??jt,qr=An?.colorPrimary??"#4A49FF",tc=An?.colorPrimaryHover??Co(qr,.12),ni=An?.colorText??"#262833",ri={fontSize:gs,fontFamily:hs,fontWeight:bs,color:Ql,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},xo={marginTop:"0.375rem",...ri,fontSize:"0.75rem",lineHeight:1.4,color:ys},nc={"--flopay-input-placeholder-color":ec,"--flopay-input-font-size":gs,"--flopay-input-font-family":hs,"--flopay-input-font-weight":String(bs)},Mo=w.cardFormContainer??{},oi=Mo.padding??(To?"0":"1rem"),ai=Mo.borderRadius??jt,rc=Ee&&sr?(0,c.jsx)(Po,{capture:Ee,html:sr.html,messageToken:sr.messageToken,expectedOrigin:sr.expectedOrigin,theme:Xe,submitLabel:_,onReady:()=>{if(!xe&&!de||typeof document>"u")return;let i=()=>{let X=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(X){Nn.current=!0;try{X.focus()}finally{Nn.current=!1}}};Gn.current||i()},onError:i=>Te(i),onValidation:i=>{let R=_t.current;(R==="idle"||R==="validation-window")&&(Te(i),i&&_t.current==="validation-window"&&(Zt.current&&(clearTimeout(Zt.current),Zt.current=null),_t.current="idle",st(null)))}}):(0,c.jsx)("div",{"data-testid":"flopay-vault-loading",style:{minHeight:120,display:"flex",alignItems:"center",justifyContent:"center",color:"#6b7280",fontSize:14},children:"Loading secure card form\u2026"}),vs=(0,c.jsxs)("div",{onFocusCapture:i=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(i.target.tagName)&&kr()},style:{backgroundColor:ei,borderRadius:ai,...Mo,padding:oi,...nc,display:"flex",flexDirection:"column"},children:[(0,c.jsx)("style",{children:`
31
31
  .flopay-shared-input::placeholder {
32
32
  color: var(--flopay-input-placeholder-color);
33
33
  opacity: 1;
@@ -35,13 +35,13 @@ ${mn.join(`
35
35
  font-family: var(--flopay-input-font-family);
36
36
  font-weight: var(--flopay-input-font-weight);
37
37
  }
38
- `}),_o&&Mr&&(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:He?-2:0},children:[(0,c.jsxs)("button",{type:"button",onClick:zn,style:{display:"inline-flex",alignItems:"center",gap:Za?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:R.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...R.backButton},"aria-label":"Back to payment methods",children:[(0,c.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...R.backButtonIcon},children:(0,c.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,c.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,c.jsx)(ro,{content:ue})]}),ps?(0,c.jsx)("div",{style:{flex:1}}):(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:R.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...R.title},children:(0,c.jsx)(Mo,{content:we})})]}),!_o&&!ps&&(0,c.jsx)("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:Qa,order:He?-3:0,...R.title},children:(0,c.jsx)(Mo,{content:we})}),He&&I&&(0,c.jsx)("div",{style:{order:-2,width:"100%"},children:I}),He&&_t&&(0,c.jsxs)("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[(0,c.jsx)("div",{style:{backgroundColor:Zr,border:`1px solid ${Kn(ra)}`,borderRadius:qt,padding:"10px"},children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-buyer-email",name:"email",type:"email",autoComplete:"email","aria-label":"Email address",placeholder:"Email address",value:yt,onChange:i=>{St("email"),Dn.current=i.target.value,$n(i.target.value)},onPointerDown:()=>St("email"),onKeyDown:()=>St("email"),onBlur:()=>{Pn("email")&&In(!0),An||$a()},disabled:Ue,required:!0,"aria-invalid":ra||void 0,"aria-describedby":ra?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...ei}})}),ra&&(0,c.jsx)("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:To,children:et.empty?"Email address is required":"Enter a valid email address"})]}),re&&(0,c.jsx)("div",{style:{order:He?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let i=K,w=(J=!1)=>({backgroundColor:Zr,border:`1px solid ${Kn(J)}`,borderRadius:qt,marginTop:"0.5rem",padding:"10px"}),H=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...ei}),Ve=(0,p.getStateOptions)(i);return(0,c.jsxs)(c.Fragment,{children:[(0,p.isAVSFieldVisible)(re.address_line_1,i)&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{style:w(Lt("line1")),children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line1",name:"billing-address-line1",placeholder:"Street Address (e.g. 123 Main St)",autoComplete:"billing address-line1",value:rn,onChange:J=>{St("line1"),Ct.current.addressLine1=!0,un.current=J.target.value,fn(J.target.value)},onPointerDown:()=>St("line1"),onKeyDown:()=>St("line1"),onBlur:()=>jn("line1"),disabled:Ue,required:!0,"aria-invalid":Lt("line1")||void 0,"aria-describedby":Lt("line1")?"flopay-billing-address-line1-error":void 0,"data-testid":"flopay-address-line1",style:H()})}),Lt("line1")&&(0,c.jsx)("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:To,children:"Street address is required"})]}),(0,p.isAVSFieldVisible)(re.address_line_2,i)&&(0,c.jsx)("div",{style:w(),children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line2",name:"billing-address-line2",placeholder:"Apt, Suite, Unit (optional)",autoComplete:"billing address-line2",value:Xn,onChange:J=>{Ct.current.addressLine2=!0,Bt.current=J.target.value,dn(J.target.value)},disabled:Ue,"data-testid":"flopay-address-line2",style:H()})}),((0,p.isAVSFieldVisible)(re.city,i)||(0,p.isAVSFieldVisible)(re.state,i))&&(0,c.jsxs)("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[(0,p.isAVSFieldVisible)(re.city,i)&&(0,c.jsx)("div",{style:{flex:1,backgroundColor:Zr,borderTop:`1px solid ${Kn(Lt("city"))}`,borderRight:`1px solid ${Kn(Lt("city"))}`,borderBottom:`1px solid ${Kn(Lt("city"))}`,borderLeft:`1px solid ${Kn(Lt("city"))}`,padding:"10px",borderTopLeftRadius:qt,borderBottomLeftRadius:qt,...(0,p.isAVSFieldVisible)(re.state,i)?{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0}:{borderRadius:qt}},children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-city",name:"billing-city",placeholder:"City",autoComplete:"billing address-level2",value:Gt,onChange:J=>{St("city"),Ct.current.city=!0,Rt.current=J.target.value,Le(J.target.value)},onPointerDown:()=>St("city"),onKeyDown:()=>St("city"),onBlur:()=>jn("city"),disabled:Ue,required:!0,"aria-invalid":Lt("city")||void 0,"aria-describedby":Lt("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:H()})}),(0,p.isAVSFieldVisible)(re.state,i)&&(0,c.jsx)("div",{style:{flex:1,backgroundColor:Zr,borderTop:`1px solid ${Kn(Lt("state"))}`,borderRight:`1px solid ${Kn(Lt("state"))}`,borderBottom:`1px solid ${Kn(Lt("state"))}`,borderLeft:`1px solid ${Kn(Lt("state"))}`,padding:"10px",borderTopRightRadius:qt,borderBottomRightRadius:qt,...(0,p.isAVSFieldVisible)(re.city,i)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${Kn(Lt("state")||Lt("city"))}`}:{borderRadius:qt}},children:Ve?(0,c.jsxs)("select",{id:"flopay-billing-state",name:"billing-state",value:We,onChange:J=>{St("state"),Ct.current.state=!0,an.current=J.target.value,on(J.target.value)},onPointerDown:()=>St("state"),onKeyDown:()=>St("state"),onBlur:()=>jn("state"),disabled:Ue,autoComplete:"billing address-level1",required:!0,"aria-invalid":Lt("state")||void 0,"aria-describedby":Lt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:{...H(),cursor:"pointer"},children:[(0,c.jsx)("option",{value:"",children:(0,p.getStateLabel)(i)}),Ve.map(J=>(0,c.jsx)("option",{value:J.code,children:J.name},J.code))]}):(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:(0,p.getStateLabel)(i),autoComplete:"billing address-level1",value:We,onChange:J=>{St("state"),Ct.current.state=!0,an.current=J.target.value,on(J.target.value)},onPointerDown:()=>St("state"),onKeyDown:()=>St("state"),onBlur:()=>jn("state"),disabled:Ue,required:!0,"aria-invalid":Lt("state")||void 0,"aria-describedby":Lt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:H()})})]}),Lt("city")&&(0,c.jsx)("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:To,children:"City is required"}),Lt("state")&&(0,c.jsxs)("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:To,children:[(0,p.getStateLabel)(i)," is required"]}),((0,p.isAVSFieldVisible)(re.country,i)||(0,p.isAVSFieldVisible)(re.postal_code,i))&&(0,c.jsxs)("div",{style:{display:"flex",flexDirection:j==="column"?"column":"row",gap:j==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[(0,p.isAVSFieldVisible)(re.country,i)&&(0,c.jsx)("div",{style:{flex:j==="row"?1:void 0,backgroundColor:Zr,borderTop:`1px solid ${Eo}`,borderRight:`1px solid ${Eo}`,borderBottom:`1px solid ${Eo}`,borderLeft:`1px solid ${Eo}`,padding:"10px",...j==="row"&&(0,p.isAVSFieldVisible)(re.postal_code,i)?{borderRadius:"0",borderTopLeftRadius:qt,borderBottomLeftRadius:qt,borderRight:"none"}:{borderRadius:qt}},children:(0,c.jsx)("select",{id:"flopay-billing-country",name:"billing-country",value:K,onChange:J=>{Ct.current.country=!0,Vt.current=J.target.value,yn(J.target.value),Qe?.(J.target.value),an.current="",on("")},disabled:Ue,autoComplete:"billing country","data-testid":"flopay-country",style:{...H(),cursor:"pointer"},children:p.COUNTRY_OPTIONS.map(J=>(0,c.jsxs)("option",{value:J.code,children:[J.flag," ",J.name]},J.code))})}),(0,p.isAVSFieldVisible)(re.postal_code,i)&&(0,c.jsx)("div",{style:{flex:j==="row"?1:void 0,backgroundColor:Zr,border:`1px solid ${Gl}`,padding:"10px",...j==="row"&&(0,p.isAVSFieldVisible)(re.country,i)?{borderRadius:"0",borderTopRightRadius:qt,borderBottomRightRadius:qt}:{borderRadius:qt}},children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-postal-code",name:"billing-postal-code",placeholder:(0,p.getPostalCodeLabel)(K),autoComplete:"billing postal-code",value:wn,onChange:J=>{St("zip"),Ct.current.zip=!0,bt.current=J.target.value,cn(J.target.value),Pe?.(J.target.value)},onPointerDown:()=>St("zip"),onKeyDown:()=>St("zip"),onBlur:()=>{Pn("zip")&&Qn(!0)},disabled:Ue,required:vn.required,"aria-invalid":oa||void 0,"aria-describedby":oa?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:H()})})]}),oa&&(0,c.jsx)("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:To,children:vn.empty?`${(0,p.getPostalCodeLabel)(i)} is required`:kd(i)})]})})()}),He&&Ql,ce&&(0,c.jsx)(uo,{margin:"0.75rem 0",styleOverride:R.errorBanner,children:ce})]}),aa={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"},hs=i=>At?!S||!gr?(0,c.jsx)("pre",{"data-testid":i,style:aa,children:"FloPay/DirectPayPal-debug - not enabled"}):(0,c.jsx)("pre",{"data-testid":i,style:aa,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${S}`,` directPaypalConfigured=${gr}`,` inAppBrowserDetected=${String(ea)}`,` shouldRenderDirectPayPal=${wo}`,` shouldRenderStripePayPal=${ko}`,` hasPaypalStripeInstance=${!!Wr}`].join(`
39
- `)}):null,bs=i=>At?!V||!Zt?(0,c.jsx)("pre",{"data-testid":i,style:aa,children:"FloPay/Stripe-debug - not enabled"}):(0,c.jsx)("pre",{"data-testid":i,style:aa,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${V}`,` currency=${Fe}`,` amountInCents=${Po}`,` enabledPaymentMethods: ${JSON.stringify(O??[])}`,` enabledPaymentMethodsProvided=${Co}`,` hasEnabledMethods=${Xo}`,` expressMethods: ${JSON.stringify(Zo)}`,` walletExpressMethods: ${JSON.stringify(Jr)}`,` paymentElementMethods: ${JSON.stringify(So)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(Qo)}`,` hasStripeInstance=${!!Zt}`,` shouldRenderWallets=${Xr}`,` shouldRenderPaymentElement=${Io}`].join(`
40
- `)}):null,vs=Xe==="apm-expanding"||Xe==="apm-form"||Xe==="apm-collapsing",eo;Xe==="apm-expanding"?eo=ll:Xe==="apm-collapsing"&&(eo=cl);let ia=pn?Sl(Ka,pn):null;if(fe==="buttons"){let i=Xe==="buttons"||Xe==="expanding"||Xe==="apm-expanding",w=Xe==="expanding"||Xe==="card"||Xe==="collapsing",H=Ne===void 0?{boxSizing:"border-box",height:Aa,padding:"0 1rem"}:{padding:"0.9rem 1rem"},Ve;Xe==="expanding"||Xe==="apm-expanding"?Ve=bd:(Xe==="collapsing"||Xe==="apm-collapsing")&&(Ve=hd);let J;return Xe==="expanding"?J=ll:Xe==="collapsing"&&(J=cl),(0,c.jsxs)("form",{onSubmit:Ya,className:k,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(_i,{}),B&&(0,c.jsx)(Yn,{status:B,errorMessage:ce,authorized:hn}),(0,c.jsxs)("div",{style:{display:"grid"},children:[(0,c.jsxs)("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!i&&!Ve?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!i&&!Ve?Pd:{},...Ve?{animation:Ve,pointerEvents:"none"}:{}},children:[hs("flopay-direct-paypal-gate-debug"),bs("flopay-stripe-gate-debug"),wo&&De&&(0,c.jsxs)(c.Fragment,{children:[oe&&(0,c.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,c.jsx)(Oo,{sessionId:e,nonce:t,billingApiUrl:X,email:$.email,billingName:Y||void 0,onBuyerIdentityReady:W,clientId:De.clientId,environment:De.environment,currency:Fe.toUpperCase(),isSubscription:Ce,providerObjectType:ze,approvalPresentation:ta==="popup"?void 0:ta,onTokenizedBody:xn,onComplete:l,onErrorChange:Re,onDecline:u,onTechnicalFailure:Yr,onButtonClick:Q,runBeforeButtonClick:ar,isProcessing:Ue,onLoadStateChange:Wa,onInitializationStateChange:Ha,session:A,existingOrderId:oe?.orderId,debug:At},oe?.orderId??"fresh")]}),ko&&(0,c.jsx)($t.Elements,{stripe:Wr,options:ji,children:(0,c.jsx)(ml,{sessionId:e,nonce:t,email:$.email,billingName:Y||void 0,onBuyerIdentityReady:W,billingApiUrl:X,onTokenizedBody:xn,onErrorChange:Re,isProcessing:Ue,onButtonClick:Q,onDecline:u,onTechnicalFailure:Yr,runBeforeButtonClick:ar,onLoadStateChange:Ji,placeholderBorderRadius:Dr})}),Xr?(0,c.jsx)($t.Elements,{stripe:Zt,options:Vi,children:(0,c.jsx)(yl,{sessionId:e,nonce:t,email:$.email,billingName:Y||void 0,onBuyerIdentityReady:W,billingApiUrl:X,intentKind:ct>0?"payment":"setup",expressMethods:Jr,onTokenizedBody:xn,onErrorChange:Re,onButtonClick:Q,onDecline:u,onTechnicalFailure:Yr,runBeforeButtonClick:ar,onLoadStateChange:Zi,placeholderBorderRadius:Dr})}):null,!Xr&&rs?(0,c.jsx)("div",{style:{height:Aa,borderRadius:Dr,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,Io&&(0,c.jsx)(fl,{sessionId:e,nonce:t,email:$.email,billingName:[$.firstName,$.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:W,billingApiUrl:X,paymentElementMethods:Qo,stripeInstance:Zt,paymentElementBaseOptions:Ka,onTokenizedBody:xn,onErrorChange:Re,onButtonClick:Q,onDecline:u,runBeforeButtonClick:ar,onLoadStateChange:es,isProcessing:Ue,submitButtonColor:Lr,submitButtonBorderRadius:qt,submitButtonStyle:R.submitButton,onExpandApm:Fr,expandedApmMethod:pn,themeId:be,buttonAppearance:{backgroundColor:R.cardButton?.backgroundColor,borderColor:R.cardInputBorder,textColor:R.cardButton?.color,borderRadius:Dr}}),He&&(0,c.jsx)("button",{type:"button",onClick:async()=>{Ue||!(await ar("card")).proceed||(Q?.("card"),Br())},disabled:Ue,style:{width:"100%",...H,...R.cardButton,...Bi({themeBundle:Z,resolvedPrimaryColor:Lr,resolvedBorderRadius:qt,submitButtonStyle:R.submitButton,explicitPrimaryColor:Mn?.colorPrimary}),fontSize:R.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:Ue?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:Ue?.6:1},onMouseEnter:dt=>{!Ue&&(Z||Mn?.colorPrimary)&&(dt.currentTarget.style.backgroundColor=Xl)},onMouseLeave:dt=>{(Z||Mn?.colorPrimary)&&(dt.currentTarget.style.backgroundColor=Lr)},onMouseDown:dt=>{dt.currentTarget.style.transform="scale(0.985)"},onMouseUp:dt=>{dt.currentTarget.style.transform="scale(1)"},children:(0,c.jsx)(no,{content:Ne})}),ce&&Xe==="buttons"&&(0,c.jsx)(uo,{margin:"0.25rem 0",styleOverride:R.errorBanner,children:ce})]}),He&&w&&(0,c.jsx)("div",{style:{gridArea:"1 / 1",...J?{animation:J}:{},...Xe==="collapsing"?{pointerEvents:"none"}:{}},children:gs}),V&&vs&&pn&&ia&&Zt&&(0,c.jsx)("div",{style:{gridArea:"1 / 1",...eo?{animation:eo}:{},...Xe==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,c.jsxs)("div",{style:{backgroundColor:Xa,borderRadius:ni,...Ao,padding:ti},children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,c.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:Xt,style:{display:"inline-flex",alignItems:"center",gap:Za?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:R.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...R.backButton},"aria-label":"Back to payment methods",children:[(0,c.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...R.backButtonIcon},children:(0,c.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,c.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,c.jsx)(ro,{content:ue})]}),(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:R.titleFontSize??"1.05rem",color:Qa,paddingRight:80,...R.title},children:`Pay with ${(0,p.getStripeMethodDisplayName)(pn)}`})]}),(0,c.jsx)($t.Elements,{stripe:Zt,options:ia,children:(0,c.jsx)(Ai,{method:pn,sessionId:e,nonce:t,email:$.email,billingName:[$.firstName,$.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:W,billingApiUrl:X,onTokenizedBody:xn,onErrorChange:Re,onDecline:u,onCancel:Xt,runBeforeButtonClick:ar,onButtonClick:Q,isProcessing:Ue,submitButtonColor:Lr,submitButtonBorderRadius:qt,submitButtonStyle:R.submitButton,errorText:ce})},pn)]})})]})]})}return vs&&pn&&ia&&Zt&&V?(0,c.jsxs)("form",{onSubmit:Ya,className:k,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(_i,{}),B&&(0,c.jsx)(Yn,{status:B,errorMessage:ce,authorized:hn}),(0,c.jsx)("div",{style:{...eo?{animation:eo}:{},...Xe==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,c.jsxs)("div",{style:{backgroundColor:Xa,borderRadius:ni,...Ao,padding:ti},children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,c.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:Xt,style:{display:"inline-flex",alignItems:"center",gap:Za?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:R.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...R.backButton},"aria-label":"Back to payment methods",children:[(0,c.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...R.backButtonIcon},children:(0,c.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,c.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,c.jsx)(ro,{content:ue})]}),(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:R.titleFontSize??"1.05rem",color:Qa,paddingRight:80,...R.title},children:`Pay with ${(0,p.getStripeMethodDisplayName)(pn)}`})]}),(0,c.jsx)($t.Elements,{stripe:Zt,options:ia,children:(0,c.jsx)(Ai,{method:pn,sessionId:e,nonce:t,email:$.email,billingName:[$.firstName,$.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:W,billingApiUrl:X,onTokenizedBody:xn,onErrorChange:Re,onDecline:u,onCancel:Xt,runBeforeButtonClick:ar,onButtonClick:Q,isProcessing:Ue,submitButtonColor:Lr,submitButtonBorderRadius:qt,submitButtonStyle:R.submitButton,errorText:ce})},pn)]})})]}):(0,c.jsxs)("form",{onSubmit:Ya,className:k,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(_i,{}),B&&(0,c.jsx)(Yn,{status:B,errorMessage:ce,authorized:hn}),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[hs("flopay-direct-paypal-gate-debug-default"),bs("flopay-stripe-gate-debug-default"),wo&&De&&(0,c.jsxs)(c.Fragment,{children:[oe&&(0,c.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice-default",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,c.jsx)(Oo,{sessionId:e,nonce:t,billingApiUrl:X,email:$.email,billingName:Y||void 0,onBuyerIdentityReady:W,clientId:De.clientId,environment:De.environment,currency:Fe.toUpperCase(),isSubscription:Ce,providerObjectType:ze,approvalPresentation:ta==="popup"?void 0:ta,onTokenizedBody:xn,onComplete:l,onErrorChange:Re,onDecline:u,onTechnicalFailure:Yr,onButtonClick:Q,runBeforeButtonClick:ar,isProcessing:Ue,onLoadStateChange:Wa,onInitializationStateChange:Ha,session:A,existingOrderId:oe?.orderId,debug:At},oe?.orderId??"fresh")]}),ko&&(0,c.jsx)($t.Elements,{stripe:Wr,options:ji,children:(0,c.jsx)(ml,{sessionId:e,nonce:t,email:$.email,billingName:Y||void 0,onBuyerIdentityReady:W,billingApiUrl:X,onTokenizedBody:xn,onErrorChange:Re,isProcessing:Ue,onButtonClick:Q,onDecline:u,onTechnicalFailure:Yr,runBeforeButtonClick:ar,onLoadStateChange:Ji,placeholderBorderRadius:Dr})}),Xr&&(0,c.jsx)($t.Elements,{stripe:Zt,options:Vi,children:(0,c.jsx)(yl,{sessionId:e,nonce:t,email:$.email,billingName:Y||void 0,onBuyerIdentityReady:W,billingApiUrl:X,intentKind:ct>0?"payment":"setup",expressMethods:Jr,onTokenizedBody:xn,onErrorChange:Re,onButtonClick:Q,onDecline:u,onTechnicalFailure:Yr,runBeforeButtonClick:ar,onLoadStateChange:Zi,placeholderBorderRadius:Dr})}),Io&&(0,c.jsx)(fl,{sessionId:e,nonce:t,email:$.email,billingName:[$.firstName,$.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:X,paymentElementMethods:Qo,stripeInstance:Zt,paymentElementBaseOptions:Ka,onTokenizedBody:xn,onErrorChange:Re,onButtonClick:Q,onDecline:u,runBeforeButtonClick:ar,onLoadStateChange:es,isProcessing:Ue,submitButtonColor:Lr,submitButtonBorderRadius:qt,submitButtonStyle:R.submitButton,themeId:be,onExpandApm:Fr,expandedApmMethod:pn,buttonAppearance:{backgroundColor:R.cardButton?.backgroundColor,borderColor:R.cardInputBorder,textColor:R.cardButton?.color,borderRadius:Dr}})]}),He&&(jl||Vl||Kl)&&(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",margin:"0.5rem 0 0.75rem",color:"#999",fontSize:"0.85rem"},children:[(0,c.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}}),(0,c.jsx)("span",{children:"or pay with card"}),(0,c.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}})]}),He&&gs]})}var T=require("react/jsx-runtime"),vo=44,Ui="flopay_checkout_saved_payment_resume",La=new Map,Fa=new Map;function wl(e,t){t.settled&&t.consumers===0&&La.get(e)===t&&La.delete(e)}function Ad(e,t,n){let r=Fa.get(e);if(r&&(!r.sdkGeneratedIdempotencyKey||!t||r.sdkGeneratedIdempotencyKey===t))return r.attempt;let o=n(),a={attempt:o,sdkGeneratedIdempotencyKey:t};Fa.set(e,a);let l=()=>{Fa.get(e)===a&&Fa.delete(e)};return o.then(l,l),o}function Go(e){return new Promise(t=>setTimeout(t,e))}function Da(e,t,n){let r=fa({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:je.SDK_VERSION,enabled:t!==!1});return r.beginCheckout(n),r}function Yo(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function Fi(e,t,n,r,o,a){let l=Da(e,t,n);l.error({errorCode:r,stage:o,paymentMethodCategory:"unknown",...a,...o==="session_read"?{requestCategory:"session_read"}:{}}),Yo(l)}function kl(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 Il(e,t,n,r,o){let a=(0,je.classifyTelemetryFailure)(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:a.statusClass}),t instanceof je.FloPayError&&t.code==="session_auto_completed"?!1:t instanceof je.FloPayError&&t.type==="validation_error"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown"}),!1):a.statusClass==="4xx"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown",requestCategory:n,statusClass:"4xx"}),!1):(e.error({...a,stage:n,paymentMethodCategory:"unknown",requestCategory:n}),!0)}function zi(e){let t=e?.data.paypal?.publishableKey;if(t)return{clientId:t,environment:e?.data.paypal?.environment,providerObjectType:e?.data.paypal?.providerObjectType,approvalPresentation:e?.data.paypal?.approvalPresentation}}function Di(e){return!e||e.data.stripe?.publishableKey?!1:!!zi(e)?.clientId}var xd={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function Md(e){return new _r.FloPay(xd,{publishableKey:"provider_unavailable",...e})}async function Li(e,t){let{publishableKey:n,paypalPublishableKey:r}=bi(e);return{...await vi({publishableKey:n,paypalPublishableKey:r,...t}),publishableKey:n,paypalPublishableKey:r}}function qi(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Bd(){if(!qi())return null;try{let e=window.sessionStorage.getItem(Ui);return e?JSON.parse(e):null}catch{return null}}function Rl(e){if(qi())try{window.sessionStorage.setItem(Ui,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function Ni(){if(qi())try{window.sessionStorage.removeItem(Ui)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function Fd(){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 _l(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 Oi(e,t){return e?"custom_layout":t==="buttons"?"buttons_layout":"default_layout"}function Dd(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function El(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Ld(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 Na({sessionId:e,nonce:t,createSession:n,billingApiUrl:r,telemetry:o,appearance:a,locale:l,loading:d,error:u,onComplete:g,onError:y,onInstrument:b,onDecline:h,onCountryChange:k,onZipChange:F,showPayPal:N=!0,showStripe:ye=!0,enabledPaymentMethods:se,showApplePay:S=!0,showGooglePay:V=!0,debug:O=!1,layout:de,theme:Se,buttonsTheme:le,buttonsStyles:fe,cardButtonContent:be,cardBackButtonContent:pt,cardTitleContent:Ge,showSecurityFooter:ve,onButtonClick:Ne,onBeforeButtonClick:ue,enableAVS:we,cardFieldOrder:Ye,cardPreFormSlot:Q,avsLayout:ke,submitLabel:pe,className:nt,initialErrorMessage:rt=null,children:I,checkoutMode:j,confirmLabel:ge,renderConfirmButton:ee,onSessionCompleted:Ke}){let x=(0,je.resolveBillingApiUrl)(r),Ie=(0,C.useMemo)(()=>(0,je.resolveTheme)(Se),[Se]),mt=a??Ie?.appearance,Qe=n?"embedded_checkout":"standard_checkout",Pe=Oi(I,de),[z,ie]=(0,C.useState)(null),[Oe,ct]=(0,C.useState)(null),Fe=(0,C.useRef)(null),Je=(0,C.useRef)(null),De=(0,C.useRef)(0),[Ce,Ae]=(0,C.useState)(null),Wt=(0,C.useRef)(null),[te,At]=(0,C.useState)(null),gt=(0,C.useMemo)(()=>n?mo(n):"",[n]),D=n?`create:${gt}`:`session:${e??""}`,me=El(te),f=(0,C.useRef)(new Set),A=(0,C.useRef)(D),ze=(0,C.useRef)(D);$r(()=>{ze.current=D,A.current!==D&&(A.current=D,f.current.clear())},[D]);let _e=(0,C.useCallback)(B=>{if(ze.current===D){if(ci.has(B.name)){if(f.current.has(B.name))return;f.current.add(B.name)}lt(()=>b?.(B))}},[D,b]),wt=co(_e,D),st=(0,C.useRef)(!1),xt=(0,C.useCallback)(B=>{if(st.current)return;let P=B.gateway||!me?B:{...B,gateway:me};_e(P)},[_e,me]);(0,C.useEffect)(()=>{wt({class:"lifecycle",name:"checkout.mount"})},[wt]);let[X,Ht]=(0,C.useState)(e??""),It=e??X,mn=n?"":It,[ur,K]=(0,C.useState)(!0),[yn,wn]=(0,C.useState)(null),[cn,rn]=(0,C.useState)(0),[fn,Xn]=(0,C.useState)("full"),[dn,Gt]=(0,C.useState)(!1),[Le,We]=(0,C.useState)(rt),[on,yt]=(0,C.useState)(null),[$n,Mt]=(0,C.useState)(null),[Yt,bt]=(0,C.useState)(!1),[Vt,un]=(0,C.useState)(void 0),[Bt,Rt]=(0,C.useState)(""),[an,Dn]=(0,C.useState)(!1),[Ct,re]=(0,C.useState)(!1),[gn,hn]=(0,C.useState)(!1),Ft=(0,C.useRef)(null),Ot=(0,C.useRef)(0),Ln=(0,C.useRef)(void 0),[Vn,Zn]=(0,C.useState)("loading"),[Jt,He]=(0,C.useState)(0),zt=(0,C.useRef)(!1),xe=(0,C.useRef)(!1),L=(0,C.useRef)(!1),Me=(0,C.useRef)(null),M=(0,C.useMemo)(()=>({checkoutMode:j??fn,layout:Dd(I,de)}),[j,I,fn,de]),Dt=(0,C.useRef)(g);Dt.current=g;let bn=(0,C.useRef)(y);bn.current=y;let sn=(0,C.useRef)(h);sn.current=h;let Nn=(0,C.useCallback)((B,P)=>{Fe.current=B,ct(B),Wt.current=P,Ae(P)},[]),he=(0,C.useCallback)(()=>{let B=Je.current;B&&(Je.current=null,B.destroy())},[]);(0,C.useEffect)(()=>{en(Oe)?.setCheckoutContext(M),Ce&&Ce!==Oe&&en(Ce)?.setCheckoutContext(M)},[Oe,Ce,M]);let vn=(0,C.useRef)(Ke);vn.current=Ke;let xr=(0,C.useCallback)(B=>{Zn(B),!(B!=="exhausted"||L.current)&&(L.current=!0,bn.current?.(new je.FloPayError("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),Kr=(0,C.useCallback)(()=>{Zn("retrying"),He(B=>B+1)},[]);(0,C.useEffect)(()=>{Zn("loading"),He(0),L.current=!1},[It]),(0,C.useEffect)(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:je.SDK_VERSION,checkout_type:Qe,checkout_layout:Pe,billing_api_url:x})},[Pe,Qe,x]);let kn=(0,C.useMemo)(()=>n?mo(n,!0):"",[n]),Er=(0,C.useMemo)(()=>Bt===kn?Vt:void 0,[Vt,Bt,kn]),pr=(0,C.useMemo)(()=>n?ai(n,Er):void 0,[n,Er]),Qn=j??pr?.checkoutMode??"full",jt=(0,C.useMemo)(()=>pr?{...pr,checkoutMode:Qn}:void 0,[pr,Qn]);(0,C.useEffect)(()=>{un(void 0),Rt(kn),Ln.current=void 0,Ft.current=null,hn(!1)},[kn]),(0,C.useEffect)(()=>{We(rt)},[rt]);let In=(0,C.useCallback)((B,P,ne)=>{lt(()=>{sn.current?.(nn(B,P,ne))})},[]),Cr=(0,C.useCallback)(async(B,P)=>{We(null),Mt(null),bt(!1),yt("processing");let ne=P?.sessionId??B.id,U=El(B),Be=Fe.current??Wt.current,ut=en(Be),Ee=Be?null:Da(x,o,M),G={log:R=>{ut?ut.log(R):Ee?.log(R)},error:R=>{ut?ut.error(R):Ee?.error(R)},terminal:R=>{ut?ut.terminal(R):Ee?.terminal(R)},performance:R=>{ut?ut.performance(R):Ee?.performance(R)},now:()=>ut?.now()??Ee?.now()??0,elapsed:R=>ut?.elapsed(R)??Math.max(0,(Ee?.now()??R)-R)},oe=G.now(),q=!!(P?.initialAutoProcessingError||P?.initialAutoProcessingPending),v=!1,m,_=()=>{v||(v=!0,q=!0,m=G.now(),G.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),G.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},W=!1,ce=()=>{W||(W=!0,G.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),G.performance({stage:"processing",durationMs:G.elapsed(oe),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),m!==void 0&&G.performance({stage:"recovery",durationMs:G.elapsed(m),durationMode:"machine",paymentMethodCategory:"saved"}))};G.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),st.current=!0;try{G.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{st.current=!1}wt({class:"lifecycle",name:"payment.processing.started",provider:U}),q&&_();let Z;try{let R=js(P?.initialAutoProcessingError),ae;if(R)_(),R.type==="paypal_redirect_required"&&Me.current?.publishableKey&&Rl({sessionId:ne,publishableKey:Me.current.publishableKey,paypalPublishableKey:Me.current.paypalPublishableKey}),ae=await Ia(R,{flopay:Fe.current,paypalFlopay:Wt.current,attempt3DS:P?.attempt3DS,billingApiUrl:x,sessionId:ne,session:B,telemetry:!1}),R.type==="paypal_redirect_required"&&Ni();else if(P?.initialAutoProcessingPending){let Ue=(await new _r.PaymentAPI(x,{telemetry:!1}).waitForCheckoutSessionCompletion(P.initialAutoProcessingPending.sessionId,{initialDelayMs:P.initialAutoProcessingPending.retryAfterMs})).data.session;if(!ao(Ue))throw da(Ue);ae=Ur(Ue,ne)}else{if(P?.initialAutoProcessingError)throw Ar(P.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:P.initialAutoProcessingError.checkoutMethod});if(P?.fromCreateSession)return P?.fallbackToFull&&(Xn("full"),_l("full")),!1;{let ft=await go({billingApiUrl:x,sessionId:ne,session:B,telemetry:!1});ft.type==="success"?ae=ft.result:(_(),ft.type==="paypal_redirect_required"&&Me.current?.publishableKey&&Rl({sessionId:ne,publishableKey:Me.current.publishableKey,paypalPublishableKey:Me.current.paypalPublishableKey}),ae=await Ia(ft,{flopay:Fe.current,paypalFlopay:Wt.current,attempt3DS:P?.attempt3DS,billingApiUrl:x,sessionId:ne,session:B,telemetry:!1}),ft.type==="paypal_redirect_required"&&Ni())}}ne&&yo(ne),ce(),q&&(G.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),G.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),G.terminal({outcome:ae.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),bt(ae.status==="authorized"),yt("success"),await Go(600),Z=()=>Dt.current?.(ae)}catch(R){let ae=Vo(R),ft=ae.checkoutMethod??$o;We(ae.message),Mt(ae.message),bt(!1),P?.fallbackToFull&&(G.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),Xn("full"),_l("full")),ce();let Ut=ae.statusCode===void 0?void 0:(0,je.telemetryStatusClass)(ae.statusCode,"unknown"),Ue=Ut==="4xx"?{requestCategory:"process_payment",statusClass:Ut}:{},Te=Ut===void 0||Ut==="4xx";if(Te&&(ae.telemetryOutcome==="payment_declined"||!!(ae.declineCode||ae.code?.toLowerCase().includes("declin"))))G.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...Ue});else if(Te&&(ae.telemetryOutcome==="validation_rejected"||ae.type==="validation_error"))G.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...Ue});else{let qe=(0,je.classifyTelemetryFailure)(R,q?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),$e=ae.telemetryRequestCategory??"process_payment";st.current=!0;try{G.error({...qe,...ae.telemetryFailureCategory?{failureCategory:ae.telemetryFailureCategory}:{},stage:q?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:$e})}finally{st.current=!1}wt({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:$e,provider:U})}return lt(()=>bn.current?.(ae)),In(ft,ae,{code:ae.code,declineCode:ae.declineCode}),yt("error"),await Promise.allSettled([Go(400),P?.ensureProvidersReady?P.ensureProvidersReady():Promise.resolve()]),q&&(G.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),G.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{ce(),Ee&&Yo(Ee),yt(null),Mt(null)}return lt(Z),!0},[In,wt,x,o,M]);(0,C.useEffect)(()=>{if(typeof window>"u"||xe.current)return;let B=new URLSearchParams(window.location.search),P=B.get("payment_intent_client_secret");if(!P)return;let ne=Bd();ne&&(xe.current=!0,(async()=>{let U,Be=0;We(null),Mt(null),yt("processing"),Gt(!0);try{if(B.get("redirect_status")==="failed")throw Object.assign(new je.FloPayError("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:ut,paypalFlopay:Ee}=await vi({publishableKey:ne.publishableKey,paypalPublishableKey:ne.paypalPublishableKey,billingApiUrl:x,locale:l,telemetry:o});U=en(Ee??ut),U?.setCheckoutContext(M),Be=U?.now()??0,U?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),U?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let G=(Ee??ut)?.getRawProvider();if(!G)throw Object.assign(new je.FloPayError("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:oe,error:q}=await G.retrievePaymentIntent(P);if(q)throw Object.assign(new je.FloPayError(q.message??"Failed to retrieve PayPal payment status.","api_error",{code:q.code}),{checkoutMethod:"paypal"});let v=Es(oe?.status);if(!oe||v==="failed")throw Object.assign(new je.FloPayError("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let m=typeof oe.payment_method=="string"?oe.payment_method:oe.payment_method?.id,_=v;if(ne.sessionId){let Z=(await new _r.PaymentAPI(x,{telemetry:!1}).getUnifiedCheckoutSession(ne.sessionId)).data.session;if(Z&&Z.status!=="complete"){let R=await go({billingApiUrl:x,sessionId:ne.sessionId,session:Z,telemetry:!1,tokenizedData:{id:m??oe.id,type:"card",threeDSecureActionResultTokenId:oe.id,isPaypal:!0}});if(R.type!=="success")throw Object.assign(new je.FloPayError("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});_=R.result.status}}ne.sessionId&&yo(ne.sessionId),U?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),U?.performance({stage:"redirect_resume",durationMs:U.elapsed(Be),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),U?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),yt("success"),await Go(600),lt(()=>Dt.current?.({status:_,paymentIntentId:oe.id,paymentMethodId:m,checkoutMethod:"paypal"}))}catch(ut){let Ee=Vo(ut),G=Ee.checkoutMethod??"paypal",oe=!!(Ee.declineCode||Ee.code?.toLowerCase().includes("declin"));if(U)U.performance({stage:"redirect_resume",durationMs:U.elapsed(Be),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),oe?U.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):U.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(oe){let q=Da(x,o,M);q.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),Yo(q)}else Fi(x,o,M,"REDIRECT_RESUME_FAILED","redirect_resume");We(Ee.message),Mt(Ee.message),lt(()=>bn.current?.(Ee)),In(G,Ee,{code:Ee.code,declineCode:Ee.declineCode}),yt("error"),await Go(400)}finally{Ni(),Fd(),yt(null),Mt(null),Gt(!1)}})())},[In,l,x,o,M]);let On=(0,C.useRef)(null),Rn=(0,C.useMemo)(()=>jt?mo(jt):"",[jt]),er=(0,C.useRef)(jt);er.current=jt,(0,C.useEffect)(()=>{Ht(e??"")},[e]),(0,C.useEffect)(()=>{zt.current=!1,We(rt),Mt(null),bt(!1),yt(null)},[Rn,rt,e]);async function tr(B,P,ne){let U=Da(x,o,M),Be=new _r.PaymentAPI(x,{telemetry:!1}),ut=!1;try{let Ee=B.idempotencyKey===void 0?void 0:(0,je.resolveIdempotencyKey)(B.idempotencyKey),G=mi(P,ne),oe=yi(P,ne);G?.canonicalIdentity===ne&&oe&&oe.canonicalIdentity===void 0&&(Sa(P,ne,oe.idempotencyKey),oe={...oe,canonicalIdentity:ne});let q=Ee??(oe?.canonicalIdentity===ne?oe.idempotencyKey:void 0),v,m=!1;U.log({name:G?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let _=G?.sid??null,W=null,ce,Z,R=!1;if(_)try{W=await Be.getUnifiedCheckoutSession(_,G?.nonce),G&&G.canonicalIdentity===void 0&&(Us(W.data.session,B)?(Ca(P,ne,_,G.nonce??W.data.session?.clientSecret),oe&&oe.canonicalIdentity===void 0&&(Sa(P,ne,oe.idempotencyKey),q??(q=oe.idempotencyKey))):(Pa(P,ne),oe=null,q=Ee,_=null,W=null));let ft=W?.data.session?.status,Ut=W?.data.session,Ue=Ut?.clientSecret||G?.nonce;if(_&&Ut?.buyerIdentified===!1&&Ue&&(Z=oo(Be,_,Ue,B.account)),_&&W&&ft==="complete"){if(fi(_))return{sid:_,result:W};Pa(P,ne),_=null,W=null,m=!0}}catch{U.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),G?.canonicalIdentity===void 0?(Pa(P,ne),q=Ee):va(P,ne),_=null}if(!_){!Ee&&(m||!q)&&(q=(0,je.resolveIdempotencyKey)(),v=q),q&&Sa(P,ne,q);let ft=U.now(),Ut=0;U.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let Ue={...B,idempotencyKey:q,avsCheck:!!we,avsConfig:typeof we=="object"?we:void 0,checkoutType:"embedded_checkout",checkoutLayout:Oi(I,de)};Object.defineProperty(Ue,_r.SESSION_CREATE_TELEMETRY,{configurable:!1,enumerable:!1,value:{onAttempt:Y=>{Ut=Math.max(Ut,Y)}}});let Te=()=>{kl(U,"session_create",ft,Ut)},$=Y=>{Il(U,Y,"session_create",ft,Ut)&&wt({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if((0,je.isDetachedSessionEligible)(Ue)){let Y=await Be.createDetachedSession(Ue);Y.claimed.catch(()=>{}),W=Y.shell,_=Y.sessionId,Z=Y.claim;let qe=U.now();U.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),ce=Y.claimed.then($e=>{let _t=$e.data.session?.id??Y.sessionId;return _t&&Ca(P,ne,_t,$e.data.session?.clientSecret??Y.nonce),kl(U,"session_claim",qe),Te(),$e},$e=>{throw va(P,ne),Il(U,$e,"session_claim",qe,0)&&wt({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),$e}).finally(()=>Yo(U)),ce.catch(()=>{}),ut=!0,U.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),U.performance({stage:"session_shell",durationMs:U.now()-ft,durationMode:"machine",requestCategory:"session_create",attempt:Ut,statusClass:"2xx",paymentMethodCategory:"card"})}else W=await Be.createAndFetchSession(Ue),Te()}catch(Y){throw $(Y),Y}_=W.data.session?.id??_??"",_&&!ce&&Ca(P,ne,_,W.data.session?.clientSecret)}let ae=W?.data.session;return!Z&&_&&ae?.buyerIdentified===!1&&ae.clientSecret&&(Z=oo(Be,_,ae.clientSecret,B.account)),{sid:_??"",result:W,sdkGeneratedIdempotencyKey:v,...ce?{claimed:ce}:{},...Z?{claim:Z}:{},...R?{claimRequiresIdentity:!0}:{}}}finally{ut||Yo(U)}}let St=(0,C.useRef)(tr);$r(()=>{St.current=tr},[tr]);let Pn=(0,C.useCallback)(async(B,P)=>{let ne=er.current;if(!ne)throw new je.FloPayError("createSession is required to bootstrap checkout.","validation_error");let U=ai(ne,B),Be=mo(U),ut=zs(U),Ee=La.get(Be);if(!Ee){let q={canonicalIdentity:Be,promise:St.current(U,ut,Be),consumers:0,settled:!1};Ee=q,La.set(Be,q);let v=()=>{q.settled=!0,wl(Be,q)};q.promise.then(v,v)}Ee.consumers+=1;let G=!1,oe=()=>{G||(G=!0,Ee.consumers-=1,wl(Be,Ee))};P?.(oe);try{let q=await Ee.promise;On.current=Be,B&&(Rt(kn),un(ae=>Is(ae,B)));let{sid:v,result:m,claimed:_,claim:W,claimRequiresIdentity:ce}=q;if(Ln.current=W,hn(ce===!0),ie(m),m.data.session&&At(m.data.session),v&&Ht(v),_){Ot.current+=1;let ae=Ot.current;Ft.current=_,re(!0),_.then(ft=>{Ot.current===ae&&(Ft.current===_&&(Ft.current=null),ie(ft),ft.data.session&&At(ft.data.session),re(!1),hn(!1))},ft=>{Ot.current===ae&&(Ft.current===_&&(Ft.current=null),re(!1),hn(!1),wn(ft instanceof je.FloPayError?ft:new je.FloPayError(ft instanceof Error?ft.message:"Failed to create session","api_error")))})}else Ot.current+=1,Ft.current=null,re(!1),hn(!1);let{flopay:Z,paypalFlopay:R}=await Li(m,{billingApiUrl:x,locale:l,telemetry:o});return Nn(Z,R),K(!1),q}catch(q){throw On.current===Be&&(On.current=null),q}finally{P||oe()}},[kn,Nn,l,x,o]),jn=(0,C.useRef)(Cr);jn.current=Cr;let nr=(0,C.useRef)(Pn);nr.current=Pn;let _n=(0,C.useCallback)(async B=>{if(!Ld(B)||an)return{sessionId:X,session:te};Dn(!0);try{let P=await Pn(B);return{sessionId:P.sid,session:P.result.data.session??null}}finally{Dn(!1)}},[Pn,an,X,te]),Xe=(0,C.useCallback)(async B=>{let P=Ln.current;if(!P)return;let ne=Ot.current,U=await P(B);Ot.current===ne&&(ie(U),U.data.session&&At(U.data.session))},[]),tn=(0,C.useCallback)(async()=>{await Ft.current},[]),pn=(0,C.useCallback)(async()=>(await tn(),{proceed:!0}),[tn]);(0,C.useEffect)(()=>{let B=!1,P,ne=++De.current;he(),wn(null),rn(0);let U=()=>{B=!0,De.current===ne&&(De.current+=1,he())},Be=er.current;if(Rn&&Be)return Xn(Qn),K(!1),On.current===Rn?U:(At(Rs(Be,j)),(async()=>{let G=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),oe=Qn==="auto"&&!zt.current&&!G;oe&&(We(null),Mt(null),yt("processing"));try{let q=await nr.current(void 0,W=>{P=W}),v=q.result.data.session??null;Me.current=bi(q.result);let m=Di(q.result),_=fi(q.sid||v?.id);if(!B&&oe&&v&&!m&&!_){zt.current=!0,await Ad(Rn,q.sdkGeneratedIdempotencyKey,()=>jn.current(v,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:q.result.autoProcessingError,initialAutoProcessingPending:q.result.autoProcessingPending,autoProcessingAttempted:q.result.autoProcessingAttempted,sessionId:q.sid||v.id}));return}!B&&oe&&((m||_)&&(zt.current=!0),yt(null),Mt(null))}catch(q){if(B)return;let v=ca(q);if(oe&&v==="session_auto_completed"){zt.current=!0,yt("success"),await Go(600),B||(lt(()=>{Dt.current?.({status:"succeeded"})}),yt(null),Mt(null));return}oe&&(yt(null),Mt(null));let m=q instanceof je.FloPayError?q:new je.FloPayError(q instanceof Error?q.message:"Failed to create session","api_error");wn(m)}finally{P?.(),P=void 0}})(),()=>{U(),P?.()});K(!0);async function ut(){let G=!1,oe=null;try{let q=new _r.PaymentAPI(x,{telemetry:!1}),v=await q.getUnifiedCheckoutSession(It,t);if(oe=v,B)return;ie(v);let m=v.data.session??null;if(At(m),!m)throw new je.FloPayError("No session data returned","api_error");let _=m.checkoutMode;if(_==="setup")throw new je.FloPayError("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(m.status==="authorized"){K(!1),lt(()=>{Dt.current?.(Ur(m,It)),vn.current?.(m.successUrl??"")});return}if(m.status==="complete"){K(!1),lt(()=>{vn.current?.(m.successUrl??"")});return}if(m.status==="expired")throw la(m);G=!0;let W=j??_??"full";Xn(W),Ot.current+=1;let ce=m.clientSecret||t;Ln.current=m.buyerIdentified===!1&&ce?oo(q,It,ce,{...m.customer?.id?{userId:m.customer.id}:{}}):void 0,re(!1),hn(!1);let Z=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),R=Di(v);if(W==="auto"&&!zt.current&&!Z&&!R){zt.current=!0;let ae=Ee(v);try{if(await jn.current(m,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>ae,sessionId:It||m.id}),B)return;await ae,B||K(!1);return}catch{if(B)return;await ae,B||K(!1);return}}await Ee(v),B||K(!1)}catch(q){if(B)return;let v=ks(q,G);if(G&&wt({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),v){let{errorCode:_,stage:W,...ce}=v;Fi(x,o,M,_,W,ce)}if(v?.stage==="provider_load"&&(j??oe?.data.session?.checkoutMode??"full")==="full"&&ws(oe,N,ye)){let _=Md({billingApiUrl:x,locale:l,telemetry:o});Je.current=_,Nn(_,null),rn(1),K(!1);return}let m=q instanceof je.FloPayError&&v?.stage!=="provider_load"?q:Ss();m!==q&&lt(()=>bn.current?.(m)),wn(m),K(!1)}}async function Ee(G){let{flopay:oe,paypalFlopay:q,...v}=await Li(G,{billingApiUrl:x,locale:l,telemetry:o});Me.current={publishableKey:v.publishableKey,paypalPublishableKey:v.paypalPublishableKey},Nn(oe,q),rn(0)}return ut(),U},[j,Rn,Qn,mn,t,N,ye]);let mr=(0,C.useCallback)(async()=>{if(!z||cn!==1)return;let B=De.current;rn(2);try{let{flopay:P,paypalFlopay:ne}=await Li(z,{billingApiUrl:x,locale:l,telemetry:o});if(De.current!==B)return;he(),Nn(P,ne),rn(0)}catch(P){if(De.current!==B)return;let{errorCode:ne,stage:U,...Be}=ri(P);Fi(x,o,M,ne,U,Be)}},[he,Nn,l,cn,x,o,M,z]),Mr=(0,C.useCallback)(async()=>{if(!(dn||!te)){Gt(!0),We(null);try{await Cr(te,{attempt3DS:!0,fallbackToFull:!0,sessionId:It||te.id})}finally{Gt(!1)}}},[It,dn,Cr,te]),rr=zi(z),yr=Di(z),En=(0,C.useMemo)(()=>{if(!(!z||!te||!z.data.stripe?.publishableKey))return{billingApiUrl:x}},[z,te,x]),Tn=!!(n&&!I&&de==="buttons"&&ue&&Qn==="full"),Br=!!(It&&(te?.vault?.html||Or(te))),zn=(0,C.useMemo)(()=>({session:te,loading:ur,error:yn,checkoutMode:fn,inlineSessionDraft:jt,applyInlineSessionPatch:Tn?_n:void 0,inlineSessionPatchProcessing:an,claimPending:Ct,claimRequiresIdentity:gn,claimBuyerIdentity:Xe,waitForDataAttachment:tn}),[te,ur,yn,fn,jt,Tn,_n,an,Ct,gn,Xe,tn]),Fr=!!n&&de==="buttons"&&!yr&&!Br&&(!Oe||!En),Xt=on?(0,T.jsx)(Yn,{status:on,errorMessage:$n,authorized:Yt}):null;if(ur&&!Br){if(d)return(0,T.jsxs)(T.Fragment,{children:[d,Xt]});if(de==="buttons"){let B=Ie?.buttonsLayout?.cardButton?.borderRadius??Ie?.appearance.variables?.borderRadius??8,P=ne=>(0,T.jsx)("div",{style:{height:ne,borderRadius:B,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[N&&P(vo),ye&&(S||V)&&P(vo),ye&&P(vo),(0,T.jsx)("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),Xt]})}return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[(0,T.jsx)("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),(0,T.jsx)("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),Xt]})}return yn?u?(0,T.jsx)(ir.Provider,{value:zn,children:u(yn)}):(0,T.jsx)(ir.Provider,{value:zn,children:(0,T.jsx)("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:yn.message})}):Fr?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(ir.Provider,{value:zn,children:(0,T.jsx)(Od,{onButtonClick:Ne,showPayPal:N,showStripe:ye,showApplePay:S,showGooglePay:V,theme:Se,buttonsTheme:le,buttonsStyles:fe,cardButtonContent:be,cardBackButtonContent:pt,cardTitleContent:Ge})}),Xt]}):yr&&te&&rr?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(ir.Provider,{value:zn,children:(0,T.jsxs)("div",{className:nt,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[Le&&(0,T.jsx)(uo,{icon:!1,children:Le}),Vn==="retrying"&&(0,T.jsx)("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),Vn==="exhausted"&&(0,T.jsxs)("div",{role:"alert",children:[(0,T.jsx)("div",{children:"PayPal is temporarily unavailable. Please try again."}),(0,T.jsx)("button",{type:"button",onClick:Kr,children:"Retry PayPal"})]}),Vn!=="exhausted"&&(0,T.jsx)("div",{"aria-hidden":Vn==="retrying"?!0:void 0,style:Vn==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:(0,T.jsx)(Os,{sessionId:It,nonce:te.clientSecret||void 0,billingApiUrl:x,email:te.customer?.email||jt?.account?.email,billingName:[te.customer?.firstName,te.customer?.lastName].filter(Boolean).join(" ")||[jt?.account?.firstName,jt?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Xe,clientId:rr.clientId,environment:rr.environment,currency:(te.currency??"usd").toUpperCase(),isSubscription:te.mode==="subscription",providerObjectType:rr.providerObjectType,approvalPresentation:rr.approvalPresentation,onComplete:g,onErrorChange:We,onDecline:h,onButtonClick:Ne,runBeforeButtonClick:pn,onInitializationStateChange:xr,allowAutomaticRetry:Jt===0,session:te,telemetry:o,telemetryContext:M,onInstrument:xt,debug:O},`${D}:paypal-init-${Jt}`)})]})}),Xt]}):(!Oe||!En)&&!(Br&&fn==="full")?(0,T.jsx)(T.Fragment,{children:Xt}):fn==="confirm"?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(ir.Provider,{value:zn,children:(0,T.jsx)(Uo,{flopay:Oe,paypalFlopay:Ce,options:En??{billingApiUrl:x},onInstrument:xt,children:(0,T.jsxs)("div",{className:nt,children:[Le&&(0,T.jsx)("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:Le}),ee?ee({onConfirm:Mr,isProcessing:dn}):(0,T.jsx)("button",{type:"button",onClick:Mr,disabled:dn,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:dn?"not-allowed":"pointer",opacity:dn?.6:1},children:dn?"Processing...":ge??"Confirm Purchase"})]})},D)}),Xt]}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(ir.Provider,{value:zn,children:(0,T.jsxs)(Uo,{flopay:Oe,paypalFlopay:Ce,options:En??{billingApiUrl:x},onInstrument:xt,children:[cn===1&&(0,T.jsx)("button",{type:"button",onClick:mr,children:"Retry payment methods"}),I?(0,T.jsxs)(T.Fragment,{children:[Le&&(0,T.jsx)("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:Le}),(0,T.jsx)(Nd,{sessionId:It,nonce:te?.clientSecret||void 0,billingApiUrl:x,session:te,submitLabel:pe,children:I})]}):(0,T.jsx)(Ba,{sessionId:It,nonce:te?.clientSecret||void 0,telemetry:o,email:te?.customer?.email||jt?.account?.email,userId:te?.customer?.id||jt?.account?.userId,firstName:te?.customer?.firstName||jt?.account?.firstName,lastName:te?.customer?.lastName||jt?.account?.lastName,totalAmount:te?Math.round((0,je.buildCheckoutDisplayData)(te).total*100):0,currency:te?.currency?.toLowerCase()??"usd",onComplete:g,onError:y,onDecline:h,error:Le,onErrorChange:We,showPayPal:N,showStripe:ye,enabledPaymentMethods:cn?[]:se??z?.data.stripe?.enabledPaymentMethods??te?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:z?.data.stripe?.enabledPaymentMethodCountries,showApplePay:S,showGooglePay:V,layout:de,theme:Se,buttonsTheme:le,buttonsStyles:fe,appearance:mt,cardButtonContent:be,cardBackButtonContent:pt,cardTitleContent:Ge,onButtonClick:Ne,onBeforeButtonClick:ue,onBuyerIdentityReady:Xe,enableAVS:we,...Ye?{cardFieldOrder:Ye}:{},...Q?{cardPreFormSlot:Q}:{},avsLayout:ke,country:te?.customer?.country,city:te?.customer?.city,state:te?.customer?.state,onCountryChange:k,onZipChange:F,avsCheck:!!we,checkoutType:n?"embedded_checkout":"standard_checkout",checkoutLayout:Oi(I,de),className:nt,submitLabel:pe,directPaypal:zi(z),isSubscription:te?.mode==="subscription",session:te,dataAttachmentPending:Ct,dataAttachmentRequiresIdentity:gn,debug:O})]},D)}),Xt]})}function Nd({sessionId:e,nonce:t,billingApiUrl:n,session:r,submitLabel:o,children:a}){return(0,T.jsx)(T.Fragment,{children:C.default.Children.map(a,l=>{if(!C.default.isValidElement(l))return l;let d=l.props,u={};return d.sessionId||(u.sessionId=e),!d.nonce&&t&&(u.nonce=t),d.billingApiUrl||(u.billingApiUrl=n),d.submitLabel===void 0&&o!==void 0&&(u.submitLabel=o),r?.customer&&(d.email||(u.email=r.customer.email),d.userId||(u.userId=r.customer.id),d.firstName||(u.firstName=r.customer.firstName),d.lastName||(u.lastName=r.customer.lastName)),Object.keys(u).length===0?l:C.default.cloneElement(l,u)})})}function Od({onButtonClick:e,showPayPal:t,showStripe:n=!0,showApplePay:r,showGooglePay:o,theme:a,buttonsTheme:l,buttonsStyles:d,cardButtonContent:u,cardBackButtonContent:g,cardTitleContent:y}){let[b,h]=(0,C.useState)(!1),k=(0,C.useMemo)(()=>(0,je.resolveTheme)(a),[a]),F=(0,C.useMemo)(()=>{let S=k?.buttonsLayout??(0,je.resolveButtonsLayoutTheme)(l);return d?{...S,...d,cardButton:{...S.cardButton,...d.cardButton},cardFormContainer:{...S.cardFormContainer,...d.cardFormContainer},backButton:{...S.backButton,...d.backButton},backButtonIcon:{...S.backButtonIcon,...d.backButtonIcon},submitButton:{...S.submitButton,...d.submitButton},title:{...S.title,...d.title}}:S},[k,l,d]),N=k?.buttonsLayout?.cardButton?.borderRadius??k?.appearance.variables?.borderRadius??8,ye=S=>(0,T.jsx)("div",{style:{height:S,borderRadius:N,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),se=u===void 0?{boxSizing:"border-box",height:vo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(b){let S=F.cardInputBorder??"#e5e7eb",V=F.cardInputBackground??"white",O=to(g),de=to(y);return(0,T.jsxs)("div",{style:{backgroundColor:F.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...F.cardFormContainer},children:[(0,T.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,T.jsxs)("button",{type:"button",onClick:()=>h(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:O?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...F.backButton},children:[(0,T.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...F.backButtonIcon},children:(0,T.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,T.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,T.jsx)(ro,{content:g})]}),de?(0,T.jsx)("div",{style:{flex:1}}):(0,T.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...F.title},children:(0,T.jsx)(Mo,{content:y})})]}),(0,T.jsx)("div",{style:{backgroundColor:V,border:`1px solid ${S}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,T.jsxs)("div",{style:{display:"flex"},children:[(0,T.jsx)("div",{style:{flex:1,backgroundColor:V,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${S}`,borderLeft:`1px solid ${S}`,borderBottomLeftRadius:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,T.jsx)("div",{style:{flex:1,backgroundColor:V,borderTop:"none",borderRight:`1px solid ${S}`,borderBottom:`1px solid ${S}`,borderLeft:`1px solid ${S}`,borderBottomRightRadius:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),(0,T.jsx)("div",{style:{backgroundColor:V,border:`1px solid ${S}`,borderRadius:8,marginTop:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,T.jsx)("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...F.submitButton,opacity:.5}}),(0,T.jsx)("style",{children:`
38
+ `}),To&&wr&&(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:$e?-2:0},children:[(0,c.jsxs)("button",{type:"button",onClick:En,style:{display:"inline-flex",alignItems:"center",gap:ti?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:w.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...w.backButton},"aria-label":"Back to payment methods",children:[(0,c.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...w.backButtonIcon},children:(0,c.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,c.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,c.jsx)(io,{content:fe})]}),fs?(0,c.jsx)("div",{style:{flex:1}}):(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:w.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...w.title},children:(0,c.jsx)(Fo,{content:Re})})]}),!To&&!fs&&(0,c.jsx)("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:ni,order:$e?-3:0,...w.title},children:(0,c.jsx)(Fo,{content:Re})}),$e&&M&&(0,c.jsx)("div",{style:{order:-2,width:"100%"},children:M}),$e&&xe&&(0,c.jsxs)("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[(0,c.jsx)("div",{style:{backgroundColor:to,border:`1px solid ${Xn(ia)}`,borderRadius:jt,padding:"10px"},children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-buyer-email",name:"email",type:"email",autoComplete:"email","aria-label":"Email address",placeholder:"Email address",value:rn,onChange:i=>{ht("email"),Cn.current=i.target.value,kt(i.target.value)},onPointerDown:()=>ht("email"),onKeyDown:()=>ht("email"),onBlur:()=>{_n("email")&&Rn(!0),tt||Ka()},disabled:Ae,required:!0,"aria-invalid":ia||void 0,"aria-describedby":ia?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...ri}})}),ia&&(0,c.jsx)("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:xo,children:Ie.empty?"Email address is required":"Enter a valid email address"})]}),de&&(0,c.jsx)("div",{style:{order:$e?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let i=G,R=(te=!1)=>({backgroundColor:to,border:`1px solid ${Xn(te)}`,borderRadius:jt,marginTop:"0.5rem",padding:"10px"}),X=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...ri}),Ue=(0,p.getStateOptions)(i);return(0,c.jsxs)(c.Fragment,{children:[(0,p.isAVSFieldVisible)(de.address_line_1,i)&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{style:R(Ut("line1")),children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line1",name:"billing-address-line1",placeholder:"Street Address (e.g. 123 Main St)",autoComplete:"billing address-line1",value:mn,onChange:te=>{ht("line1"),It.current.addressLine1=!0,yn.current=te.target.value,In(te.target.value)},onPointerDown:()=>ht("line1"),onKeyDown:()=>ht("line1"),onBlur:()=>Yn("line1"),disabled:Ae,required:!0,"aria-invalid":Ut("line1")||void 0,"aria-describedby":Ut("line1")?"flopay-billing-address-line1-error":void 0,"data-testid":"flopay-address-line1",style:X()})}),Ut("line1")&&(0,c.jsx)("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:xo,children:"Street address is required"})]}),(0,p.isAVSFieldVisible)(de.address_line_2,i)&&(0,c.jsx)("div",{style:R(),children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line2",name:"billing-address-line2",placeholder:"Apt, Suite, Unit (optional)",autoComplete:"billing address-line2",value:Bn,onChange:te=>{It.current.addressLine2=!0,zt.current=te.target.value,Fn(te.target.value)},disabled:Ae,"data-testid":"flopay-address-line2",style:X()})}),((0,p.isAVSFieldVisible)(de.city,i)||(0,p.isAVSFieldVisible)(de.state,i))&&(0,c.jsxs)("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[(0,p.isAVSFieldVisible)(de.city,i)&&(0,c.jsx)("div",{style:{flex:1,backgroundColor:to,borderTop:`1px solid ${Xn(Ut("city"))}`,borderRight:`1px solid ${Xn(Ut("city"))}`,borderBottom:`1px solid ${Xn(Ut("city"))}`,borderLeft:`1px solid ${Xn(Ut("city"))}`,padding:"10px",borderTopLeftRadius:jt,borderBottomLeftRadius:jt,...(0,p.isAVSFieldVisible)(de.state,i)?{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0}:{borderRadius:jt}},children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-city",name:"billing-city",placeholder:"City",autoComplete:"billing address-level2",value:Xt,onChange:te=>{ht("city"),It.current.city=!0,xt.current=te.target.value,Ke(te.target.value)},onPointerDown:()=>ht("city"),onKeyDown:()=>ht("city"),onBlur:()=>Yn("city"),disabled:Ae,required:!0,"aria-invalid":Ut("city")||void 0,"aria-describedby":Ut("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:X()})}),(0,p.isAVSFieldVisible)(de.state,i)&&(0,c.jsx)("div",{style:{flex:1,backgroundColor:to,borderTop:`1px solid ${Xn(Ut("state"))}`,borderRight:`1px solid ${Xn(Ut("state"))}`,borderBottom:`1px solid ${Xn(Ut("state"))}`,borderLeft:`1px solid ${Xn(Ut("state"))}`,padding:"10px",borderTopRightRadius:jt,borderBottomRightRadius:jt,...(0,p.isAVSFieldVisible)(de.city,i)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${Xn(Ut("state")||Ut("city"))}`}:{borderRadius:jt}},children:Ue?(0,c.jsxs)("select",{id:"flopay-billing-state",name:"billing-state",value:Qe,onChange:te=>{ht("state"),It.current.state=!0,Pn.current=te.target.value,wt(te.target.value)},onPointerDown:()=>ht("state"),onKeyDown:()=>ht("state"),onBlur:()=>Yn("state"),disabled:Ae,autoComplete:"billing address-level1",required:!0,"aria-invalid":Ut("state")||void 0,"aria-describedby":Ut("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:{...X(),cursor:"pointer"},children:[(0,c.jsx)("option",{value:"",children:(0,p.getStateLabel)(i)}),Ue.map(te=>(0,c.jsx)("option",{value:te.code,children:te.name},te.code))]}):(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:(0,p.getStateLabel)(i),autoComplete:"billing address-level1",value:Qe,onChange:te=>{ht("state"),It.current.state=!0,Pn.current=te.target.value,wt(te.target.value)},onPointerDown:()=>ht("state"),onKeyDown:()=>ht("state"),onBlur:()=>Yn("state"),disabled:Ae,required:!0,"aria-invalid":Ut("state")||void 0,"aria-describedby":Ut("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:X()})})]}),Ut("city")&&(0,c.jsx)("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:xo,children:"City is required"}),Ut("state")&&(0,c.jsxs)("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:xo,children:[(0,p.getStateLabel)(i)," is required"]}),((0,p.isAVSFieldVisible)(de.country,i)||(0,p.isAVSFieldVisible)(de.postal_code,i))&&(0,c.jsxs)("div",{style:{display:"flex",flexDirection:V==="column"?"column":"row",gap:V==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[(0,p.isAVSFieldVisible)(de.country,i)&&(0,c.jsx)("div",{style:{flex:V==="row"?1:void 0,backgroundColor:to,borderTop:`1px solid ${Ao}`,borderRight:`1px solid ${Ao}`,borderBottom:`1px solid ${Ao}`,borderLeft:`1px solid ${Ao}`,padding:"10px",...V==="row"&&(0,p.isAVSFieldVisible)(de.postal_code,i)?{borderRadius:"0",borderTopLeftRadius:jt,borderBottomLeftRadius:jt,borderRight:"none"}:{borderRadius:jt}},children:(0,c.jsx)("select",{id:"flopay-billing-country",name:"billing-country",value:G,onChange:te=>{It.current.country=!0,Ot.current=te.target.value,Lt(te.target.value),ot?.(te.target.value),Pn.current="",wt("")},disabled:Ae,autoComplete:"billing country","data-testid":"flopay-country",style:{...X(),cursor:"pointer"},children:p.COUNTRY_OPTIONS.map(te=>(0,c.jsxs)("option",{value:te.code,children:[te.flag," ",te.name]},te.code))})}),(0,p.isAVSFieldVisible)(de.postal_code,i)&&(0,c.jsx)("div",{style:{flex:V==="row"?1:void 0,backgroundColor:to,border:`1px solid ${Zl}`,padding:"10px",...V==="row"&&(0,p.isAVSFieldVisible)(de.country,i)?{borderRadius:"0",borderTopRightRadius:jt,borderBottomRightRadius:jt}:{borderRadius:jt}},children:(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-postal-code",name:"billing-postal-code",placeholder:(0,p.getPostalCodeLabel)(G),autoComplete:"billing postal-code",value:vn,onChange:te=>{ht("zip"),It.current.zip=!0,At.current=te.target.value,pn(te.target.value),he?.(te.target.value)},onPointerDown:()=>ht("zip"),onKeyDown:()=>ht("zip"),onBlur:()=>{_n("zip")&&ar(!0)},disabled:Ae,required:sn.required,"aria-invalid":sa||void 0,"aria-describedby":sa?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:X()})})]}),sa&&(0,c.jsx)("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:xo,children:sn.empty?`${(0,p.getPostalCodeLabel)(i)} is required`:Td(i)})]})})()}),$e&&rc,I&&(0,c.jsx)(yo,{margin:"0.75rem 0",styleOverride:w.errorBanner,children:I})]}),la={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"},Ps=i=>ee?!k||!gr?(0,c.jsx)("pre",{"data-testid":i,style:la,children:"FloPay/DirectPayPal-debug - not enabled"}):(0,c.jsx)("pre",{"data-testid":i,style:la,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${k}`,` directPaypalConfigured=${gr}`,` inAppBrowserDetected=${String(ra)}`,` shouldRenderDirectPayPal=${Io}`,` shouldRenderStripePayPal=${Ro}`,` hasPaypalStripeInstance=${!!tn}`].join(`
39
+ `)}):null,Cs=i=>ee?!$||!vt?(0,c.jsx)("pre",{"data-testid":i,style:la,children:"FloPay/Stripe-debug - not enabled"}):(0,c.jsx)("pre",{"data-testid":i,style:la,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${$}`,` currency=${ze}`,` amountInCents=${Un}`,` enabledPaymentMethods: ${JSON.stringify(U??[])}`,` enabledPaymentMethodsProvided=${wo}`,` hasEnabledMethods=${ea}`,` expressMethods: ${JSON.stringify(ta)}`,` walletExpressMethods: ${JSON.stringify(Qr)}`,` paymentElementMethods: ${JSON.stringify(ko)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(na)}`,` hasStripeInstance=${!!vt}`,` shouldRenderWallets=${eo}`,` shouldRenderPaymentElement=${_o}`].join(`
40
+ `)}):null,Ss=et==="apm-expanding"||et==="apm-form"||et==="apm-collapsing",ro;et==="apm-expanding"?ro=ul:et==="apm-collapsing"&&(ro=pl);let ca=ln?Il(Ga,ln):null;if(pe==="buttons"){let i=et==="buttons"||et==="expanding"||et==="apm-expanding",R=et==="expanding"||et==="card"||et==="collapsing",X=Me===void 0?{boxSizing:"border-box",height:Ba,padding:"0 1rem"}:{padding:"0.9rem 1rem"},Ue;et==="expanding"||et==="apm-expanding"?Ue=wd:(et==="collapsing"||et==="apm-collapsing")&&(Ue=Sd);let te;return et==="expanding"?te=ul:et==="collapsing"&&(te=pl),(0,c.jsxs)("form",{onSubmit:Za,className:C,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(xi,{}),zn&&(0,c.jsx)(tr,{status:zn,errorMessage:I,authorized:jn}),(0,c.jsxs)("div",{style:{display:"grid"},children:[(0,c.jsxs)("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!i&&!Ue?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!i&&!Ue?Id:{},...Ue?{animation:Ue,pointerEvents:"none"}:{}},children:[Ps("flopay-direct-paypal-gate-debug"),Cs("flopay-stripe-gate-debug"),Io&&Be&&(0,c.jsxs)(c.Fragment,{children:[Y&&(0,c.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,c.jsx)(Uo,{sessionId:e,nonce:t,billingApiUrl:W,email:v.email,billingName:x||void 0,onBuyerIdentityReady:S,clientId:Be.clientId,environment:Be.environment,currency:ze.toUpperCase(),isSubscription:Ne,providerObjectType:q,approvalPresentation:oa==="popup"?void 0:oa,onTokenizedBody:Tn,onComplete:l,onErrorChange:Te,onDecline:u,onTechnicalFailure:Zr,onButtonClick:oe,runBeforeButtonClick:cr,isProcessing:Ae,onLoadStateChange:Ya,onInitializationStateChange:Ja,session:g,existingOrderId:Y?.orderId,debug:ee},Y?.orderId??"fresh")]}),Ro&&(0,c.jsx)(Kt.Elements,{stripe:tn,options:Hi,children:(0,c.jsx)(gl,{sessionId:e,nonce:t,email:v.email,billingName:x||void 0,onBuyerIdentityReady:S,billingApiUrl:W,onTokenizedBody:Tn,onErrorChange:Te,isProcessing:Ae,onButtonClick:oe,onDecline:u,onTechnicalFailure:Zr,runBeforeButtonClick:cr,onLoadStateChange:Qi,placeholderBorderRadius:Ur})}),eo?(0,c.jsx)(Kt.Elements,{stripe:vt,options:Wi,children:(0,c.jsx)(hl,{sessionId:e,nonce:t,email:v.email,billingName:x||void 0,onBuyerIdentityReady:S,billingApiUrl:W,intentKind:Oe>0?"payment":"setup",expressMethods:Qr,onTokenizedBody:Tn,onErrorChange:Te,onButtonClick:oe,onDecline:u,onTechnicalFailure:Zr,runBeforeButtonClick:cr,onLoadStateChange:ts,placeholderBorderRadius:Ur})}):null,!eo&&is?(0,c.jsx)("div",{style:{height:Ba,borderRadius:Ur,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,_o&&(0,c.jsx)(bl,{sessionId:e,nonce:t,email:v.email,billingName:[v.firstName,v.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:S,billingApiUrl:W,paymentElementMethods:na,stripeInstance:vt,paymentElementBaseOptions:Ga,onTokenizedBody:Tn,onErrorChange:Te,onButtonClick:oe,onDecline:u,runBeforeButtonClick:cr,onLoadStateChange:rs,isProcessing:Ae,submitButtonColor:qr,submitButtonBorderRadius:jt,submitButtonStyle:w.submitButton,onExpandApm:Br,expandedApmMethod:ln,themeId:ye,buttonAppearance:{backgroundColor:w.cardButton?.backgroundColor,borderColor:w.cardInputBorder,textColor:w.cardButton?.color,borderRadius:Ur}}),$e&&(0,c.jsx)("button",{type:"button",onClick:async()=>{Ae||!(await cr("card")).proceed||(oe?.("card"),Yr())},disabled:Ae,style:{width:"100%",...X,...w.cardButton,...Li({themeBundle:A,resolvedPrimaryColor:qr,resolvedBorderRadius:jt,submitButtonStyle:w.submitButton,explicitPrimaryColor:An?.colorPrimary}),fontSize:w.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:Ae?"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:Ae?.6:1},onMouseEnter:mt=>{!Ae&&(A||An?.colorPrimary)&&(mt.currentTarget.style.backgroundColor=tc)},onMouseLeave:mt=>{(A||An?.colorPrimary)&&(mt.currentTarget.style.backgroundColor=qr)},onMouseDown:mt=>{mt.currentTarget.style.transform="scale(0.985)"},onMouseUp:mt=>{mt.currentTarget.style.transform="scale(1)"},children:(0,c.jsx)(ao,{content:Me})}),I&&et==="buttons"&&(0,c.jsx)(yo,{margin:"0.25rem 0",styleOverride:w.errorBanner,children:I})]}),$e&&R&&(0,c.jsx)("div",{style:{gridArea:"1 / 1",...te?{animation:te}:{},...et==="collapsing"?{pointerEvents:"none"}:{}},children:vs}),$&&Ss&&ln&&ca&&vt&&(0,c.jsx)("div",{style:{gridArea:"1 / 1",...ro?{animation:ro}:{},...et==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,c.jsxs)("div",{style:{backgroundColor:ei,borderRadius:ai,...Mo,padding:oi},children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,c.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:Sn,style:{display:"inline-flex",alignItems:"center",gap:ti?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:w.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...w.backButton},"aria-label":"Back to payment methods",children:[(0,c.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...w.backButtonIcon},children:(0,c.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,c.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,c.jsx)(io,{content:fe})]}),(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:w.titleFontSize??"1.05rem",color:ni,paddingRight:80,...w.title},children:`Pay with ${(0,p.getStripeMethodDisplayName)(ln)}`})]}),(0,c.jsx)(Kt.Elements,{stripe:vt,options:ca,children:(0,c.jsx)(Fi,{method:ln,sessionId:e,nonce:t,email:v.email,billingName:[v.firstName,v.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:S,billingApiUrl:W,onTokenizedBody:Tn,onErrorChange:Te,onDecline:u,onCancel:Sn,runBeforeButtonClick:cr,onButtonClick:oe,isProcessing:Ae,submitButtonColor:qr,submitButtonBorderRadius:jt,submitButtonStyle:w.submitButton,errorText:I})},ln)]})})]})]})}return Ss&&ln&&ca&&vt&&$?(0,c.jsxs)("form",{onSubmit:Za,className:C,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(xi,{}),zn&&(0,c.jsx)(tr,{status:zn,errorMessage:I,authorized:jn}),(0,c.jsx)("div",{style:{...ro?{animation:ro}:{},...et==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,c.jsxs)("div",{style:{backgroundColor:ei,borderRadius:ai,...Mo,padding:oi},children:[(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,c.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:Sn,style:{display:"inline-flex",alignItems:"center",gap:ti?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:w.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...w.backButton},"aria-label":"Back to payment methods",children:[(0,c.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...w.backButtonIcon},children:(0,c.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,c.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,c.jsx)(io,{content:fe})]}),(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:w.titleFontSize??"1.05rem",color:ni,paddingRight:80,...w.title},children:`Pay with ${(0,p.getStripeMethodDisplayName)(ln)}`})]}),(0,c.jsx)(Kt.Elements,{stripe:vt,options:ca,children:(0,c.jsx)(Fi,{method:ln,sessionId:e,nonce:t,email:v.email,billingName:[v.firstName,v.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:S,billingApiUrl:W,onTokenizedBody:Tn,onErrorChange:Te,onDecline:u,onCancel:Sn,runBeforeButtonClick:cr,onButtonClick:oe,isProcessing:Ae,submitButtonColor:qr,submitButtonBorderRadius:jt,submitButtonStyle:w.submitButton,errorText:I})},ln)]})})]}):(0,c.jsxs)("form",{onSubmit:Za,className:C,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(xi,{}),zn&&(0,c.jsx)(tr,{status:zn,errorMessage:I,authorized:jn}),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[Ps("flopay-direct-paypal-gate-debug-default"),Cs("flopay-stripe-gate-debug-default"),Io&&Be&&(0,c.jsxs)(c.Fragment,{children:[Y&&(0,c.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice-default",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,c.jsx)(Uo,{sessionId:e,nonce:t,billingApiUrl:W,email:v.email,billingName:x||void 0,onBuyerIdentityReady:S,clientId:Be.clientId,environment:Be.environment,currency:ze.toUpperCase(),isSubscription:Ne,providerObjectType:q,approvalPresentation:oa==="popup"?void 0:oa,onTokenizedBody:Tn,onComplete:l,onErrorChange:Te,onDecline:u,onTechnicalFailure:Zr,onButtonClick:oe,runBeforeButtonClick:cr,isProcessing:Ae,onLoadStateChange:Ya,onInitializationStateChange:Ja,session:g,existingOrderId:Y?.orderId,debug:ee},Y?.orderId??"fresh")]}),Ro&&(0,c.jsx)(Kt.Elements,{stripe:tn,options:Hi,children:(0,c.jsx)(gl,{sessionId:e,nonce:t,email:v.email,billingName:x||void 0,onBuyerIdentityReady:S,billingApiUrl:W,onTokenizedBody:Tn,onErrorChange:Te,isProcessing:Ae,onButtonClick:oe,onDecline:u,onTechnicalFailure:Zr,runBeforeButtonClick:cr,onLoadStateChange:Qi,placeholderBorderRadius:Ur})}),eo&&(0,c.jsx)(Kt.Elements,{stripe:vt,options:Wi,children:(0,c.jsx)(hl,{sessionId:e,nonce:t,email:v.email,billingName:x||void 0,onBuyerIdentityReady:S,billingApiUrl:W,intentKind:Oe>0?"payment":"setup",expressMethods:Qr,onTokenizedBody:Tn,onErrorChange:Te,onButtonClick:oe,onDecline:u,onTechnicalFailure:Zr,runBeforeButtonClick:cr,onLoadStateChange:ts,placeholderBorderRadius:Ur})}),_o&&(0,c.jsx)(bl,{sessionId:e,nonce:t,email:v.email,billingName:[v.firstName,v.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:W,paymentElementMethods:na,stripeInstance:vt,paymentElementBaseOptions:Ga,onTokenizedBody:Tn,onErrorChange:Te,onButtonClick:oe,onDecline:u,runBeforeButtonClick:cr,onLoadStateChange:rs,isProcessing:Ae,submitButtonColor:qr,submitButtonBorderRadius:jt,submitButtonStyle:w.submitButton,themeId:ye,onExpandApm:Br,expandedApmMethod:ln,buttonAppearance:{backgroundColor:w.cardButton?.backgroundColor,borderColor:w.cardInputBorder,textColor:w.cardButton?.color,borderRadius:Ur}})]}),$e&&(Gl||Hl||Yl)&&(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",margin:"0.5rem 0 0.75rem",color:"#999",fontSize:"0.85rem"},children:[(0,c.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}}),(0,c.jsx)("span",{children:"or pay with card"}),(0,c.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}})]}),$e&&vs]})}var T=require("react/jsx-runtime"),So=44,Vi="flopay_checkout_saved_payment_resume",za=new Map,La=new Map;function Rl(e,t){t.settled&&t.consumers===0&&za.get(e)===t&&za.delete(e)}function Dd(e,t,n){let r=La.get(e);if(r&&(!r.sdkGeneratedIdempotencyKey||!t||r.sdkGeneratedIdempotencyKey===t))return r.attempt;let o=n(),a={attempt:o,sdkGeneratedIdempotencyKey:t};La.set(e,a);let l=()=>{La.get(e)===a&&La.delete(e)};return o.then(l,l),o}function Xo(e){return new Promise(t=>setTimeout(t,e))}function Oa(e,t,n){let r=ha({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:qe.SDK_VERSION,enabled:t!==!1});return r.beginCheckout(n),r}function Zo(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function Oi(e,t,n,r,o,a){let l=Oa(e,t,n);l.error({errorCode:r,stage:o,paymentMethodCategory:"unknown",...a,...o==="session_read"?{requestCategory:"session_read"}:{}}),Zo(l)}function _l(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 El(e,t,n,r,o){let a=(0,qe.classifyTelemetryFailure)(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:a.statusClass}),t instanceof qe.FloPayError&&t.code==="session_auto_completed"?!1:t instanceof qe.FloPayError&&t.type==="validation_error"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown"}),!1):a.statusClass==="4xx"?(e.terminal({outcome:"validation_rejected",stage:n,paymentMethodCategory:"unknown",requestCategory:n,statusClass:"4xx"}),!1):(e.error({...a,stage:n,paymentMethodCategory:"unknown",requestCategory:n}),!0)}function Ml(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 zi(e){return!e||e.data.stripe?.publishableKey?!1:!!Ml(e)?.clientId}var Nd={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function Ld(e){return new xr.FloPay(Nd,{publishableKey:"provider_unavailable",...e})}async function Ui(e,t){let{publishableKey:n,paypalPublishableKey:r}=Si(e);return{...await wi({publishableKey:n,paypalPublishableKey:r,...t}),publishableKey:n,paypalPublishableKey:r}}function ji(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Od(){if(!ji())return null;try{let e=window.sessionStorage.getItem(Vi);return e?JSON.parse(e):null}catch{return null}}function Tl(e){if(ji())try{window.sessionStorage.setItem(Vi,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function qi(){if(ji())try{window.sessionStorage.removeItem(Vi)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function zd(){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 Al(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 $i(e,t){return e?"custom_layout":t==="buttons"?"buttons_layout":"default_layout"}function Ud(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function xl(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function qd(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 Ua({sessionId:e,nonce:t,createSession:n,billingApiUrl:r,telemetry:o,appearance:a,locale:l,loading:d,error:u,onComplete:m,onError:h,onInstrument:b,onDecline:y,onCountryChange:C,onZipChange:_,showPayPal:ne=!0,showStripe:z=!0,enabledPaymentMethods:ue,showApplePay:k=!0,showGooglePay:$=!0,debug:U=!1,layout:se,theme:Se,buttonsTheme:Pe,buttonsStyles:pe,cardButtonContent:ye,cardBackButtonContent:yt,cardTitleContent:He,showSecurityFooter:we,onButtonClick:Me,onBeforeButtonClick:fe,enableAVS:Re,cardFieldOrder:Ge,cardPreFormSlot:oe,avsLayout:_e,submitLabel:ge,className:nt,initialErrorMessage:rt=null,initialPayPalOrderId:M,children:V,checkoutMode:ie,confirmLabel:ae,renderConfirmButton:Ye,onSessionCompleted:Ce}){let N=(0,qe.resolveBillingApiUrl)(r),ut=(0,P.useMemo)(()=>(0,qe.resolveTheme)(Se),[Se]),ot=a??ut?.appearance,he=n?"embedded_checkout":"standard_checkout",le=$i(V,se),[H,Le]=(0,P.useState)(null),[Oe,ze]=(0,P.useState)(null),je=(0,P.useRef)(null),Be=(0,P.useRef)(null),Ne=(0,P.useRef)(0),[ce,dn]=(0,P.useState)(null),Jt=(0,P.useRef)(null),[ee,at]=(0,P.useState)(null),Z=(0,P.useMemo)(()=>n?go(n):"",[n]),Q=n?`create:${Z}`:`session:${e??""}`,be=xl(ee),g=(0,P.useRef)(new Set),q=(0,P.useRef)(Q),Fe=(0,P.useRef)(Q);Kr(()=>{Fe.current=Q,q.current!==Q&&(q.current=Q,g.current.clear())},[Q]);let Je=(0,P.useCallback)(D=>{if(Fe.current===Q){if(pi.has(D.name)){if(g.current.has(D.name))return;g.current.add(D.name)}dt(()=>b?.(D))}},[Q,b]),De=mo(Je,Q),$t=(0,P.useRef)(!1),W=(0,P.useCallback)(D=>{if($t.current)return;let F=D.gateway||!be?D:{...D,gateway:be};Je(F)},[Je,be]);(0,P.useEffect)(()=>{De({class:"lifecycle",name:"checkout.mount"})},[De]);let[St,Tt]=(0,P.useState)(e??""),ft=e??St,un=n?"":ft,[G,Lt]=(0,P.useState)(!0),[vn,pn]=(0,P.useState)(null),[mn,In]=(0,P.useState)(0),[Bn,Fn]=(0,P.useState)("full"),[Xt,Ke]=(0,P.useState)(!1),[Qe,wt]=(0,P.useState)(rt),[rn,kt]=(0,P.useState)(null),[Vn,gt]=(0,P.useState)(null),[At,Ot]=(0,P.useState)(!1),[yn,zt]=(0,P.useState)(void 0),[xt,Pn]=(0,P.useState)(""),[Cn,It]=(0,P.useState)(!1),[de,on]=(0,P.useState)(!1),[jn,Wt]=(0,P.useState)(!1),Vt=(0,P.useRef)(null),an=(0,P.useRef)(0),rr=(0,P.useRef)(void 0),[Dn,Ht]=(0,P.useState)("loading"),[$e,fn]=(0,P.useState)(0),ve=(0,P.useRef)(!1),O=(0,P.useRef)(!1),Ve=(0,P.useRef)(!1),K=(0,P.useRef)(null),Rt=(0,P.useRef)(null),Mt=(0,P.useMemo)(()=>({checkoutMode:ie??Bn,layout:Ud(V,se)}),[ie,V,Bn,se]),Gt=(0,P.useRef)(m);Gt.current=m;let Kn=(0,P.useRef)(h);Kn.current=h;let Ee=(0,P.useRef)(y);Ee.current=y;let sn=(0,P.useCallback)(D=>Ra(K,async F=>{try{return await D(F)}catch(j){throw F.aborted?Ko(j):j}}),[]);(0,P.useEffect)(()=>()=>{K.current?.abort(),K.current=null},[]);let Wn=(0,P.useCallback)((D,F)=>{je.current=D,ze(D),Jt.current=F,dn(F)},[]),Sr=(0,P.useCallback)(()=>{let D=Be.current;D&&(Be.current=null,D.destroy())},[]);(0,P.useEffect)(()=>{en(Oe)?.setCheckoutContext(Mt),ce&&ce!==Oe&&en(ce)?.setCheckoutContext(Mt)},[Oe,ce,Mt]);let or=(0,P.useRef)(Ce);or.current=Ce;let Lr=(0,P.useCallback)(D=>{Ht(D),!(D!=="exhausted"||Ve.current)&&(Ve.current=!0,Kn.current?.(new qe.FloPayError("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),Or=(0,P.useCallback)(()=>{Ht("retrying"),fn(D=>D+1)},[]);(0,P.useEffect)(()=>{Ht("loading"),fn(0),Ve.current=!1},[ft]),(0,P.useEffect)(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:qe.SDK_VERSION,checkout_type:he,checkout_layout:le,billing_api_url:N})},[le,he,N]);let ar=(0,P.useMemo)(()=>n?go(n,!0):"",[n]),Mr=(0,P.useMemo)(()=>xt===ar?yn:void 0,[yn,xt,ar]),Rn=(0,P.useMemo)(()=>n?li(n,Mr):void 0,[n,Mr]),ir=ie??Rn?.checkoutMode??"full",Ft=(0,P.useMemo)(()=>Rn?{...Rn,checkoutMode:ir}:void 0,[Rn,ir]);(0,P.useEffect)(()=>{zt(void 0),Pn(ar),rr.current=void 0,Vt.current=null,Wt(!1)},[ar]),(0,P.useEffect)(()=>{wt(rt)},[rt]);let Nn=(0,P.useCallback)((D,F,j)=>{dt(()=>{Ee.current?.(nn(D,F,j))})},[]),Hn=(0,P.useCallback)(async(D,F)=>{wt(null),gt(null),Ot(!1),kt("processing");let j=F?.sessionId??D.id,Y=D.clientSecret||t,pt=xl(D),B=je.current??Jt.current,f=en(B),L=B?null:Oa(N,o,Mt),S={log:v=>{f?f.log(v):L?.log(v)},error:v=>{f?f.error(v):L?.error(v)},terminal:v=>{f?f.terminal(v):L?.terminal(v)},performance:v=>{f?f.performance(v):L?.performance(v)},now:()=>f?.now()??L?.now()??0,elapsed:v=>f?.elapsed(v)??Math.max(0,(L?.now()??v)-v)},I=S.now(),A=!!(F?.initialAutoProcessingError||F?.initialAutoProcessingPending),w=!1,J,Xe=()=>{w||(w=!0,A=!0,J=S.now(),S.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),S.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},Dt=!1,Ae=()=>{Dt||(Dt=!0,S.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),S.performance({stage:"processing",durationMs:S.elapsed(I),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),J!==void 0&&S.performance({stage:"recovery",durationMs:S.elapsed(J),durationMode:"machine",paymentMethodCategory:"saved"}))};S.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),$t.current=!0;try{S.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{$t.current=!1}De({class:"lifecycle",name:"payment.processing.started",provider:pt}),A&&Xe();let me;try{let v=Gs(F?.initialAutoProcessingError),x=F?.initialAutoProcessingError?.type==="3ds_required"&&!F.initialAutoProcessingError.threeDSecureToken&&F.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:F.initialAutoProcessingError.nextActionRedirectUrl}:null,re,ke=xe=>(Xe(),sn(Ie=>bo(xe,{billingApiUrl:N,sessionId:j,nonce:Y,session:D,signal:Ie})));if(x)re=await ke(x);else if(v)Xe(),v.type==="paypal_redirect_required"&&Rt.current?.publishableKey&&Tl({sessionId:j,publishableKey:Rt.current.publishableKey,paypalPublishableKey:Rt.current.paypalPublishableKey}),re=await sn(xe=>Ea(v,{flopay:je.current,paypalFlopay:Jt.current,attempt3DS:F?.attempt3DS,billingApiUrl:N,sessionId:j,session:D,telemetry:!1,signal:xe})),v.type==="paypal_redirect_required"&&qi();else if(F?.initialAutoProcessingPending){let xe=F.initialAutoProcessingPending,Ie=new xr.PaymentAPI(N,{telemetry:!1}),tt=await sn(Un=>Ie.waitForCheckoutSessionCompletion(xe.sessionId,{initialDelayMs:xe.retryAfterMs,nonce:Y,statusUrl:xe.statusUrl,signal:Un})),vt=tt.data.session,tn=tt.autoProcessingError?.type==="3ds_required"&&tt.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:tt.autoProcessingError.nextActionRedirectUrl}:null;if(tn)re=await ke(tn);else{if(!Nr(vt))throw lo(vt);re=Ir(vt,j)}}else{if(F?.initialAutoProcessingError)throw br(F.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:F.initialAutoProcessingError.checkoutMethod});if(F?.fromCreateSession)return F?.fallbackToFull&&(Fn("full"),Al("full")),!1;{let xe=await vo({billingApiUrl:N,sessionId:j,session:D,nonce:Y,telemetry:!1});xe.type==="success"?re=xe.result:xe.type==="next_action_required"?re=await ke(xe):(Xe(),xe.type==="paypal_redirect_required"&&Rt.current?.publishableKey&&Tl({sessionId:j,publishableKey:Rt.current.publishableKey,paypalPublishableKey:Rt.current.paypalPublishableKey}),re=await sn(Ie=>Ea(xe,{flopay:je.current,paypalFlopay:Jt.current,attempt3DS:F?.attempt3DS,billingApiUrl:N,sessionId:j,session:D,telemetry:!1,signal:Ie})),xe.type==="paypal_redirect_required"&&qi())}}j&&ho(j),Ae(),A&&(S.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),S.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),S.terminal({outcome:re.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),Ot(re.status==="authorized"),kt("success"),await Xo(600),me=()=>Gt.current?.(re)}catch(v){let x=Wo(v);if(x.code==="three_ds_aborted")return!1;let re=x.checkoutMethod??jo;wt(x.message),gt(x.message),Ot(!1),F?.fallbackToFull&&(S.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),Fn("full"),Al("full")),Ae();let ke=x.statusCode===void 0?void 0:(0,qe.telemetryStatusClass)(x.statusCode,"unknown"),xe=ke==="4xx"?{requestCategory:"process_payment",statusClass:ke}:{},Ie=ke===void 0||ke==="4xx";if(Ie&&(x.telemetryOutcome==="payment_declined"||!!(x.declineCode||x.code?.toLowerCase().includes("declin"))))S.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...xe});else if(Ie&&(x.telemetryOutcome==="validation_rejected"||x.type==="validation_error"))S.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...xe});else{let tn=(0,qe.classifyTelemetryFailure)(v,A?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),Un=x.telemetryRequestCategory??"process_payment";$t.current=!0;try{S.error({...tn,...x.telemetryFailureCategory?{failureCategory:x.telemetryFailureCategory}:{},stage:A?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:Un})}finally{$t.current=!1}De({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:Un,provider:pt})}return dt(()=>Kn.current?.(x)),Nn(re,x,{code:x.code,declineCode:x.declineCode}),kt("error"),await Promise.allSettled([Xo(400),F?.ensureProvidersReady?F.ensureProvidersReady():Promise.resolve()]),A&&(S.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),S.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{Ae(),L&&Zo(L),kt(null),gt(null)}return dt(me),!0},[Nn,De,t,N,sn,o,Mt]);(0,P.useEffect)(()=>{if(typeof window>"u"||O.current)return;let D=new URLSearchParams(window.location.search),F=D.get("payment_intent_client_secret");if(!F)return;let j=Od();j&&(O.current=!0,(async()=>{let Y,pt=0;wt(null),gt(null),kt("processing"),Ke(!0);try{if(D.get("redirect_status")==="failed")throw Object.assign(new qe.FloPayError("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:B,paypalFlopay:f}=await wi({publishableKey:j.publishableKey,paypalPublishableKey:j.paypalPublishableKey,billingApiUrl:N,locale:l,telemetry:o});Y=en(f??B),Y?.setCheckoutContext(Mt),pt=Y?.now()??0,Y?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),Y?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let L=(f??B)?.getRawProvider();if(!L)throw Object.assign(new qe.FloPayError("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:S,error:I}=await L.retrievePaymentIntent(F);if(I)throw Object.assign(new qe.FloPayError(I.message??"Failed to retrieve PayPal payment status.","api_error",{code:I.code}),{checkoutMethod:"paypal"});let A=xs(S?.status);if(!S||A==="failed")throw Object.assign(new qe.FloPayError("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let w=typeof S.payment_method=="string"?S.payment_method:S.payment_method?.id,J=A;if(j.sessionId){let Ae=(await new xr.PaymentAPI(N,{telemetry:!1}).getUnifiedCheckoutSession(j.sessionId)).data.session;if(Ae&&Ae.status!=="complete"){let me=await vo({billingApiUrl:N,sessionId:j.sessionId,session:Ae,telemetry:!1,tokenizedData:{id:w??S.id,type:"card",threeDSecureActionResultTokenId:S.id,isPaypal:!0}});if(me.type!=="success")throw Object.assign(new qe.FloPayError("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});J=me.result.status}}j.sessionId&&ho(j.sessionId),Y?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),Y?.performance({stage:"redirect_resume",durationMs:Y.elapsed(pt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),Y?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),kt("success"),await Xo(600),dt(()=>Gt.current?.({status:J,paymentIntentId:S.id,paymentMethodId:w,checkoutMethod:"paypal"}))}catch(B){let f=Wo(B),L=f.checkoutMethod??"paypal",S=!!(f.declineCode||f.code?.toLowerCase().includes("declin"));if(Y)Y.performance({stage:"redirect_resume",durationMs:Y.elapsed(pt),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),S?Y.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):Y.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(S){let I=Oa(N,o,Mt);I.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),Zo(I)}else Oi(N,o,Mt,"REDIRECT_RESUME_FAILED","redirect_resume");wt(f.message),gt(f.message),dt(()=>Kn.current?.(f)),Nn(L,f,{code:f.code,declineCode:f.declineCode}),kt("error"),await Xo(400)}finally{qi(),zd(),kt(null),gt(null),Ke(!1)}})())},[Nn,l,N,o,Mt]);let Gn=(0,P.useRef)(null),ht=(0,P.useMemo)(()=>Ft?go(Ft):"",[Ft]),_n=(0,P.useRef)(Ft);_n.current=Ft,(0,P.useEffect)(()=>{Tt(e??"")},[e]),(0,P.useEffect)(()=>{ve.current=!1,wt(rt),gt(null),Ot(!1),kt(null)},[ht,rt,e]);async function Yn(D,F,j){let Y=Oa(N,o,Mt),pt=new xr.PaymentAPI(N,{telemetry:!1}),B=!1;try{let f=D.idempotencyKey===void 0?void 0:(0,qe.resolveIdempotencyKey)(D.idempotencyKey),L=gi(F,j),S=hi(F,j);L?.canonicalIdentity===j&&S&&S.canonicalIdentity===void 0&&(ka(F,j,S.idempotencyKey),S={...S,canonicalIdentity:j});let I=f??(S?.canonicalIdentity===j?S.idempotencyKey:void 0),A,w=!1;Y.log({name:L?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let J=L?.sid??null,Xe=null,Dt,Ae,me=!1;if(J)try{Xe=await pt.getUnifiedCheckoutSession(J,L?.nonce),L&&L.canonicalIdentity===void 0&&(Vs(Xe.data.session,D)?(wa(F,j,J,L.nonce??Xe.data.session?.clientSecret),S&&S.canonicalIdentity===void 0&&(ka(F,j,S.idempotencyKey),I??(I=S.idempotencyKey))):(Sa(F,j),S=null,I=f,J=null,Xe=null));let x=Xe?.data.session?.status,re=Xe?.data.session,ke=re?.clientSecret||L?.nonce;if(J&&re?.buyerIdentified===!1&&ke&&(Ae=so(pt,J,ke,D.account)),J&&Xe&&x==="complete"){if(bi(J))return{sid:J,result:Xe};Sa(F,j),J=null,Xe=null,w=!0}}catch{Y.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),L?.canonicalIdentity===void 0?(Sa(F,j),I=f):Ca(F,j),J=null}if(!J){!f&&(w||!I)&&(I=(0,qe.resolveIdempotencyKey)(),A=I),I&&ka(F,j,I);let x=Y.now(),re=0;Y.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let ke={...D,idempotencyKey:I,avsCheck:!!Re,avsConfig:typeof Re=="object"?Re:void 0,checkoutType:"embedded_checkout",checkoutLayout:$i(V,se)};Object.defineProperty(ke,xr.SESSION_CREATE_TELEMETRY,{configurable:!1,enumerable:!1,value:{onAttempt:tt=>{re=Math.max(re,tt)}}});let xe=()=>{_l(Y,"session_create",x,re)},Ie=tt=>{El(Y,tt,"session_create",x,re)&&De({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if((0,qe.isDetachedSessionEligible)(ke)){let tt=await pt.createDetachedSession(ke);tt.claimed.catch(()=>{}),Xe=tt.shell,J=tt.sessionId,Ae=tt.claim;let vt=Y.now();Y.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),Dt=tt.claimed.then(tn=>{let Un=tn.data.session?.id??tt.sessionId;return Un&&wa(F,j,Un,tn.data.session?.clientSecret??tt.nonce),_l(Y,"session_claim",vt),xe(),tn},tn=>{throw Ca(F,j),El(Y,tn,"session_claim",vt,0)&&De({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),tn}).finally(()=>Zo(Y)),Dt.catch(()=>{}),B=!0,Y.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),Y.performance({stage:"session_shell",durationMs:Y.now()-x,durationMode:"machine",requestCategory:"session_create",attempt:re,statusClass:"2xx",paymentMethodCategory:"card"})}else Xe=await pt.createAndFetchSession(ke),xe()}catch(tt){throw Ie(tt),tt}J=Xe.data.session?.id??J??"",J&&!Dt&&wa(F,j,J,Xe.data.session?.clientSecret)}let v=Xe?.data.session;return!Ae&&J&&v?.buyerIdentified===!1&&v.clientSecret&&(Ae=so(pt,J,v.clientSecret,D.account)),{sid:J??"",result:Xe,sdkGeneratedIdempotencyKey:A,...Dt?{claimed:Dt}:{},...Ae?{claim:Ae}:{},...me?{claimRequiresIdentity:!0}:{}}}finally{B||Zo(Y)}}let sr=(0,P.useRef)(Yn);Kr(()=>{sr.current=Yn},[Yn]);let gn=(0,P.useCallback)(async(D,F)=>{let j=_n.current;if(!j)throw new qe.FloPayError("createSession is required to bootstrap checkout.","validation_error");let Y=li(j,D),pt=go(Y),B=$s(Y),f=za.get(pt);if(!f){let I={canonicalIdentity:pt,promise:sr.current(Y,B,pt),consumers:0,settled:!1};f=I,za.set(pt,I);let A=()=>{I.settled=!0,Rl(pt,I)};I.promise.then(A,A)}f.consumers+=1;let L=!1,S=()=>{L||(L=!0,f.consumers-=1,Rl(pt,f))};F?.(S);try{let I=await f.promise;Gn.current=pt,D&&(Pn(ar),zt(v=>Es(v,D)));let{sid:A,result:w,claimed:J,claim:Xe,claimRequiresIdentity:Dt}=I;if(rr.current=Xe,Wt(Dt===!0),Le(w),w.data.session&&at(w.data.session),A&&Tt(A),J){an.current+=1;let v=an.current;Vt.current=J,on(!0),J.then(x=>{an.current===v&&(Vt.current===J&&(Vt.current=null),Le(x),x.data.session&&at(x.data.session),on(!1),Wt(!1))},x=>{an.current===v&&(Vt.current===J&&(Vt.current=null),on(!1),Wt(!1),pn(x instanceof qe.FloPayError?x:new qe.FloPayError(x instanceof Error?x.message:"Failed to create session","api_error")))})}else an.current+=1,Vt.current=null,on(!1),Wt(!1);let{flopay:Ae,paypalFlopay:me}=await Ui(w,{billingApiUrl:N,locale:l,telemetry:o});return Wn(Ae,me),Lt(!1),I}catch(I){throw Gn.current===pt&&(Gn.current=null),I}finally{F||S()}},[ar,Wn,l,N,o]),et=(0,P.useRef)(Hn);et.current=Hn;let hn=(0,P.useRef)(gn);hn.current=gn;let ln=(0,P.useCallback)(async D=>{if(!qd(D)||Cn)return{sessionId:St,session:ee};It(!0);try{let F=await gn(D);return{sessionId:F.sid,session:F.result.data.session??null}}finally{It(!1)}},[gn,Cn,St,ee]),Ln=(0,P.useCallback)(async D=>{let F=rr.current;if(!F)return;let j=an.current,Y=await F(D);an.current===j&&(Le(Y),Y.data.session&&at(Y.data.session))},[]),wr=(0,P.useCallback)(async()=>{await Vt.current},[]),zr=(0,P.useCallback)(async()=>(await wr(),{proceed:!0}),[wr]);(0,P.useEffect)(()=>{let D=!1,F,j=++Ne.current;Sr(),pn(null),In(0);let Y=()=>{D=!0,Ne.current===j&&(Ne.current+=1,Sr())},pt=_n.current;if(ht&&pt)return Fn(ir),Lt(!1),Gn.current===ht?Y:(at(Ts(pt,ie)),(async()=>{let L=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),S=ir==="auto"&&!ve.current&&!L;S&&(wt(null),gt(null),kt("processing"));try{let I=await hn.current(void 0,Xe=>{F=Xe}),A=I.result.data.session??null;Rt.current=Si(I.result);let w=zi(I.result),J=bi(I.sid||A?.id);if(!D&&S&&A&&!w&&!J){ve.current=!0,await Dd(ht,I.sdkGeneratedIdempotencyKey,()=>et.current(A,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:I.result.autoProcessingError,initialAutoProcessingPending:I.result.autoProcessingPending,autoProcessingAttempted:I.result.autoProcessingAttempted,sessionId:I.sid||A.id}));return}!D&&S&&((w||J)&&(ve.current=!0),kt(null),gt(null))}catch(I){if(D)return;let A=pa(I);if(S&&A==="session_auto_completed"){ve.current=!0,kt("success"),await Xo(600),D||(dt(()=>{Gt.current?.({status:"succeeded"})}),kt(null),gt(null));return}S&&(kt(null),gt(null));let w=I instanceof qe.FloPayError?I:new qe.FloPayError(I instanceof Error?I.message:"Failed to create session","api_error");pn(w)}finally{F?.(),F=void 0}})(),()=>{Y(),F?.()});Lt(!0);async function B(){let L=!1,S=null;try{let I=new xr.PaymentAPI(N,{telemetry:!1}),A=await I.getUnifiedCheckoutSession(ft,t);if(S=A,D)return;Le(A);let w=A.data.session??null;if(at(w),!w)throw new qe.FloPayError("No session data returned","api_error");let J=w.checkoutMode;if(J==="setup")throw new qe.FloPayError("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(w.status==="authorized"){Lt(!1),dt(()=>{Gt.current?.(Ir(w,ft)),or.current?.(w.successUrl??"")});return}if(w.status==="complete"){Lt(!1),dt(()=>{or.current?.(w.successUrl??"")});return}if(w.status==="expired")throw ua(w);L=!0;let Xe=ie??J??"full";Fn(Xe),an.current+=1;let Dt=w.clientSecret||t;rr.current=w.buyerIdentified===!1&&Dt?so(I,ft,Dt,{...w.customer?.id?{userId:w.customer.id}:{}}):void 0,on(!1),Wt(!1);let Ae=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),me=zi(A);if(Xe==="auto"&&!ve.current&&!Ae&&!me){ve.current=!0;let v=f(A);try{if(await et.current(w,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>v,sessionId:ft||w.id}),D)return;await v,D||Lt(!1);return}catch{if(D)return;await v,D||Lt(!1);return}}await f(A),D||Lt(!1)}catch(I){if(D)return;let A=_s(I,L);if(L&&De({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),A){let{errorCode:J,stage:Xe,...Dt}=A;Oi(N,o,Mt,J,Xe,Dt)}if(A?.stage==="provider_load"&&(ie??S?.data.session?.checkoutMode??"full")==="full"&&Rs(S,ne,z)){let J=Ld({billingApiUrl:N,locale:l,telemetry:o});Be.current=J,Wn(J,null),In(1),Lt(!1);return}let w=I instanceof qe.FloPayError&&A?.stage!=="provider_load"?I:Is();w!==I&&dt(()=>Kn.current?.(w)),pn(w),Lt(!1)}}async function f(L){let{flopay:S,paypalFlopay:I,...A}=await Ui(L,{billingApiUrl:N,locale:l,telemetry:o});Rt.current={publishableKey:A.publishableKey,paypalPublishableKey:A.paypalPublishableKey},Wn(S,I),In(0)}return B(),Y},[ie,ht,ir,un,t,ne,z]);let kr=(0,P.useCallback)(async()=>{if(!H||mn!==1)return;let D=Ne.current;In(2);try{let{flopay:F,paypalFlopay:j}=await Ui(H,{billingApiUrl:N,locale:l,telemetry:o});if(Ne.current!==D)return;Sr(),Wn(F,j),In(0)}catch(F){if(Ne.current!==D)return;let{errorCode:j,stage:Y,...pt}=ii(F);Oi(N,o,Mt,j,Y,pt)}},[Sr,Wn,l,mn,N,o,Mt,H]),On=!!(ft&&(ee?.clientSecret||t)),bn=Xt||!On,Yr=(0,P.useCallback)(async()=>{if(!(Xt||!On||!ee)){Ke(!0),wt(null);try{await Hn(ee,{attempt3DS:!0,fallbackToFull:!0,sessionId:ft||ee.id})}finally{Ke(!1)}}},[ft,Xt,On,Hn,ee]),En=Ml(H,M),Br=zi(H),Sn=(0,P.useMemo)(()=>{if(!(!H||!ee||!H.data.stripe?.publishableKey))return{billingApiUrl:N}},[H,ee,N]),zn=!!(n&&!V&&se==="buttons"&&fe&&ir==="full"),st=!!(ft&&(ee?.vault?.html||Fr(ee))),Jn=(0,P.useMemo)(()=>({session:ee,loading:G,error:vn,checkoutMode:Bn,inlineSessionDraft:Ft,applyInlineSessionPatch:zn?ln:void 0,inlineSessionPatchProcessing:Cn,claimPending:de,claimRequiresIdentity:jn,claimBuyerIdentity:Ln,waitForDataAttachment:wr}),[ee,G,vn,Bn,Ft,zn,ln,Cn,de,jn,Ln,wr]),Zt=!!n&&se==="buttons"&&!Br&&!st&&(!Oe||!Sn),_t=rn?(0,T.jsx)(tr,{status:rn,errorMessage:Vn,authorized:At}):null;if(G&&!st){if(d)return(0,T.jsxs)(T.Fragment,{children:[d,_t]});if(se==="buttons"){let D=ut?.buttonsLayout?.cardButton?.borderRadius??ut?.appearance.variables?.borderRadius??8,F=j=>(0,T.jsx)("div",{style:{height:j,borderRadius:D,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[ne&&F(So),z&&(k||$)&&F(So),z&&F(So),(0,T.jsx)("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),_t]})}return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsxs)("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[(0,T.jsx)("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),(0,T.jsx)("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),_t]})}return vn?u?(0,T.jsx)(dr.Provider,{value:Jn,children:u(vn)}):(0,T.jsx)(dr.Provider,{value:Jn,children:(0,T.jsx)("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:vn.message})}):Zt?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(dr.Provider,{value:Jn,children:(0,T.jsx)(Vd,{onButtonClick:Me,showPayPal:ne,showStripe:z,showApplePay:k,showGooglePay:$,theme:Se,buttonsTheme:Pe,buttonsStyles:pe,cardButtonContent:ye,cardBackButtonContent:yt,cardTitleContent:He})}),_t]}):Br&&ee&&En?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(dr.Provider,{value:Jn,children:(0,T.jsxs)("div",{className:nt,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[Qe&&(0,T.jsx)(yo,{icon:!1,children:Qe}),Dn==="retrying"&&(0,T.jsx)("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),Dn==="exhausted"&&(0,T.jsxs)("div",{role:"alert",children:[(0,T.jsx)("div",{children:"PayPal is temporarily unavailable. Please try again."}),(0,T.jsx)("button",{type:"button",onClick:Or,children:"Retry PayPal"})]}),Dn!=="exhausted"&&(0,T.jsx)("div",{"aria-hidden":Dn==="retrying"?!0:void 0,style:Dn==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:(0,T.jsx)(qs,{sessionId:ft,nonce:ee.clientSecret||void 0,billingApiUrl:N,email:ee.customer?.email||Ft?.account?.email,billingName:[ee.customer?.firstName,ee.customer?.lastName].filter(Boolean).join(" ")||[Ft?.account?.firstName,Ft?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Ln,clientId:En.clientId,environment:En.environment,currency:(ee.currency??"usd").toUpperCase(),isSubscription:ee.mode==="subscription",providerObjectType:En.providerObjectType,approvalPresentation:En.approvalPresentation,existingOrderId:En.existingOrderId,onComplete:m,onErrorChange:wt,onDecline:y,onButtonClick:Me,runBeforeButtonClick:zr,onInitializationStateChange:Lr,allowAutomaticRetry:$e===0,session:ee,telemetry:o,telemetryContext:Mt,onInstrument:W,debug:U},`${Q}:paypal-init-${$e}`)})]})}),_t]}):Bn==="confirm"?(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(dr.Provider,{value:Jn,children:(0,T.jsx)($o,{flopay:Oe,paypalFlopay:ce,options:Sn??{billingApiUrl:N},onInstrument:W,children:(0,T.jsxs)("div",{className:nt,children:[Qe&&(0,T.jsx)("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:Qe}),Ye?Ye({onConfirm:Yr,isProcessing:bn}):(0,T.jsx)("button",{type:"button",onClick:Yr,disabled:bn,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:bn?"not-allowed":"pointer",opacity:bn?.6:1},children:Xt?"Processing...":ae??"Confirm Purchase"})]})},Q)}),_t]}):(!Oe||!Sn)&&!(st&&Bn==="full")?(0,T.jsx)(T.Fragment,{children:_t}):(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(dr.Provider,{value:Jn,children:(0,T.jsxs)($o,{flopay:Oe,paypalFlopay:ce,options:Sn??{billingApiUrl:N},onInstrument:W,children:[mn===1&&(0,T.jsx)("button",{type:"button",onClick:kr,children:"Retry payment methods"}),V?(0,T.jsxs)(T.Fragment,{children:[Qe&&(0,T.jsx)("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:Qe}),(0,T.jsx)($d,{sessionId:ft,nonce:ee?.clientSecret||void 0,billingApiUrl:N,session:ee,submitLabel:ge,children:V})]}):(0,T.jsx)(Na,{sessionId:ft,nonce:ee?.clientSecret||void 0,telemetry:o,email:ee?.customer?.email||Ft?.account?.email,userId:ee?.customer?.id||Ft?.account?.userId,firstName:ee?.customer?.firstName||Ft?.account?.firstName,lastName:ee?.customer?.lastName||Ft?.account?.lastName,totalAmount:ee?Math.round((0,qe.buildCheckoutDisplayData)(ee).total*100):0,currency:ee?.currency?.toLowerCase()??"usd",onComplete:m,onError:h,onDecline:y,error:Qe,onErrorChange:wt,showPayPal:ne,showStripe:z,enabledPaymentMethods:mn?[]:ue??H?.data.stripe?.enabledPaymentMethods??ee?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:H?.data.stripe?.enabledPaymentMethodCountries,showApplePay:k,showGooglePay:$,layout:se,theme:Se,buttonsTheme:Pe,buttonsStyles:pe,appearance:ot,cardButtonContent:ye,cardBackButtonContent:yt,cardTitleContent:He,onButtonClick:Me,onBeforeButtonClick:fe,onBuyerIdentityReady:Ln,enableAVS:Re,...Ge?{cardFieldOrder:Ge}:{},...oe?{cardPreFormSlot:oe}:{},avsLayout:_e,country:ee?.customer?.country,city:ee?.customer?.city,state:ee?.customer?.state,onCountryChange:C,onZipChange:_,avsCheck:!!Re,checkoutType:n?"embedded_checkout":"standard_checkout",checkoutLayout:$i(V,se),className:nt,submitLabel:ge,directPaypal:En,isSubscription:ee?.mode==="subscription",session:ee,dataAttachmentPending:de,dataAttachmentRequiresIdentity:jn,debug:U})]},Q)}),_t]})}function $d({sessionId:e,nonce:t,billingApiUrl:n,session:r,submitLabel:o,children:a}){return(0,T.jsx)(T.Fragment,{children:P.default.Children.map(a,l=>{if(!P.default.isValidElement(l))return l;let d=l.props,u={};return d.sessionId||(u.sessionId=e),!d.nonce&&t&&(u.nonce=t),d.billingApiUrl||(u.billingApiUrl=n),d.submitLabel===void 0&&o!==void 0&&(u.submitLabel=o),r?.customer&&(d.email||(u.email=r.customer.email),d.userId||(u.userId=r.customer.id),d.firstName||(u.firstName=r.customer.firstName),d.lastName||(u.lastName=r.customer.lastName)),Object.keys(u).length===0?l:P.default.cloneElement(l,u)})})}function Vd({onButtonClick:e,showPayPal:t,showStripe:n=!0,showApplePay:r,showGooglePay:o,theme:a,buttonsTheme:l,buttonsStyles:d,cardButtonContent:u,cardBackButtonContent:m,cardTitleContent:h}){let[b,y]=(0,P.useState)(!1),C=(0,P.useMemo)(()=>(0,qe.resolveTheme)(a),[a]),_=(0,P.useMemo)(()=>{let k=C?.buttonsLayout??(0,qe.resolveButtonsLayoutTheme)(l);return d?{...k,...d,cardButton:{...k.cardButton,...d.cardButton},cardFormContainer:{...k.cardFormContainer,...d.cardFormContainer},backButton:{...k.backButton,...d.backButton},backButtonIcon:{...k.backButtonIcon,...d.backButtonIcon},submitButton:{...k.submitButton,...d.submitButton},title:{...k.title,...d.title}}:k},[C,l,d]),ne=C?.buttonsLayout?.cardButton?.borderRadius??C?.appearance.variables?.borderRadius??8,z=k=>(0,T.jsx)("div",{style:{height:k,borderRadius:ne,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),ue=u===void 0?{boxSizing:"border-box",height:So,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(b){let k=_.cardInputBorder??"#e5e7eb",$=_.cardInputBackground??"white",U=oo(m),se=oo(h);return(0,T.jsxs)("div",{style:{backgroundColor:_.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",..._.cardFormContainer},children:[(0,T.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,T.jsxs)("button",{type:"button",onClick:()=>y(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:U?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",..._.backButton},children:[(0,T.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",..._.backButtonIcon},children:(0,T.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,T.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,T.jsx)(io,{content:m})]}),se?(0,T.jsx)("div",{style:{flex:1}}):(0,T.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,..._.title},children:(0,T.jsx)(Fo,{content:h})})]}),(0,T.jsx)("div",{style:{backgroundColor:$,border:`1px solid ${k}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,T.jsxs)("div",{style:{display:"flex"},children:[(0,T.jsx)("div",{style:{flex:1,backgroundColor:$,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${k}`,borderLeft:`1px solid ${k}`,borderBottomLeftRadius:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,T.jsx)("div",{style:{flex:1,backgroundColor:$,borderTop:"none",borderRight:`1px solid ${k}`,borderBottom:`1px solid ${k}`,borderLeft:`1px solid ${k}`,borderBottomRightRadius:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),(0,T.jsx)("div",{style:{backgroundColor:$,border:`1px solid ${k}`,borderRadius:8,marginTop:8,padding:12,height:45},children:(0,T.jsx)("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,T.jsx)("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",..._.submitButton,opacity:.5}}),(0,T.jsx)("style",{children:`
41
41
  @keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
42
42
  @keyframes flopay-interim-expand {
43
43
  0% { opacity: 0; max-height: 0; transform: translateY(-12px); }
44
44
  40% { opacity: 1; }
45
45
  100% { opacity: 1; max-height: 600px; transform: translateY(0); }
46
46
  }
47
- `})]})}return(0,T.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&ye(vo),n&&(r||o)&&ye(vo),n&&(0,T.jsx)("button",{type:"button",onClick:()=>{e?.("card"),h(!0)},style:{width:"100%",...se,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:F.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,...F.cardButton},onMouseDown:S=>{S.currentTarget.style.transform="scale(0.985)"},onMouseUp:S=>{S.currentTarget.style.transform="scale(1)"},children:(0,T.jsx)(no,{content:u})}),(0,T.jsx)("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}var dr=require("react/jsx-runtime"),zd=44;function Tl(e){return new Promise(t=>setTimeout(t,e))}function Ud(e,t){return e instanceof Jn.FloPayError?e:new Jn.FloPayError(e instanceof Error?e.message:t,"api_error")}function qd(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function $d(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 Al({sessionId:e,nonce:t,createSession:n,paymentMethodId:r,checkoutMethod:o,clientId:a,products:l,items:d,subscriptions:u,account:g,successUrl:y,cancelUrl:b,couponCodes:h,tagsData:k,utmMetadata:F,billingApiUrl:N,locale:ye,theme:se,appearance:S,buttonsTheme:V,buttonsStyles:O,onSuccess:de,onError:Se,onDecline:le,children:fe,disabled:be=!1,type:pt="button",style:Ge,...ve}){let Ne=(0,tt.useMemo)(()=>(0,Jn.resolveBillingApiUrl)(N),[N]),ue=(0,tt.useMemo)(()=>$d({createSession:n,clientId:a,products:l,items:d,subscriptions:u,account:g,successUrl:y,cancelUrl:b,couponCodes:h,tagsData:k,utmMetadata:F}),[g,b,a,h,n,l,d,u,y,k,F]),[we,Ye]=(0,tt.useState)(!1),[Q,ke]=(0,tt.useState)(null),[pe,nt]=(0,tt.useState)(null),[rt,I]=(0,tt.useState)(!1),[j,ge]=(0,tt.useState)(null),ee=(0,tt.useRef)(!0),Ke=(0,tt.useRef)(null),x=(0,tt.useRef)(j),Ie=(0,tt.useRef)(de),mt=(0,tt.useRef)(Se),Qe=(0,tt.useRef)(le);(0,tt.useEffect)(()=>{x.current=j},[j]),(0,tt.useEffect)(()=>{Ie.current=de},[de]),(0,tt.useEffect)(()=>{mt.current=Se},[Se]),(0,tt.useEffect)(()=>{Qe.current=le},[le]),(0,tt.useEffect)(()=>(ee.current=!0,()=>{ee.current=!1,Ke.current?.abort()}),[]),(0,tt.useEffect)(()=>{if(typeof window>"u")return;let f=A=>{A.key==="Escape"&&ge(null)};return window.addEventListener("keydown",f),()=>{window.removeEventListener("keydown",f)}},[]);let Pe=(0,tt.useCallback)((f,A=$o)=>{Qe.current?.(nn(A,f,{code:f.code,declineCode:f.declineCode}))},[]),z=(0,tt.useCallback)(async f=>{ee.current&&(nt(null),I(f.result.status==="authorized"),ke("success"),await Tl(600),ee.current&&lt(()=>Ie.current?.(f)))},[]),ie=(0,tt.useCallback)(async(f,A)=>{ee.current&&(mt.current?.(f),A?.emitDecline&&Pe(f,A.method),nt(f.message),I(!1),ke("error"),await Tl(400))},[Pe]),Oe=(0,tt.useCallback)(async(f,A,ze)=>{let _e=f.data.session??null;if(!_e)throw new Jn.FloPayError("No session data returned","api_error");let wt=_e.clientSecret||t;if(ao(_e)){await z({result:Ur(_e,A),session:_e,sessionId:_e.id||A,autoCompleted:!1});return}if(_e.status==="expired")throw la(_e);try{if(f.autoProcessingPending){let Ht=(await new Oa.PaymentAPI(Ne).waitForCheckoutSessionCompletion(f.autoProcessingPending.sessionId,{initialDelayMs:f.autoProcessingPending.retryAfterMs})).data.session;if(!ao(Ht))throw da(Ht);await z({result:Ur(Ht,A),session:Ht,sessionId:Ht.id||A,autoCompleted:!1});return}if(f.autoProcessingError){if(f.autoProcessingError.type==="3ds_required"&&f.autoProcessingError.nextActionRedirectUrl&&A&&wt){let xt=new AbortController;Ke.current=xt;let X;try{X=await Ks({billingApiUrl:Ne,sessionId:A,nonce:wt,nextActionRedirectUrl:f.autoProcessingError.nextActionRedirectUrl,signal:xt.signal})}finally{Ke.current===xt&&(Ke.current=null)}if(X.status==="declined")throw Ar({type:X.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:X.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:f.autoProcessingError.checkoutMethod});let mn=(await new Oa.PaymentAPI(Ne).waitForCheckoutSessionCompletion(A,{initialDelayMs:0,nonce:wt})).data.session;if(!ao(mn))throw Ar({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:f.autoProcessingError.checkoutMethod});await z({result:Ur(mn,A),session:mn,sessionId:mn.id||A,autoCompleted:!1});return}throw Ar(f.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:f.autoProcessingError.checkoutMethod})}if(ze?.fromCreateSession&&f.autoProcessingAttempted===!0)throw Ar({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let st=await go({billingApiUrl:Ne,sessionId:A??_e.id,session:_e,nonce:wt});if(st.type!=="success")throw Ar({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await z({result:st.result,session:_e,sessionId:_e.id||A,autoCompleted:!1})}catch(st){let xt=Vo(st),X=_e.id||A;await ie(xt,{emitDecline:!0,method:xt.checkoutMethod??$o}),qd(xt,X)&&X&&ee.current&&ge({sessionId:X,errorMessage:xt.message,nonce:wt||void 0})}},[t,Ne,ie,z]),ct=(0,tt.useCallback)(async f=>{if(ve.onClick?.(f),!(f.defaultPrevented||be||we)){if(ge(null),e&&ue){let A=new Jn.FloPayError("Provide either sessionId or create-session props, not both.","validation_error");await ie(A),ee.current&&(ke(null),nt(null));return}if(!e&&!ue){let A=new Jn.FloPayError("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await ie(A),ee.current&&(ke(null),nt(null));return}Ye(!0),nt(null),I(!1),ke("processing");try{let A=new Oa.PaymentAPI(Ne);if(e){let ze=await A.getUnifiedCheckoutSession(e,t);await Oe(ze,e);return}try{let ze=await A.createAndFetchSession({...ue});await Oe(ze,ze.data.session?.id??null,{fromCreateSession:!0})}catch(ze){if(ca(ze)==="session_auto_completed"){await z({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw ze}}catch(A){await ie(Ud(A,"Automatic payment failed. Please try again."))}finally{ee.current&&(ke(null),nt(null),Ye(!1))}}},[ve.onClick,ue,be,we,t,Oe,Ne,e,ie,z]),Fe=(0,tt.useCallback)(f=>{let A=x.current;ge(null),Ie.current?.({result:f,session:null,sessionId:A?.sessionId??null,autoCompleted:!1})},[]),Je=(0,tt.useCallback)(f=>{mt.current?.(f)},[]),De=(0,tt.useCallback)(f=>{Qe.current?.(f)},[]),Ce=(0,tt.useMemo)(()=>(0,Jn.resolveTheme)(se),[se]),Ae=(0,tt.useMemo)(()=>{let f=Ce?.buttonsLayout??(0,Jn.resolveButtonsLayoutTheme)(V);return O?{...f,...O,cardButton:{...f.cardButton,...O.cardButton}}:f},[Ce,V,O]),Wt=(0,tt.useMemo)(()=>{let f=Ce?.appearance;return S?f?{...f,...S,variables:{...f.variables,...S.variables}}:S:f},[S,Ce]),te=Wt?.variables,At=te?.colorPrimary??"#4A49FF",gt=te?.colorPrimaryHover??bo(At,.12),D=te?.borderRadius??"8px";return(0,dr.jsxs)(dr.Fragment,{children:[(0,dr.jsx)("button",{...ve,type:pt,onClick:ct,disabled:be||we,"aria-busy":we,style:{width:"100%",...fe===void 0?{boxSizing:"border-box",height:zd,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...Ae.cardButton,...Bi({themeBundle:Ce,resolvedPrimaryColor:At,resolvedBorderRadius:D,submitButtonStyle:Ae.submitButton,explicitPrimaryColor:te?.colorPrimary}),fontSize:Ae.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:be||we?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:be||we?.6:1,...Ge},onMouseEnter:f=>{ve.onMouseEnter?.(f),!f.defaultPrevented&&!be&&!we&&(Ce||te?.colorPrimary)&&(f.currentTarget.style.backgroundColor=gt)},onMouseLeave:f=>{ve.onMouseLeave?.(f),!f.defaultPrevented&&(Ce||te?.colorPrimary)&&(f.currentTarget.style.backgroundColor=At)},onMouseDown:f=>{ve.onMouseDown?.(f),f.defaultPrevented||(f.currentTarget.style.transform="scale(0.985)")},onMouseUp:f=>{ve.onMouseUp?.(f),f.defaultPrevented||(f.currentTarget.style.transform="scale(1)")},children:(0,dr.jsx)(no,{content:fe})}),Q&&(0,dr.jsx)(Yn,{status:Q,errorMessage:pe,authorized:rt}),j&&(0,dr.jsx)("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:f=>{f.target===f.currentTarget&&ge(null)},style:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.45)",display:"flex",alignItems:"center",justifyContent:"center",padding:"1.5rem",zIndex:1100},children:(0,dr.jsx)("div",{style:{width:"100%",maxWidth:520,maxHeight:"90vh",overflowY:"auto",background:"white",borderRadius:20,padding:"1.5rem",boxShadow:"0 24px 80px rgba(15, 23, 42, 0.28)",display:"flex",flexDirection:"column",gap:"1rem"},children:(0,dr.jsx)(Na,{sessionId:j.sessionId,nonce:j.nonce,checkoutMode:"full",billingApiUrl:Ne,locale:ye,theme:se,...Wt?{appearance:Wt}:{},buttonsTheme:V,buttonsStyles:O,initialErrorMessage:j.errorMessage,cardTitleContent:null,onComplete:Fe,onError:Je,onDecline:De})})})]})}var za=require("@flopay/js/card-setup"),qn=require("@flopay/shared"),Pt=require("react");var xl={light:{success:"#166534",error:"#991B1B"},dark:{success:"#4ADE80",error:"#FCA5A5"}};function Ml(e){let t=e.appearance.variables??{},n=e.buttonsLayout.cardFormContainer??{},r=e.appearance.theme==="night",o=r?xl.dark:xl.light,a=t.colorText??(r?"#F1F5F9":"#262833"),l=e.appearance.rules?.[".Label"];return{panel:{...n.background===void 0?{}:{background:n.background},...n.backgroundColor===void 0?{}:{backgroundColor:n.backgroundColor},...n.border===void 0?{}:{border:n.border},...n.borderRadius===void 0?{}:{borderRadius:n.borderRadius},...n.boxShadow===void 0?{}:{boxShadow:n.boxShadow},color:a,...t.fontFamily?{fontFamily:t.fontFamily}:{}},spinnerTrackColor:e.buttonsLayout.cardInputBorder??(r?"#374151":"#e5e7eb"),spinnerAccentColor:t.colorPrimary??"#4A49FF",labelColors:{processing:a,success:o.success,error:o.error},noteColor:l?.color??a}}var Pr=require("react/jsx-runtime"),Jo=class extends qn.FloPayError{constructor(t,n,r){super(t,n,r),this.name="FloPayCardSetupError",this.retryable=r.retryable}};function Bl(e,t={}){let n=e instanceof qn.FloPayError?e:void 0,r=n?.statusCode,o=t.retryable??(n?.type==="network_error"||n?.type==="rate_limit_error"||typeof r=="number"&&r>=500||n?.code==="vault_capture_timeout"||!n);return new Jo(n?.message??(e instanceof Error?e.message:"Failed to load the secure card form."),n?.type??"api_error",{code:t.code??n?.code??"card_setup_load_failed",retryable:o,...n?.param?{param:n.param}:{},...r===void 0?{}:{statusCode:r}})}function Fl({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,theme:o="modern-light",containerStyle:a,loading:l=null,onReady:d,onComplete:u,onDecline:g,onCancel:y,onValidation:b,onError:h}){let[k,F]=(0,Pt.useState)(null),[N,ye]=(0,Pt.useState)(null),[se,S]=(0,Pt.useState)(null),[V,O]=(0,Pt.useState)(null),[de,Se]=(0,Pt.useState)(null),le=(0,Pt.useRef)(!1),fe=(0,Pt.useRef)(!1),be=(0,Pt.useMemo)(()=>typeof o=="object"?void 0:(0,qn.resolveTheme)(o),[o]),pt=(0,Pt.useMemo)(()=>typeof o=="object"?o:be?_a({appearance:be.appearance,buttonsStyles:be.buttonsLayout,layout:"default"}):null,[be,o]),Ge=(0,Pt.useMemo)(()=>Gs(be?.buttonsLayout.cardFormContainer,a),[be,a]),ve=(0,Pt.useMemo)(()=>be?Ml(be):void 0,[be]),Ne=(0,Pt.useRef)(d),ue=(0,Pt.useRef)(h),we=(0,Pt.useRef)(u),Ye=(0,Pt.useRef)(g),Q=(0,Pt.useRef)(y),ke=(0,Pt.useRef)(b),pe=(0,Pt.useRef)(!1),nt=(0,Pt.useRef)(!1),rt=(0,Pt.useRef)(0);return Ne.current=d,ue.current=h,we.current=u,Ye.current=g,Q.current=y,ke.current=b,(0,Pt.useEffect)(()=>{let I=rt.current+1;return rt.current=I,()=>{queueMicrotask(()=>{rt.current===I&&(pe.current||nt.current||(nt.current=!0,lt(()=>{Q.current?.({status:"cancelled",sessionId:e})})))})}},[e]),(0,Pt.useEffect)(()=>{let I=!0,j=new za.PaymentAPI((0,qn.resolveBillingApiUrl)(n),{telemetry:r});return F(null),ye(null),S(null),pe.current=!1,nt.current=!1,(async()=>{try{if(!e.trim())throw new qn.FloPayError("FloPayCardSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!t.trim())throw new qn.FloPayError("FloPayCardSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let ge=await j.getUnifiedCheckoutSession(e,t);if(!I)return;let ee=ge.data.session;if(!ee||!(0,qn.isCardSetupCheckoutSession)(ee))throw new qn.FloPayError("FloPayCardSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidCardSetupSession",param:"sessionId"});let Ke=ee.vault;if(Ke?.html?.trim()||(Ke=await j.getVaultCapture(e,t)),!Ke.html?.trim())throw new qn.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});if(!I)return;ye(Ke),F(new za.PciVaultCardCapture({sessionId:e,operation:"card_setup",telemetry:r}))}catch(ge){if(!I)return;let ee=Bl(ge);pe.current=!0,S(ee),lt(()=>ue.current?.(ee))}})(),()=>{I=!1,j.destroy()}},[n,t,e,r]),(0,Pt.useEffect)(()=>{if(!k)return;let I=!1;fe.current=!1,le.current=!1;let j=k.on("submitting",()=>{le.current=!0,Se(null),O("processing")}),ge=k.on("complete",x=>{pe.current=!0,le.current=!1,O("success"),(async()=>(await new Promise(Ie=>setTimeout(Ie,600)),!fe.current&&(fe.current=!0,lt(()=>{we.current?.({status:"succeeded",sessionId:e,...x.paymentMethod?{paymentMethod:x.paymentMethod}:{}})}),I||O(null))))()}),ee=k.on("decline",x=>{pe.current=!0,le.current=!1,Se(x.message??null),O("error"),lt(()=>{Ye.current?.({status:"declined",sessionId:e,...x.declineReason?{reason:x.declineReason}:{},...x.message?{message:x.message}:{}})}),(async()=>(await new Promise(Ie=>setTimeout(Ie,400)),I||O(null)))()}),Ke=k.on("challenge_dismissed",()=>{O(null)});return()=>{I=!0,j(),ge(),ee(),Ke()}},[k,e]),se?(0,Pr.jsx)("div",{role:"alert",children:se.message}):!k||!N?.html?(0,Pr.jsx)(Pr.Fragment,{children:l}):(0,Pr.jsxs)(Pr.Fragment,{children:[V&&(0,Pr.jsx)(Yn,{status:V,errorMessage:de,processingLabel:"SAVING CARD...",successLabel:"CARD SAVED",errorLabel:"CARD NOT SAVED",successNote:null,...ve?{theme:ve}:{}}),(0,Pr.jsx)(ho,{capture:k,html:N.html,messageToken:N.messageToken,expectedOrigin:N.expectedOrigin,theme:pt,containerStyle:Ge,onReady:()=>{lt(()=>Ne.current?.())},onValidation:I=>{lt(()=>ke.current?.(I))},onError:I=>{if(!I)return;le.current&&(le.current=!1,Se(I),O("error"),setTimeout(()=>O(null),400));let j=Bl(new Error(I),{code:"card_setup_widget_failed",retryable:!0});lt(()=>ue.current?.(j))}})]})}0&&(module.exports={DirectPayPalButton,FloPayAutomaticPaymentButton,FloPayCardSetup,FloPayCardSetupError,FloPayCheckout,FloPayProvider,SplitCardForm,VaultCardFields,dropThirdPartyOnlyError,useCheckout,useFloPay,usePayPalFloPay});
47
+ `})]})}return(0,T.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&z(So),n&&(r||o)&&z(So),n&&(0,T.jsx)("button",{type:"button",onClick:()=>{e?.("card"),y(!0)},style:{width:"100%",...ue,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:_.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",boxShadow:"0 1px 2px rgba(0,0,0,0.04)",transition:"transform 0.1s",position:"relative",opacity:1,..._.cardButton},onMouseDown:k=>{k.currentTarget.style.transform="scale(0.985)"},onMouseUp:k=>{k.currentTarget.style.transform="scale(1)"},children:(0,T.jsx)(ao,{content:u})}),(0,T.jsx)("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}var yr=require("react/jsx-runtime"),jd=44;function Bl(e){return new Promise(t=>setTimeout(t,e))}function Kd(e,t){return e instanceof nr.FloPayError?e:new nr.FloPayError(e instanceof Error?e.message:t,"api_error")}function Wd(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function Hd(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 Fl({sessionId:e,nonce:t,createSession:n,paymentMethodId:r,checkoutMethod:o,clientId:a,products:l,items:d,subscriptions:u,account:m,successUrl:h,cancelUrl:b,couponCodes:y,tagsData:C,utmMetadata:_,billingApiUrl:ne,locale:z,theme:ue,appearance:k,buttonsTheme:$,buttonsStyles:U,onSuccess:se,onError:Se,onDecline:Pe,children:pe,disabled:ye=!1,type:yt="button",style:He,...we}){let Me=(0,Ze.useMemo)(()=>(0,nr.resolveBillingApiUrl)(ne),[ne]),fe=(0,Ze.useMemo)(()=>Hd({createSession:n,clientId:a,products:l,items:d,subscriptions:u,account:m,successUrl:h,cancelUrl:b,couponCodes:y,tagsData:C,utmMetadata:_}),[m,b,a,y,n,l,d,u,h,C,_]),[Re,Ge]=(0,Ze.useState)(!1),[oe,_e]=(0,Ze.useState)(null),[ge,nt]=(0,Ze.useState)(null),[rt,M]=(0,Ze.useState)(!1),[V,ie]=(0,Ze.useState)(null),ae=(0,Ze.useRef)(!0),Ye=(0,Ze.useRef)(null),Ce=(0,Ze.useRef)(V),N=(0,Ze.useRef)(se),ut=(0,Ze.useRef)(Se),ot=(0,Ze.useRef)(Pe),he=(0,Ze.useCallback)(g=>Ra(Ye,async q=>{try{return await g(q)}catch(Fe){throw q.aborted?Ko(Fe):Fe}}),[]);(0,Ze.useEffect)(()=>{Ce.current=V},[V]),(0,Ze.useEffect)(()=>{N.current=se},[se]),(0,Ze.useEffect)(()=>{ut.current=Se},[Se]),(0,Ze.useEffect)(()=>{ot.current=Pe},[Pe]),(0,Ze.useEffect)(()=>(ae.current=!0,()=>{ae.current=!1,Ye.current?.abort()}),[]),(0,Ze.useEffect)(()=>{if(typeof window>"u")return;let g=q=>{q.key==="Escape"&&ie(null)};return window.addEventListener("keydown",g),()=>{window.removeEventListener("keydown",g)}},[]);let le=(0,Ze.useCallback)((g,q=jo)=>{ot.current?.(nn(q,g,{code:g.code,declineCode:g.declineCode}))},[]),H=(0,Ze.useCallback)(async g=>{ae.current&&(nt(null),M(g.result.status==="authorized"),_e("success"),await Bl(600),ae.current&&dt(()=>N.current?.(g)))},[]),Le=(0,Ze.useCallback)(async(g,q)=>{ae.current&&(ut.current?.(g),q?.emitDecline&&le(g,q.method),nt(g.message),M(!1),_e("error"),await Bl(400))},[le]),Oe=(0,Ze.useCallback)(async(g,q,Fe)=>{let Je=g.data.session??null;if(!Je)throw new nr.FloPayError("No session data returned","api_error");let De=Je.clientSecret||t;if(Nr(Je)){await H({result:Ir(Je,q),session:Je,sessionId:Je.id||q,autoCompleted:!1});return}if(Je.status==="expired")throw ua(Je);try{if(g.autoProcessingPending){let W=g.autoProcessingPending,St=new qa.PaymentAPI(Me),Tt=await he(G=>St.waitForCheckoutSessionCompletion(W.sessionId,{initialDelayMs:W.retryAfterMs,nonce:De,statusUrl:W.statusUrl,signal:G})),ft=Tt.data.session,un=Tt.autoProcessingError?.type==="3ds_required"&&Tt.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:Tt.autoProcessingError.nextActionRedirectUrl}:null;if(un&&q&&De){let G=await he(Lt=>bo(un,{billingApiUrl:Me,sessionId:q,nonce:De,session:Je,signal:Lt}));await H({result:G,session:Je,sessionId:Je.id||q,autoCompleted:!1});return}if(Tt.autoProcessingError)throw br(Tt.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:Tt.autoProcessingError.checkoutMethod});if(!Nr(ft))throw lo(ft);await H({result:Ir(ft,q),session:ft,sessionId:ft.id||q,autoCompleted:!1});return}if(g.autoProcessingError){let W=g.autoProcessingError.nextActionRedirectUrl;if(g.autoProcessingError.type==="3ds_required"&&W&&q&&De){let St=await he(G=>Ci({billingApiUrl:Me,sessionId:q,nonce:De,nextActionRedirectUrl:W,signal:G}));if(St.status==="declined")throw br({type:St.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:St.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:g.autoProcessingError.checkoutMethod});let un=(await new qa.PaymentAPI(Me).waitForCheckoutSessionCompletion(q,{initialDelayMs:0,nonce:De})).data.session;if(!Nr(un))throw br({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:g.autoProcessingError.checkoutMethod});await H({result:Ir(un,q),session:un,sessionId:un.id||q,autoCompleted:!1});return}throw br(g.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:g.autoProcessingError.checkoutMethod})}if(Fe?.fromCreateSession&&g.autoProcessingAttempted===!0)throw br({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let $t=await vo({billingApiUrl:Me,sessionId:q??Je.id,session:Je,nonce:De});if($t.type==="next_action_required"&&De){let W=q??Je.id,St=await he(Tt=>bo($t,{billingApiUrl:Me,sessionId:W,nonce:De,session:Je,signal:Tt}));await H({result:St,session:Je,sessionId:Je.id||W,autoCompleted:!1});return}if($t.type!=="success")throw br({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await H({result:$t.result,session:Je,sessionId:Je.id||q,autoCompleted:!1})}catch($t){let W=Wo($t);if(W.code==="three_ds_aborted")return;let St=Je.id||q;await Le(W,{emitDecline:!0,method:W.checkoutMethod??jo}),Wd(W,St)&&St&&ae.current&&ie({sessionId:St,errorMessage:W.message,nonce:De||void 0,payPalOrderId:W.orderId})}},[t,Me,he,Le,H]),ze=(0,Ze.useCallback)(async g=>{if(we.onClick?.(g),!(g.defaultPrevented||ye||Re)){if(ie(null),e&&fe){let q=new nr.FloPayError("Provide either sessionId or create-session props, not both.","validation_error");await Le(q),ae.current&&(_e(null),nt(null));return}if(!e&&!fe){let q=new nr.FloPayError("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await Le(q),ae.current&&(_e(null),nt(null));return}Ge(!0),nt(null),M(!1),_e("processing");try{let q=new qa.PaymentAPI(Me);if(e){let Fe=await q.getUnifiedCheckoutSession(e,t);await Oe(Fe,e);return}try{let Fe=await q.createAndFetchSession({...fe});await Oe(Fe,Fe.data.session?.id??null,{fromCreateSession:!0})}catch(Fe){if(pa(Fe)==="session_auto_completed"){await H({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw Fe}}catch(q){await Le(Kd(q,"Automatic payment failed. Please try again."))}finally{ae.current&&(_e(null),nt(null),Ge(!1))}}},[we.onClick,fe,ye,Re,t,Oe,Me,e,Le,H]),je=(0,Ze.useCallback)(g=>{let q=Ce.current;ie(null),N.current?.({result:g,session:null,sessionId:q?.sessionId??null,autoCompleted:!1})},[]),Be=(0,Ze.useCallback)(g=>{ut.current?.(g)},[]),Ne=(0,Ze.useCallback)(g=>{ot.current?.(g)},[]),ce=(0,Ze.useMemo)(()=>(0,nr.resolveTheme)(ue),[ue]),dn=(0,Ze.useMemo)(()=>{let g=ce?.buttonsLayout??(0,nr.resolveButtonsLayoutTheme)($);return U?{...g,...U,cardButton:{...g.cardButton,...U.cardButton}}:g},[ce,$,U]),Jt=(0,Ze.useMemo)(()=>{let g=ce?.appearance;return k?g?{...g,...k,variables:{...g.variables,...k.variables}}:k:g},[k,ce]),ee=Jt?.variables,at=ee?.colorPrimary??"#4A49FF",Z=ee?.colorPrimaryHover??Co(at,.12),Q=ee?.borderRadius??"8px";return(0,yr.jsxs)(yr.Fragment,{children:[(0,yr.jsx)("button",{...we,type:yt,onClick:ze,disabled:ye||Re,"aria-busy":Re,style:{width:"100%",...pe===void 0?{boxSizing:"border-box",height:jd,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...dn.cardButton,...Li({themeBundle:ce,resolvedPrimaryColor:at,resolvedBorderRadius:Q,submitButtonStyle:dn.submitButton,explicitPrimaryColor:ee?.colorPrimary}),fontSize:dn.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:ye||Re?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:ye||Re?.6:1,...He},onMouseEnter:g=>{we.onMouseEnter?.(g),!g.defaultPrevented&&!ye&&!Re&&(ce||ee?.colorPrimary)&&(g.currentTarget.style.backgroundColor=Z)},onMouseLeave:g=>{we.onMouseLeave?.(g),!g.defaultPrevented&&(ce||ee?.colorPrimary)&&(g.currentTarget.style.backgroundColor=at)},onMouseDown:g=>{we.onMouseDown?.(g),g.defaultPrevented||(g.currentTarget.style.transform="scale(0.985)")},onMouseUp:g=>{we.onMouseUp?.(g),g.defaultPrevented||(g.currentTarget.style.transform="scale(1)")},children:(0,yr.jsx)(ao,{content:pe})}),oe&&(0,yr.jsx)(tr,{status:oe,errorMessage:ge,authorized:rt}),V&&(0,yr.jsx)("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:g=>{g.target===g.currentTarget&&ie(null)},style:{position:"fixed",inset:0,background:"rgba(0, 0, 0, 0.45)",display:"flex",alignItems:"center",justifyContent:"center",padding:"1.5rem",zIndex:1100},children:(0,yr.jsx)("div",{style:{width:"100%",maxWidth:520,maxHeight:"90vh",overflowY:"auto",background:"white",borderRadius:20,padding:"1.5rem",boxShadow:"0 24px 80px rgba(15, 23, 42, 0.28)",display:"flex",flexDirection:"column",gap:"1rem"},children:(0,yr.jsx)(Ua,{sessionId:V.sessionId,nonce:V.nonce,checkoutMode:"full",billingApiUrl:Me,locale:z,theme:ue,...Jt?{appearance:Jt}:{},buttonsTheme:$,buttonsStyles:U,initialErrorMessage:V.errorMessage,initialPayPalOrderId:V.payPalOrderId,cardTitleContent:null,onComplete:je,onError:Be,onDecline:Ne})})})]})}var $a=require("@flopay/js/card-setup"),$n=require("@flopay/shared"),Ct=require("react");var Dl={light:{success:"#166534",error:"#991B1B"},dark:{success:"#4ADE80",error:"#FCA5A5"}};function Nl(e){let t=e.appearance.variables??{},n=e.buttonsLayout.cardFormContainer??{},r=e.appearance.theme==="night",o=r?Dl.dark:Dl.light,a=t.colorText??(r?"#F1F5F9":"#262833"),l=e.appearance.rules?.[".Label"];return{panel:{...n.background===void 0?{}:{background:n.background},...n.backgroundColor===void 0?{}:{backgroundColor:n.backgroundColor},...n.border===void 0?{}:{border:n.border},...n.borderRadius===void 0?{}:{borderRadius:n.borderRadius},...n.boxShadow===void 0?{}:{boxShadow:n.boxShadow},color:a,...t.fontFamily?{fontFamily:t.fontFamily}:{}},spinnerTrackColor:e.buttonsLayout.cardInputBorder??(r?"#374151":"#e5e7eb"),spinnerAccentColor:t.colorPrimary??"#4A49FF",labelColors:{processing:a,success:o.success,error:o.error},noteColor:l?.color??a}}var Cr=require("react/jsx-runtime"),Qo=class extends $n.FloPayError{constructor(t,n,r){super(t,n,r),this.name="FloPayCardSetupError",this.retryable=r.retryable}};function Ll(e,t={}){let n=e instanceof $n.FloPayError?e:void 0,r=n?.statusCode,o=t.retryable??(n?.type==="network_error"||n?.type==="rate_limit_error"||typeof r=="number"&&r>=500||n?.code==="vault_capture_timeout"||!n);return new Qo(n?.message??(e instanceof Error?e.message:"Failed to load the secure card form."),n?.type??"api_error",{code:t.code??n?.code??"card_setup_load_failed",retryable:o,...n?.param?{param:n.param}:{},...r===void 0?{}:{statusCode:r}})}function Ol({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,theme:o="modern-light",containerStyle:a,loading:l=null,onReady:d,onComplete:u,onDecline:m,onCancel:h,onValidation:b,onError:y}){let[C,_]=(0,Ct.useState)(null),[ne,z]=(0,Ct.useState)(null),[ue,k]=(0,Ct.useState)(null),[$,U]=(0,Ct.useState)(null),[se,Se]=(0,Ct.useState)(null),Pe=(0,Ct.useRef)(!1),pe=(0,Ct.useRef)(!1),ye=(0,Ct.useMemo)(()=>typeof o=="object"?void 0:(0,$n.resolveTheme)(o),[o]),yt=(0,Ct.useMemo)(()=>typeof o=="object"?o:ye?Aa({appearance:ye.appearance,buttonsStyles:ye.buttonsLayout,layout:"default"}):null,[ye,o]),He=(0,Ct.useMemo)(()=>Xs(ye?.buttonsLayout.cardFormContainer,a),[ye,a]),we=(0,Ct.useMemo)(()=>ye?Nl(ye):void 0,[ye]),Me=(0,Ct.useRef)(d),fe=(0,Ct.useRef)(y),Re=(0,Ct.useRef)(u),Ge=(0,Ct.useRef)(m),oe=(0,Ct.useRef)(h),_e=(0,Ct.useRef)(b),ge=(0,Ct.useRef)(!1),nt=(0,Ct.useRef)(!1),rt=(0,Ct.useRef)(0);return Me.current=d,fe.current=y,Re.current=u,Ge.current=m,oe.current=h,_e.current=b,(0,Ct.useEffect)(()=>{let M=rt.current+1;return rt.current=M,()=>{queueMicrotask(()=>{rt.current===M&&(ge.current||nt.current||(nt.current=!0,dt(()=>{oe.current?.({status:"cancelled",sessionId:e})})))})}},[e]),(0,Ct.useEffect)(()=>{let M=!0,V=new $a.PaymentAPI((0,$n.resolveBillingApiUrl)(n),{telemetry:r});return _(null),z(null),k(null),ge.current=!1,nt.current=!1,(async()=>{try{if(!e.trim())throw new $n.FloPayError("FloPayCardSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!t.trim())throw new $n.FloPayError("FloPayCardSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let ie=await V.getUnifiedCheckoutSession(e,t);if(!M)return;let ae=ie.data.session;if(!ae||!(0,$n.isCardSetupCheckoutSession)(ae))throw new $n.FloPayError("FloPayCardSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidCardSetupSession",param:"sessionId"});let Ye=ae.vault;if(Ye?.html?.trim()||(Ye=await V.getVaultCapture(e,t)),!Ye.html?.trim())throw new $n.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});if(!M)return;z(Ye),_(new $a.PciVaultCardCapture({sessionId:e,operation:"card_setup",telemetry:r}))}catch(ie){if(!M)return;let ae=Ll(ie);ge.current=!0,k(ae),dt(()=>fe.current?.(ae))}})(),()=>{M=!1,V.destroy()}},[n,t,e,r]),(0,Ct.useEffect)(()=>{if(!C)return;let M=!1;pe.current=!1,Pe.current=!1;let V=C.on("submitting",()=>{Pe.current=!0,Se(null),U("processing")}),ie=C.on("complete",Ce=>{ge.current=!0,Pe.current=!1,U("success"),(async()=>(await new Promise(N=>setTimeout(N,600)),!pe.current&&(pe.current=!0,dt(()=>{Re.current?.({status:"succeeded",sessionId:e,...Ce.paymentMethod?{paymentMethod:Ce.paymentMethod}:{}})}),M||U(null))))()}),ae=C.on("decline",Ce=>{ge.current=!0,Pe.current=!1,Se(Ce.message??null),U("error"),dt(()=>{Ge.current?.({status:"declined",sessionId:e,...Ce.declineReason?{reason:Ce.declineReason}:{},...Ce.message?{message:Ce.message}:{}})}),(async()=>(await new Promise(N=>setTimeout(N,400)),M||U(null)))()}),Ye=C.on("challenge_dismissed",()=>{U(null)});return()=>{M=!0,V(),ie(),ae(),Ye()}},[C,e]),ue?(0,Cr.jsx)("div",{role:"alert",children:ue.message}):!C||!ne?.html?(0,Cr.jsx)(Cr.Fragment,{children:l}):(0,Cr.jsxs)(Cr.Fragment,{children:[$&&(0,Cr.jsx)(tr,{status:$,errorMessage:se,processingLabel:"SAVING CARD...",successLabel:"CARD SAVED",errorLabel:"CARD NOT SAVED",successNote:null,...we?{theme:we}:{}}),(0,Cr.jsx)(Po,{capture:C,html:ne.html,messageToken:ne.messageToken,expectedOrigin:ne.expectedOrigin,theme:yt,containerStyle:He,onReady:()=>{dt(()=>Me.current?.())},onValidation:M=>{dt(()=>_e.current?.(M))},onError:M=>{if(!M)return;Pe.current&&(Pe.current=!1,Se(M),U("error"),setTimeout(()=>U(null),400));let V=Ll(new Error(M),{code:"card_setup_widget_failed",retryable:!0});dt(()=>fe.current?.(V))}})]})}0&&(module.exports={DirectPayPalButton,FloPayAutomaticPaymentButton,FloPayCardSetup,FloPayCardSetupError,FloPayCheckout,FloPayProvider,SplitCardForm,VaultCardFields,dropThirdPartyOnlyError,useCheckout,useFloPay,usePayPalFloPay});