@flopay/react 1.11.5 → 1.11.6

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 Fu=Object.create;var ei=Object.defineProperty;var Bu=Object.getOwnPropertyDescriptor;var Du=Object.getOwnPropertyNames;var Ou=Object.getPrototypeOf,Lu=Object.prototype.hasOwnProperty;var Nu=(e,t)=>{for(var n in t)ei(e,n,{get:t[n],enumerable:!0})},Ll=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Du(t))!Lu.call(e,o)&&o!==n&&ei(e,o,{get:()=>t[o],enumerable:!(r=Bu(t,o))||r.enumerable});return e};var ds=(e,t,n)=>(n=e!=null?Fu(Ou(e)):{},Ll(t||!e||!e.__esModule?ei(n,"default",{value:e,enumerable:!0}):n,e)),Uu=e=>Ll(ei({},"__esModule",{value:!0}),e);var $p={};Nu($p,{DirectPayPalButton:()=>Ra,FloPayAutomaticPaymentButton:()=>Gc,FloPayCardSetup:()=>Xc,FloPayCardSetupError:()=>qa,FloPayCheckout:()=>Ni,FloPayPaymentMethodSetup:()=>mu,FloPayProvider:()=>Ea,SplitCardForm:()=>Bi,VaultCardFields:()=>co,dropThirdPartyOnlyError:()=>fu.dropThirdPartyOnlyError,useCheckout:()=>Xl,useFloPay:()=>Hr,usePayPalFloPay:()=>ri});module.exports=Uu($p);var fu=require("@flopay/shared");var Ui=require("@flopay/js"),cr=require("@flopay/shared"),ut=require("react");var jt=require("react/jsx-runtime");function zu(){return(0,jt.jsxs)(jt.Fragment,{children:[(0,jt.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,jt.jsx)("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),(0,jt.jsx)("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",(0,jt.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,jt.jsx)("path",{d:"M9 18l6-6-6-6"})})]})}function qu(){return(0,jt.jsx)(jt.Fragment,{children:"Go back"})}function Vu(){return(0,jt.jsx)(jt.Fragment,{children:"Secure card checkout"})}function Lo(e){return e!==void 0&&(e===""||e===null||e===!1)}function No({content:e}){return(0,jt.jsx)(jt.Fragment,{children:e===void 0?(0,jt.jsx)(zu,{}):e})}function Uo({content:e}){return(0,jt.jsx)(jt.Fragment,{children:e===void 0?(0,jt.jsx)(qu,{}):e})}function Pa({content:e}){return(0,jt.jsx)(jt.Fragment,{children:e===void 0?(0,jt.jsx)(Vu,{}):e})}var bt=require("@flopay/shared"),ju="Checkout is temporarily unavailable. Please try again later.";function ps(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof bt.FloPayError&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function $u(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 Nl(){return new bt.FloPayError(ju,"api_error",{code:"CheckoutInitializationFailed"})}function ms(e){return!!e?.gateways?.worldpayCorporateGateway}function eo(e){return e?.status==="open"&&ms(e)}function Ul(e,t,n){let r=e?.data.session,o=r?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(n&&((0,bt.isMountableVaultBlock)(r?.vault)||r?.gateways?.pcivault||o?.includes("card")||eo(r))||t&&e?.data.paypal?.publishableKey)}function zl(e,t){if(t&&(!(e instanceof bt.FloPayError)||e.type==="authentication_error"))return ps(e);if(!(e instanceof bt.FloPayError&&$u(e))){if(!t&&!(e instanceof bt.FloPayError)&&(e instanceof TypeError||e instanceof SyntaxError))return{...(0,bt.classifyTelemetryFailure)(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof bt.FloPayError)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof bt.FloPayError))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function zo(e,t,n,r={}){let o;return(a={})=>{if(o!==void 0)return o;let i={...r,...a,email:a.email?.trim()||r.email?.trim()},c=(0,bt.isCardHolderNamePlaceholder)(i.firstName,i.lastName);if(!(0,bt.isValidEmail)(i.email))return Promise.reject(new bt.FloPayError("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let p={};for(let[u,h]of Object.entries(i)){if(c&&u.endsWith("Name")||typeof h!="string")continue;let P=h.trim();P&&(p[u]=P)}return o=e.claimCheckoutSession(t,n,{accountData:p}),o.catch(()=>{}),o}}function ql(e,t){if(!t)return e;if(!e)return t;let n;return"checkoutMetadata"in t?n=t:"checkoutMetadata"in e&&(n=e),{account:{...e.account??{},...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,...n?{checkoutMetadata:n.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}}function ys(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 Vl(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,i)=>a+(i.overrideAmount??i.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,i)=>({uuid:`synthetic-${a.type??"item"}-${i}`,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 bo(e){if((0,bt.isCardHolderNamePlaceholder)(e))return{};let[t,...n]=e?.trim().split(/\s+/)??[];return t?{firstName:t,lastName:n.join(" ")||void 0}:{}}function fs(e,t){return t?{...e,...t}:e}function fn(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,i=typeof t=="string"?void 0:t.sessionId;return{method:e,message:r,...o?{code:o}:{},...a?{declineCode:a}:{},...i?{sessionId:i}:{}}}function to(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}var Wu=[{match:/^paypal authorization required\.?$/i,replacement:"For your additional security, please re-authenticate this payment via PayPal."}];function no(e){if(typeof e!="string")return e??void 0;let t=e.trim();if(!t)return e;for(let{match:n,replacement:r}of Wu)if(n.test(t))return r;return e}function jr(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function $r(e){return e?.status==="authorized"||e?.status==="complete"}function ro(e,t){if(e.data.session)return e.data.session;let n=e.raw,r=n?.latestTransactionAttempt?.result,o=n?.status==="authorized"||r==="AUTHORIZED";return o||n?.status==="completed"||r==="SUCCESS"?{...t,status:o?"authorized":"complete"}:n?.status==="expired"?{...t,status:"expired"}:void 0}function jl(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function ti(e){let t=jl(e);return new bt.FloPayError(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function ni(e){return e instanceof bt.FloPayError||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function qo(e){return jl(e)?new bt.FloPayError("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new bt.FloPayError("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new bt.FloPayError(bt.CHECKOUT_PROCESSING_TIMEOUT_MESSAGE,"api_error",{code:"checkout_processing_timeout"})}function va(e,t){return e==="processing"||(0,bt.isMoneySettledOutcome)(e,t)}function $l(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function Wl(e,t){let n=e;if((0,bt.isSetupIntentClientSecret)(t)){if(!n?.retrieveSetupIntent)return null;let{setupIntent:a,error:i}=await n.retrieveSetupIntent(t);if(i)throw new bt.FloPayError(i.message??"Failed to retrieve setup intent.","api_error",{...i.code?{code:i.code}:{}});return a??null}if(!n?.retrievePaymentIntent)return null;let{paymentIntent:r,error:o}=await n.retrievePaymentIntent(t);if(o)throw new bt.FloPayError(o.message??"Failed to retrieve payment intent.","api_error",{...o.code?{code:o.code}:{}});return r??null}var Hu=["apple_pay","google_pay"];function Hl(e,t="automatic",n){let r=(0,bt.resolveSetupFutureUsage)(n,Hu,"wallet");return{...typeof e=="number"&&Number.isFinite(e)&&e>0?{mode:"payment",amount:e,captureMethod:t==="manual"?"manual":"automatic_async"}:{mode:"setup"},paymentMethodTypes:["card"],...r?{setupFutureUsage:r}:{}}}var Ku=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function gs(e){let t=e&&typeof e=="object"?e:null;return t?.name==="IntegrationError"||t?.code==="elements_intent_mismatch"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:"deferred_contract_mismatch"}:t?.type==="invalid_request_error"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:Ku.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function Ca(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"),et=require("@flopay/shared"),R=ds(require("react"),1);var hs=require("react"),ar=(0,hs.createContext)({flopay:null,paypalFlopay:null,billingApiUrl:""}),Cr=(0,hs.createContext)({session:null,loading:!1,error:null});var ci=require("@flopay/js"),Kt=require("@flopay/shared"),tc=require("@paypal/paypal-js"),x=require("react");var Kl=require("@flopay/shared"),Sr=require("react"),Wr=require("react/jsx-runtime");function qn(e,t=!1){let{firstName:n,lastName:r,...o}=e,a=n?.trim(),i=r?.trim();return{...o,...a||t?{firstName:a??""}:{},...i||t?{lastName:i??""}:{}}}function Vo(){let[e,t]=(0,Sr.useState)(null),n=(0,Sr.useRef)(null),r=(0,Sr.useRef)(0),o=(0,Sr.useCallback)((i,c)=>(n.current?.(null),r.current+=1,t({id:r.current,methodLabel:i,identity:c}),new Promise(p=>{n.current=p})),[]),a=(0,Sr.useCallback)(i=>{let c=n.current;n.current=null,t(null),c?.(i)},[]);return(0,Sr.useEffect)(()=>()=>{n.current?.(null),n.current=null},[]),{request:e,collect:o,finish:a}}function jo({identity:e,methodLabel:t,onComplete:n,onCancel:r,submitting:o=!1,testId:a="flopay-buyer-identity-pane"}){let[i,c]=(0,Sr.useState)(e.email?.trim()??""),p=(0,Kl.isValidEmail)(i.trim());return(0,Wr.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,Wr.jsxs)("div",{style:{fontWeight:700},children:["Continue with ",t]}),(0,Wr.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,Wr.jsx)("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:i,onChange:u=>c(u.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),(0,Wr.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[r&&(0,Wr.jsx)("button",{type:"button",onClick:r,style:{flex:1,minHeight:42},children:"Cancel"}),(0,Wr.jsxs)("button",{type:"button",disabled:!p||o,onClick:()=>{n(qn({...e,email:i.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}var Gu=new Set(["err_blocked_by_client","notallowederror","popup_blocked","popupblocked"]),Yu=["https://www.paypal.com","https://www.sandbox.paypal.com"];function oo(e,t,n){let r=`We couldn't open ${e}. Try again or choose another payment method.`;return t?n?`${r} Open this page in your system browser, then try again.`:`${r} Allow pop-ups for this site, then try again.`:r}function Gl(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 Po(e){if(typeof e!="string")return;let t=e.trim();return/^[a-z0-9_.-]{1,64}$/i.test(t)?t:void 0}function Br(e){if(typeof e!="object"||e===null)return;let t=e;return Po(t.code)??Po(t.type)??Po(t.name)}function $o(e){if(!(typeof e!="object"||e===null))return Po(e.decline_code)}function vo(e){return typeof e!="object"||e===null?!1:Po(e.type)?.toLowerCase()==="card_error"||$o(e)!==void 0}function Xu(e){let t=Gl(e)?.toLowerCase()??"",n=Br(e)?.toLowerCase()??"";return Gu.has(n)?!0:/(?:popup|pop-up).{0,40}(?:block|denied|prevent)/i.test(t)||/(?:block|denied|prevent).{0,40}(?:popup|pop-up)/i.test(t)}function bs(e){if(Br(e)?.toLowerCase()==="paypal_init_timeout")return!0;let n=Gl(e)??"";return n.includes("No ack for postMessage init()")&&Yu.some(r=>n.includes(r))&&n.includes("10000ms")}function ao(e,t){if(vo(e))return{errorCode:"PROVIDER_RUNTIME_FAILED",popupBlocked:!1,providerDeclined:!0,terminalReason:"provider_declined"};let r=Xu(e)||t.inAppBrowser&&!t.handoffObserved&&bs(e);return{errorCode:r?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",popupBlocked:r,providerDeclined:!1,terminalReason:r?"popup_blocked":"provider_error"}}function io(e){return ao(e,{inAppBrowser:!1,handoffObserved:!1}).popupBlocked}var Yl=require("@flopay/shared"),Sa=require("react");function Hr(){return(0,Sa.useContext)(ar).flopay}function ri(){return(0,Sa.useContext)(ar).paypalFlopay??null}function Xl(){return(0,Sa.useContext)(Cr)}function Jl(){return(0,Sa.useContext)(ar).billingApiUrl||(0,Yl.resolveBillingApiUrl)()}function Kr(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 oi(e,t,n=e.popupCapability){return e.inAppBrowser||n==="blocked"||t==="prefer_redirect"?"redirect":"popup"}function ai(e,t,n){return!e.inAppBrowser||n!=="order"?"popup":t==="app_switch"||t==="redirect"?t:"popup"}var Zl=require("@flopay/shared"),So=require("react");function Je(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 ii=require("react"),Co=typeof window>"u"?ii.useEffect:ii.useLayoutEffect;var Ju={"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 Zu(e){return e==="stripe"||e==="paypal"?e:void 0}function Qu(e){let t=Zu(e.provider),n={schemaVersion:Zl.FLO_INSTRUMENT_SCHEMA_VERSION,...t?{gateway:t}:{}};if(e.class==="lifecycle"){let r=Ju[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 Ps=new Set(["checkout_mount","sdk_loaded","form_rendered","card_expanded"]);function Wo(e,t){let n=(0,So.useRef)(e);n.current=e;let r=(0,So.useRef)(new Set),o=(0,So.useRef)(t),a=(0,So.useRef)(t);return Co(()=>{a.current=t,o.current!==t&&(o.current=t,r.current.clear())},[t]),(0,So.useCallback)(i=>{if(a.current!==t)return;let c=Qu(i);if(c){if(Ps.has(c.name)){if(r.current.has(c.name))return;r.current.add(c.name)}Je(()=>n.current?.(c))}},[t])}var Ql=require("react"),wa=(0,Ql.createContext)(null);function si(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var ed=Symbol.for("@flopay/js.telemetry.bridge.v1"),td=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function nd(){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 rd(e){let t=nd(),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 li(e){let t=globalThis[td];return rd(t?.(e)??{})}function gn(e){if(e)return e[ed]}var sn=require("react");function ka(e,t){let n=(0,sn.useRef)(0),r=(0,sn.useRef)(null),o=(0,sn.useRef)(null),a=(0,sn.useRef)(e),i=(0,sn.useRef)(t?.onHandoffObserved),c=(0,sn.useRef)(t?.defersMissingTerminal),p=(0,sn.useRef)(t?.onMissingTerminalDeferred);(0,sn.useEffect)(()=>{a.current=e,i.current=t?.onHandoffObserved,c.current=t?.defersMissingTerminal,p.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let u=(0,sn.useCallback)((b=o.current)=>{b?.timer&&(clearTimeout(b.timer),b.timer=null)},[]),h=(0,sn.useCallback)(b=>{u();let C=n.current+1;return n.current=C,r.current=null,o.current={generation:C,method:b,timer:null,yieldedControl:!1},C},[u]),P=(0,sn.useCallback)(b=>{let C=o.current;return b!==void 0&&C?.generation!==b?!1:(u(C),o.current=null,(b===void 0||r.current===b)&&(r.current=null),!0)},[u]),M=(0,sn.useCallback)(b=>{let C=o.current,G=b??C?.generation??n.current;(b===void 0||C?.generation===b)&&(u(C),o.current=null),r.current=G},[u]),_=(0,sn.useCallback)(b=>r.current===(b??n.current),[]),w=(0,sn.useCallback)(b=>o.current?.generation===b&&r.current!==b,[]),A=(0,sn.useCallback)(()=>{let b=o.current;b&&(u(b),!b.yieldedControl&&(b.yieldedControl=!0,i.current?.(b.method)))},[u]),I=(0,sn.useCallback)(()=>{let b=o.current;!b?.yieldedControl||document.visibilityState!=="visible"||(u(b),b.timer=setTimeout(()=>{if(b.timer=null,o.current?.generation===b.generation){if(c.current?.(b.method)){p.current?.(b.method,b.generation);return}o.current=null,r.current=b.generation,a.current(b.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},600))},[u]);return(0,sn.useEffect)(()=>{let b=()=>{document.visibilityState==="visible"?I():A()};return document.addEventListener("visibilitychange",b),window.addEventListener("blur",A),window.addEventListener("focus",I),()=>{document.removeEventListener("visibilitychange",b),window.removeEventListener("blur",A),window.removeEventListener("focus",I),u()}},[u,A,I]),{startAttempt:h,finishAttempt:P,invalidateAttempt:M,isAttemptInvalidated:_,isAttemptCurrent:w,generationRef:n}}var ir=require("react/jsx-runtime"),ui=45,od=1e3,ad=11e3,id={width:"100%",minHeight:ui,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"},sd={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 ld(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:sd[e.kind]??null}}function ec(e,t){return e==="watchdog_expired"?"paypal_render_timeout":bs(t)?"paypal_init_timeout":"paypal_init_failure"}function cd(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 ud(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function nc({sessionId:e,nonce:t,billingApiUrl:n,email:r,billingName:o,onBuyerIdentityReady:a,clientId:i,environment:c,currency:p,isSubscription:u,providerObjectType:h,approvalPresentation:P,onTokenizedBody:M,onComplete:_,onErrorChange:w,onDecline:A,onTechnicalFailure:I,isProcessing:b=!1,onLoadStateChange:C,onInitializationStateChange:G,allowAutomaticRetry:k=!0,onButtonClick:ye,runBeforeButtonClick:N,session:H,existingOrderId:_e,telemetry:te,telemetryContext:Ne,onInstrument:Ye,debug:be=!1}){let fe=Hr(),We=Wo(Ye,e),Te=(0,x.useMemo)(()=>{if(fe)return null;let v=li({billingApiUrl:n,sdkPackage:"@flopay/react",sdkVersion:Kt.SDK_VERSION,enabled:te!==!1});return v.setCheckoutContext(Ne??{}),v.beginCheckout(Ne??{}),v},[n,fe,te,Ne?.checkoutMode,Ne?.layout]),Fe=(0,x.useMemo)(()=>gn(fe),[fe]);(0,x.useEffect)(()=>()=>{Te&&Te.flush().catch(()=>{}).finally(()=>Te.destroy())},[Te]);let Ae=(0,x.useMemo)(()=>({error:v=>{Fe?Fe.error(v):Te?.error(v),We({class:"technical_error",errorCode:v.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":v.errorCode,requestCategory:v.requestCategory,provider:v.provider})},log:v=>{Fe?Fe.log(v):Te?.log(v),We({class:"lifecycle",name:v.name,provider:v.provider})},performance:v=>{Fe?Fe.performance(v):Te?.performance(v)},terminal:v=>{Fe?Fe.terminal(v):Te?.terminal(v)},startTiming:()=>Fe?.now()??Te?.now()??0,elapsed:v=>Fe?.elapsed(v)??Math.max(0,(Te?.now()??v)-v)}),[We,Fe,Te]),re=(0,x.useRef)(null),se=(0,x.useRef)(0),Ce=(0,x.useRef)(null),Be=(0,x.useRef)(null),Y=(0,x.useRef)(null),Q=(0,x.useContext)(wa),Pe=(0,x.useRef)(null);Pe.current||(Pe.current=si());let z=Q??Pe.current,we=(0,x.useRef)(null),J=(0,x.useRef)(!1),[Ee,Z]=(0,x.useState)(!1),[it,He]=(0,x.useState)(!1),[Ve,at]=(0,x.useState)(0),Ke=(0,x.useRef)(0),[st,je]=(0,x.useState)(!1),St=(0,x.useRef)(!1),Lt=(0,x.useRef)(!1),[Pt,Et]=(0,x.useState)(!1),[q,ve]=(0,x.useState)(!1),{request:Qe,collect:X,finish:Ue}=Vo(),vt=(0,x.useRef)({sessionId:e,required:!(0,Kt.isValidEmail)(r?.trim()||H?.customer?.email?.trim())});vt.current.sessionId!==e&&(vt.current={sessionId:e,required:!(0,Kt.isValidEmail)(r?.trim()||H?.customer?.email?.trim())});let Xe=vt.current.required,kt=(0,x.useMemo)(()=>n.replace(/\/+$/,""),[n]),g=H?.gateways?.paypal?.providerObjectType??h,S=g??(u?"subscription":"order"),[K]=(0,x.useState)(Kr),W=H?.gateways?.paypal?.approvalPresentation??P,Se=ai(K,W==="app_switch"?"app_switch":void 0,S),F=g==="order"||g==="setup_token",B=(0,x.useMemo)(()=>JSON.stringify([kt,i,p,c??"",S,F,Se,e,_e??""]),[kt,i,p,c,_e,S,F,Se,e]),oe=(0,x.useRef)(B),j=oe.current!==B,Ie=(0,x.useRef)(be),tt=(0,x.useRef)(null),[gt,yt]=(0,x.useState)([]),De=(0,x.useCallback)(v=>{Ie.current&&yt(nt=>[...nt,`${new Date().toISOString().slice(11,23)} ${v}`])},[]);(0,x.useEffect)(()=>{Ie.current=be,be&&De("debug:enabled"),tt.current?.setEnabled(be)},[De,be]);let xn=(0,x.useRef)(M),$n=(0,x.useRef)(_),bn=(0,x.useRef)(w),$t=(0,x.useRef)(A),Wn=(0,x.useRef)(I),Hn=(0,x.useRef)(ye),wn=(0,x.useRef)(C),Dt=(0,x.useRef)(G),dt=(0,x.useRef)(a),rt=(0,x.useRef)(N),Fn=(0,x.useRef)(H),Tt=(0,x.useRef)(r),Kn=(0,x.useRef)(o),Pn=(0,x.useRef)(t),Wt=(0,x.useRef)(null),nn=(0,x.useRef)(new Map),ur=(0,x.useRef)(new Map),er=(0,x.useRef)(!1);(0,x.useEffect)(()=>(er.current=!0,()=>{er.current=!1}),[]),(0,x.useEffect)(()=>{xn.current=M},[M]),(0,x.useEffect)(()=>{dt.current=a},[a]),(0,x.useEffect)(()=>{$n.current=_},[_]),(0,x.useEffect)(()=>{bn.current=w},[w]),(0,x.useEffect)(()=>{$t.current=A},[A]),(0,x.useEffect)(()=>{Wn.current=I},[I]),(0,x.useEffect)(()=>{Hn.current=ye},[ye]),(0,x.useEffect)(()=>{wn.current=C},[C]),(0,x.useEffect)(()=>{Dt.current=G},[G]),(0,x.useEffect)(()=>{rt.current=N},[N]),(0,x.useEffect)(()=>{Fn.current=H},[H]),(0,x.useEffect)(()=>{Tt.current=r},[r]),(0,x.useEffect)(()=>{Kn.current=o},[o]),(0,x.useEffect)(()=>{Pn.current=t},[t]),(0,x.useEffect)(()=>{Ke.current=Ve},[Ve]),(0,x.useEffect)(()=>{st&&we.current?.focus()},[st,Ve]);let rn=(0,x.useCallback)(()=>{window.setTimeout(()=>{we.current?.focus()},0)},[]),At=(0,x.useCallback)(()=>{Z(!1),at(v=>v+1)},[]),on=(0,x.useCallback)(()=>{je(!1),(re.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??re.current)?.focus?.()},[]);(0,x.useEffect)(()=>{!Ee||!J.current||(J.current=!1,on())},[on,Ee,Ve]);let cn=(0,x.useCallback)((v,nt)=>{let le=nt?.popupBlocked??io(v);le&&z.markBlocked();let kn=oo("PayPal",le,K.inAppBrowser),Gn=Wn.current;if(Gn){let Yt=le&&K.inAppBrowser?new Kt.FloPayError(kn,"api_error",{code:nt?.code??"paypal_popup_blocked"}):v;Gn("paypal",Yt,nt);return}bn.current?.(kn)},[z,K.inAppBrowser]),Nt=(0,x.useCallback)(v=>{let nt=Ce.current,le=Be.current;nt===null||!le||(Ae.log({...le,popupCapability:z.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:v}),Ae.performance({...le,popupCapability:z.current(),stage:"overlay_return",durationMs:Ae.elapsed(nt),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:v}),Ce.current=null)},[z,Ae]),dn=(0,x.useCallback)((v,nt,le)=>{let kn=Be.current;Nt("overlay_timeout"),kn&&Ae.error({...kn,popupCapability:z.current(),errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),cn(nt,{...le,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:Se,terminalReason:"overlay_timeout"}),je(!0),At(),rn()},[Nt,rn,cn,z,Se,At,Ae]),zt=(0,x.useCallback)(()=>{z.markAvailable();let v=Be.current;v&&(Y.current=v.attempt,Ae.log({...v,popupCapability:z.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[z,Ae]),{finishAttempt:un,generationRef:Ut,invalidateAttempt:ue,isAttemptCurrent:dr,isAttemptInvalidated:pr,startAttempt:mr}=ka(dn,{onHandoffObserved:zt}),an=(0,x.useCallback)(()=>(je(!1),mr("paypal")),[mr]),Bn=(0,x.useCallback)(v=>{ue(v?.generation),v?.showRetry&&je(!0),v?.remount&&At(),v?.focus!==!1&&rn()},[rn,ue,At]),En=v=>{let nt=Wt.current;return nt&&ur.current.set(v,nt),v};(0,x.useEffect)(()=>{oe.current!==B&&(oe.current=B,St.current=!1,Lt.current=!1,Z(!1),He(!1),Et(!1),Dt.current?.("loading"))},[B]),(0,x.useEffect)(()=>{Je(()=>wn.current?.(Ee&&!Pt))},[Ee,Pt]);let Oe=(0,Kt.normalizeGatewayEnvironment)(c);(0,x.useEffect)(()=>{let v={attempt:Ut.current+1,inAppBrowser:K.inAppBrowser,appFamily:K.appFamily,popupCapability:z.current(),presentationMode:Se},nt=()=>({...Be.current??v,popupCapability:z.current()}),le={error:m=>Ae.error({...m,...nt()}),log:m=>Ae.log({...m,...nt()}),performance:m=>Ae.performance({...m,...nt()}),terminal:m=>Ae.terminal({...m,...nt()}),startTiming:Ae.startTiming,elapsed:Ae.elapsed},kn=i?`${i.slice(0,6)}\u2026(len ${i.length})`:"(empty)",Gn=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(De(`mount clientId=${kn} env=${c??"(unset)"}\u2192${Oe??"live"} ccy=${p} sub=${u}`),De(`ua=${Gn.slice(0,80)}${Gn.length>80?"\u2026":""}`),!i){De("FAIL: clientId empty \u2014 gateway misconfigured"),Et(!0),le.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(!re.current){De("FAIL: containerRef not attached");return}se.current=le.startTiming(),le.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Yt=!1,Dn=!1,ht=()=>Yt||Dn,yr,po=!1,Mt=()=>{yr=(0,Kt.generateIdempotencyKey)(),yr||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),po=!0},On=null,Rr=!1,tr=null,Xt=!1,fr=()=>{!tr||Xt||(Xt=!0,tr.close().catch(()=>{}))},Ln=!1,Ur=!1,Nn=re.current,_r=null,Er=null,zr=[],Yn=null,nr=!1,qr=!1,Ot=null,In=m=>{if(!m||typeof m.getBoundingClientRect!="function")return"(no rect)";let y=m.getBoundingClientRect();return`${Math.round(y.width)}\xD7${Math.round(y.height)}`},rr=m=>{if(!m)return"(empty)";try{let y=new URL(m,typeof window>"u"?"https://localhost":window.location.href),D=y.pathname.toLowerCase();return D.includes("checkcaptcha")||D.includes("captcha")?`CAPTCHA(${y.host}${D})`:D.includes("risk")||D.includes("challenge")?`RISK(${y.host}${D})`:D.includes("smart/buttons")?`smart-buttons(${y.host})`:`${y.host}${D}`.slice(0,100)}catch{return m.slice(0,80)}},gr=m=>{let y=m.getAttribute("src"),D=m.getAttribute("srcdoc"),U=m.getAttribute("name"),Re=m.getAttribute("sandbox"),ge=[];return y&&ge.push(`src=${rr(y)}`),D&&ge.push(`srcdoc[${D.length}ch]`),!y&&!D&&ge.push("src=(empty) srcdoc=(empty)"),U&&ge.push(`name=${U.slice(0,40)}`),Re!==null&&ge.push(`sandbox="${Re.slice(0,40)}"`),ge.join(" ")},Ir=m=>{if(!(m instanceof HTMLIFrameElement))return"";try{let y=m.contentDocument;if(!y)return"cd=null";let D=y.body?.children.length??0,U=y.body?.innerHTML.length??0,Re=y.head?.innerHTML.length??0;return`cd=same-origin readyState=${y.readyState} body[${D}children,${U}ch] head[${Re}ch]`}catch(y){return`cd=cross-origin(${y.message.slice(0,30)})`}},lt=[],pn=m=>{if(ht())return;let y=m.message??String(m.error??"(no message)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(De(`window:error ${y.slice(0,140)}`),lt.push(y))},mn=m=>{if(ht())return;let y=m.reason instanceof Error?m.reason.message:String(m.reason??"(no reason)");y&&(y.toLowerCase().includes("paypal")||y.toLowerCase().includes("zoid")||y.toLowerCase().includes("postrobot")||y.toLowerCase().includes("storage"))&&(De(`window:rejection ${y.slice(0,140)}`),lt.push(y))},Tn={value:0},mo=()=>{_r?.disconnect(),_r=null,Er?.disconnect(),Er=null;for(let m of zr.splice(0))clearTimeout(m);qr=!1,nr&&typeof window<"u"&&(window.removeEventListener("error",pn),window.removeEventListener("unhandledrejection",mn)),nr=!1},Tr=()=>{if(!(nr||ht()||Ln)){if(nr=!0,lt.length=0,Tn.value=0,typeof window<"u"&&(window.addEventListener("error",pn),window.addEventListener("unhandledrejection",mn)),typeof PerformanceObserver<"u")try{Er=new PerformanceObserver(m=>{if(!ht())for(let y of m.getEntries()){if(!y.name.toLowerCase().includes("paypal"))continue;Tn.value+=1;let D=Math.round(y.duration);De(`net ${D}ms ${y.name.slice(0,90)}`)}}),Er.observe({type:"resource",buffered:!0})}catch{}Ot?.()}},Zr=()=>{Yn&&(clearTimeout(Yn),Yn=null)},An=()=>{mo(),Zr()},yn={setEnabled:m=>{m?Tr():mo()}};tt.current=yn,Ie.current&&Tr();let hr=m=>{if(!m)return!1;let y=m.toLowerCase();return y.includes("zoid destroyed")||y.includes("destroyed all components")||y.includes("window closed")||y.includes("detected container element removed")},vn=m=>{if(ht()||hr(m))return;let y=no(m)??m;Je(()=>bn.current?.(y))},L=(m,y)=>{if(Yt||Rr)return;Rr=!0,Dn=!0,An(),fr();let D=ld({kind:m,generationActive:!0,automaticRetryAllowed:k,automaticRetryUsed:St.current});if(D.action==="retry"){St.current=!0,Z(!1),ve(!1),He(!0),Dt.current?.("retrying"),On=setTimeout(()=>{Yt||at(U=>U+1)},od);return}if(Z(!1),ve(!1),He(!1),Et(!0),D.action!=="ignore"){if(Dt.current?.("exhausted"),D.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",y);return}if(D.report){let U=ao({code:ec(m,y),message:y},{inAppBrowser:K.inAppBrowser,handoffObserved:!1});U.popupBlocked&&z.markBlocked(),le.error({errorCode:U.popupBlocked?U.errorCode:D.report.errorCode,stage:D.report.stage,operationOutcome:D.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:U.terminalReason})}Lt.current||(Lt.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",ec(m,y)))}};Et(!1);let $=async(m,y=Wt.current)=>{if(ht())return;let D=y?.sessionId??e;if(xn.current){await xn.current(m,{sessionId:D,accountPatch:y?.accountPatch,nonce:y?.nonce});return}let U=le.startTiming();le.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let Re=()=>{le.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),le.performance({stage:"processing",durationMs:le.elapsed(U),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let ge=Fn.current,Rt=y?.accountPatch?.email??Tt.current,qt=y?.accountPatch?.userId??ge?.customer?.id??ge?.accountData?.userId??"",$e=y?.accountPatch?.firstName??ge?.customer?.firstName??ge?.accountData?.firstName,Ge=y?.accountPatch?.lastName??ge?.customer?.lastName??ge?.accountData?.lastName,pe=await new ci.PaymentAPI(kt,{telemetry:!1}).processPayment(qt,{sessionId:D,nonce:y?.nonce??Pn.current,paymentMethodCategory:"paypal",tokenizedData:m,accountData:{userId:qt,email:Rt??ge?.customer?.email??"",...$e?{firstName:$e}:{},...Ge?{lastName:Ge}:{},country:y?.accountPatch?.country??ge?.customer?.country??ge?.accountData?.country??void 0,zip:y?.accountPatch?.zip??ge?.customer?.zip??ge?.accountData?.zip??void 0}});if(pe.ok){if(Dn||Yt&&er.current)return;Re(),le.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),Je(()=>$n.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(ht())return;let he=await pe.json().catch(()=>null),E=he?.message??"PayPal payment failed.",me=no(E)??E;Re(),pe.status===400&&(typeof he?.declineCode=="string"||!Array.isArray(he?.fields))?le.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):pe.status===400||pe.status===422?le.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):le.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:ud(pe.status),failureCategory:pe.status>=500?"server_error":void 0}),vn(me),Je(()=>$t.current?.(fn("paypal",me,{code:he?.code,declineCode:he?.declineCode})));return}catch(ge){if(ht())return;Re(),le.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let Rt=ge instanceof Error?ge.message:"PayPal payment failed.",qt=no(Rt)??Rt;vn(qt),Je(()=>$t.current?.(fn("paypal",qt)));return}},ce=()=>new Kt.FloPayError("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),Me=m=>ht()?Promise.reject(ce()):Promise.resolve(m),Ct=async m=>{if(ht())throw ce();po||Mt();let y=Wt.current,D=y?.sessionId??e,U=y?.nonce??Pn.current;le.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let Re;try{Re=await new ci.PaymentAPI(kt,{telemetry:!1}).createSessionIntent(D,U??"",F?{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:Kt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE,paymentMethodId:null,intentKind:S==="setup_token"?"setup":"payment"}:{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:null,intentKind:"payment"},{idempotencyKey:yr})}catch(ge){throw le.error({...(0,Kt.classifyTelemetryFailure)(ge,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),ge}if(ht())throw ce();if(Re.provider!=="paypal"||Re.providerObjectType!==S)throw new Error(m);return le.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),Re.providerObjectId},Jt=(m,y)=>{let D=y?.nonce??Pn.current;if(!D)return;let U=y?.sessionId??e,Re=$o(m)??Br(m)??"provider_declined";new ci.PaymentAPI(kt,{telemetry:!1}).reportSessionIntentDecline(U,D,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Re}).catch(()=>{})},ke=Ve;De("loadScript:scheduled (deferred 1 tick)");let de=null,ee=setTimeout(()=>{if(Yt){De("loadScript:skipped (cancelled before defer ran)");return}De("loadScript:start");let m=Oe==="live"?"production":Oe,y={};S==="subscription"?y={intent:"subscription",vault:!0}:S==="order"&&(y={intent:"capture"}),de=(0,tc.loadScript)({clientId:i,currency:p,...y,...m?{environment:m}:{},...m==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let D=!1;de.then(U=>{if(D=!0,De(`loadScript:resolved inactive=${ht()} ns=${!!U} buttons=${!!U?.Buttons}`),ht())return;if(!U?.Buttons){De("FAIL: namespace missing Buttons factory"),L("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}le.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),le.performance({stage:"provider_ready",durationMs:le.elapsed(se.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),le.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let Re=async(pe,he)=>{if(ht()||Ke.current!==ke)return;let E=pe.vaultSetupToken??pe.subscriptionID??pe.orderID??"",me=E?ur.current.get(E):nn.current.get(ke);if(!(!me||!dr(me.generation))&&un(me.generation)){ur.current.delete(E),nn.current.delete(me.surfaceKey),Nt("approved");try{if(ve(!0),Je(()=>bn.current?.(null)),!E)throw new Kt.FloPayError("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let pt=Fn.current,xt=bo(Kn.current??[pt?.customer?.firstName,pt?.customer?.lastName].filter(Boolean).join(" ")),ae=qn({email:me.accountPatch?.email?.trim()||Tt.current?.trim()||pt?.customer?.email?.trim(),firstName:me.accountPatch?.firstName?.trim()||xt.firstName,lastName:me.accountPatch?.lastName?.trim()||xt.lastName});if(!(0,Kt.isValidEmail)(ae.email)||!(ae.firstName||ae.lastName))try{let ot=cd(await he?.order?.get?.());ae=qn({email:ot.email||ae.email,firstName:ot.firstName||ae.firstName,lastName:ot.lastName||ae.lastName})}catch{}if((dt.current||Xe)&&!(0,Kt.isValidEmail)(ae.email)){let ot=await X("PayPal",ae);if(!ot)return;ae=ot}(0,Kt.isValidEmail)(ae.email)&&(me.accountPatch=qn({...me.accountPatch,...ae}),await dt.current?.(ae));let Rn;S==="setup_token"?Rn={id:E,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:Kt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE}:F?Rn={id:E,isPaypal:!0,gateway:"paypal",paymentMethodType:Kt.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE}:Rn={id:E,isPaypal:!0},await $(Rn,me)}catch(pt){vn(pt instanceof Error?pt.message:"PayPal capture failed.")}finally{ht()||ve(!1)}}},ge=pe=>{let he=_e?()=>Me(_e):()=>Ct(pe);return async()=>En(await he())},Rt=U.Buttons({style:{layout:"horizontal",height:ui,tagline:!1},...Se==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(pe,he)=>{if(ht()){await he.reject();return}Mt();let E=rt.current,me={};if(E)try{let ae=await E("paypal");if(ht()){await he.reject();return}if(!ae.proceed){Wt.current=null,nn.current.delete(ke),await he.reject();return}me={sessionId:ae.sessionId,accountPatch:ae.accountPatch,nonce:ae.nonce}}catch(ae){De(`onClick:runBeforeButtonClick rejected msg=${(ae instanceof Error?ae.message:String(ae)).slice(0,120)}`),Wt.current=null,nn.current.delete(ke),await he.reject();return}Je(()=>Hn.current?.("paypal"));let pt=an(),xt={generation:pt,surfaceKey:ke,...me};Wt.current=xt,nn.current.set(ke,xt),Be.current={...v,attempt:pt},await he.resolve(),le.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),le.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),Ce.current=le.startTiming()},createOrder:S==="order"?ge("Failed to create PayPal order."):void 0,createSubscription:S==="subscription"?ge("Failed to create PayPal subscription."):void 0,createVaultSetupToken:S==="setup_token"?async()=>En(await Ct("Failed to create PayPal setup token.")):void 0,onApprove:Re,onCancel:()=>{if(ht())return;let pe=nn.current.get(ke)??Wt.current;pe&&nn.current.delete(pe.surfaceKey),Wt.current=null,Nt("cancelled"),le.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),J.current=!0,Bn({generation:pe?.generation,remount:!0,focus:!1})},onError:pe=>{if(ht()||Ke.current!==ke)return;let he=pe instanceof Error?pe.message:"PayPal failed to render.";if(De(`onError rendered=${Ln} msg=${he.slice(0,120)}`),Ln){let E=nn.current.get(ke)??Wt.current;if(E&&!dr(E.generation)||!E&&pr())return;if(hr(he)){un(E?.generation);return}let{errorCode:me,popupBlocked:pt,providerDeclined:xt,terminalReason:ae}=ao(pe,{inAppBrowser:K.inAppBrowser,handoffObserved:E!=null&&Y.current===E.generation});if(pt&&z.markBlocked(),Nt(ae),xt){le.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:ae}),Jt(pe,E),Je(()=>$t.current?.(fn("paypal",he))),E&&nn.current.delete(E.surfaceKey),Wt.current=null,un(E?.generation);return}le.error({errorCode:me,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:ae}),E&&nn.current.delete(E.surfaceKey),Wt.current=null,Bn({generation:E?.generation,remount:!0,showRetry:!0,focus:!0}),cn(pe,{code:"paypal_runtime_failed",popupBlocked:pt,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:Se,terminalReason:ae});return}L(hr(he)?"teardown":"pre_ready_callback",he)}}),qt=Rt.isEligible();if(De(`isEligible=${qt}`),le.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!qt){Z(!1),L("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}Ur=!0,tr=Rt,Ot=()=>{if(!nr||qr||ht()||Ln)return;qr=!0,De(`container:dims ${In(Nn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(_r=new MutationObserver(he=>{if(!ht()){for(let E of he)if(E.type==="childList")E.addedNodes.forEach(me=>{if(!(me instanceof Element))return;let pt=me.tagName.toLowerCase(),xt=(me.getAttribute("title")??"").slice(0,40),ae=pt==="iframe"?` ${gr(me)}`:"";De(`child+ ${pt}${xt?` title="${xt}"`:""}${ae} dims=${In(me)}`)});else if(E.type==="attributes"&&E.target instanceof Element){let me=E.target;if(me.tagName.toLowerCase()!=="iframe")continue;let pt=E.attributeName;(pt==="src"||pt==="srcdoc")&&De(`attr~ iframe ${pt}=${pt==="srcdoc"?`[${(me.getAttribute("srcdoc")??"").length}ch]`:rr(me.getAttribute("src"))} dims=${In(me)}`)}}}),_r.observe(Nn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let pe=he=>{if(ht()||Ln)return;let E=Nn.querySelectorAll("iframe"),me=typeof document<"u"&&"hasStorageAccess"in document;De(`watchdog:${he} container=${In(Nn)} children=${Nn.childElementCount} iframes=${E.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${me} paypalNetRequests=${Tn.value}`),E.forEach((pt,xt)=>{let ae=(pt.getAttribute("title")??"").slice(0,40);De(` iframe[${xt}] ${In(pt)}${ae?` title="${ae}"`:""} ${gr(pt)}`);let Rn=Ir(pt);Rn&&De(` ${Rn}`)}),lt.length===0&&De(" (no PayPal/zoid window errors captured)")};zr.push(setTimeout(()=>pe("3s"),3e3)),zr.push(setTimeout(()=>pe("8s"),8e3)),zr.push(setTimeout(()=>pe("15s"),15e3))},Ot(),De("render:start");let Ge=le.startTiming();Yn=setTimeout(()=>{ht()||Ln||(De("watchdog:11s retryable render timeout"),L("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},ad);let ct=Rt.render(Nn);(async()=>{try{if(await ct,De(`render:resolved inactive=${ht()}`),An(),ht()){fr();return}Ln=!0,Z(!0),He(!1),Dt.current?.("ready"),le.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),le.performance({stage:"checkout_render",durationMs:le.elapsed(Ge),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(pe){let he=pe instanceof Error?pe.message:"PayPal failed to render.";De(`render:rejected msg=${he.slice(0,120)}`),An(),L(hr(he)?"teardown":"render_rejected",he)}})()}).catch(U=>{let Re=U instanceof Error?U.message:"PayPal operation failed.";De(`provider:failed msg=${Re.slice(0,120)}`);let ge="script_rejected";D&&hr(Re)?ge="teardown":D&&Ur&&(ge="render_rejected"),L(ge,Re)})},0);return()=>{Yt=!0,clearTimeout(ee),On&&clearTimeout(On),An(),tt.current===yn&&(tt.current=null),fr(),Ce.current=null,Be.current=null}},[k,kt,i,p,c,S,Se,F,e,_e,Ve,Ae,X,Xe,De,Nt]);let ft=be?(0,ir.jsxs)("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:Pt?"#fef2f2":"#f3f4f6",border:`1px solid ${Pt?"#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=${Ee} failed=${Pt})`,gt.length===0?`
1
+ "use strict";var Oc=Object.create;var $a=Object.defineProperty;var Lc=Object.getOwnPropertyDescriptor;var Nc=Object.getOwnPropertyNames;var Uc=Object.getPrototypeOf,zc=Object.prototype.hasOwnProperty;var qc=(e,t)=>{for(var r in t)$a(e,r,{get:t[r],enumerable:!0})},sl=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Nc(t))!zc.call(e,o)&&o!==r&&$a(e,o,{get:()=>t[o],enumerable:!(n=Lc(t,o))||n.enumerable});return e};var $i=(e,t,r)=>(r=e!=null?Oc(Uc(e)):{},sl(t||!e||!e.__esModule?$a(r,"default",{value:e,enumerable:!0}):r,e)),jc=e=>sl($a({},"__esModule",{value:!0}),e);var mu={};qc(mu,{DirectPayPalButton:()=>ha,FloPayAutomaticPaymentButton:()=>nc,FloPayCardSetup:()=>ac,FloPayCardSetupError:()=>xa,FloPayCheckout:()=>vi,FloPayPaymentMethodSetup:()=>gc,FloPayProvider:()=>va,SplitCardForm:()=>fi,VaultCardFields:()=>co,dropThirdPartyOnlyError:()=>Pc.dropThirdPartyOnlyError,useCheckout:()=>Pl,useFloPay:()=>Zn,usePayPalFloPay:()=>Ga});module.exports=jc(mu);var Pc=require("@flopay/shared");var bi=require("@flopay/js"),un=require("@flopay/shared"),pt=require("react");var Wt=require("react/jsx-runtime");function Vc(){return(0,Wt.jsxs)(Wt.Fragment,{children:[(0,Wt.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,Wt.jsx)("rect",{width:"20",height:"14",x:"2",y:"5",rx:"2"}),(0,Wt.jsx)("line",{x1:"2",x2:"22",y1:"10",y2:"10"})]}),"Credit / Debit Card",(0,Wt.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,Wt.jsx)("path",{d:"M9 18l6-6-6-6"})})]})}function $c(){return(0,Wt.jsx)(Wt.Fragment,{children:"Go back"})}function Wc(){return(0,Wt.jsx)(Wt.Fragment,{children:"Secure card checkout"})}function Bo(e){return e!==void 0&&(e===""||e===null||e===!1)}function Do({content:e}){return(0,Wt.jsx)(Wt.Fragment,{children:e===void 0?(0,Wt.jsx)(Vc,{}):e})}function Oo({content:e}){return(0,Wt.jsx)(Wt.Fragment,{children:e===void 0?(0,Wt.jsx)($c,{}):e})}function ua({content:e}){return(0,Wt.jsx)(Wt.Fragment,{children:e===void 0?(0,Wt.jsx)(Wc,{}):e})}var gt=require("@flopay/shared"),Rn=require("@flopay/shared"),Uo=require("@flopay/shared"),Po=require("@flopay/shared"),Hc="Checkout is temporarily unavailable. Please try again later.";function Wi(e){return{errorCode:"PROVIDER_LOAD_FAILED",failureCategory:e instanceof gt.FloPayError&&e.type==="authentication_error"?"invalid_response":"provider_runtime",stage:"provider_load",provider:"stripe",requestCategory:"provider_sdk"}}function Kc(e){return e.type==="validation_error"||e.code==="checkout_session_not_found"||e.code==="checkout_session_expired"||e.code==="checkout_session_completed"||e.code==="session_auto_completed"}function ll(){return new gt.FloPayError(Hc,"api_error",{code:"CheckoutInitializationFailed"})}function cl(e,t,r){let n=e?.data.session,o=n?.gateways?.stripe?.enabledPaymentMethods??e?.data.stripe?.enabledPaymentMethods;return!!(r&&((0,gt.isMountableVaultBlock)(n?.vault)||n?.gateways?.pcivault||o?.includes("card")||(0,gt.canRecoverHostedCardForm)(n))||t&&e?.data.paypal?.publishableKey)}function dl(e,t){if(t&&(!(e instanceof gt.FloPayError)||e.type==="authentication_error"))return Wi(e);if(!(e instanceof gt.FloPayError&&Kc(e))){if(!t&&!(e instanceof gt.FloPayError)&&(e instanceof TypeError||e instanceof SyntaxError))return{...(0,gt.classifyTelemetryFailure)(e,"NETWORK_REQUEST_FAILED"),stage:"session_read",requestCategory:"session_read"};if(!t&&e instanceof gt.FloPayError)return{errorCode:"NETWORK_REQUEST_FAILED",stage:"session_read",requestCategory:"session_read"};if(!(e instanceof gt.FloPayError))return{errorCode:"INTERNAL_SDK_ERROR",stage:"checkout_mount"}}}function Lo(e,t,r,n={}){let o;return(i={})=>{if(o!==void 0)return o;let l={...n,...i,email:i.email?.trim()||n.email?.trim()},d=(0,gt.isCardHolderNamePlaceholder)(l.firstName,l.lastName);if(!(0,gt.isValidEmail)(l.email))return Promise.reject(new gt.FloPayError("A valid buyer email is required before claiming checkout.","validation_error",{code:"BuyerEmailCollectionRequired",param:"account.email"}));let p={};for(let[b,k]of Object.entries(l)){if(d&&b.endsWith("Name")||typeof k!="string")continue;let w=k.trim();w&&(p[b]=w)}return o=e.claimCheckoutSession(t,r,{accountData:p}),o.catch(()=>{}),o}}function ul(e,t){if(!t)return e;if(!e)return t;let r;return"checkoutMetadata"in t?r=t:"checkoutMetadata"in e&&(r=e),{account:{...e.account??{},...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,...r?{checkoutMetadata:r.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}}function Hi(e,t){return t?{...e,account:{...e.account,...t.account??{}},couponCodes:t.couponCodes??e.couponCodes,..."checkoutMetadata"in t?{checkoutMetadata:t.checkoutMetadata}:{},tagsData:{...e.tagsData??{},...t.tagsData??{}},utmMetadata:t.utmMetadata??e.utmMetadata}:e}function pl(e,t){let r=e.products??[...(e.subscriptions??[]).map(i=>({type:"subscription",code:i.code??i.providerPlanId,name:i.subscriptionName??i.providerPlanName??i.code??i.providerPlanId??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount,currency:i.currency,metadata:i.metadata})),...(e.items??[]).map(i=>({type:"item",code:i.code??i.providerItemId,name:i.itemName??i.providerItemName??i.code??i.providerItemId??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount,currency:i.currency,metadata:i.metadata}))],n=r.reduce((i,l)=>i+(l.overrideAmount??l.totalAmount??0),0),o=e.currency??r.find(i=>i.currency)?.currency??"USD";return{id:"",clientSecret:"",mode:r.some(i=>i.type==="subscription")?"subscription":"payment",amount:Math.round(n*100),currency: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:r.map((i,l)=>({uuid:`synthetic-${i.type??"item"}-${l}`,checkoutSessionId:"",type:i.type??"item",code:i.code,name:i.name??null,quantity:i.quantity??1,totalAmount:i.totalAmount,overrideAmount:i.overrideAmount??null,currency:i.currency??o,metadata:i.metadata??null}))}}function Ki(e,t){return t?{...e,...t}:e}function gr(e,t,r){let n=typeof t=="string"?t:t.message,o=typeof t=="string"?r?.code:r?.code??t.code,i=typeof t=="string"?r?.declineCode:r?.declineCode??t.declineCode,l=typeof t=="string"?void 0:t.sessionId;return{method:e,message:n,...o?{code:o}:{},...i?{declineCode:i}:{},...l?{sessionId:l}:{}}}function so(e,t){return t&&e.sessionId===void 0&&Object.defineProperty(e,"sessionId",{value:t,enumerable:!0}),e}function Yn(e,t){return e.status!=="authorized"?{status:"succeeded"}:{status:"authorized",paymentId:e.paymentId,sessionId:e.id||t||void 0,authorizationExpiresAt:e.authorizationExpiresAt}}function Xn(e){return e?.status==="authorized"||e?.status==="complete"}function lo(e,t){if(e.data.session)return e.data.session;let r=e.raw,n=r?.latestTransactionAttempt?.result,o=r?.status==="authorized"||n==="AUTHORIZED";return o||r?.status==="completed"||n==="SUCCESS"?{...t,status:o?"authorized":"complete"}:r?.status==="expired"?{...t,status:"expired"}:void 0}function ml(e){return e?.status==="expired"&&(e.failureOutcome==="authorization_expired"||e.captureMethod==="manual")}function Wa(e){let t=ml(e);return new gt.FloPayError(t?"Authorization has expired.":"Checkout session has expired.","api_error",{code:t?"authorization_expired":"checkout_session_expired"})}function Ha(e){return e instanceof gt.FloPayError||typeof e=="object"&&e!==null&&"code"in e?e.code:void 0}function No(e){return ml(e)?new gt.FloPayError("Authorization has expired.","api_error",{code:"authorization_expired"}):e?.status==="expired"?new gt.FloPayError("Automatic payment failed. Please try again.","api_error",{code:"checkout_session_expired"}):new gt.FloPayError(gt.CHECKOUT_PROCESSING_TIMEOUT_MESSAGE,"api_error",{code:"checkout_processing_timeout"})}function pa(e,t){return e==="processing"||(0,gt.isMoneySettledOutcome)(e,t)}function yl(e){return e==="succeeded"?"succeeded":e==="processing"||e==="requires_capture"?"processing":"failed"}async function fl(e,t){let r=e;if((0,gt.isSetupIntentClientSecret)(t)){if(!r?.retrieveSetupIntent)return null;let{setupIntent:i,error:l}=await r.retrieveSetupIntent(t);if(l)throw new gt.FloPayError(l.message??"Failed to retrieve setup intent.","api_error",{...l.code?{code:l.code}:{}});return i??null}if(!r?.retrievePaymentIntent)return null;let{paymentIntent:n,error:o}=await r.retrievePaymentIntent(t);if(o)throw new gt.FloPayError(o.message??"Failed to retrieve payment intent.","api_error",{...o.code?{code:o.code}:{}});return n??null}var Gc=["apple_pay","google_pay"];function gl(e,t="automatic",r){let n=(0,gt.resolveSetupFutureUsage)(r,Gc,"wallet");return{...(0,gt.resolveWalletModeOptions)(e,t),paymentMethodTypes:["card"],...n?{setupFutureUsage:n}:{}}}var Yc=new Set(["payment_intent_unexpected_state","setup_intent_unexpected_state"]);function Gi(e){let t=e&&typeof e=="object"?e:null;return t?.name==="IntegrationError"||t?.code==="elements_intent_mismatch"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:"deferred_contract_mismatch"}:t?.type==="invalid_request_error"?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:Yc.has(t.code)?"intent_unexpected_state":"invalid_request"}:{errorCode:"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime"}}function ma(e){let t=[e?.id,e?.originalPaymentMethodId];for(let r of t)if(typeof r=="string"&&r.startsWith("pm_"))return r}var to=require("@flopay/js"),ze=require("@flopay/shared"),C=$i(require("react"),1);var Yi=require("react"),on=(0,Yi.createContext)({flopay:null,paypalFlopay:null,billingApiUrl:""}),En=(0,Yi.createContext)({session:null,loading:!1,error:null});var Za=require("@flopay/js"),at=require("@flopay/shared"),Sl=require("@paypal/paypal-js"),I=require("react");var Ka=require("@flopay/shared"),In=require("react"),an=require("@flopay/shared"),Jn=require("react/jsx-runtime");function zo(){let[e,t]=(0,In.useState)(null),r=(0,In.useRef)(null),n=(0,In.useRef)(0),o=(0,In.useCallback)((l,d)=>(r.current?.(null),n.current+=1,t({id:n.current,methodLabel:l,identity:d}),new Promise(p=>{r.current=p})),[]),i=(0,In.useCallback)(l=>{let d=r.current;r.current=null,t(null),d?.(l)},[]);return(0,In.useEffect)(()=>()=>{r.current?.(null),r.current=null},[]),{request:e,collect:o,finish:i}}function qo({identity:e,methodLabel:t,onComplete:r,onCancel:n,submitting:o=!1,testId:i="flopay-buyer-identity-pane"}){let[l,d]=(0,In.useState)(e.email?.trim()??""),p=(0,Ka.isValidEmail)(l.trim());return(0,Jn.jsxs)("div",{"data-testid":i,style:{display:"flex",flexDirection:"column",gap:"0.75rem",padding:"0.875rem",border:"1px solid #d1d5db",borderRadius:8,background:"#fff",color:"#262833"},children:[(0,Jn.jsxs)("div",{style:{fontWeight:700},children:["Continue with ",t]}),(0,Jn.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,Jn.jsx)("input",{type:"email",autoComplete:"email","data-testid":"flopay-email",required:!0,value:l,onChange:b=>d(b.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]}),(0,Jn.jsxs)("div",{style:{display:"flex",gap:"0.5rem"},children:[n&&(0,Jn.jsx)("button",{type:"button",onClick:n,style:{flex:1,minHeight:42},children:"Cancel"}),(0,Jn.jsxs)("button",{type:"button",disabled:!p||o,onClick:()=>{r((0,Ka.compactBuyerIdentity)({...e,email:l.trim()}))},style:{flex:2,minHeight:42},children:["Continue with ",t]})]})]})}var ke=require("@flopay/shared");var hl=require("@flopay/shared"),ya=require("react");function Zn(){return(0,ya.useContext)(on).flopay}function Ga(){return(0,ya.useContext)(on).paypalFlopay??null}function Pl(){return(0,ya.useContext)(En)}function vl(){return(0,ya.useContext)(on).billingApiUrl||(0,hl.resolveBillingApiUrl)()}var Xc=require("@flopay/shared"),zn=require("@flopay/shared"),qn=require("@flopay/shared");var jo=require("@flopay/shared"),bo=require("react");var Ya=require("react"),vo=typeof window>"u"?Ya.useEffect:Ya.useLayoutEffect;var Xi=require("@flopay/shared");function Vo(e,t){let r=(0,bo.useRef)(e);r.current=e;let n=(0,bo.useRef)(new Set),o=(0,bo.useRef)(t),i=(0,bo.useRef)(t);return vo(()=>{i.current=t,o.current!==t&&(o.current=t,n.current.clear())},[t]),(0,bo.useCallback)(l=>{if(i.current!==t)return;let d=(0,jo.projectFloInstrument)(l);if(d){if(jo.FLO_INSTRUMENT_ONCE_NAMES.has(d.name)){if(n.current.has(d.name))return;n.current.add(d.name)}(0,jo.invokeMerchantCallback)(()=>r.current?.(d))}},[t])}var tt=require("@flopay/shared");var bl=require("react"),fa=(0,bl.createContext)(null);function Xa(){let e="unknown";return{current:()=>e,markAvailable:()=>e!=="unknown"?!1:(e="available",!0),markBlocked:()=>e==="blocked"?!1:(e="blocked",!0)}}var Jc=Symbol.for("@flopay/js.telemetry.bridge.v1"),Zc=Symbol.for("@flopay/js.telemetry.reporter-factory.v1");function Qc(){return{error:()=>{},log:()=>{},performance:()=>{},terminal:()=>{},now:()=>globalThis.performance?.now()??0,elapsed:e=>Math.max(0,(globalThis.performance?.now()??e)-e),setCheckoutContext:()=>{},beginCheckout:()=>globalThis.performance?.now()??0,disable:()=>{},subscribe:()=>()=>{},flush:async()=>{},destroy:()=>{}}}function ed(e){let t=Qc(),r=(o,i)=>o?o.bind(e):i,n=r(e.now,t.now);return{error:r(e.error,t.error),log:r(e.log,t.log),performance:r(e.performance,t.performance),terminal:r(e.terminal,t.terminal),now:n,elapsed:e.elapsed?e.elapsed.bind(e):o=>Math.max(0,n()-o),setCheckoutContext:r(e.setCheckoutContext,t.setCheckoutContext),beginCheckout:r(e.beginCheckout,t.beginCheckout),disable:r(e.disable,t.disable),subscribe:r(e.subscribe,t.subscribe),flush:r(e.flush,t.flush),destroy:r(e.destroy,t.destroy)}}function Ja(e){let t=globalThis[Zc];return ed(t?.(e)??{})}function hr(e){if(e)return e[Jc]}var cr=require("react");function ga(e,t){let r=(0,cr.useRef)(0),n=(0,cr.useRef)(null),o=(0,cr.useRef)(null),i=(0,cr.useRef)(e),l=(0,cr.useRef)(t?.onHandoffObserved),d=(0,cr.useRef)(t?.defersMissingTerminal),p=(0,cr.useRef)(t?.onMissingTerminalDeferred);(0,cr.useEffect)(()=>{i.current=e,l.current=t?.onHandoffObserved,d.current=t?.defersMissingTerminal,p.current=t?.onMissingTerminalDeferred},[e,t?.onHandoffObserved,t?.defersMissingTerminal,t?.onMissingTerminalDeferred]);let b=(0,cr.useCallback)((h=o.current)=>{h?.timer&&(clearTimeout(h.timer),h.timer=null)},[]),k=(0,cr.useCallback)(h=>{b();let v=r.current+1;return r.current=v,n.current=null,o.current={generation:v,method:h,timer:null,yieldedControl:!1},v},[b]),w=(0,cr.useCallback)(h=>{let v=o.current;return h!==void 0&&v?.generation!==h?!1:(b(v),o.current=null,(h===void 0||n.current===h)&&(n.current=null),!0)},[b]),x=(0,cr.useCallback)(h=>{let v=o.current,te=h??v?.generation??r.current;(h===void 0||v?.generation===h)&&(b(v),o.current=null),n.current=te},[b]),O=(0,cr.useCallback)(h=>n.current===(h??r.current),[]),M=(0,cr.useCallback)(h=>o.current?.generation===h&&n.current!==h,[]),W=(0,cr.useCallback)(()=>{let h=o.current;h&&(b(h),!h.yieldedControl&&(h.yieldedControl=!0,l.current?.(h.method)))},[b]),_=(0,cr.useCallback)(()=>{let h=o.current;!h?.yieldedControl||document.visibilityState!=="visible"||(b(h),h.timer=setTimeout(()=>{if(h.timer=null,o.current?.generation===h.generation){if(d.current?.(h.method)){p.current?.(h.method,h.generation);return}o.current=null,n.current=h.generation,i.current(h.method,new Error("External payment method returned without a terminal callback."),{code:"external_method_missing_terminal_callback"})}},ke.EXTERNAL_METHOD_CALLBACK_GRACE_MS))},[b]);return(0,cr.useEffect)(()=>{let h=()=>{document.visibilityState==="visible"?_():W()};return document.addEventListener("visibilitychange",h),window.addEventListener("blur",W),window.addEventListener("focus",_),()=>{document.removeEventListener("visibilitychange",h),window.removeEventListener("blur",W),window.removeEventListener("focus",_),b()}},[b,W,_]),{startAttempt:k,finishAttempt:w,invalidateAttempt:x,isAttemptInvalidated:O,isAttemptCurrent:M,generationRef:r}}var sn=require("react/jsx-runtime"),Qa=45,td=1e3,rd=11e3,nd={width:"100%",minHeight:Qa,margin:"0 0 0.5rem",padding:"0.75rem 0.875rem",border:"1px solid #2563eb",borderRadius:8,background:"#eff6ff",color:"#1d4ed8",fontSize:"0.95rem",fontWeight:700,cursor:"pointer"},od={script_rejected:{errorCode:"PROVIDER_LOAD_FAILED",stage:"provider_load",operationOutcome:"rejected"},namespace_unusable:{errorCode:"PROVIDER_LOAD_FAILED",stage:"provider_load",operationOutcome:"returned_error"},pre_ready_callback:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"returned_error"},render_rejected:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"rejected"},watchdog_expired:{errorCode:"PROVIDER_RUNTIME_FAILED",stage:"provider_ready",operationOutcome:"watchdog_expired"}};function ad(e){return!e.generationActive||e.kind==="teardown"?{action:"ignore"}:e.kind==="ineligible"?{action:"unavailable"}:e.automaticRetryAllowed&&!e.automaticRetryUsed?{action:"retry"}:{action:"exhaust",report:od[e.kind]??null}}function Cl(e,t){return e==="watchdog_expired"?"paypal_render_timeout":(0,ke.isPayPalAcknowledgementDeadWindow)(t)?"paypal_init_timeout":"paypal_init_failure"}function id(e){return e>=500?"5xx":e>=400?"4xx":e>=300?"3xx":"unknown"}function wl({sessionId:e,nonce:t,billingApiUrl:r,email:n,billingName:o,onBuyerIdentityReady:i,clientId:l,environment:d,currency:p,isSubscription:b,providerObjectType:k,approvalPresentation:w,onTokenizedBody:x,onComplete:O,onErrorChange:M,onDecline:W,onTechnicalFailure:_,isProcessing:h=!1,onLoadStateChange:v,onInitializationStateChange:te,allowAutomaticRetry:S=!0,onButtonClick:Pe,runBeforeButtonClick:j,session:Q,existingOrderId:Be,telemetry:se,telemetryContext:je,onInstrument:Je,debug:me=!1}){let pe=Zn(),Ke=Vo(Je,e),Re=(0,I.useMemo)(()=>{if(pe)return null;let f=Ja({billingApiUrl:r,sdkPackage:"@flopay/react",sdkVersion:at.SDK_VERSION,enabled:se!==!1});return f.setCheckoutContext(je??{}),f.beginCheckout(je??{}),f},[r,pe,se,je?.checkoutMode,je?.layout]),_e=(0,I.useMemo)(()=>hr(pe),[pe]);(0,I.useEffect)(()=>()=>{Re&&Re.flush().catch(()=>{}).finally(()=>Re.destroy())},[Re]);let Ee=(0,I.useMemo)(()=>({error:f=>{_e?_e.error(f):Re?.error(f),Ke({class:"technical_error",errorCode:f.requestCategory==="intent_create"?"PAYMENT_PROCESSING_FAILED":f.errorCode,requestCategory:f.requestCategory,provider:f.provider})},log:f=>{_e?_e.log(f):Re?.log(f),Ke({class:"lifecycle",name:f.name,provider:f.provider})},performance:f=>{_e?_e.performance(f):Re?.performance(f)},terminal:f=>{_e?_e.terminal(f):Re?.terminal(f)},startTiming:()=>_e?.now()??Re?.now()??0,elapsed:f=>_e?.elapsed(f)??Math.max(0,(Re?.now()??f)-f)}),[Ke,_e,Re]),re=(0,I.useRef)(null),ae=(0,I.useRef)(0),ge=(0,I.useRef)(null),Me=(0,I.useRef)(null),K=(0,I.useRef)(null),ee=(0,I.useContext)(fa),ye=(0,I.useRef)(null);ye.current||(ye.current=Xa());let L=ee??ye.current,ve=(0,I.useRef)(null),Y=(0,I.useRef)(!1),[be,X]=(0,I.useState)(!1),[ct,Ge]=(0,I.useState)(!1),[$e,lt]=(0,I.useState)(0),Ye=(0,I.useRef)(0),[dt,We]=(0,I.useState)(!1),Et=(0,I.useRef)(!1),Ut=(0,I.useRef)(!1),[kt,At]=(0,I.useState)(!1),[N,fe]=(0,I.useState)(!1),{request:Qe,collect:G,finish:Ne}=zo(),Rt=(0,I.useRef)({sessionId:e,required:(0,at.paypalProviderIdentityRequired)(n,Q)});Rt.current.sessionId!==e&&(Rt.current={sessionId:e,required:(0,at.paypalProviderIdentityRequired)(n,Q)});let Ze=Rt.current.required,Tt=(0,I.useMemo)(()=>r.replace(/\/+$/,""),[r]),m=Q?.gateways?.paypal?.providerObjectType??k,P=m??(b?"subscription":"order"),[H]=(0,I.useState)(zn.detectPayPalEnvironment),V=Q?.gateways?.paypal?.approvalPresentation??w,he=(0,qn.resolvePayPalPresentationMode)(H,V==="app_switch"?"app_switch":void 0,P),T=(0,at.usesPayPalVaultedChannel)(m),A=(0,I.useMemo)(()=>JSON.stringify([Tt,l,p,d??"",P,T,he,e,Be??""]),[Tt,l,p,d,Be,P,T,he,e]),ne=(0,I.useRef)(A),q=ne.current!==A,Ce=(0,I.useRef)(me),rt=(0,I.useRef)(null),[Ct,ht]=(0,I.useState)([]),xe=(0,I.useCallback)(f=>{Ce.current&&ht(nt=>[...nt,`${new Date().toISOString().slice(11,23)} ${f}`])},[]);(0,I.useEffect)(()=>{Ce.current=me,me&&xe("debug:enabled"),rt.current?.setEnabled(me)},[xe,me]);let Fr=(0,I.useRef)(x),Vr=(0,I.useRef)(O),br=(0,I.useRef)(M),Ht=(0,I.useRef)(W),$r=(0,I.useRef)(_),Wr=(0,I.useRef)(Pe),Rr=(0,I.useRef)(v),Lt=(0,I.useRef)(te),mt=(0,I.useRef)(i),it=(0,I.useRef)(j),Br=(0,I.useRef)(Q),Bt=(0,I.useRef)(n),Hr=(0,I.useRef)(o),Cr=(0,I.useRef)(t),Kt=(0,I.useRef)(null),or=(0,I.useRef)(new Map),pn=(0,I.useRef)(new Map),en=(0,I.useRef)(!1);(0,I.useEffect)(()=>(en.current=!0,()=>{en.current=!1}),[]),(0,I.useEffect)(()=>{Fr.current=x},[x]),(0,I.useEffect)(()=>{mt.current=i},[i]),(0,I.useEffect)(()=>{Vr.current=O},[O]),(0,I.useEffect)(()=>{br.current=M},[M]),(0,I.useEffect)(()=>{Ht.current=W},[W]),(0,I.useEffect)(()=>{$r.current=_},[_]),(0,I.useEffect)(()=>{Wr.current=Pe},[Pe]),(0,I.useEffect)(()=>{Rr.current=v},[v]),(0,I.useEffect)(()=>{Lt.current=te},[te]),(0,I.useEffect)(()=>{it.current=j},[j]),(0,I.useEffect)(()=>{Br.current=Q},[Q]),(0,I.useEffect)(()=>{Bt.current=n},[n]),(0,I.useEffect)(()=>{Hr.current=o},[o]),(0,I.useEffect)(()=>{Cr.current=t},[t]),(0,I.useEffect)(()=>{Ye.current=$e},[$e]),(0,I.useEffect)(()=>{dt&&ve.current?.focus()},[dt,$e]);let ar=(0,I.useCallback)(()=>{window.setTimeout(()=>{ve.current?.focus()},0)},[]),zt=(0,I.useCallback)(()=>{X(!1),lt(f=>f+1)},[]),Tr=(0,I.useCallback)(()=>{We(!1),(re.current?.querySelector('iframe, button, [tabindex]:not([tabindex="-1"])')??re.current)?.focus?.()},[]);(0,I.useEffect)(()=>{!be||!Y.current||(Y.current=!1,Tr())},[Tr,be,$e]);let mr=(0,I.useCallback)((f,nt)=>{let ie=nt?.popupBlocked??(0,ke.isPopupBlockedError)(f);ie&&L.markBlocked();let Er=(0,ke.buildExternalMethodRecoveryMessage)("PayPal",ie,H.inAppBrowser),Kr=$r.current;if(Kr){let Zt=ie&&H.inAppBrowser?new at.FloPayError(Er,"api_error",{code:nt?.code??"paypal_popup_blocked"}):f;Kr("paypal",Zt,nt);return}br.current?.(Er)},[L,H.inAppBrowser]),jt=(0,I.useCallback)(f=>{let nt=ge.current,ie=Me.current;nt===null||!ie||(Ee.log({...ie,popupCapability:L.current(),name:"provider.overlay.returned",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:f}),Ee.performance({...ie,popupCapability:L.current(),stage:"overlay_return",durationMs:Ee.elapsed(nt),durationMode:"buyer",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:f}),ge.current=null)},[L,Ee]),Sr=(0,I.useCallback)((f,nt,ie)=>{let Er=Me.current;jt("overlay_timeout"),Er&&Ee.error({...Er,popupCapability:L.current(),errorCode:"REQUEST_TIMEOUT",failureCategory:"provider_runtime",stage:"overlay_return",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",statusClass:"timeout",terminalReason:"overlay_timeout"}),mr(nt,{...ie,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:he,terminalReason:"overlay_timeout"}),We(!0),zt(),ar()},[jt,ar,mr,L,he,zt,Ee]),Vt=(0,I.useCallback)(()=>{L.markAvailable();let f=Me.current;f&&(K.current=f.attempt,Ee.log({...f,popupCapability:L.current(),name:"provider.popup.opened",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}))},[L,Ee]),{finishAttempt:ur,generationRef:qt,invalidateAttempt:Ae,isAttemptCurrent:mn,isAttemptInvalidated:yn,startAttempt:fn}=ga(Sr,{onHandoffObserved:Vt}),ir=(0,I.useCallback)(()=>(We(!1),fn("paypal")),[fn]),Dr=(0,I.useCallback)(f=>{Ae(f?.generation),f?.showRetry&&We(!0),f?.remount&&zt(),f?.focus!==!1&&ar()},[ar,Ae,zt]),Mr=f=>{let nt=Kt.current;return nt&&pn.current.set(f,nt),f};(0,I.useEffect)(()=>{ne.current!==A&&(ne.current=A,Et.current=!1,Ut.current=!1,X(!1),Ge(!1),At(!1),Lt.current?.("loading"))},[A]),(0,I.useEffect)(()=>{(0,tt.invokeMerchantCallback)(()=>Rr.current?.(be&&!kt))},[be,kt]);let De=(0,at.normalizeGatewayEnvironment)(d);(0,I.useEffect)(()=>{let f={attempt:qt.current+1,inAppBrowser:H.inAppBrowser,appFamily:H.appFamily,popupCapability:L.current(),presentationMode:he},nt=()=>({...Me.current??f,popupCapability:L.current()}),ie={error:y=>Ee.error({...y,...nt()}),log:y=>Ee.log({...y,...nt()}),performance:y=>Ee.performance({...y,...nt()}),terminal:y=>Ee.terminal({...y,...nt()}),startTiming:Ee.startTiming,elapsed:Ee.elapsed},Er=l?`${l.slice(0,6)}\u2026(len ${l.length})`:"(empty)",Kr=typeof navigator>"u"?"(no navigator)":navigator.userAgent;if(xe(`mount clientId=${Er} env=${d??"(unset)"}\u2192${De??"live"} ccy=${p} sub=${b}`),xe(`ua=${Kr.slice(0,80)}${Kr.length>80?"\u2026":""}`),!l){xe("FAIL: clientId empty \u2014 gateway misconfigured"),At(!0),ie.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(!re.current){xe("FAIL: containerRef not attached");return}ae.current=ie.startTiming(),ie.log({name:"provider.load.started",stage:"provider_load",provider:"paypal",paymentMethodCategory:"paypal"});let Zt=!1,Or=!1,St=()=>Zt||Or,xn=T?P:void 0,no,Dt=!1,Gr=()=>{no=(0,at.generateIdempotencyKey)(),no||console.warn("[FloPay] DirectPayPal: secure idempotency key unavailable; retries may not be deduplicated."),Dt=!0},gn=null,hn=!1,Gt=null,An=!1,Fn=()=>{!Gt||An||(An=!0,Gt.close().catch(()=>{}))},Lr=!1,Bn=!1,tn=re.current,Dn=null,Hn=null,Yr=[],Pn=null,vn=!1,Nt=!1,Xr=null,xr=y=>{if(!y||typeof y.getBoundingClientRect!="function")return"(no rect)";let g=y.getBoundingClientRect();return`${Math.round(g.width)}\xD7${Math.round(g.height)}`},bn=y=>{if(!y)return"(empty)";try{let g=new URL(y,typeof window>"u"?"https://localhost":window.location.href),E=g.pathname.toLowerCase();return E.includes("checkcaptcha")||E.includes("captcha")?`CAPTCHA(${g.host}${E})`:E.includes("risk")||E.includes("challenge")?`RISK(${g.host}${E})`:E.includes("smart/buttons")?`smart-buttons(${g.host})`:`${g.host}${E}`.slice(0,100)}catch{return y.slice(0,80)}},Cn=y=>{let g=y.getAttribute("src"),E=y.getAttribute("srcdoc"),de=y.getAttribute("name"),Fe=y.getAttribute("sandbox"),He=[];return g&&He.push(`src=${bn(g)}`),E&&He.push(`srcdoc[${E.length}ch]`),!g&&!E&&He.push("src=(empty) srcdoc=(empty)"),de&&He.push(`name=${de.slice(0,40)}`),Fe!==null&&He.push(`sandbox="${Fe.slice(0,40)}"`),He.join(" ")},bt=y=>{if(!(y instanceof HTMLIFrameElement))return"";try{let g=y.contentDocument;if(!g)return"cd=null";let E=g.body?.children.length??0,de=g.body?.innerHTML.length??0,Fe=g.head?.innerHTML.length??0;return`cd=same-origin readyState=${g.readyState} body[${E}children,${de}ch] head[${Fe}ch]`}catch(g){return`cd=cross-origin(${g.message.slice(0,30)})`}},sr=[],yr=y=>{if(St())return;let g=y.message??String(y.error??"(no message)");g&&(g.toLowerCase().includes("paypal")||g.toLowerCase().includes("zoid")||g.toLowerCase().includes("postrobot")||g.toLowerCase().includes("storage"))&&(xe(`window:error ${g.slice(0,140)}`),sr.push(g))},Nr=y=>{if(St())return;let g=y.reason instanceof Error?y.reason.message:String(y.reason??"(no reason)");g&&(g.toLowerCase().includes("paypal")||g.toLowerCase().includes("zoid")||g.toLowerCase().includes("postrobot")||g.toLowerCase().includes("storage"))&&(xe(`window:rejection ${g.slice(0,140)}`),sr.push(g))},oo={value:0},On=()=>{Dn?.disconnect(),Dn=null,Hn?.disconnect(),Hn=null;for(let y of Yr.splice(0))clearTimeout(y);Nt=!1,vn&&typeof window<"u"&&(window.removeEventListener("error",yr),window.removeEventListener("unhandledrejection",Nr)),vn=!1},Kn=()=>{if(!(vn||St()||Lr)){if(vn=!0,sr.length=0,oo.value=0,typeof window<"u"&&(window.addEventListener("error",yr),window.addEventListener("unhandledrejection",Nr)),typeof PerformanceObserver<"u")try{Hn=new PerformanceObserver(y=>{if(!St())for(let g of y.getEntries()){if(!g.name.toLowerCase().includes("paypal"))continue;oo.value+=1;let E=Math.round(g.duration);xe(`net ${E}ms ${g.name.slice(0,90)}`)}}),Hn.observe({type:"resource",buffered:!0})}catch{}Xr?.()}},rn=()=>{Pn&&(clearTimeout(Pn),Pn=null)},lr=()=>{On(),rn()},ao={setEnabled:y=>{y?Kn():On()}};rt.current=ao,Ce.current&&Kn();let pr=at.isPayPalTeardownMessage,z=y=>{if(St()||pr(y))return;let g=(0,Po.applyFriendlyMessageOverride)(y)??y;(0,tt.invokeMerchantCallback)(()=>br.current?.(g))},B=(y,g)=>{if(Zt||hn)return;hn=!0,Or=!0,lr(),Fn();let E=ad({kind:y,generationActive:!0,automaticRetryAllowed:S,automaticRetryUsed:Et.current});if(E.action==="retry"){Et.current=!0,X(!1),fe(!1),Ge(!0),Lt.current?.("retrying"),gn=setTimeout(()=>{Zt||lt(de=>de+1)},td);return}if(X(!1),fe(!1),Ge(!1),At(!0),E.action!=="ignore"){if(Lt.current?.("exhausted"),E.action==="unavailable"){console.error("[FloPay] DirectPayPal load/render failure:",g);return}if(E.report){let de=(0,ke.classifyExternalMethodFailure)({code:Cl(y,g),message:g},{inAppBrowser:H.inAppBrowser,handoffObserved:!1});de.popupBlocked&&L.markBlocked(),ie.error({errorCode:de.popupBlocked?de.errorCode:E.report.errorCode,stage:E.report.stage,operationOutcome:E.report.operationOutcome,provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",failureCategory:"provider_runtime",terminalReason:de.terminalReason})}Ut.current||(Ut.current=!0,console.error("[FloPay] Direct PayPal initialization failed:",Cl(y,g)))}};At(!1);let ce=async(y,g=Kt.current)=>{if(St())return;let E=g?.sessionId??e;if(Fr.current){await Fr.current(y,{sessionId:E,accountPatch:g?.accountPatch,nonce:g?.nonce});return}let de=ie.startTiming();ie.log({name:"payment.processing.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"});let Fe=()=>{ie.log({name:"payment.processing.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),ie.performance({stage:"processing",durationMs:ie.elapsed(de),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment"})};try{let He=(0,at.buildPayPalProcessPaymentRequest)({body:y,sessionId:E,nonce:g?.nonce??Cr.current,accountPatch:g?.accountPatch,session:Br.current,email:Bt.current}),Te=await new Za.PaymentAPI(Tt,{telemetry:!1}).processPayment(He.userId,He.params);if(Te.ok){if(Or||Zt&&en.current)return;Fe(),ie.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}),(0,tt.invokeMerchantCallback)(()=>Vr.current?.({status:"succeeded",checkoutMethod:"paypal"}));return}if(St())return;let Xe=await Te.json().catch(()=>null),ot=(0,at.describePayPalProcessFailure)(Xe),wt=ot.message;Fe(),Te.status===400&&(typeof Xe?.declineCode=="string"||!Array.isArray(Xe?.fields))?ie.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:"approved"}):Te.status===400||Te.status===422?ie.terminal({outcome:"validation_rejected",provider:"paypal",paymentMethodCategory:"paypal",statusClass:"4xx",terminalReason:"approved"}):ie.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:id(Te.status),failureCategory:Te.status>=500?"server_error":void 0}),z(wt),(0,tt.invokeMerchantCallback)(()=>Ht.current?.(gr("paypal",wt,{code:ot.code,declineCode:ot.declineCode})));return}catch(He){if(St())return;Fe(),ie.error({errorCode:"NETWORK_REQUEST_FAILED",failureCategory:"transport_error",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"process_payment",statusClass:"network_error"});let Xt=(0,at.friendlyPayPalFailureMessage)(He instanceof Error?He.message:void 0);z(Xt),(0,tt.invokeMerchantCallback)(()=>Ht.current?.(gr("paypal",Xt)));return}},Se=()=>new at.FloPayError("PayPal render was superseded.","api_error",{code:"paypal_render_superseded"}),It=y=>St()?Promise.reject(Se()):Promise.resolve(y),Yt=async y=>{if(St())throw Se();Dt||Gr();let g=Kt.current,E=g?.sessionId??e,de=g?.nonce??Cr.current;ie.log({name:"payment.intent.started",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"});let Fe;try{Fe=await new Za.PaymentAPI(Tt,{telemetry:!1}).createSessionIntent(E,de??"",(0,at.buildPayPalSessionIntentRequest)(xn),{idempotencyKey:no})}catch(He){throw ie.error({...(0,at.classifyTelemetryFailure)(He,"PAYMENT_PROCESSING_FAILED","unknown"),stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create"}),He}if(St())throw Se();if(Fe.provider!=="paypal"||Fe.providerObjectType!==P)throw new Error(y);return ie.log({name:"payment.intent.completed",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"intent_create",statusClass:"2xx"}),Fe.providerObjectId},Oe=(y,g)=>{let E=g?.nonce??Cr.current;if(!E)return;let de=g?.sessionId??e,Fe=(0,at.resolvePayPalDeclineReason)(y);new Za.PaymentAPI(Tt,{telemetry:!1}).reportSessionIntentDecline(de,E,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Fe}).catch(()=>{})},J=$e;xe("loadScript:scheduled (deferred 1 tick)");let Z=null,$=setTimeout(()=>{if(Zt){xe("loadScript:skipped (cancelled before defer ran)");return}xe("loadScript:start");let y=De==="live"?"production":De,g={};P==="subscription"?g={intent:"subscription",vault:!0}:P==="order"&&(g={intent:"capture"}),Z=(0,Sl.loadScript)({clientId:l,currency:p,...g,...y?{environment:y}:{},...y==="sandbox"?{dataNamespace:"paypal_sandbox"}:{}});let E=!1;Z.then(de=>{if(E=!0,xe(`loadScript:resolved inactive=${St()} ns=${!!de} buttons=${!!de?.Buttons}`),St())return;if(!de?.Buttons){xe("FAIL: namespace missing Buttons factory"),B("namespace_unusable","PayPal SDK did not expose the Buttons factory.");return}ie.log({name:"provider.ready",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),ie.performance({stage:"provider_ready",durationMs:ie.elapsed(ae.current),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk"}),ie.log({name:"provider.availability.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"});let Fe=async(we,D)=>{if(St()||Ye.current!==J)return;let le=we.vaultSetupToken??we.subscriptionID??we.orderID??"",yt=le?pn.current.get(le):or.current.get(J);if(!(!yt||!mn(yt.generation))&&ur(yt.generation)){pn.current.delete(le),or.current.delete(yt.surfaceKey),jt("approved");try{if(fe(!0),(0,tt.invokeMerchantCallback)(()=>br.current?.(null)),!le)throw new at.FloPayError("PayPal did not return an approval token.","api_error",{code:"paypal_missing_token"});let Ve=(0,at.resolvePayPalApprovalIdentity)({accountPatch:yt.accountPatch,email:Bt.current,billingName:Hr.current,session:Br.current});if((0,at.needsPayPalPayerDetails)(Ve))try{Ve=(0,at.mergePayPalPayerIdentity)(Ve,await D?.order?.get?.())}catch{}if((mt.current||Ze)&&!(0,at.isValidEmail)(Ve.email)){let Mt=await G("PayPal",Ve);if(!Mt)return;Ve=Mt}(0,at.isValidEmail)(Ve.email)&&(yt.accountPatch=(0,an.compactBuyerIdentity)({...yt.accountPatch,...Ve}),await mt.current?.(Ve));let et=(0,at.buildPayPalTokenizedBody)(le,xn);await ce(et,yt)}catch(Ve){z(Ve instanceof Error?Ve.message:"PayPal capture failed.")}finally{St()||fe(!1)}}},He=we=>{let D=Be?()=>It(Be):()=>Yt(we);return async()=>Mr(await D())},Xt=de.Buttons({style:{layout:"horizontal",height:Qa,tagline:!1},...he==="app_switch"?{appSwitchWhenAvailable:!0}:{},onClick:async(we,D)=>{if(St()){await D.reject();return}Gr();let le=it.current,yt={};if(le)try{let Mt=await le("paypal");if(St()){await D.reject();return}if(!Mt.proceed){Kt.current=null,or.current.delete(J),await D.reject();return}yt={sessionId:Mt.sessionId,accountPatch:Mt.accountPatch,nonce:Mt.nonce}}catch(Mt){xe(`onClick:runBeforeButtonClick rejected msg=${(Mt instanceof Error?Mt.message:String(Mt)).slice(0,120)}`),Kt.current=null,or.current.delete(J),await D.reject();return}(0,tt.invokeMerchantCallback)(()=>Wr.current?.("paypal"));let Ve=ir(),et={generation:Ve,surfaceKey:J,...yt};Kt.current=et,or.current.set(J,et),Me.current={...f,attempt:Ve},await D.resolve(),ie.log({name:"payment.method.selected",stage:"processing",provider:"paypal",paymentMethodCategory:"paypal"}),ie.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"paypal",paymentMethodCategory:"paypal"}),ge.current=ie.startTiming()},createOrder:P==="order"?He("Failed to create PayPal order."):void 0,createSubscription:P==="subscription"?He("Failed to create PayPal subscription."):void 0,createVaultSetupToken:P==="setup_token"?async()=>Mr(await Yt("Failed to create PayPal setup token.")):void 0,onApprove:Fe,onCancel:()=>{if(St())return;let we=or.current.get(J)??Kt.current;we&&or.current.delete(we.surfaceKey),Kt.current=null,jt("cancelled"),ie.terminal({outcome:"payment_cancelled",terminalReason:"cancelled",provider:"paypal",paymentMethodCategory:"paypal"}),Y.current=!0,Dr({generation:we?.generation,remount:!0,focus:!1})},onError:we=>{if(St()||Ye.current!==J)return;let D=we instanceof Error?we.message:"PayPal failed to render.";if(xe(`onError rendered=${Lr} msg=${D.slice(0,120)}`),Lr){let le=or.current.get(J)??Kt.current;if(le&&!mn(le.generation)||!le&&yn())return;if(pr(D)){ur(le?.generation);return}let{errorCode:yt,popupBlocked:Ve,providerDeclined:et,terminalReason:Mt}=(0,ke.classifyExternalMethodFailure)(we,{inAppBrowser:H.inAppBrowser,handoffObserved:le!=null&&K.current===le.generation});if(Ve&&L.markBlocked(),jt(Mt),et){ie.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal",terminalReason:Mt}),Oe(we,le),(0,tt.invokeMerchantCallback)(()=>Ht.current?.(gr("paypal",D))),le&&or.current.delete(le.surfaceKey),Kt.current=null,ur(le?.generation);return}ie.error({errorCode:yt,failureCategory:"provider_runtime",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal",requestCategory:"provider_sdk",terminalReason:Mt}),le&&or.current.delete(le.surfaceKey),Kt.current=null,Dr({generation:le?.generation,remount:!0,showRetry:!0,focus:!0}),mr(we,{code:"paypal_runtime_failed",popupBlocked:Ve,telemetryReported:!0,provider:"paypal",paymentMethodCategory:"paypal",presentationMode:he,terminalReason:Mt});return}B(pr(D)?"teardown":"pre_ready_callback",D)}}),Te=Xt.isEligible();if(xe(`isEligible=${Te}`),ie.log({name:"provider.eligibility.checked",stage:"provider_ready",provider:"paypal",paymentMethodCategory:"paypal"}),!Te){X(!1),B("ineligible","PayPal buttons are not eligible to render in this context (paypal_ineligible).");return}Bn=!0,Gt=Xt,Xr=()=>{if(!vn||Nt||St()||Lr)return;Nt=!0,xe(`container:dims ${xr(tn)} visibility=${typeof document>"u"?"(no document)":document.visibilityState}`),typeof MutationObserver<"u"&&(Dn=new MutationObserver(D=>{if(!St()){for(let le of D)if(le.type==="childList")le.addedNodes.forEach(yt=>{if(!(yt instanceof Element))return;let Ve=yt.tagName.toLowerCase(),et=(yt.getAttribute("title")??"").slice(0,40),Mt=Ve==="iframe"?` ${Cn(yt)}`:"";xe(`child+ ${Ve}${et?` title="${et}"`:""}${Mt} dims=${xr(yt)}`)});else if(le.type==="attributes"&&le.target instanceof Element){let yt=le.target;if(yt.tagName.toLowerCase()!=="iframe")continue;let Ve=le.attributeName;(Ve==="src"||Ve==="srcdoc")&&xe(`attr~ iframe ${Ve}=${Ve==="srcdoc"?`[${(yt.getAttribute("srcdoc")??"").length}ch]`:bn(yt.getAttribute("src"))} dims=${xr(yt)}`)}}}),Dn.observe(tn,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["src","srcdoc"]}));let we=D=>{if(St()||Lr)return;let le=tn.querySelectorAll("iframe"),yt=typeof document<"u"&&"hasStorageAccess"in document;xe(`watchdog:${D} container=${xr(tn)} children=${tn.childElementCount} iframes=${le.length} visibility=${typeof document>"u"?"(no document)":document.visibilityState} cookies=${typeof navigator>"u"?"?":navigator.cookieEnabled} hasStorageAccessApi=${yt} paypalNetRequests=${oo.value}`),le.forEach((Ve,et)=>{let Mt=(Ve.getAttribute("title")??"").slice(0,40);xe(` iframe[${et}] ${xr(Ve)}${Mt?` title="${Mt}"`:""} ${Cn(Ve)}`);let Pt=bt(Ve);Pt&&xe(` ${Pt}`)}),sr.length===0&&xe(" (no PayPal/zoid window errors captured)")};Yr.push(setTimeout(()=>we("3s"),3e3)),Yr.push(setTimeout(()=>we("8s"),8e3)),Yr.push(setTimeout(()=>we("15s"),15e3))},Xr(),xe("render:start");let ot=ie.startTiming();Pn=setTimeout(()=>{St()||Lr||(xe("watchdog:11s retryable render timeout"),B("watchdog_expired","PayPal Buttons render did not settle within 11000ms."))},rd);let wt=Xt.render(tn);(async()=>{try{if(await wt,xe(`render:resolved inactive=${St()}`),lr(),St()){Fn();return}Lr=!0,X(!0),Ge(!1),Lt.current?.("ready"),ie.log({name:"checkout.rendered",stage:"checkout_render",provider:"paypal",paymentMethodCategory:"paypal"}),ie.performance({stage:"checkout_render",durationMs:ie.elapsed(ot),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"})}catch(we){let D=we instanceof Error?we.message:"PayPal failed to render.";xe(`render:rejected msg=${D.slice(0,120)}`),lr(),B(pr(D)?"teardown":"render_rejected",D)}})()}).catch(de=>{let Fe=de instanceof Error?de.message:"PayPal operation failed.";xe(`provider:failed msg=${Fe.slice(0,120)}`);let He="script_rejected";E&&pr(Fe)?He="teardown":E&&Bn&&(He="render_rejected"),B(He,Fe)})},0);return()=>{Zt=!0,clearTimeout($),gn&&clearTimeout(gn),lr(),rt.current===ao&&(rt.current=null),Fn(),ge.current=null,Me.current=null}},[S,Tt,l,p,d,P,he,T,e,Be,$e,Ee,G,Ze,xe,jt]);let vt=me?(0,sn.jsxs)("pre",{"data-testid":"flopay-direct-paypal-debug",style:{margin:"0 0 8px 0",padding:"6px 8px",background:kt?"#fef2f2":"#f3f4f6",border:`1px solid ${kt?"#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=${be} failed=${kt})`,Ct.length===0?`
2
2
  (waiting for first lifecycle event\u2026)`:`
3
- ${gt.join(`
4
- `)}`]}):null;return Pt&&!j?be?(0,ir.jsx)("div",{children:ft}):null:(0,ir.jsxs)("div",{children:[ft,Qe&&(0,ir.jsx)(jo,{identity:Qe.identity,methodLabel:Qe.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:Ue,onCancel:()=>Ue(null)}),(0,ir.jsxs)("div",{"aria-hidden":it||Qe?!0:void 0,style:it||Qe?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:ui},children:[!Ee&&!it&&(0,ir.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,ir.jsx)("div",{ref:re,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:ui,display:"flex",opacity:Ee?1:0},"aria-busy":q||b},Ve)]},Ve),st&&(0,ir.jsx)("button",{ref:we,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:on,style:id,children:"Try PayPal again"})]})}function Ra(e){return(0,ir.jsx)(nc,{...e})}function rc(e){return(0,ir.jsx)(nc,{...e})}var _a=require("react/jsx-runtime");function Ho({children:e,margin:t,icon:n=!0,styleOverride:r}){return(0,_a.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,_a.jsx)("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,_a.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 di=require("@flopay/shared");function Ko(){return typeof window<"u"&&typeof window.sessionStorage<"u"}var Cs=":idempotency-key";function Ss(e,t){if(!Ko())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 ws(e,t){if(!Ko())return null;try{let n=window.sessionStorage.getItem(e+Cs);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 pi(e,t){if(Ko())try{Ss(e,t)&&window.sessionStorage.removeItem(e)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout session cache.",n)}}function mi(e,t){if(pi(e,t),!!Ko())try{ws(e,t)&&window.sessionStorage.removeItem(e+Cs)}catch(n){console.warn("[FloPayCheckout] Failed to clear checkout idempotency key.",n)}}function yi(e,t,n,r){if(Ko())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 fi(e,t,n){if(Ko())try{window.sessionStorage.setItem(e+Cs,JSON.stringify({canonicalIdentity:t,idempotencyKey:n}))}catch(r){console.warn("[FloPayCheckout] Failed to persist checkout idempotency key.",r)}}function vs(e,t){return`${e}:${t.totalAmount??""}:${t.overrideAmount??""}:${t.quantity??1}:${t.currency??""}`}function dd(e){if(e==null)return e;let t=JSON.stringify(Object.entries(e).sort(([i],[c])=>i<c?-1:i>c?1:0)),n=1779033703,r=3144134277,o=1013904242,a=2773480762;for(let i=0;i<t.length;i++){let c=t.charCodeAt(i);n=r^Math.imul(n^c,597399067),r=o^Math.imul(r^c,2869860233),o=a^Math.imul(o^c,951274213),a=n^Math.imul(a^c,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(i=>(i>>>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=>vs(`${o.type??""}:${o.code??o.providerItemId??o.providerPlanId??""}`,o)).sort(),i:e?.items?.map(o=>vs(o.code??o.providerItemId??"",o)).sort(),s:e?.subscriptions?.map(o=>vs(o.code??o.providerPlanId??"",o)).sort(),couponCodes:e?.couponCodes?[...e.couponCodes].sort():void 0,checkoutMetadata:dd(e?.checkoutMetadata),...t?{tagsData:e?.tagsData,utmMetadata:e?.utmMetadata,tokenizedData:e?.tokenizedData,checkoutMode:e?.checkoutMode??"full"}:{}};return JSON.stringify(r)}function oc(e,t=!1){let n=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 ac(e,t){if(!e?.customer||!e.products||t.checkoutMetadata!==void 0)return!1;let n=t.account.email?.trim().toLowerCase()??"",r=e.customer.email?.trim().toLowerCase()??"";if((n?r!==n:e.customer.id!==t.account.userId)||(t.account.country??"").trim().toUpperCase()!==(e.customer.country??"").trim().toUpperCase()||e.successUrl!==t.successUrl||e.cancelUrl!==t.cancelUrl||(e.captureMethod??"automatic")!==(t.captureMethod??"automatic"))return!1;let o=(0,di.resolveSessionCurrency)(t.currency,t.items,t.subscriptions,t.products);if(!o||e.currency.toUpperCase()!==o.toUpperCase())return!1;let a=(t.products??(0,di.foldIntoProducts)(t.items,t.subscriptions)).map(u=>({type:u.type,code:u.code??u.providerItemId??u.providerPlanId??"",quantity:u.quantity??1,totalAmount:u.totalAmount,overrideAmount:u.overrideAmount??null,currency:(u.currency??o).toUpperCase()})).sort((u,h)=>`${u.code}:${u.type??""}`.localeCompare(`${h.code}:${h.type??""}`)),i=e.products.map(u=>({type:u.type,code:u.code??"",quantity:u.quantity??1,totalAmount:u.totalAmount,overrideAmount:u.overrideAmount??null,currency:(u.currency??e.currency).toUpperCase()})).sort((u,h)=>`${u.code}:${u.type??""}`.localeCompare(`${h.code}:${h.type??""}`));if(a.length!==i.length)return!1;for(let[u,h]of a.entries()){let P=i[u];if(P===void 0||h.code!==P.code||h.type!==void 0&&h.type!==P.type||h.quantity!==P.quantity||h.totalAmount!==P.totalAmount||h.overrideAmount!==P.overrideAmount||h.currency!==P.currency)return!1}let c=[...t.couponCodes??[]].sort(),p=[...e.coupons??[]].sort();return c.length===p.length&&c.every((u,h)=>u===p[h])}var ln=require("react/jsx-runtime");var pd={panel:{background:"white"},spinnerTrackColor:"#e5e7eb",spinnerAccentColor:"#4A49FF",labelColors:{processing:"#374151",success:"#16a34a",error:"#dc2626"},noteColor:"#6b7280"};function Vn({status:e,errorMessage:t,authorized:n=!1,processingLabel:r="PROCESSING...",successLabel:o,errorLabel:a="PAYMENT FAILED",successNote:i="You will be automatically redirected, do not close or navigate away from this window.",theme:c=pd}){let p={fontSize:13,color:c.noteColor,fontWeight:400,maxWidth:260,lineHeight:1.4,margin:0};return(0,ln.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,ln.jsxs)("div",{"data-testid":"flopay-processing-overlay-panel",style:{borderRadius:12,boxShadow:"0 8px 32px rgba(0,0,0,0.18)",...c.panel,padding:"2rem 2.5rem",textAlign:"center",minWidth:240,display:"flex",flexDirection:"column",alignItems:"center",gap:16},children:[(0,ln.jsxs)("div",{style:{width:48,height:48,position:"relative"},children:[e==="processing"&&(0,ln.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,ln.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:c.spinnerTrackColor,strokeWidth:"3"}),(0,ln.jsx)("path",{d:"M4 12a8 8 0 018-8v3a5 5 0 00-5 5H4z",fill:c.spinnerAccentColor})]}),e==="success"&&(0,ln.jsx)("div",{style:{animation:"flopay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)"},children:(0,ln.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,ln.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#22c55e"}),(0,ln.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,ln.jsx)("div",{style:{animation:"flopay-shake 0.4s ease"},children:(0,ln.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,ln.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#ef4444"}),(0,ln.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,ln.jsxs)("span",{style:{fontSize:14,fontWeight:600,letterSpacing:"0.05em",color:c.labelColors[e]},children:[e==="processing"&&r,e==="success"&&(o??(n?"PAYMENT AUTHORISED":"PAYMENT SUCCESSFUL")),e==="error"&&a]}),e==="success"&&i!==null&&(0,ln.jsx)("p",{style:p,children:i}),e==="error"&&t&&(0,ln.jsx)("p",{style:p,children:t}),(0,ln.jsx)("style",{children:`
3
+ ${Ct.join(`
4
+ `)}`]}):null;return kt&&!q?me?(0,sn.jsx)("div",{children:vt}):null:(0,sn.jsxs)("div",{children:[vt,Qe&&(0,sn.jsx)(qo,{identity:Qe.identity,methodLabel:Qe.methodLabel,testId:"flopay-direct-paypal-identity-pane",onComplete:Ne,onCancel:()=>Ne(null)}),(0,sn.jsxs)("div",{"aria-hidden":ct||Qe?!0:void 0,style:ct||Qe?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:{position:"relative",minHeight:Qa},children:[!be&&!ct&&(0,sn.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,sn.jsx)("div",{ref:re,"data-testid":"flopay-direct-paypal-container",tabIndex:-1,role:"group","aria-label":"PayPal payment method",style:{minHeight:Qa,display:"flex",opacity:be?1:0},"aria-busy":N||h},$e)]},$e),dt&&(0,sn.jsx)("button",{ref:ve,type:"button","data-testid":"flopay-direct-paypal-focus-target",onClick:Tr,style:nd,children:"Try PayPal again"})]})}function ha(e){return(0,sn.jsx)(wl,{...e})}function kl(e){return(0,sn.jsx)(wl,{...e})}var Pa=require("react/jsx-runtime");function $o({children:e,margin:t,icon:r=!0,styleOverride:n}){return(0,Pa.jsxs)("div",{role:"alert","data-testid":"flopay-error",style:{margin:t,padding:"0.625rem 0.875rem",background:"#FEF2F2",border:"1px solid #FECACA",borderRadius:"8px",color:"#991B1B",fontSize:"0.85rem",fontWeight:600,...r?{display:"flex",alignItems:"center",gap:"0.5rem"}:{},...n??{}},children:[r&&(0,Pa.jsx)("svg",{"aria-hidden":"true",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",style:{flexShrink:0},children:(0,Pa.jsx)("path",{d:"M12 9v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z",stroke:"#DC2626",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),e]})}var ut=require("@flopay/shared");var dr=require("react/jsx-runtime");var sd={panel:{background:"white"},spinnerTrackColor:"#e5e7eb",spinnerAccentColor:"#4A49FF",labelColors:{processing:"#374151",success:"#16a34a",error:"#dc2626"},noteColor:"#6b7280"};function qr({status:e,errorMessage:t,authorized:r=!1,processingLabel:n="PROCESSING...",successLabel:o,errorLabel:i="PAYMENT FAILED",successNote:l="You will be automatically redirected, do not close or navigate away from this window.",theme:d=sd}){let p={fontSize:13,color:d.noteColor,fontWeight:400,maxWidth:260,lineHeight:1.4,margin:0};return(0,dr.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,dr.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,dr.jsxs)("div",{style:{width:48,height:48,position:"relative"},children:[e==="processing"&&(0,dr.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,dr.jsx)("circle",{cx:"12",cy:"12",r:"10",stroke:d.spinnerTrackColor,strokeWidth:"3"}),(0,dr.jsx)("path",{d:"M4 12a8 8 0 018-8v3a5 5 0 00-5 5H4z",fill:d.spinnerAccentColor})]}),e==="success"&&(0,dr.jsx)("div",{style:{animation:"flopay-pop 0.4s cubic-bezier(0.34,1.56,0.64,1)"},children:(0,dr.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,dr.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#22c55e"}),(0,dr.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,dr.jsx)("div",{style:{animation:"flopay-shake 0.4s ease"},children:(0,dr.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,dr.jsx)("circle",{cx:"12",cy:"12",r:"11",fill:"#ef4444"}),(0,dr.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,dr.jsxs)("span",{style:{fontSize:14,fontWeight:600,letterSpacing:"0.05em",color:d.labelColors[e]},children:[e==="processing"&&n,e==="success"&&(o??(r?"PAYMENT AUTHORISED":"PAYMENT SUCCESSFUL")),e==="error"&&i]}),e==="success"&&l!==null&&(0,dr.jsx)("p",{style:p,children:l}),e==="error"&&t&&(0,dr.jsx)("p",{style:p,children:t}),(0,dr.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 ic=require("@flopay/shared"),Cn=require("react");var sc=require("react/jsx-runtime");function Ea({flopay:e,paypalFlopay:t,options:n,onInstrument:r,children:o}){let[a,i]=(0,Cn.useState)(e instanceof Promise?null:e),[c,p]=(0,Cn.useState)(t instanceof Promise||!t?null:t),u=(0,Cn.useRef)(null),h=(0,Cn.useRef)(null),P=Wo(r);(0,Cn.useEffect)(()=>{P({class:"lifecycle",name:"checkout.mount"})},[P]),(0,Cn.useEffect)(()=>{a&&P({class:"lifecycle",name:"sdk.initialize.ready"})},[P,a]),(0,Cn.useEffect)(()=>{if(a)return gn(a)?.subscribe?.(P)},[P,a]),(0,Cn.useEffect)(()=>{if(!(!c||c===a))return gn(c)?.subscribe?.(P)},[P,a,c]),(0,Cn.useEffect)(()=>{if(!a)return;let w=gn(a);return u.current=w?.beginCheckout()??w?.now()??0,w?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{w?.log({name:"checkout.unmount",stage:"unmount"})}},[a]),(0,Cn.useEffect)(()=>{let w=!1;return e instanceof Promise?e.then(A=>{w||i(A)},()=>{w||P({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):i(e),()=>{w=!0}},[P,e]),(0,Cn.useEffect)(()=>{let w=!1;if(!t){p(null);return}return t instanceof Promise?t.then(A=>{w||p(A)},()=>{w||P({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):p(t),()=>{w=!0}},[P,t]),(0,Cn.useEffect)(()=>{if(!a||h.current===a)return;h.current=a;let w=gn(a);w?.log({name:"checkout.rendered",stage:"checkout_render"}),P({class:"lifecycle",name:"checkout.rendered"}),w?.performance({stage:"checkout_render",durationMs:w.elapsed(u.current??0),durationMode:"machine"})},[P,a]);let M=(0,ic.resolveBillingApiUrl)(n?.billingApiUrl),_=(0,Cn.useMemo)(()=>({flopay:a,paypalFlopay:c,billingApiUrl:M,emitInstrument:P}),[a,c,M,P]);return(0,sc.jsx)(ar.Provider,{value:_,children:o})}var gi="flopay_recent_completion_";function Yo(e){if(!(!e||typeof window>"u"))try{let t={expiresAt:Date.now()+6e4};window.sessionStorage.setItem(gi+e,JSON.stringify(t))}catch{}}function ks(e){if(!e||typeof window>"u")return!1;try{let t=window.sessionStorage.getItem(gi+e);if(!t)return!1;let n=JSON.parse(t);return typeof n?.expiresAt!="number"||n.expiresAt<=Date.now()?(window.sessionStorage.removeItem(gi+e),!1):!0}catch{return!1}}async function hi(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 so=require("@flopay/js"),Ze=require("@flopay/shared");var Ta="card",md=1e3;async function yd(e,t,n){if(n){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:a,error:i}=await e.retrieveSetupIntent(t);return{error:i,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 fd(e,t,n,r){if(r){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:i,error:c}=await e.confirmCardSetup(t,n);return{error:c,intent:i??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 lo(e){return new Ze.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function Rs(){return new Ze.FloPayError("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function Es(e,t){return Object.assign(e,{checkoutMethod:t})}function Gr(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 Ia(e,t){try{return await e()}catch(n){throw Gr(n,t)}}function cc(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 gd(e){return e.status==="succeeded"||e.status==="authorized"||e.status==="declined"}async function Is(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 lo();let t=1e3,n=15e3,r=`${e.billingApiUrl.replace(/\/$/,"")}/v1/checkouts/sessions/${encodeURIComponent(e.sessionId)}/3ds/complete`,o=async()=>{let P=new AbortController,M=()=>P.abort();e.signal?.aborted?P.abort():e.signal?.addEventListener("abort",M);let _=window.setTimeout(()=>P.abort(),n);try{let w=await fetch(r,{method:"POST",headers:{"x-checkout-session-token":e.nonce,"content-type":"application/json"},body:"{}",signal:P.signal});if(!w.ok)return{status:"unknown"};let A=await w.json().catch(()=>null);return hd(A)}catch{return{status:"unknown"}}finally{window.clearTimeout(_),e.signal?.removeEventListener("abort",M)}},a,i=()=>e.pollCompletionEndpoint!==!1?o():(a??(a=o()),a),c=document.activeElement instanceof HTMLElement?document.activeElement:null,p=document.createElement("div");p.setAttribute("data-flopay-auto-3ds-overlay","1"),p.setAttribute("role","dialog"),p.setAttribute("aria-modal","true"),p.setAttribute("aria-label","Card authentication"),p.style.cssText=["position:fixed","inset:0","z-index:2147483647","background:rgba(15,23,42,0.6)","display:flex","align-items:center","justify-content:center","padding:16px"].join(";");let u=document.createElement("iframe");u.setAttribute("title","Card authentication"),u.setAttribute("allow","payment"),u.tabIndex=0,u.style.cssText=["width:min(100%,460px)","height:min(100%,640px)","border:0","border-radius:12px","background:#fff","box-shadow:0 12px 30px rgba(0,0,0,0.35)"].join(";");let h=null;try{h=new URL(e.billingApiUrl,window.location.href).origin}catch{h=null}try{let P=await new Promise((M,_)=>{let w=!1,A=0,I=0,b=0,C=!1,G=()=>{window.clearTimeout(A),window.clearInterval(I),window.clearTimeout(b),window.removeEventListener("message",H),u.removeEventListener("load",ye),e.signal?.removeEventListener("abort",N)},k=async()=>{if(!(w||C)){C=!0;try{let _e=await i();if(w||!gd(_e))return;w=!0,G(),M(_e)}finally{C=!1}}},ye=()=>{e.pollCompletionEndpoint!==!1&&(window.clearTimeout(b),b=window.setTimeout(()=>{k()},250))},N=()=>{w||(w=!0,G(),_(lo()))},H=_e=>{if(_e.source!==u.contentWindow||h&&_e.origin!==h)return;let te=_e.data;!te||typeof te!="object"||te.source!=="flopay-vault-3ds-return"||w||(w=!0,G(),M(null))};A=window.setTimeout(()=>{w||(w=!0,G(),_(Rs()))},Ze.THREE_DS_CHALLENGE_WINDOW_MS),e.pollCompletionEndpoint!==!1&&(I=window.setInterval(()=>{k()},t)),u.addEventListener("load",ye),window.addEventListener("message",H),e.signal?.addEventListener("abort",N),u.src=e.nextActionRedirectUrl,p.appendChild(u),document.body.appendChild(p),u.focus(),e.signal?.aborted&&N()});return P||await i()}finally{p.parentNode?.removeChild(p),c?.isConnected&&c.focus()}}async function Xo(e,t){let{billingApiUrl:n,sessionId:r,signal:o}=t,a=t.nonce??t.session.clientSecret,i=new so.PaymentAPI(n,{telemetry:!1}),c=`${n.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(r)}/status`,p=new AbortController,u=new AbortController,h=()=>{p.abort(o.reason),u.abort(o.reason)};o.aborted?h():o.addEventListener("abort",h,{once:!0});let P=Is({billingApiUrl:n,sessionId:r,nonce:a,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:p.signal,pollCompletionEndpoint:!1}),M=i.waitForCheckoutSessionCompletion(r,{initialDelayMs:md,nonce:a,statusUrl:c,continueAfterActionRequired:!0,timeoutMs:Ze.THREE_DS_CHALLENGE_WINDOW_MS+15e3,signal:u.signal}),_;try{let A=await Promise.race([P,M]);if("data"in A)_=A;else{if(A.status==="declined")throw Dr({type:A.declineReason??"authorization_declined",gatewayErrorCode:A.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"});if(A.status==="timeout")throw Rs();_=await M}}catch(A){if(o.aborted||A instanceof Error&&A.name==="AbortError")throw lo(A);if(!(A instanceof Ze.FloPayError)||A.code!=="three_ds_timeout"&&A.code!=="checkout_processing_timeout")throw A;try{_=await i.waitForCheckoutSessionCompletion(r,{initialDelayMs:0,nonce:a,statusUrl:c,timeoutMs:5e3,signal:o})}catch(b){if(o.aborted)throw lo(b);if(!(b instanceof Ze.FloPayError)||b.code!=="checkout_processing_timeout")throw b}let I=_&&ro(_,t.session);if(!$r(I)&&I?.status!=="expired"){if(t.telemetry){let b=new so.PaymentAPI(n);try{b.reportThreeDsAbandoned(r)}finally{b.destroy()}}throw Rs()}}finally{o.removeEventListener("abort",h),p.abort(),u.abort()}let w=_&&ro(_,t.session);if(!$r(w))throw qo(w);return{...jr(w,r),checkoutMethod:"card"}}function hd(e){if(!e||typeof e!="object")return{status:"unknown"};let t=typeof e.status=="string"?e.status:"unknown",n=typeof e.providerIntentId=="string"?e.providerIntentId:null;switch(t){case"succeeded":case"authorized":case"pending":case"timeout":return{status:t,providerIntentId:n};case"declined":return{status:"declined",providerIntentId:n,declineReason:typeof e.declineReason=="string"?e.declineReason:null,gatewayDeclineReason:typeof e.gatewayDeclineReason=="string"?e.gatewayDeclineReason:null};case"requires_action":return{status:"requires_action",providerIntentId:n,nextActionRedirectUrl:typeof e.nextActionRedirectUrl=="string"?e.nextActionRedirectUrl:null};case"no_attempt":return{status:"no_attempt"};default:return{status:"unknown"}}}function Dr(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=no(o)??o,i=Es(new Ze.FloPayError(a,"api_error",{code:e?.code??(0,Ze.normalizeCheckoutFailureOutcome)(e?.outcome)??(0,Ze.normalizeCheckoutFailureOutcome)(e?.type)??e?.gatewayErrorCode}),r);return e?.orderId&&(i.orderId=e.orderId),i}function _s(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function bi(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function uc(e,t){let n=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let o of n)if(typeof o=="string"&&o.length>0&&(!t?.requirePaymentIntentClientSecret||bi(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 c of a)if(typeof c=="string"&&c.length>0&&(!t?.requirePaymentIntentClientSecret||bi(c)))return c;let i=o.gateways;if(i&&typeof i=="object"){let c=i.stripe;if(c&&typeof c=="object"){let p=c,u=[p.stripeClientSecret,p.clientSecret];for(let h of u)if(typeof h=="string"&&h.length>0&&(!t?.requirePaymentIntentClientSecret||bi(h)))return h}}}}async function bd({billingApiUrl:e,sessionId:t,nonce:n,responseJson:r}){let o=uc(r,{requirePaymentIntentClientSecret:!0});if(typeof o=="string"&&o.length>0)return{type:"3ds_required",threeDSecureToken:o};if(!t)return null;try{let c=(await new so.PaymentAPI(e,{telemetry:!1}).getUnifiedCheckoutSession(t,n)).data.stripe?.clientSecret;if(bi(c))return{type:"3ds_required",threeDSecureToken:c}}catch{}return null}async function Jo({billingApiUrl:e,sessionId:t,session:n,nonce:r,tokenizedData:o,returnUrl:a,telemetry:i}){let c=e.replace(/\/+$/,""),p=t??n.id,u=r??n.clientSecret,h=n.customer?.id??n.accountData?.userId??"",P=n.customer?.email??n.accountData?.email??"",M=n.customer?.firstName??n.accountData?.firstName??"",_=n.customer?.lastName??n.accountData?.lastName??"",w=n.customer?.country??n.accountData?.country??void 0,A=n.customer?.zip??n.accountData?.zip??void 0,b=await new so.PaymentAPI(c,i===!1?{telemetry:!1}:void 0).processPayment(h,{sessionId:p,nonce:u,paymentMethodCategory:"saved",tokenizedData:o,accountData:{userId:h,email:P,firstName:M,lastName:_,country:w,zip:A},returnUrl:a??_s(n)});if(b.ok){let k=typeof b.json=="function"?await b.json().catch(()=>null):null;if((0,Ze.isAuthorizationOnlySession)(n)||k?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof k?.paymentId=="string"?k.paymentId:n.paymentId,sessionId:typeof k?.sessionId=="string"?k.sessionId:p,authorizationExpiresAt:typeof k?.authorizationExpiresAt=="string"?k.authorizationExpiresAt:n.authorizationExpiresAt,paymentMethodId:Ca(o),checkoutMethod:lc(o,n)}};let ye=o?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...ye?{paymentIntentId:ye}:{},paymentMethodId:Ca(o),checkoutMethod:lc(o,n)}}}let C;try{C=await b.json()}catch(k){throw new Ze.FloPayError("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:b.status,cause:k})}if(C?.type==="3ds_required"&&typeof C.nextActionRedirectUrl=="string")return{type:"next_action_required",nextActionRedirectUrl:C.nextActionRedirectUrl};if(C?.type==="paypal_redirect_required"||C?.type==="3ds_required"){let k=uc(C);if(!k)throw new Ze.FloPayError("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:b.status});return{type:C.type,threeDSecureToken:k,paymentMethodId:C.paymentMethodId}}if(C?.gatewayErrorCode==="authentication_required"){let k=await bd({billingApiUrl:c,sessionId:p,nonce:u,responseJson:C});if(k)return k;throw Es(new Ze.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let G=new Ze.FloPayError(C?.message??"Payment failed. Please try again.","api_error",{code:C?.code??C?.gatewayErrorCode,declineCode:C?.declineCode??C?.gatewayDeclineReason,statusCode:b.status});throw Object.assign(G,{telemetryOutcome:(0,Ze.classifyPaymentRejection)(b.status,C)})}async function Pi(e,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:a,session:i,returnUrl:c,telemetry:p,signal:u}){let h=t?.getRawProvider();if(!h)throw Gr(new Ze.FloPayError("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!r||!e.threeDSecureToken)throw Es(new Ze.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let P=(0,Ze.isSetupIntentClientSecret)(e.threeDSecureToken),M=null,_=e.paymentMethodId,w=await Ia(()=>yd(h,e.threeDSecureToken,P),"card");if(w){if(w.error)throw Gr(new Ze.FloPayError(w.error.message??`Failed to retrieve 3DS ${P?"setup":"payment"} status.`,"api_error",{code:w.error.code}),"card");let I=w.intent;!_&&I?.payment_method&&(typeof I.payment_method=="string"?_=I.payment_method:"id"in I.payment_method&&(_=I.payment_method.id??void 0))}let A=_?await Ia(()=>fd(h,e.threeDSecureToken,{payment_method:_,return_url:c??_s(i)??window.location.href},P),"card"):null;if(A){if(A.error)throw Gr(new Ze.FloPayError(A.error.message??"3DS authentication failed.","api_error",{code:A.error.code}),"card");M=A.intent}else{let I=await Ia(()=>h.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(I.error)throw Gr(new Ze.FloPayError(I.error.message??"3DS authentication failed.","api_error",{code:I.error.code}),"card");M=(P?I.setupIntent:I.paymentIntent)??null}if(M&&(M.status==="requires_capture"||M.status==="succeeded"||M.status==="processing")){let I=await Jo({billingApiUrl:o,sessionId:a,session:i,telemetry:p,tokenizedData:{id:M.id,type:"card",threeDSecureActionResultTokenId:M.id},returnUrl:c});return I.type==="success"?{...I.result,paymentIntentId:I.result.paymentIntentId??M.id,paymentMethodId:I.result.paymentMethodId??_}:I.type==="next_action_required"?Xo(I,{billingApiUrl:o,sessionId:a??i.id,session:i,signal:u}):Pi(I,{flopay:t,paypalFlopay:n,attempt3DS:r,billingApiUrl:o,sessionId:a,session:i,returnUrl:c,telemetry:p,signal:u})}throw Gr(new Ze.FloPayError("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let P=(n??t)?.getRawProvider();if(!P)throw Gr(new Ze.FloPayError("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:_}=await Ia(()=>P.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(_)throw Gr(new Ze.FloPayError(_.message??"PayPal authorization failed.","api_error",{code:_.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:M}=await Ia(()=>P.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:c??_s(i)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(M)throw Gr(new Ze.FloPayError(M.message??"PayPal authorization failed.","api_error",{code:M.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new Ze.FloPayError("Unsupported payment redirect state.","api_error")}function Aa(e){if(e instanceof Ze.FloPayError){let r=no(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,sessionId:e.sessionId}),{checkoutMethod:e.checkoutMethod,orderId:e.orderId,telemetryFailureCategory:e.telemetryFailureCategory,telemetryOutcome:e.telemetryOutcome,telemetryRequestCategory:e.telemetryRequestCategory}):e}let t=e instanceof Error?e.message:"Payment failed. Please try again.",n=no(t)??t;return new Ze.FloPayError(n,"api_error")}function Ts(e){let t=e.data.stripe?.publishableKey,n=!!e.data.paypal?.publishableKey,r=(0,Ze.isMountableVaultBlock)(e.data.session?.vault)||eo(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 lc(e,t){return e?e.isPaypal?"paypal":"card":t&&eo(t)?"card":void 0}async function As({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,[i,c]=await Promise.all([(0,so.loadFloPay)(e,{billingApiUrl:n,locale:r,telemetry:o}),a?(0,so.loadFloPay)(a,{billingApiUrl:n,locale:r,telemetry:o}).catch(u=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",u),null)):Promise.resolve(null)]);if(!i)throw new Ze.FloPayError("The payment provider did not initialize.","authentication_error");let p=null;return a?p=c:t&&(p=i),{flopay:i,paypalFlopay:p}}var kr=require("@flopay/js"),f=require("@flopay/shared"),Qt=require("@stripe/react-stripe-js"),s=ds(require("react"),1);function Zo(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function vi(e,t){if(e)return{error:n=>e.error(Zo(t,n)),log:n=>e.log(Zo(t,n)),performance:n=>e.performance(Zo(t,n)),terminal:n=>e.terminal(Zo(t,n)),now:()=>e.now(),elapsed:n=>e.elapsed(n),setCheckoutContext:n=>e.setCheckoutContext(n),beginCheckout:n=>e.beginCheckout(n),disable:()=>e.disable(),subscribe:n=>e.subscribe(n),flush:()=>e.flush(),destroy:()=>e.destroy()}}var Yr=require("@flopay/shared"),pc=require("react");var dc={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 hn=require("react/jsx-runtime"),Pd=`
9
+ `})]})})}var Rl=require("@flopay/shared"),wr=require("react");var El=require("react/jsx-runtime");function va({flopay:e,paypalFlopay:t,options:r,onInstrument:n,children:o}){let[i,l]=(0,wr.useState)(e instanceof Promise?null:e),[d,p]=(0,wr.useState)(t instanceof Promise||!t?null:t),b=(0,wr.useRef)(null),k=(0,wr.useRef)(null),w=Vo(n);(0,wr.useEffect)(()=>{w({class:"lifecycle",name:"checkout.mount"})},[w]),(0,wr.useEffect)(()=>{i&&w({class:"lifecycle",name:"sdk.initialize.ready"})},[w,i]),(0,wr.useEffect)(()=>{if(i)return hr(i)?.subscribe?.(w)},[w,i]),(0,wr.useEffect)(()=>{if(!(!d||d===i))return hr(d)?.subscribe?.(w)},[w,i,d]),(0,wr.useEffect)(()=>{if(!i)return;let M=hr(i);return b.current=M?.beginCheckout()??M?.now()??0,M?.log({name:"checkout.mount",stage:"checkout_mount"}),()=>{M?.log({name:"checkout.unmount",stage:"unmount"})}},[i]),(0,wr.useEffect)(()=>{let M=!1;return e instanceof Promise?e.then(W=>{M||l(W)},()=>{M||w({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"})}):l(e),()=>{M=!0}},[w,e]),(0,wr.useEffect)(()=>{let M=!1;if(!t){p(null);return}return t instanceof Promise?t.then(W=>{M||p(W)},()=>{M||w({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED",provider:"paypal"})}):p(t),()=>{M=!0}},[w,t]),(0,wr.useEffect)(()=>{if(!i||k.current===i)return;k.current=i;let M=hr(i);M?.log({name:"checkout.rendered",stage:"checkout_render"}),w({class:"lifecycle",name:"checkout.rendered"}),M?.performance({stage:"checkout_render",durationMs:M.elapsed(b.current??0),durationMode:"machine"})},[w,i]);let x=(0,Rl.resolveBillingApiUrl)(r?.billingApiUrl),O=(0,wr.useMemo)(()=>({flopay:i,paypalFlopay:d,billingApiUrl:x,emitInstrument:w}),[i,d,x,w]);return(0,El.jsx)(on.Provider,{value:O,children:o})}var _n=require("@flopay/shared");async function ei(e,t){e.current?.abort();let r=new AbortController;e.current=r;try{return await t(r.signal)}finally{e.current===r&&(e.current=null)}}var ln=require("@flopay/js"),st=require("@flopay/shared");var Ca="card";async function ld(e,t,r){if(r){if(typeof e.retrieveSetupIntent!="function")return null;let{setupIntent:i,error:l}=await e.retrieveSetupIntent(t);return{error:l,intent:i??null}}if(typeof e.retrievePaymentIntent!="function")return null;let{paymentIntent:n,error:o}=await e.retrievePaymentIntent(t);return{error:o,intent:n??null}}async function cd(e,t,r,n){if(n){if(typeof e.confirmCardSetup!="function")return null;let{setupIntent:l,error:d}=await e.confirmCardSetup(t,r);return{error:d,intent:l??null}}if(typeof e.confirmCardPayment!="function")return null;let{paymentIntent:o,error:i}=await e.confirmCardPayment(t,r);return{error:i,intent:o??null}}function Wo(e){return new st.FloPayError("Card authentication was cancelled.","api_error",{code:"three_ds_aborted",cause:e})}function dd(){return new st.FloPayError("Card authentication timed out.","api_error",{code:"three_ds_timeout"})}function Zi(e,t){return Object.assign(e,{checkoutMethod:t})}function Qn(e,t){let r=e instanceof st.FloPayError?e:new st.FloPayError(e instanceof Error?e.message:"Payment provider failed.","api_error",{code:"provider_runtime_failure"});return Object.assign(r,{checkoutMethod:t,telemetryFailureCategory:"provider_runtime",telemetryRequestCategory:"provider_sdk"})}async function ba(e,t){try{return await e()}catch(r){throw Qn(r,t)}}function _l(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 Tl(e){return(0,ln.runSavedCardChallenge)(e)}async function Ho(e,t){let{billingApiUrl:r,sessionId:n,signal:o}=t,i=t.nonce??t.session.clientSecret,l=new ln.PaymentAPI(r,{telemetry:!1}),d=`${r.replace(/\/+$/,"")}/v1/checkouts/sessions/${encodeURIComponent(n)}/status`,p;try{p=await(0,ln.completeSavedCardNextAction)({billingApiUrl:r,sessionId:n,nonce:i,nextActionRedirectUrl:e.nextActionRedirectUrl,signal:o,createDeclineError:k=>jn({type:k.declineReason??"authorization_declined",gatewayErrorCode:k.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:"card"})},l)}catch(k){if(o.aborted||k instanceof Error&&k.name==="AbortError")throw k instanceof st.FloPayError&&k.code==="three_ds_aborted"?k:Wo(k);if(!(k instanceof st.FloPayError)||k.code!=="three_ds_timeout"&&k.code!=="checkout_processing_timeout")throw k;try{p=await l.waitForCheckoutSessionCompletion(n,{initialDelayMs:0,nonce:i,statusUrl:d,timeoutMs:5e3,signal:o})}catch(x){if(o.aborted)throw Wo(x);if(!(x instanceof st.FloPayError)||x.code!=="checkout_processing_timeout")throw x}let w=p&&lo(p,t.session);if(!Xn(w)&&w?.status!=="expired"){if(t.telemetry){let x=new ln.PaymentAPI(r);try{x.reportThreeDsAbandoned(n)}finally{x.destroy()}}throw dd()}}let b=p&&lo(p,t.session);if(!Xn(b))throw No(b);return{...Yn(b,n),checkoutMethod:"card"}}function jn(e,t="Payment failed. Please try again.",r){let n=r?.checkoutMethod??e?.checkoutMethod??(e?.type==="paypal_redirect_required"?"paypal":"card"),o=e?.message??t,i=(0,Po.applyFriendlyMessageOverride)(o)??o,l=Zi(new st.FloPayError(i,"api_error",{code:e?.code??(0,st.normalizeCheckoutFailureOutcome)(e?.outcome)??(0,st.normalizeCheckoutFailureOutcome)(e?.type)??e?.gatewayErrorCode}),n);return e?.orderId&&(l.orderId=e.orderId),l}function Ji(e){return typeof window<"u"&&window.location.href?window.location.href:e.successUrl||e.cancelUrl||void 0}function ti(e){return typeof e=="string"&&e.startsWith("pi_")&&e.includes("_secret_")}function Ml(e,t){let r=[e?.threeDSecureToken,e?.clientSecret,e?.stripeClientSecret];for(let o of r)if(typeof o=="string"&&o.length>0&&(!t?.requirePaymentIntentClientSecret||ti(o)))return o;let n=e?.data;if(n&&typeof n=="object"){let o=n,i=[o.threeDSecureToken,o.clientSecret,o.stripeClientSecret,o.id];for(let d of i)if(typeof d=="string"&&d.length>0&&(!t?.requirePaymentIntentClientSecret||ti(d)))return d;let l=o.gateways;if(l&&typeof l=="object"){let d=l.stripe;if(d&&typeof d=="object"){let p=d,b=[p.stripeClientSecret,p.clientSecret];for(let k of b)if(typeof k=="string"&&k.length>0&&(!t?.requirePaymentIntentClientSecret||ti(k)))return k}}}}async function ud({billingApiUrl:e,sessionId:t,nonce:r,responseJson:n}){let o=Ml(n,{requirePaymentIntentClientSecret:!0});if(typeof o=="string"&&o.length>0)return{type:"3ds_required",threeDSecureToken:o};if(!t)return null;try{let d=(await new ln.PaymentAPI(e,{telemetry:!1}).getUnifiedCheckoutSession(t,r)).data.stripe?.clientSecret;if(ti(d))return{type:"3ds_required",threeDSecureToken:d}}catch{}return null}async function Ko({billingApiUrl:e,sessionId:t,session:r,nonce:n,tokenizedData:o,returnUrl:i,telemetry:l}){let d=e.replace(/\/+$/,""),p=t??r.id,b=n??r.clientSecret,k=r.customer?.id??r.accountData?.userId??"",w=r.customer?.email??r.accountData?.email??"",x=r.customer?.firstName??r.accountData?.firstName??"",O=r.customer?.lastName??r.accountData?.lastName??"",M=r.customer?.country??r.accountData?.country??void 0,W=r.customer?.zip??r.accountData?.zip??void 0,h=await new ln.PaymentAPI(d,l===!1?{telemetry:!1}:void 0).processPayment(k,{sessionId:p,nonce:b,paymentMethodCategory:"saved",tokenizedData:o,accountData:{userId:k,email:w,firstName:x,lastName:O,country:M,zip:W},returnUrl:i??Ji(r)});if(h.ok){let S=typeof h.json=="function"?await h.json().catch(()=>null):null;if((0,st.isAuthorizationOnlySession)(r)||S?.status==="authorized")return{type:"success",result:{status:"authorized",paymentId:typeof S?.paymentId=="string"?S.paymentId:r.paymentId,sessionId:typeof S?.sessionId=="string"?S.sessionId:p,authorizationExpiresAt:typeof S?.authorizationExpiresAt=="string"?S.authorizationExpiresAt:r.authorizationExpiresAt,paymentMethodId:ma(o),checkoutMethod:Il(o,r)}};let Pe=o?.threeDSecureActionResultTokenId;return{type:"success",result:{status:"succeeded",...Pe?{paymentIntentId:Pe}:{},paymentMethodId:ma(o),checkoutMethod:Il(o,r)}}}let v;try{v=await h.json()}catch(S){throw new st.FloPayError("Payment failed. Please try again.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:h.status,cause:S})}if(v?.type==="3ds_required"&&typeof v.nextActionRedirectUrl=="string")return{type:"next_action_required",nextActionRedirectUrl:v.nextActionRedirectUrl};if(v?.type==="paypal_redirect_required"||v?.type==="3ds_required"){let S=Ml(v);if(!S)throw new st.FloPayError("Authentication is required but no redirect token was provided.","api_error",{code:"InvalidPaymentProcessResponse",statusCode:h.status});return{type:v.type,threeDSecureToken:S,paymentMethodId:v.paymentMethodId}}if(v?.gatewayErrorCode==="authentication_required"){let S=await ud({billingApiUrl:d,sessionId:p,nonce:b,responseJson:v});if(S)return S;throw Zi(new st.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card")}let te=new st.FloPayError(v?.message??"Payment failed. Please try again.","api_error",{code:v?.code??v?.gatewayErrorCode,declineCode:v?.declineCode??v?.gatewayDeclineReason,statusCode:h.status});throw Object.assign(te,{telemetryOutcome:(0,st.classifyPaymentRejection)(h.status,v)})}async function ri(e,{flopay:t,paypalFlopay:r,attempt3DS:n,billingApiUrl:o,sessionId:i,session:l,returnUrl:d,telemetry:p,signal:b}){let k=t?.getRawProvider();if(!k)throw Qn(new st.FloPayError("Payment provider is not available.","api_error"),"card");if(e.type==="3ds_required"){if(!n||!e.threeDSecureToken)throw Zi(new st.FloPayError("Your card requires authentication. Please enter your payment details below.","api_error",{code:"authentication_required"}),"card");let w=(0,st.isSetupIntentClientSecret)(e.threeDSecureToken),x=null,O=e.paymentMethodId,M=await ba(()=>ld(k,e.threeDSecureToken,w),"card");if(M){if(M.error)throw Qn(new st.FloPayError(M.error.message??`Failed to retrieve 3DS ${w?"setup":"payment"} status.`,"api_error",{code:M.error.code}),"card");let _=M.intent;!O&&_?.payment_method&&(typeof _.payment_method=="string"?O=_.payment_method:"id"in _.payment_method&&(O=_.payment_method.id??void 0))}let W=O?await ba(()=>cd(k,e.threeDSecureToken,{payment_method:O,return_url:d??Ji(l)??window.location.href},w),"card"):null;if(W){if(W.error)throw Qn(new st.FloPayError(W.error.message??"3DS authentication failed.","api_error",{code:W.error.code}),"card");x=W.intent}else{let _=await ba(()=>k.handleNextAction({clientSecret:e.threeDSecureToken}),"card");if(_.error)throw Qn(new st.FloPayError(_.error.message??"3DS authentication failed.","api_error",{code:_.error.code}),"card");x=(w?_.setupIntent:_.paymentIntent)??null}if(x&&(x.status==="requires_capture"||x.status==="succeeded"||x.status==="processing")){let _=await Ko({billingApiUrl:o,sessionId:i,session:l,telemetry:p,tokenizedData:{id:x.id,type:"card",threeDSecureActionResultTokenId:x.id},returnUrl:d});return _.type==="success"?{..._.result,paymentIntentId:_.result.paymentIntentId??x.id,paymentMethodId:_.result.paymentMethodId??O}:_.type==="next_action_required"?Ho(_,{billingApiUrl:o,sessionId:i??l.id,session:l,signal:b}):ri(_,{flopay:t,paypalFlopay:r,attempt3DS:n,billingApiUrl:o,sessionId:i,session:l,returnUrl:d,telemetry:p,signal:b})}throw Qn(new st.FloPayError("3DS authentication did not complete successfully.","api_error"),"card")}if(e.type==="paypal_redirect_required"){let w=(r??t)?.getRawProvider();if(!w)throw Qn(new st.FloPayError("PayPal is not available.","api_error"),"paypal");if(e.paymentMethodId){let{error:O}=await ba(()=>w.handleNextAction({clientSecret:e.threeDSecureToken}),"paypal");if(O)throw Qn(new st.FloPayError(O.message??"PayPal authorization failed.","api_error",{code:O.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}let{error:x}=await ba(()=>w.confirmPayment({clientSecret:e.threeDSecureToken,confirmParams:{return_url:d??Ji(l)??window.location.href,payment_method_data:{type:"paypal"}},redirect:"if_required"}),"paypal");if(x)throw Qn(new st.FloPayError(x.message??"PayPal authorization failed.","api_error",{code:x.code}),"paypal");return{status:"succeeded",checkoutMethod:"paypal"}}throw new st.FloPayError("Unsupported payment redirect state.","api_error")}function Sa(e){if(e instanceof st.FloPayError){let n=(0,Po.applyFriendlyMessageOverride)(e.message);return n&&n!==e.message?Object.assign(new st.FloPayError(n,e.type,{code:e.code,declineCode:e.declineCode,param:e.param,statusCode:e.statusCode,sessionId:e.sessionId}),{checkoutMethod:e.checkoutMethod,orderId:e.orderId,telemetryFailureCategory:e.telemetryFailureCategory,telemetryOutcome:e.telemetryOutcome,telemetryRequestCategory:e.telemetryRequestCategory}):e}let t=e instanceof Error?e.message:"Payment failed. Please try again.",r=(0,Po.applyFriendlyMessageOverride)(t)??t;return new st.FloPayError(r,"api_error")}function Qi(e){let t=e.data.stripe?.publishableKey,r=!!e.data.paypal?.publishableKey,n=(0,st.isMountableVaultBlock)(e.data.session?.vault)||(0,Rn.canRecoverHostedCardForm)(e.data.session);if(!t&&!r&&!n)throw new st.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 Il(e,t){return e?e.isPaypal?"paypal":"card":t&&(0,Rn.canRecoverHostedCardForm)(t)?"card":void 0}async function es({publishableKey:e,paypalPublishableKey:t,billingApiUrl:r,locale:n,telemetry:o}){if(!e)return{flopay:null,paypalFlopay:null};let i=t&&t!==e?t:void 0,[l,d]=await Promise.all([(0,ln.loadFloPay)(e,{billingApiUrl:r,locale:n,telemetry:o}),i?(0,ln.loadFloPay)(i,{billingApiUrl:r,locale:n,telemetry:o}).catch(b=>(console.warn("[FloPay] Failed to load PayPal Stripe instance:",b),null)):Promise.resolve(null)]);if(!l)throw new st.FloPayError("The payment provider did not initialize.","authentication_error");let p=null;return i?p=d:t&&(p=l),{flopay:l,paypalFlopay:p}}var Mn=require("@flopay/js"),u=require("@flopay/shared"),er=require("@stripe/react-stripe-js"),a=$i(require("react"),1);function Go(e,t){return{...t,inAppBrowser:e.browser.inAppBrowser,appFamily:e.browser.appFamily,popupCapability:e.capability.current(),presentationMode:e.presentationMode}}function ni(e,t){if(e)return{error:r=>e.error(Go(t,r)),log:r=>e.log(Go(t,r)),performance:r=>e.performance(Go(t,r)),terminal:r=>e.terminal(Go(t,r)),now:()=>e.now(),elapsed:r=>e.elapsed(r),setCheckoutContext:r=>e.setCheckoutContext(r),beginCheckout:r=>e.beginCheckout(r),disable:()=>e.disable(),subscribe:r=>e.subscribe(r),flush:()=>e.flush(),destroy:()=>e.destroy()}}var eo=require("@flopay/shared"),Al=require("react");var xl={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 Pr=require("react/jsx-runtime"),pd=`
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 @@ ${gt.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
- `,Qo=44;function ea(){return(0,hn.jsx)("style",{children:Pd})}function Ma(e,t){let n=e.availablePaymentMethods;return n&&t.some(r=>n[r])?"ready":"unavailable"}function xa({state:e,placeholderTestId:t,borderRadius:n=8,children:r}){return e==="unavailable"||e==="load_error"?null:(0,hn.jsxs)("div",{style:{position:"relative",minHeight:44},children:[(0,hn.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,hn.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 Ms(e){return e!=="unavailable"&&e!=="load_error"}function Ci({method:e,themeId:t,submitting:n=!1,disabled:r=!1,highlighted:o=!1,hasNextStep:a=!1,onClick:i,backgroundColor:c,borderColor:p,textColor:u,borderRadius:h,fontFamily:P}){let M=(0,Yr.resolveStripeMethodBrandVariant)(e,t),_=dc[e],[w,A]=(0,pc.useState)(!1),I=!!_&&!w,b=M?.backgroundColor??c??"#ffffff",C=M?.borderColor??p??"#d1d5db",G=M?.textColor??u??"#262833";return(0,hn.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-button-${e}`,"data-method":e,onClick:()=>{!n&&!r&&i()},disabled:n||r,"aria-busy":n||void 0,style:{position:"relative",width:"100%",boxSizing:"border-box",height:Qo,padding:"0 1rem",backgroundColor:b,color:G,border:`1px solid ${C}`,borderRadius:h??8,fontSize:"0.95rem",fontWeight:600,fontFamily:P,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,hn.jsx)("span",{style:{margin:"0 auto"},children:`Connecting to ${(0,Yr.getStripeMethodDisplayName)(e)}\u2026`}):(0,hn.jsxs)(hn.Fragment,{children:[(0,hn.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:(0,Yr.hasVendoredStripeMethodLogo)(e)?8:0},children:[I?(0,hn.jsx)("img",{src:_,alt:"","aria-hidden":"true",onError:()=>A(!0),loading:"lazy",decoding:"async",width:30,height:20,style:{width:30,height:20,flexShrink:0,borderRadius:3,objectFit:"contain",display:"inline-flex"}}):null,!I&&M?.logoSvg?(0,hn.jsx)("span",{"aria-hidden":"true",style:{width:30,height:20,flexShrink:0,display:"inline-flex",borderRadius:3,overflow:"hidden"},dangerouslySetInnerHTML:{__html:M.logoSvg}}):null,(0,hn.jsx)("span",{children:(0,Yr.getStripeMethodDisplayName)(e)})]}),a&&(0,hn.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:G,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,hn.jsx)("path",{d:"M9 18l6-6-6-6"})})]})})}function Si(e){let t=new Set(e.map(Yr.stripeExpressMethodToOptionKey)),n=r=>r==="applePay"||r==="googlePay"?"always":"auto";return Object.fromEntries(["applePay","googlePay","paypal","link","amazonPay","klarna"].map(r=>[r,t.has(r)?n(r):"never"]))}var wi={buttonType:{applePay:"plain",googlePay:"plain"},layout:{maxColumns:1,overflow:"never"}},ki={type:"accordion",defaultCollapsed:!1,radios:"never"};function Ri({testId:e,attributes:t,disabled:n,onClick:r,color:o,borderRadius:a,style:i,children:c}){return(0,hn.jsx)("button",{type:"button","data-testid":e,...t,onClick:r,disabled:n,style:{width:"100%",marginTop:"0.75rem",padding:"0.875rem",backgroundColor:o,color:"white",border:"none",borderRadius:a,fontSize:"1rem",fontWeight:600,cursor:n?"not-allowed":"pointer",opacity:n?.5:1,transition:"opacity 120ms ease-out",...i??{}},children:c})}var Qn=require("react");function _i(e,t){if(!e)return t;let n=t??{},r=Object.keys(n),o=r.some(i=>i.startsWith("background")),a={};for(let[i,c]of Object.entries(e))i in n||o&&i.startsWith("background")||(a[i]=c);for(let i of r)a[i]=n[i];return a}var vd=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 Cd(e){let t=e.replace(/^(Webkit|Moz|ms)(?=[A-Z])/,"");return vd.has(t.charAt(0).toLowerCase()+t.slice(1))}function Sd(e,t){return typeof t=="number"&&t!==0&&!Cd(e)?`${t}px`:String(t).trim()}function mc(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]=Sd(n,r)}}}var wo=require("react/jsx-runtime"),xs=new WeakSet;function co({capture:e,html:t,messageToken:n,expectedOrigin:r,verificationRequired:o,theme:a,submitLabel:i,containerStyle:c,onReady:p,onError:u,onValidation:h}){let P=(0,Qn.useRef)(null),M=(0,Qn.useRef)(p),_=(0,Qn.useRef)(u),w=(0,Qn.useRef)(h);M.current=p,_.current=u,w.current=h;let A=(0,Qn.useRef)(a);A.current=a;let I=(0,Qn.useRef)(null),b=i??void 0,C=(0,Qn.useRef)(b);C.current=b;let G=(0,Qn.useRef)(void 0);return(0,Qn.useEffect)(()=>{let k=P.current;if(!k)return;let ye=!0,N=!1,H=()=>{!ye||N||(N=!0,M.current?.())},_e=e.on("ready",()=>{H()}),te=e.on("error",fe=>{_.current?.(fe.message??"There was a problem loading the secure card form.")}),Ne=e.on("validation",fe=>{w.current?.(fe.message??null)}),Ye=C.current??(xs.has(e)?null:void 0),be={html:t,...n?{messageToken:n}:{},...r?{expectedOrigin:r}:{},...o?{verificationRequired:!0}:{},...A.current?{theme:A.current}:{},...Ye===void 0?{}:{submitLabel:Ye}};return I.current=A.current??null,G.current=C.current,C.current!==void 0&&xs.add(e),e.mount(k,be).then(()=>{H()}).catch(fe=>{ye&&_.current?.(fe instanceof Error?fe.message:"Failed to load the secure card form.")}),()=>{ye=!1,_e(),te(),Ne(),e.unmount()}},[e,t,n,r,o]),Co(()=>{let k=P.current;k&&mc(k,c)},[c]),(0,Qn.useEffect)(()=>{a!==void 0&&(a===null&&I.current===null||(I.current=a,e.applyTheme?.(a)))},[e,a]),(0,Qn.useEffect)(()=>{b!==G.current&&(G.current=b,b!==void 0&&xs.add(e),e.setSubmitLabel?.(b??null))},[e,b]),(0,wo.jsx)("div",{ref:P,"data-testid":"flopay-vault-card-fields"})}function Ei({label:e}){return(0,wo.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",margin:"0.5rem 0 0.75rem",color:"#999",fontSize:"0.85rem"},children:[(0,wo.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}}),(0,wo.jsx)("span",{children:e}),(0,wo.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}})]})}var fc=/^#([0-9a-f]{6})$/i,wd=/^#([0-9a-f]{3})$/i,gc=/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i,hc=/^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,kd=/^linear-gradient\(\s*(-?\d+(?:\.\d+)?)deg\s*,\s*(.+)\)$/i,Rd=/^(-?\d+(?:\.\d+)?)(?:px)?$/,_d=/^(-?\d+(?:\.\d+)?)em$/,Ed=/^blur\(\s*(\d+(?:\.\d+)?)(?:px)?\s*\)$/i,Id=/^[a-z][a-z0-9 -]{0,31}$/i,Td=new Set(["none","uppercase","lowercase","capitalize"]);function bc(e){if(typeof e!="string")return null;let t=e.trim(),n=fc.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=wd.exec(t);if(r){let[h,P,M]=r[1].split("").map(_=>Number.parseInt(_+_,16));return{r:h,g:P,b:M,a:null}}let o=gc.exec(t),a=o?null:hc.exec(t),i=o??a;if(!i)return null;let c=Number(i[1]),p=Number(i[2]),u=Number(i[3]);return c>255||p>255||u>255?null:{r:c,g:p,b:u,a:a?Number(a[4]):null}}function Pc({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 Fa(e){if(typeof e!="string")return;let t=e.trim();if(fc.test(t)||gc.test(t))return t;let n=hc.exec(t);if(n&&/^\d/.test(n[4]))return t;let r=bc(t);return r?Pc(r):void 0}function Ii(e,t=.12){let n=bc(e);if(!n)return e;let r=Math.max(0,Math.min(1,1-t));return Pc({r:Math.round(n.r*r),g:Math.round(n.g*r),b:Math.round(n.b*r),a:n.a})}function Ba(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 ko(e,t,n){if(typeof e!="number"&&typeof e!="string")return;let r=Rd.exec(String(e).trim());if(!r)return;let o=Number(r[1]);return Number.isFinite(o)&&o>=t&&o<=n?o:void 0}function Ad(e,t,n){if(typeof e!="string")return;let r=_d.exec(e.trim());if(!r)return;let o=Number(r[1]);return Number.isFinite(o)&&o>=t&&o<=n?o:void 0}function Md(e){let t=Ba(e,",");if(t.length<2||t.length>5)return;let n=[];for(let[r,o]of t.entries()){let a=Ba(o," "),i=Fa(a[0]);if(!i)return;let c=r/(t.length-1)*100,p=a[1]===void 0?c:Number(/^(\d+(?:\.\d+)?)%$/.exec(a[1])?.[1]),u=n[n.length-1]?.position??-1;if(!Number.isFinite(p)||p<0||p>100||p<u)return;n.push({color:i,position:p})}return{type:"linearGradient",angle:0,stops:n}}function xd(e){if(typeof e!="string")return;let t=e.trim(),n=Fa(t);if(n)return{type:"solid",color:n};let r=kd.exec(t);if(!r)return;let o=Number(r[1]);if(!Number.isFinite(o)||o<0||o>360)return;let a=Md(r[2]);return a&&a.type==="linearGradient"?{...a,angle:o}:void 0}function Fd(e){return e.type==="solid"?{type:"solid",color:Ii(e.color)}:{...e,stops:e.stops.map(t=>({...t,color:Ii(t.color)}))}}function Bd(e){let t=!1,n,r=[];for(let p of Ba(e," ")){if(p.toLowerCase()==="inset"){t=!0;continue}let u=Fa(p);if(u){n=u;continue}let h=ko(p,-128,128);if(h===void 0)return;r.push(h)}if(!n||r.length<2||r.length>4)return;let[o,a,i=0,c=0]=r;if(!(Math.abs(o)>64||Math.abs(a)>64||i>128||Math.abs(c)>32))return{color:n,inset:t,offsetX:o,offsetY:a,blur:i,spread:c}}function Dd(e){if(typeof e!="string")return;let t=e.trim();if(t.toLowerCase()==="none")return[];let n=Ba(t,",").map(Bd);if(!(n.length===0||n.length>4))return n.every(r=>r!==void 0)?n:void 0}function yc(e){if(typeof e!="string")return;let t=Ba(e,",").map(n=>n.replace(/^['"]|['"]$/g,"").trim()).filter(n=>Id.test(n)).slice(0,4);return t.length>0?t:void 0}function Od(e){let t=typeof e=="string"?e.trim().split(/\s+/):[e],n=ko(t[0],0,64),r=ko(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 vc({appearance:e,buttonsStyles:t,fontFamily:n}){let r=t.submitButton;if(!r)return;let o=e?.variables,a=xd(r.background??r.backgroundColor),i=Fa(o?.colorPrimaryHover),c=i?{type:"solid",color:i}:a&&Fd(a),p={fontFamilies:yc(r.fontFamily)??yc(n),fontSize:ko(r.fontSize??t.submitButtonFontSize,10,32)??16,fontWeight:Ld(r.fontWeight)??600,letterSpacing:Ad(r.letterSpacing,-.1,.5)??.01,lineHeight:ko(r.lineHeight,.8,2)??1,textTransform:Td.has(String(r.textTransform))?r.textTransform:"uppercase"},u=Od(r.padding),h=Dd(r.boxShadow),P=ko(r.borderRadius,0,9999),M=typeof r.backdropFilter=="string"?ko(Ed.exec(r.backdropFilter.trim())?.[1],0,40):void 0;return{foregroundColor:Fa(r.color)??"#FFFFFF",...a?{background:a,disabledBackground:a}:{},...c?{hoverBackground:c}:{},typography:p,...u?{spacing:u}:{},...h?{shadow:h}:{},...P===void 0?{}:{borderRadius:P},disabledOpacity:e?.theme==="night"?.8:.6,...M===void 0?{}:{backdropBlur:M}}}function ta(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)?Ii(r,t):e}function Fs(e){if(typeof e=="number"||typeof e=="string")return e}function na({appearance:e,buttonsStyles:t,layout:n="default"}){let r=e?.variables,o=P=>typeof P=="string"&&P?P:void 0,a=t.submitButton,i=o(r?.colorPrimary)??o(a?.backgroundColor)??"#4A49FF",c=n==="buttons",p=t.nameInput,u=o(p?.fontFamily)??o(r?.fontFamily)??"Poppins, sans-serif",h=vc({appearance:e,buttonsStyles:t,fontFamily:u});return{primaryColor:i,primaryHoverColor:o(r?.colorPrimaryHover)??ta(i,.12),inputBackgroundColor:o(t.cardInputBackground)??o(r?.colorBackground)??"#ffffff",textColor:o(t.cardInputColor)??o(p?.color)??o(r?.colorText)??"#262833",borderColor:o(t.cardInputBorder)??(c?"#e5e7eb":"#A4A4FF"),placeholderColor:o(t.cardInputPlaceholderColor)??"#9ca3af",errorColor:o(r?.colorDanger)??"#dc2626",successColor:"#16a34a",fontFamily:u,fontSize:o(t.cardInputFontSize)??o(r?.fontSizeBase)??"16px",fontWeight:String(Fs(p?.fontWeight)??400),borderRadius:o(r?.borderRadius)??"8px",...h?{submitButton:h}:{}}}var d=require("react/jsx-runtime"),Or="flopay_stripe_resume",Cc="flopay_wallet_resume",Fc="fw1",Nd="fw2",Bc=300*1e3,Ud=900,zd=25e3,qd=25e3,Vd=1e4,Dc=["payment_intent","payment_intent_client_secret","redirect_status"],wr={provider:"paypal",paymentMethodCategory:"paypal"},jd="x-flopay-process-result-source",$d="status";async function Wd(e,t,n){try{let r=(await e.getUnifiedCheckoutSession(t,n)).data.session;if(r?.status==="complete")return null;if(r?.status==="authorized")return{status:"authorized",paymentId:r.paymentId,sessionId:r.id||t,authorizationExpiresAt:r.authorizationExpiresAt}}catch{}}var Ti={},Oa=class{constructor(t){this.reason=t}};function Hd(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function Gt(e,t){if(typeof window>"u")return!1;try{return t===void 0?window.localStorage.removeItem(e):window.localStorage.setItem(e,JSON.stringify(t)),!0}catch{return!1}}function Us(e){return`${Nd}:${e}`}function Ai(e){return Gt(Us(e))}function Mi(e,t){if(typeof window>"u")return null;let n=Us(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>Bc||o.sessionId!==e||o.nonce!==t||typeof o.clientSecret!="string"||typeof o.providerObjectId!="string"||typeof o.paymentMethodType!="string"?(Ai(e),null):o}catch{return Ai(e),null}}function Kd(e){return Gt(Us(e.sessionId),e)}function Sc(e,t,n){let r=Mi(e,t);return!r||r.clientSecret!==n?!1:Ai(e)}function Bs(e,t,n){if(typeof window>"u")return;Mi(e,t)?.clientSecret===n&&Ai(e)}function Gd(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function Ds(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":va(e.status),o=Gd(e);return!r||!o?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:o}}async function wc(e,t,n){let r=null;try{return await Promise.race([Wl(e,t),new Promise(o=>{r=window.setTimeout(()=>{r!==null&&n?.delete(r),o(null)},Vd),n?.add(r)})])}finally{r!==null&&(window.clearTimeout(r),n?.delete(r))}}function Yd(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Oc(e){return e instanceof f.FloPayError&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function xi(e,t,...n){let r=n[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:r});try{return await new kr.PaymentAPI(e,{telemetry:!1}).createSessionIntent(...n)}catch(o){throw Oc(o)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:r}),o}}var La="flopay_paypal_resume",Da=new Map;function Lc(e){if(!e||typeof window>"u")return null;try{let t=window.localStorage.getItem(La);if(!t)return null;let n=JSON.parse(t);return n?.clientSecret===e?n:null}catch{return null}}function Xd(){if(typeof window>"u")return!1;let[e,t]=zs();return e?Lc(t)!==null:!1}function zs(){let e=new URLSearchParams(window.location.search);return Dc.map(t=>e.get(t))}function qs(){let e=new URL(window.location.href);for(let t of Dc)e.searchParams.delete(t);return e.toString()}function Jd(){Gt(La),window.history.replaceState({},"",qs())}var Zd=250,kc="Just a moment \u2014 we are finalizing your order. Please press pay again.",Qd="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function Vs(e,t,n,r){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:n,requestCategory:"provider_sdk",...r?{terminalReason:r}:{}})}async function Fi({billingApiUrl:e,sessionId:t,nonce:n,request:r}){if(!(!t||!n))try{await new kr.PaymentAPI(e,{telemetry:!1}).reportSessionIntentDecline(t,n,r)}catch{}}function ep(e){return e instanceof f.FloPayError&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Nc({event:e,fallbackEmail:t,fallbackName:n}){let r=e.billingDetails,o=t?.trim(),a=bo(n),i=a.firstName?a:bo(r?.name);return qn({email:(0,f.isValidEmail)(o)?o:r?.email?.trim(),firstName:i.firstName,lastName:i.lastName})}async function tp({event:e,prepared:t,email:n,billingName:r,methodLabel:o,collect:a}){let i=Nc({event:e,fallbackEmail:t?.accountPatch?.email??n,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||r});return(0,f.isValidEmail)(i.email)?i:a(o,i)}var Na=180,Rc=`flopay-card-enter ${Na}ms cubic-bezier(0, 0, 0.2, 1) both`,_c=`flopay-card-exit ${Na}ms cubic-bezier(0.4, 0, 0.2, 1) both`,np=`flopay-buttons-enter ${Na}ms cubic-bezier(0, 0, 0.2, 1) both`,rp=`flopay-buttons-exit ${Na}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function op(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function js(e){if(!e.themeBundle&&!e.explicitPrimaryColor)return{backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:e.resolvedBorderRadius,boxShadow:"0 1px 2px rgba(0,0,0,0.04)"};let t=e.themeBundle?e.submitButtonStyle??{}:{};return{backgroundColor:e.resolvedPrimaryColor,color:t.color??"white",border:t.border??"none",borderRadius:t.borderRadius??e.resolvedBorderRadius,boxShadow:t.boxShadow}}var ap={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function ip(e){return e.isPaypal||e.gateway==="paypal"||e.paymentMethodType==="paypal"?"paypal":e.paymentMethodType==="apple_pay"||e.paymentMethodType==="google_pay"?"wallet":e.paymentMethodType&&e.paymentMethodType!=="card"?"apm":"card"}var Os={width:"100%",minHeight:Qo,margin:"0 0 0.5rem",padding:"0.75rem 0.875rem",border:"1px solid #2563eb",borderRadius:8,background:"#eff6ff",color:"#1d4ed8",fontSize:"0.95rem",fontWeight:700,cursor:"pointer"};function sp(e){switch(e){case"paypal":return"PayPal";case"apple_pay":return"Apple Pay";case"google_pay":return"Google Pay";default:return"Card"}}function Ec(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function Ls(e){return e==="paypal"?"PayPal":(0,f.getStripeMethodDisplayName)(e)}function lp(e){let t=(0,f.getPostalCodeExample)(e);return`Enter a valid ${(0,f.getPostalCodeLabel)(e)}${t?` (e.g. ${t})`:""}`}function cp(e,t,n){let r=(0,f.isPostalCodeSupported)(e),o=t.trim(),a=n&&r,i=a&&!o,c=a&&!!o&&!(0,f.isValidPostalCode)(e,o);return{visible:n,supported:r,required:a,empty:i,malformed:c}}function up(e,t){let n=e.trim(),r=t&&!n,o=t&&!!n&&!(0,f.isValidEmail)(n);return{required:t,empty:r,malformed:o,value:n}}function Ic(e,t){return t instanceof f.FloPayError?t:new f.FloPayError(t instanceof Error?t.message:`${sp(e)} before-click hook failed.`,"validation_error")}function dp(e){return typeof e=="number"?`${e}px`:e}function Bi(e){return(0,d.jsx)(pp,{...e})}function Tc({sessionId:e,nonce:t,email:n,billingApiUrl:r,onTokenizedBody:o,onErrorChange:a,isProcessing:i=!1,onButtonClick:c,onDecline:p,onTechnicalFailure:u,runBeforeButtonClick:h,billingName:P,onBuyerIdentityReady:M,onLoadStateChange:_,placeholderBorderRadius:w,popupCapabilityOwner:A,externalTelemetryContext:I,presentationMode:b}){let C=Hr(),{emitInstrument:G}=(0,s.useContext)(ar),k=(0,Qt.useStripe)(),ye=(0,Qt.useElements)(),N=(0,s.useMemo)(()=>vi(gn(C),I),[I,C]),[H,_e]=(0,s.useState)("loading");(0,s.useEffect)(()=>{_?.(H)},[H,_]);let[te,Ne]=(0,s.useState)(!1),Ye=(0,s.useRef)(!1),be=!(0,f.isValidEmail)(n?.trim())||!P?.trim(),{request:fe,collect:We,finish:Te}=Vo(),Fe=(0,s.useRef)(!1),Ae=(0,s.useRef)(null),re=(0,s.useRef)(null),[se,Ce]=(0,s.useState)(0),[Be,Y]=(0,s.useState)(!1),Q=(0,s.useRef)(!1),Pe=(0,s.useRef)(new Map),{startAttempt:z,finishAttempt:we,invalidateAttempt:J,isAttemptInvalidated:Ee,isAttemptCurrent:Z,generationRef:it}=ka((q,ve,Qe)=>{u?.(q,ve,{...Qe,popupBlocked:Qe?.popupBlocked??io(ve),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:b,terminalReason:"overlay_timeout"}),Y(!0),Ce(X=>X+1)},{onHandoffObserved:()=>{A.markAvailable(),N?.log({name:"provider.popup.opened",stage:"overlay_open",...wr,attempt:it.current})}});(0,s.useEffect)(()=>{Be&&re.current?.focus()},[Be,se]);let He=(0,s.useCallback)(()=>{Ce(q=>q+1)},[]),Ve=(0,s.useCallback)((q,ve,Qe)=>{J(Qe),u?.("paypal",q,{code:ve,popupBlocked:io(q),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:b}),Y(!0),He()},[J,u,b,He]),at=(0,s.useCallback)(()=>{window.setTimeout(()=>{(Ae.current?.querySelector("iframe")??Ae.current)?.focus()},0)},[]);(0,s.useEffect)(()=>{Q.current&&(Q.current=!1,at())},[at,se]);let Ke=(0,s.useCallback)(()=>{Y(!1),a?.(null),at()},[at,a]);(0,s.useEffect)(()=>{if(!k||Fe.current)return;let[q,ve,Qe]=zs();if(!q||!ve)return;let X=Lc(ve);if(!X)return;Fe.current=!0;let Ue=!0,vt=Da.get(ve);vt||(vt=Qe==="failed"?Promise.resolve(null):Promise.resolve().then(()=>k.retrievePaymentIntent(ve)),Da.set(ve,vt));let Xe={accountPatch:X.accountPatch,sessionId:X.sessionId,nonce:X.nonce},kt=()=>{N?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",...wr,requestCategory:"provider_sdk"})};return N?.log({name:"provider.redirect.resumed",stage:"redirect_resume",...wr}),(async()=>{try{Ne(!0);let g=await vt;if(!Ue)return;if(g?.error){Da.delete(ve),kt(),a?.(g.error.message??"Failed to retrieve PayPal payment status.");return}if(Jd(),Da.delete(ve),Qe==="failed"){let K="PayPal payment was declined. Please try again.";N?.terminal({outcome:"payment_declined",...wr,terminalReason:"provider_declined"}),a?.(K),p?.(fn("paypal",K));return}let S=g?.paymentIntent;if(S&&S.id!==q){kt(),a?.("Failed to match the returned PayPal payment.");return}if(S&&(S.status==="requires_capture"||S.status==="succeeded")){let K=typeof S.payment_method=="string"?S.payment_method:S.payment_method?.id;o({id:K??S.id,type:"card",threeDSecureActionResultTokenId:S.id,isPaypal:!0},{...Xe,presentationMode:"redirect"})}else{let K="PayPal payment was not completed. Please try again.";N?.terminal({outcome:S?.status==="canceled"?"payment_cancelled":"payment_declined",...wr,terminalReason:S?.status==="canceled"?"cancelled":"provider_declined"}),a?.(K),p?.(fn("paypal",K))}}catch(g){if(!Ue)return;Da.delete(ve),kt(),a?.(g instanceof Error?g.message:"Failed to complete PayPal payment.")}finally{Ue&&Ne(!1)}})(),()=>{Ue=!1,Fe.current=!1}},[k,o,a,p,N]);let st=(0,s.useCallback)(async(q=!1)=>{let ve=h?await h("paypal"):{proceed:!0};if(!ve.proceed)return Pe.current.delete(se),!1;let Qe=z("paypal");return Pe.current.set(se,{generation:Qe,accountPatch:ve.accountPatch,sessionId:ve.sessionId,nonce:ve.nonce}),Y(!1),N?.log({name:`provider.${q?"redirect.started":"handoff.requested"}`,stage:q?"redirect":"overlay_open",...wr,attempt:Qe}),c?.("paypal"),!0},[c,N,h,z,se]),je=(0,s.useCallback)(async q=>{if(i||te||!await st()){q.reject();return}q.resolve()},[i,st,te]),St=(0,s.useCallback)(async q=>{if(!k||!ye)return;let ve=Pe.current.get(se);if(ve&&!Z(ve.generation)){Pe.current.delete(se);return}if(!ve&&Ee()||ve&&!we(ve.generation))return;ve||we();let Qe=ve??null;if(Pe.current.delete(se),!Qe&&h){let V=await h("paypal");if(!V.proceed){q.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}Qe={accountPatch:V.accountPatch,sessionId:V.sessionId,nonce:V.nonce}}let X=Qe?.sessionId??e,Ue=Qe?.nonce??t,vt=await tp({event:q,prepared:Qe,email:n,billingName:P,methodLabel:"PayPal",collect:We});if(!vt){q.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Xe=vt.email,kt={...Qe?.accountPatch,...qn(vt,!0)};try{if(Ne(!0),a?.(null),!X||!(0,f.isValidEmail)(Xe))throw new Error("Missing sessionId or email for PayPal payment");await M?.(vt);let V=k.createPaymentMethod,{error:g,paymentMethod:S}=await V({type:"paypal"});if(g){Ve(g,"stripe_paypal_create_payment_method_failed",ve?.generation),q.paymentFailed({reason:"fail"});return}let K=await xi(r,G,X,Ue??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:S?.id??null,intentKind:"payment"});if(K.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let W=K.clientSecret,Se={return_url:qs()};if(S?.id&&(Se.payment_method=S.id),!Gt(La,{clientSecret:W,sessionId:X,nonce:Ue,accountPatch:kt})&&b==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:B,paymentIntent:oe}=await k.confirmPayment({clientSecret:W,confirmParams:Se,redirect:"if_required"});if(B){if(Gt(La),vo(B)){let Ie=B.message??"Your payment was declined.";N?.terminal({outcome:"payment_declined",...wr,terminalReason:"provider_declined"}),a?.(Ie),p?.(fn("paypal",Ie,{code:Br(B),declineCode:$o(B)})),await Fi({billingApiUrl:r,sessionId:X,nonce:Ue,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:Br(B)??"provider_declined"}})}else Ve(B,"stripe_paypal_confirm_failed",ve?.generation);return}Gt(La);let j=typeof oe?.payment_method=="string"?oe.payment_method:oe?.payment_method?.id;o({id:j??oe?.id,type:"card",threeDSecureActionResultTokenId:oe?.id,isPaypal:!0},{accountPatch:kt,paymentMethodCategory:"paypal",presentationMode:b,sessionId:X,nonce:Ue});return}catch(V){Ve(V,"stripe_paypal_failed",ve?.generation)}finally{Ne(!1)}},[k,ye,e,t,n,P,We,M,r,G,o,a,p,h,Ve,we,Z,Ee,N,b,se]),Lt=(0,s.useCallback)(async()=>{if(!(Ye.current||i||te||!k||!ye)){Ye.current=!0,Ne(!0);try{if(!await st(!0))return;await St({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{Ye.current=!1,Ne(!1)}}},[ye,St,i,st,k,te]),Pt=b==="redirect"?(0,d.jsx)("button",{type:"button",disabled:i||te,onClick:()=>{Lt()},style:{width:"100%",minHeight:Qo,border:"1px solid #d1d5db",borderRadius:w??8,background:"#ffc439",color:"#111827",cursor:i||te?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):(0,d.jsx)(Qt.ExpressCheckoutElement,{onReady:q=>_e(Ma(q,["paypal"])),onLoadError:()=>{_e("load_error"),Vs(N,"paypal","paypal","provider_error")},onClick:je,onConfirm:St,onCancel:()=>{let q=Pe.current.get(se);Pe.current.delete(se),N?.terminal({outcome:"payment_cancelled",...wr,terminalReason:"cancelled",...q?{attempt:q.generation}:{}}),J(q?.generation),Y(!1),Q.current=!0,He()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:be,emailRequired:be,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},se),Et=(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{ref:Ae,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[Be&&(0,d.jsx)("button",{ref:re,type:"button","data-testid":"flopay-paypal-retry-button",onClick:Ke,style:Os,children:"Try PayPal again"}),fe&&(0,d.jsx)(jo,{identity:fe.identity,methodLabel:fe.methodLabel,onComplete:Te,onCancel:()=>Te(null)},fe.id),(0,d.jsx)("div",{style:{display:fe?"none":void 0},children:Pt})]}),te&&!fe&&(0,d.jsx)(Vn,{status:"processing"})]});return b==="redirect"?Et:(0,d.jsx)(xa,{state:H,placeholderTestId:"flopay-paypal-placeholder",borderRadius:w,children:Et})}function Ac(e){return e==="apple_pay"||e==="google_pay"}function Mc({sessionId:e,nonce:t,email:n,billingApiUrl:r,intentKind:o,expressMethods:a,onTokenizedBody:i,onErrorChange:c,onButtonClick:p,onDecline:u,onTechnicalFailure:h,runBeforeButtonClick:P,billingName:M,onBuyerIdentityReady:_,onLoadStateChange:w,placeholderBorderRadius:A,popupCapabilityOwner:I,externalTelemetryContext:b}){let C=Hr(),{emitInstrument:G}=(0,s.useContext)(ar),k=(0,Qt.useStripe)(),ye=(0,Qt.useElements)(),N=(0,s.useMemo)(()=>vi(gn(C),b),[b,C]),[H,_e]=(0,s.useState)("loading");(0,s.useEffect)(()=>{w?.(H)},[H,w]);let[te,Ne]=(0,s.useState)(!1),Ye=(0,s.useRef)(!(0,f.isValidEmail)(n?.trim())||!M?.trim()).current,{request:be,collect:fe,finish:We}=Vo(),Te=(0,s.useRef)(null),Fe=(0,s.useRef)(null),[Ae,re]=(0,s.useState)(0),[se,Ce]=(0,s.useState)(!1),[Be,Y]=(0,s.useState)(()=>Mi(e,t)?"blocked":"idle"),[Q,Pe]=(0,s.useState)("google_pay"),z=(0,s.useRef)(null),we=(0,s.useRef)(!0),J=(0,s.useRef)(!1),Ee=(0,s.useRef)("google_pay"),Z=(0,s.useRef)("google_pay"),it=(0,s.useRef)(null),He=(0,s.useRef)(null),Ve=(0,s.useRef)(new Set),at=(0,s.useRef)(null);(0,s.useEffect)(()=>(we.current=!0,()=>{we.current=!1;for(let V of Ve.current)window.clearTimeout(V);Ve.current.clear()}),[]);let Ke=(0,s.useRef)(new Map),{startAttempt:st,finishAttempt:je,invalidateAttempt:St,isAttemptInvalidated:Lt,isAttemptCurrent:Pt,generationRef:Et}=ka((V,g,S)=>{h?.(V,g,{...S,popupBlocked:S?.popupBlocked??io(g),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),Pe(V),Ce(!0),re(K=>K+1)},{onHandoffObserved:V=>{I.markAvailable(),N?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:Et.current,...V==="apple_pay"||V==="google_pay"?{walletType:V}:{}})},defersMissingTerminal:Ac,onMissingTerminalDeferred:(V,g)=>{let S=N?.now()??globalThis.performance?.now()??Date.now(),K=at.current,W=K?.generation===g?K.startedAt:S;N?.performance({stage:"overlay_return",durationMs:Math.max(0,S-W),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:g,...Ac(V)?{walletType:V}:{}}),N?.flush?.().catch(()=>{})}});(0,s.useEffect)(()=>{se&&Fe.current?.focus()},[se,Ae]);let q=(0,s.useCallback)(()=>{re(V=>V+1)},[]),ve=(0,s.useCallback)((V,g,S,K,W=!1)=>{St(K),h?.(V,g,{code:S,popupBlocked:io(g),telemetryReported:W,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),Pe(V),Ce(!0),q()},[St,h,q]),Qe=(0,s.useCallback)(()=>{window.setTimeout(()=>{(Te.current?.querySelector("iframe")??Te.current)?.focus()},0)},[]);(0,s.useEffect)(()=>{J.current&&(J.current=!1,Qe())},[Qe,Ae]);let X=(0,s.useCallback)(()=>{Ce(!1),c?.(null),Qe()},[Qe,c]),Ue=(0,s.useCallback)(()=>{z.current?.()},[]);(0,s.useEffect)(()=>{let V=Mi(e,t);if(!V)return;let g=!1,S=!1,K=async()=>{if(!S){S=!0,g||Y("checking");try{let W=await wc(k,V.clientSecret,Ve.current);if(g)return;let Se=Ds(W,V.providerObjectId,(0,f.isSetupIntentClientSecret)(V.clientSecret));if(Se.kind==="confirmed"){if(!Sc(e,t,V.clientSecret))return;z.current=null,Y("idle"),i({id:Se.paymentMethodId,type:"card",threeDSecureActionResultTokenId:Se.intentId},{...V.accountPatch?{accountPatch:V.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(Se.kind==="terminal"){Bs(e,t,V.clientSecret),z.current=null,Y("idle"),Pe(V.paymentMethodType),Ce(!0),q();return}Y("blocked")}catch{g||Y("blocked")}finally{S=!1}}};return z.current=K,Y("blocked"),()=>{g=!0,z.current===K&&(z.current=null)}},[t,i,q,e,k]);let vt=(0,s.useCallback)(async V=>{let g=!1,S=dt=>{g||(g=!0,V.paymentFailed({reason:"fail",...dt?{message:dt}:{}}))};if(!k||!ye){S();return}let K=Ke.current.get(Ae);if(K&&!Pt(K.generation)){Ke.current.delete(Ae),S();return}if(!K&&Lt()){S();return}if(K&&!je(K.generation)){S();return}K||je();let W=V.expressPaymentType??K?.method??Ee.current,Se=K??null,F=Ec(W),B;W==="apple_pay"?B="apple_pay":W==="google_pay"&&(B="google_pay");let oe=K?.generation??Et.current,j=N,Ie=j?.now()??globalThis.performance?.now()??Date.now(),tt=new AbortController,gt=!1,yt=!1,De=null,xn=e,$n="processing",bn="other",$t="provider_runtime",Wn,Hn=new Promise((dt,rt)=>{Wn=rt}),wn=window.setTimeout(()=>{gt=!0,tt.abort(),Wn(Ti)},zd),Dt=async(dt,rt,Fn)=>{$n=dt,bn=rt,$t=rt==="intent_create"||rt==="session_claim"?"transport_error":"provider_runtime";let Tt=j?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([Fn,Hn])}finally{let Kn=j?.now()??globalThis.performance?.now()??Date.now();j?.performance({stage:dt,durationMs:Math.max(0,Kn-Tt),durationMode:"machine",requestCategory:rt,paymentMethodCategory:"wallet",provider:"stripe",...gt?{statusClass:"timeout"}:{}})}};try{if(Ne(!0),c?.(null),!Se&&P){let Oe=await Dt("processing","other",P(F));if(!Oe.proceed){S();return}Se={accountPatch:Oe.accountPatch,sessionId:Oe.sessionId,nonce:Oe.nonce}}let dt=Se?.sessionId??e;xn=dt;let rt=Se?.nonce??t,Fn=it.current??Se?.accountPatch,Tt=Nc({event:V,fallbackEmail:Fn?.email??n,fallbackName:[Fn?.firstName,Fn?.lastName].join(" ").trim()||M});if(!(0,f.isValidEmail)(Tt.email)){S("Buyer details are required."),fe(Ls(W),Tt).then(Oe=>{Oe&&(it.current=Oe)});return}it.current=null;let Kn={...Se?.accountPatch,...qn(Tt,!0)};await Dt("processing","session_claim",Promise.resolve(_?.(Tt)));let{error:Pn}=await Dt("tokenization","provider_sdk",ye.submit());if(Pn){S(),ve(W,Pn,"stripe_wallet_submit_failed",K?.generation);return}if(!dt)throw new Error("Missing sessionId or email for payment.");let Wt={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:W,paymentMethodId:null,intentKind:o},nn=JSON.stringify({sessionId:dt,nonce:rt??"",request:Wt}),ur=He.current,er=ur?.retryIdentity===nn?ur.authorizationAttemptId:(0,f.randomUuidV4)();He.current={authorizationAttemptId:er,retryIdentity:nn};let rn=await Dt("processing","intent_create",xi(r,G,dt,rt??"",{...Wt,authorizationAttemptId:er},{signal:tt.signal}));if(rn.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let At=rn.clientSecret,on=Kd({createdAt:Date.now(),sessionId:dt,...rt?{nonce:rt}:{},clientSecret:At,providerObjectId:rn.providerObjectId,paymentMethodType:W,accountPatch:Kn});window.clearTimeout(wn),yt=!0,j?.performance({stage:"callback",durationMs:Math.max(0,(j?.now()??globalThis.performance?.now()??Date.now())-Ie),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let cn=j?.now()??globalThis.performance?.now()??Date.now(),Nt={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...B?{walletType:B}:{},attempt:oe},dn=!1,zt=null;j?.log({name:"payment.provider_confirmation.started",...Nt}),De=window.setTimeout(()=>{De!==null&&Ve.current.delete(De),dn=!0;let Oe=j?.now()??globalThis.performance?.now()??Date.now();j?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...Nt,operationOutcome:"watchdog_expired",durationMs:Math.max(0,Oe-cn),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),j?.flush?.().catch(()=>{}),zt?.()},qd),Ve.current.add(De);let un=(Oe,ft)=>{De!==null&&(window.clearTimeout(De),Ve.current.delete(De),De=null);let v=j?.now()??globalThis.performance?.now()??Date.now(),nt=Math.max(0,v-cn),le=Oe;dn&&(Oe==="resolved"?le="resolved_late":Oe==="returned_error"?le="returned_error_late":le="rejected_late");let kn=ft??(Oe==="resolved"?"approved":"provider_error");return j?.log({name:"payment.provider_confirmation.returned",...Nt,operationOutcome:le,terminalReason:kn}),j?.performance({...Nt,durationMs:nt,durationMode:"buyer",operationOutcome:le,terminalReason:kn}),{durationMs:nt,operationOutcome:le,terminalReason:kn}},Ut=!1,ue=!1,dr=Oe=>{if(!Oe||typeof Oe!="object")return null;let ft=Oe;if(ft.error)return null;let v=ft.setupIntent??ft.paymentIntent,nt=Ds(v??null,void 0,!!ft.setupIntent);return nt.kind==="confirmed"?nt:null},pr=Oe=>{if(Ut||K&&Et.current!==K.generation)return;let ft=dr(Oe);if(!ft)return;if(on&&!Sc(dt,rt,At)){Ut=!0;return}let{intentId:v,paymentMethodId:nt}=ft;Ut=!0,ue=!0,He.current=null,z.current=null,we.current&&(Y("idle"),Ne(!1));let le=`${Fc}:${dt}`;Gt(le,{createdAt:Date.now(),sessionId:dt,nonce:rt,accountPatch:Kn,paymentMethodId:nt,providerIntentId:v,paymentMethodType:W});try{i({id:nt,type:"card",threeDSecureActionResultTokenId:v},{accountPatch:Kn,paymentMethodCategory:"wallet",sessionId:dt,nonce:rt})}finally{Gt(le)}},mr=!1;zt=async()=>{if(!(mr||Ut||ue)){mr=!0,we.current&&Y("checking");try{let Oe=await wc(k,At,Ve.current);if(Ut||ue)return;let ft=(0,f.isSetupIntentClientSecret)(At),v=Ds(Oe,rn.providerObjectId,ft);if(v.kind==="confirmed"){pr(ft?{setupIntent:Oe}:{paymentIntent:Oe});return}if(v.kind==="terminal"){if(ue=!0,Bs(dt,rt,At),He.current=null,z.current=null,!we.current)return;Y("idle"),S(),ve(W,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",K?.generation,!0);return}we.current&&!ue&&(Y("blocked"),Ne(!1))}catch{we.current&&!ue&&(Y("blocked"),Ne(!1))}finally{mr=!1}}},z.current=zt;let an,Bn;try{let Oe=await((0,f.isSetupIntentClientSecret)(At)?k.confirmSetup({elements:ye,clientSecret:At,redirect:"if_required"}):k.confirmPayment({elements:ye,clientSecret:At,redirect:"if_required"}));if(!Oe||typeof Oe!="object")throw new Oa(Hd(Oe));if(an=Oe,!an.error&&!dr(an))throw new Oa("confirmation_result_unconfirmed");Bn=un(an.error?"returned_error":"resolved",an.error&&vo(an.error)?"provider_declined":void 0)}catch(Oe){let ft=Oe instanceof Oa?Oe.reason:void 0,v=ft!==void 0,nt=un(v?"returned_error":"rejected");if(j?.error({...v?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:ft}:gs(Oe),...Nt,operationOutcome:nt.operationOutcome,durationMs:nt.durationMs,statusClass:"unknown",terminalReason:nt.terminalReason}),!we.current||Ut)return;await zt?.();return}let En=an.error;if(En){if(!we.current||Ut)return;if(vo(En)){ue=!0,Bs(dt,rt,At),He.current=null,z.current=null,Y("idle");let Oe=En.message??"Your payment was declined.";S(Oe),c?.(Oe),u?.(fn(F,Oe,{code:Br(En),declineCode:$o(En)})),Fi({billingApiUrl:r,sessionId:dt,nonce:rt,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:W,providerDeclineReason:Br(En)??"provider_declined",...rn.intentKind==="payment"&&rn.providerObjectId.startsWith("pi_")?{providerIntentId:rn.providerObjectId}:{}}})}else j?.error({...gs(En),...Nt,operationOutcome:Bn.operationOutcome,durationMs:Bn.durationMs,statusClass:"unknown",terminalReason:Bn.terminalReason}),await zt?.();return}if(pr(an),!Ut)throw new Error("Invalid provider returned for APM intent")}catch(dt){if(dt===Ti){let rt=j?.now()??globalThis.performance?.now()??Date.now();j?.error({errorCode:Yd(bn),stage:$n,requestCategory:bn,paymentMethodCategory:"wallet",provider:"stripe",...B?{walletType:B}:{},operationOutcome:"watchdog_expired",checkoutSessionId:xn,durationMs:Math.max(0,rt-Ie),statusClass:"timeout",failureCategory:$t,attempt:oe,terminalReason:"provider_error"}),j?.flush?.().catch(()=>{})}S(),ve(W,dt,dt===Ti?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",K?.generation,dt===Ti)}finally{if(window.clearTimeout(wn),De!==null&&(window.clearTimeout(De),Ve.current.delete(De)),!yt){let dt=j?.now()??globalThis.performance?.now()??Date.now();j?.performance({stage:"callback",durationMs:Math.max(0,dt-Ie),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...gt?{statusClass:"timeout"}:{}})}we.current&&Ne(!1)}},[k,ye,e,t,n,M,fe,_,r,G,o,i,c,u,P,ve,je,Pt,Lt,Et,N,Ae]),Xe=(0,s.useMemo)(()=>Si(a),[a]),kt=(0,s.useMemo)(()=>a.map(f.stripeExpressMethodToOptionKey),[a]);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(xa,{state:H,placeholderTestId:"flopay-wallet-placeholder",borderRadius:A,children:(0,d.jsxs)("div",{ref:Te,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[se&&(0,d.jsxs)("button",{ref:Fe,type:"button","data-testid":"flopay-wallet-retry-button",onClick:X,style:Os,children:["Try ",Ls(Q)," again"]}),Be!=="idle"&&(0,d.jsxs)("div",{role:"status","aria-live":"polite",children:[(0,d.jsx)("p",{children:"We are still confirming your payment. Check its status before trying again."}),(0,d.jsx)("button",{type:"button",onClick:Ue,disabled:Be==="checking",style:Os,children:Be==="checking"?"Checking payment status\u2026":"Check payment status"})]}),be&&(0,d.jsx)(jo,{identity:be.identity,methodLabel:be.methodLabel,onComplete:We,onCancel:()=>We(null)},be.id),Be==="idle"&&(0,d.jsx)("div",{style:{display:be?"none":void 0},children:(0,d.jsx)(Qt.ExpressCheckoutElement,{onReady:V=>{_e(Ma(V,kt))},onLoadError:V=>{_e("load_error"),Vs(N,"stripe","wallet","provider_error")},onClick:async V=>{let g=N?.now()??globalThis.performance?.now()??Date.now();Ee.current=V.expressPaymentType,Z.current=Ec(V.expressPaymentType);let S=!0,K=window.setTimeout(()=>{S=!1,V.reject()},Ud),W=P?await P(Z.current):{proceed:!0};if(window.clearTimeout(K),!S)return;if(!W.proceed){Ke.current.delete(Ae),V.reject();return}let Se=st(V.expressPaymentType);at.current={generation:Se,startedAt:g},Ke.current.set(Ae,{generation:Se,method:V.expressPaymentType,accountPatch:W.accountPatch,sessionId:W.sessionId,nonce:W.nonce}),Ce(!1),N?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:Se,...V.expressPaymentType==="apple_pay"||V.expressPaymentType==="google_pay"?{walletType:V.expressPaymentType}:{}}),p?.(Z.current),V.resolve()},onConfirm:vt,onCancel:()=>{let V=Ke.current.get(Ae);Ke.current.delete(Ae),N?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",...V?{attempt:V.generation}:{}}),St(V?.generation),He.current=null,Ce(!1),J.current=!0,q()},options:{...wi,paymentMethods:Xe,emailRequired:Ye,billingAddressRequired:Ye}},Ae)})]})}),te&&(0,d.jsx)(Vn,{status:"processing"})]})}function Uc(e,t,n){let r=(0,f.resolveSetupFutureUsage)(n,t,"inline_apm");return{...e,paymentMethodTypes:[t],...r?{setupFutureUsage:r}:null}}function Ns({method:e,sessionId:t,nonce:n,email:r,billingName:o,onBuyerIdentityReady:a,billingApiUrl:i,onTokenizedBody:c,onErrorChange:p,onDecline:u,onCancel:h,runBeforeButtonClick:P,onButtonClick:M,isProcessing:_,submitButtonColor:w,submitButtonBorderRadius:A,submitButtonStyle:I,errorText:b}){let C=Hr(),{emitInstrument:G}=(0,s.useContext)(ar),k=(0,Qt.useStripe)(),ye=(0,Qt.useElements)(),[N,H]=(0,s.useState)(!1),_e=(0,s.useRef)(!1),[te,Ne]=(0,s.useState)(!1),[Ye,be]=(0,s.useState)("loading"),[fe,We]=(0,s.useState)(""),Te=!(0,f.isValidEmail)(r?.trim()),Fe=!Te||(0,f.isValidEmail)(fe.trim()),Ae=(0,s.useCallback)(async()=>{if(!k||!ye||_||_e.current||!te)return;_e.current=!0,H(!0);let re=P?await P("card"):{proceed:!0};if(!re.proceed){_e.current=!1,H(!1);return}M?.("card");let se=re.sessionId??t,Ce=re.nonce??n,Be=bo(o?.trim()),Y=qn({email:re.accountPatch?.email?.trim()||r?.trim()||fe.trim(),firstName:re.accountPatch?.firstName?.trim()||Be.firstName,lastName:re.accountPatch?.lastName?.trim()||Be.lastName}),Q=Y.email,Pe=qn({...re.accountPatch,...Y});try{if(p?.(null),!(0,f.isValidEmail)(Q))throw new Error("A valid email address is required for payment.");await a?.(Y);let z=await ye.submit();if(z.error){p?.(z.error.message??"Payment failed.");return}let we=[Y.firstName,Y.lastName].filter(Boolean).join(" "),J=await k.createPaymentMethod({elements:ye,params:{billing_details:{email:Q,...we?{name:we}:{}}}});if(J.error||!J.paymentMethod){p?.(J.error?.message??"Failed to create payment method.");return}let Ee=J.paymentMethod;if(!se||!Q)throw new Error("Missing sessionId or email for payment.");let Z=Ee.type||e,it=await xi(i,G,se,Ce??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:Z,paymentMethodId:null,intentKind:"payment"});if(it.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let He=it.clientSecret;Gt(Or,{clientSecret:He,sessionId:se,nonce:Ce,accountPatch:Pe,paymentMethodId:Ee.id,paymentMethodType:Ee.type??e,gateway:"stripe"});let{error:Ve,paymentIntent:at}=await k.confirmPayment({clientSecret:He,confirmParams:{return_url:window.location.href,payment_method:Ee.id},redirect:"if_required"});if(Ve){Gt(Or);let je=Ve.message??"Payment failed.";p?.(je),u?.(fn("card",je,{code:Ve.code})),await Fi({billingApiUrl:i,sessionId:se,nonce:Ce,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:Ve.code??"provider_declined"}});return}let Ke=at?.status;if(!va(Ke)){Gt(Or);let je=Ke==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";p?.(je),u?.(fn("card",je,{code:Ke??"missing_payment_intent"}));return}Gt(Or);let st=typeof at?.payment_method=="string"?at.payment_method:at?.payment_method?.id;c({id:st??Ee.id,type:"card",threeDSecureActionResultTokenId:at?.id,gateway:"stripe",paymentMethodType:Ee.type??e},{accountPatch:Pe,paymentMethodCategory:"apm",sessionId:se,nonce:Ce})}catch(z){p?.(z instanceof Error?z.message:"Payment failed. Please try again.")}finally{_e.current=!1,H(!1)}},[k,ye,_,te,P,M,t,n,r,o,fe,a,i,G,e,c,p,u]);return(0,d.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,style:{display:"flex",flexDirection:"column"},children:[Te&&(0,d.jsx)("div",{"data-testid":"flopay-apm-identity-fields",style:{display:"flex",flexDirection:"column",gap:"0.75rem",marginBottom:"0.75rem"},children:Te&&(0,d.jsxs)("label",{style:{display:"flex",flexDirection:"column",gap:"0.375rem"},children:["Email address",(0,d.jsx)("input",{type:"email",autoComplete:"email",required:!0,value:fe,onChange:re=>We(re.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),(0,d.jsx)(Qt.PaymentElement,{onReady:()=>be("ready"),onLoadError:()=>{be("load_error"),Vs(gn(C),"stripe","apm")},onChange:re=>{Ne(!!re.complete)},options:{layout:ki,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...o?.trim()?{name:o.trim()}:{},...(0,f.isValidEmail)(r?.trim())?{email:r?.trim()}:{}}}}}),(0,d.jsx)(Ri,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{Ae()},disabled:!te||!Fe||N||_||Ye!=="ready",color:w,borderRadius:A,style:I,children:N?"Processing\u2026":`Pay with ${(0,f.getStripeMethodDisplayName)(e)}`}),b&&(0,d.jsx)(Ho,{margin:"0.75rem 0 0",children:b})]})}function xc({sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:a,paymentElementMethods:i,stripeInstance:c,paymentElementBaseOptions:p,futureUseSession:u,onTokenizedBody:h,onErrorChange:P,onButtonClick:M,onDecline:_,runBeforeButtonClick:w,onLoadStateChange:A,isProcessing:I=!1,submitButtonColor:b="#4A49FF",submitButtonBorderRadius:C=8,submitButtonStyle:G,buttonAppearance:k,themeId:ye,onExpandApm:N,expandedApmMethod:H}){let{emitInstrument:_e}=(0,s.useContext)(ar),[te,Ne]=(0,s.useState)(null),[Ye,be]=(0,s.useState)(null),fe=(0,s.useRef)(!1),{request:We,collect:Te,finish:Fe}=Vo();(0,s.useEffect)(()=>{i.length>0&&c?A?.("ready"):c||A?.("loading")},[i.length,c,A]);let Ae=(0,s.useCallback)(async Q=>{if(!c||fe.current||I)return;fe.current=!0,be(Q);let Pe=w?await w("card"):{proceed:!0};if(!Pe.proceed){fe.current=!1,be(null);return}M?.("card");let z=Pe.sessionId??e,we=Pe.nonce??t,J=bo([Pe.accountPatch?.firstName,Pe.accountPatch?.lastName].filter(Boolean).join(" ")||r),Ee=qn({email:Pe.accountPatch?.email?.trim()||n?.trim(),firstName:Pe.accountPatch?.firstName?.trim()||J.firstName,lastName:Pe.accountPatch?.lastName?.trim()||J.lastName});if(!(0,f.isValidEmail)(Ee.email)){be(null);let He=await Te((0,f.getStripeMethodDisplayName)(Q),Ee);if(!He){fe.current=!1;return}Ee=He,be(Q)}let Z=Ee.email,it=qn({...Pe.accountPatch,...Ee});try{if(P?.(null),!z||!(0,f.isValidEmail)(Z))throw new Error("Missing sessionId or email for payment.");await o?.(Ee);let He=await xi(a,_e,z,we??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:Q,paymentMethodId:null,intentKind:"payment"});if(He.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Ve=He.clientSecret;Gt(Or,{clientSecret:Ve,sessionId:z,nonce:we,accountPatch:it,paymentMethodType:Q,gateway:"stripe"});let{error:at,paymentIntent:Ke}=await c.confirmPayment({clientSecret:Ve,confirmParams:{return_url:window.location.href,payment_method_data:{type:Q,billing_details:{name:[Ee.firstName,Ee.lastName].filter(Boolean).join(" "),...Z?{email:Z}:{}}}},redirect:"if_required"});if(at){Gt(Or);let St=at.message??"Payment failed.";P?.(St),_?.(fn("card",St,{code:at.code})),await Fi({billingApiUrl:a,sessionId:z,nonce:we,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:Q,providerDeclineReason:at.code??"provider_declined"}});return}let st=Ke?.status;if(!va(st)){Gt(Or);let St=st==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";P?.(St),_?.(fn("card",St,{code:st??"missing_payment_intent"}));return}Gt(Or);let je=typeof Ke?.payment_method=="string"?Ke.payment_method:Ke?.payment_method?.id;h({id:je??Ke?.id,type:"card",threeDSecureActionResultTokenId:Ke?.id,gateway:"stripe",paymentMethodType:Q},{accountPatch:it,paymentMethodCategory:"apm",sessionId:z,nonce:we})}catch(He){P?.(He instanceof Error?He.message:"Payment failed. Please try again.")}finally{fe.current=!1,be(null)}},[c,I,w,M,e,t,n,Te,a,_e,r,o,h,P,_]),[re,se]=(0,s.useState)(null),Ce=N?H??null:re,Be=(0,s.useCallback)(Q=>{fe.current||I||Ce&&Ce!==Q||((0,f.needsStripeMethodExplicitConfirm)(Q)?N?N(Q):se(Q):Ae(Q))},[Ce,I,Ae,N]),Y=(0,s.useMemo)(()=>re?Uc(p,re,u):null,[re,p,u]);return(0,d.jsx)("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:We?(0,d.jsx)(jo,{identity:We.identity,methodLabel:We.methodLabel,onComplete:Fe,onCancel:()=>Fe(null)},We.id):i.map(Q=>{let Pe=H===Q,z=Ye===Q,we=Ye!==null&&Ye!==Q||H!=null&&H!==Q;return(0,d.jsxs)(s.default.Fragment,{children:[(0,d.jsx)(Ci,{method:Q,themeId:ye,submitting:z,disabled:we,highlighted:Pe,hasNextStep:(0,f.needsStripeMethodExplicitConfirm)(Q),onClick:()=>Be(Q),backgroundColor:k?.backgroundColor,borderColor:k?.borderColor,textColor:k?.textColor,borderRadius:k?.borderRadius,fontFamily:k?.fontFamily}),!N&&re===Q&&Y&&c&&(0,d.jsx)(Qt.Elements,{stripe:c,options:Y,children:(0,d.jsx)(Ns,{method:Q,sessionId:e,nonce:t,email:n,billingName:r,onBuyerIdentityReady:o,billingApiUrl:a,onTokenizedBody:h,onErrorChange:P,onDecline:_,onCancel:()=>se(null),runBeforeButtonClick:w,onButtonClick:M,isProcessing:I,submitButtonColor:b,submitButtonBorderRadius:C,submitButtonStyle:G})},Q)]},Q)})})}function pp({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,email:o,userId:a,onComplete:i,onError:c,onDecline:p,onTokenizedBody:u,firstName:h,lastName:P,chv:M,className:_,submitLabel:w,isProcessing:A,error:I,onErrorChange:b,showPayPal:C=!0,showStripe:G=!0,walletPresentation:k="auto",enabledPaymentMethods:ye,enabledPaymentMethodCountries:N,showApplePay:H=!0,showGooglePay:_e=!0,layout:te="default",theme:Ne,buttonsTheme:Ye,buttonsStyles:be,appearance:fe,cardButtonContent:We,cardBackButtonContent:Te,cardTitleContent:Fe,showSecurityFooter:Ae,onButtonClick:re,onBeforeButtonClick:se,onBuyerIdentityReady:Ce,enableAVS:Be,cardFieldOrder:Y,cardPreFormSlot:Q,avsLayout:Pe="row",country:z,zip:we,addressLine1:J,addressLine2:Ee,city:Z,state:it,onCountryChange:He,onZipChange:Ve,avsCheck:at,checkoutType:Ke,checkoutLayout:st,totalAmount:je=0,currency:St="usd",initialCardOpen:Lt=!1,directPaypal:Pt,isSubscription:Et=!1,session:q,dataAttachmentPending:ve=!1,dataAttachmentRequiresIdentity:Qe=!1,debug:X=!1}){let Ue=Hr(),vt=ri(),Xe=(0,s.useContext)(Cr),{emitInstrument:kt}=(0,s.useContext)(ar),V=(0,s.useRef)(null);V.current||(V.current=si());let g=V.current,[,S]=(0,s.useState)(0),K=(0,s.useRef)(null);K.current||(K.current=Kr());let W=K.current,Se=(0,s.useMemo)(()=>({browser:W,capability:g,presentationMode:"popup"}),[W,g]),F=q??Xe.session,B=(0,s.useMemo)(()=>({futureUse:F?.futureUse,futureUseUnsupported:F?.futureUseUnsupported}),[F?.futureUse,F?.futureUseUnsupported]),oe=F?.gateways?.paypal?.providerObjectType??Pt?.providerObjectType,j=ve||Xe.claimPending===!0,Ie=Qe||Xe.claimRequiresIdentity===!0,tt=j&&!Ie,gt=Jl(),yt=n||gt,[De,xn]=(0,s.useState)(!1),[$n,bn]=(0,s.useState)(null),[$t,Wn]=(0,s.useState)(z??""),[Hn,wn]=(0,s.useState)(we??""),[Dt,dt]=(0,s.useState)(J??""),[rt,Fn]=(0,s.useState)(Ee??""),[Tt,Kn]=(0,s.useState)(Z??""),[Pn,Wt]=(0,s.useState)(it??""),[nn,ur]=(0,s.useState)(""),[er,rn]=(0,s.useState)({}),At=(0,s.useRef)(we??""),on=(0,s.useRef)(z??""),cn=(0,s.useRef)(J??""),Nt=(0,s.useRef)(Ee??""),dn=(0,s.useRef)(Z??""),zt=(0,s.useRef)(it??""),un=(0,s.useRef)(""),Ut=(0,s.useRef)({});(0,s.useEffect)(()=>{let l=(T,ne,ze,ie,xe)=>{if(Ut.current[T])return;let Ft=ne?.trim();!Ft||Ft===ze.current||(ze.current=Ft,ie(Ft),xe?.(Ft))};l("country",z,on,Wn,He),l("zip",we,At,wn,Ve),l("addressLine1",J,cn,dt),l("addressLine2",Ee,Nt,Fn),l("city",Z,dn,Kn),l("state",it,zt,Wt)},[z,we,J,Ee,Z,it,He,Ve]);let ue=(0,s.useMemo)(()=>(0,f.resolveAVSConfig)(Be),[Be]),dr=ue!==null,pr=(0,s.useMemo)(()=>(0,f.isAuthorizationOnlySession)(q),[q]),mr=(0,f.isMountableVaultBlock)(q?.vault),an=!!q?.gateways?.pcivault,Bn=ms(q),Oe=!!(q?.gateways?.stripe?.enabledPaymentMethods??ye)?.includes("card")||eo(q),ft=mr||Oe||an,v=!!(G&&ft&&e),[nt,le]=(0,s.useState)(()=>te!=="buttons"||Lt?e??null:null),[kn,Gn]=(0,s.useState)(0),Yt=te!=="buttons"||Lt||!!e&&nt===e,Dn=q?.captureMethod,ht=(0,s.useRef)(Ue);(0,s.useEffect)(()=>{ht.current=Ue},[Ue]);let[yr,po]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!v||!e||!Yt){po(null);return}let l=ht.current?ht.current.cardCapture({sessionId:e,captureMethod:Dn}):new kr.PciVaultCardCapture({sessionId:e,captureMethod:Dn,billingApiUrl:yt,telemetry:r});return po({sessionId:e,captureMethod:Dn,billingApiUrl:yt,telemetry:r,capture:l}),()=>{l.unmount()}},[v,e,Yt,Dn,yt,r]);let Mt=v&&e&&Yt&&yr?.sessionId===e&&yr.captureMethod===Dn&&yr.billingApiUrl===yt&&yr.telemetry===r?yr.capture:null,On=(0,s.useMemo)(()=>{let l=$t,T=ue?(0,f.isAVSFieldVisible)(ue.postal_code,l):!1;return cp(l,Hn,T)},[ue,$t,Hn]),{avsInvalid:Rr,invalidAvsFields:tr}=(0,s.useMemo)(()=>{let l={line1:!1,city:!1,state:!1,zip:!1};if(!v||!ue)return{avsInvalid:!1,invalidAvsFields:l};let T=$t,ne=(xe,Ft)=>(0,f.isAVSFieldVisible)(xe,T)&&!Ft.trim(),ze={line1:ne(ue.address_line_1,Dt),city:ne(ue.city,Tt),state:ne(ue.state,Pn),zip:On.empty||On.malformed};return{avsInvalid:ze.line1||ze.city||ze.state||ze.zip,invalidAvsFields:ze}},[v,ue,$t,Dt,Tt,Pn,On]),[Xt,fr]=(0,s.useState)(!1),[Ln,Ur]=(0,s.useState)(!1),[Nn,_r]=(0,s.useState)(!1),[Er,zr]=(0,s.useState)({line1:!1,city:!1,state:!1}),Yn=(0,s.useRef)(!1),nr=(0,s.useRef)({email:!1,line1:!1,city:!1,state:!1,zip:!1}),qr=(0,s.useRef)(!1),Ot=(0,s.useCallback)(l=>{nr.current[l]=!0,qr.current=!0},[]),In=(0,s.useCallback)(l=>!Yn.current&&nr.current[l],[]),rr=(0,s.useCallback)(l=>{In(l)&&zr(T=>T[l]?T:{...T,[l]:!0})},[In]),[gr,Ir]=(0,s.useState)(()=>(0,f.resolveVaultMountOptions)(q?.vault,{billingApiUrl:yt,sessionId:e,nonce:t})),[lt,pn]=(0,s.useState)(Lt&&ft?"card":"buttons"),[mn,Tn]=(0,s.useState)(null),mo=lt==="expanding"||lt==="card",Tr=q?.gateways?.stripe&&!Bn?"stripe":void 0,Zr=(0,s.useCallback)(()=>{kt?.({class:"card_surface",provider:Tr})},[Tr,kt]),An=(0,s.useRef)(null),yn=(0,s.useCallback)(l=>{An.current&&clearTimeout(An.current),An.current=setTimeout(()=>{An.current=null,l()},Na)},[]);(0,s.useEffect)(()=>()=>{An.current&&clearTimeout(An.current)},[]);let hr=(0,s.useRef)(!1),[vn,L]=(0,s.useState)(0),$=(0,s.useRef)(null),ce=(0,s.useCallback)(()=>{Zr(),le(e??null),hr.current&&(hr.current=!1,L(l=>l+1)),Gn(l=>l+1),pn("expanding"),yn(()=>pn("card"))},[yn,Zr,e]),Me=(0,s.useCallback)(()=>{pn("collapsing"),yn(()=>pn("buttons"))},[yn]),Ct=(0,s.useCallback)(l=>{Tn(l),pn("apm-expanding"),yn(()=>pn("apm-form"))},[yn]),Jt=(0,s.useCallback)(()=>{pn("apm-collapsing"),yn(()=>{pn("buttons"),Tn(null)})},[yn]);(0,s.useEffect)(()=>{te==="buttons"&&Lt&&ft&&(le(e??null),pn("card"))},[te,Lt,ft,e]);let[ke,de]=(0,s.useState)(null),ee=(0,s.useRef)(!1),m=(0,s.useRef)(null),y=(0,s.useRef)("idle"),[D,U]=(0,s.useState)(!1),Re=(0,s.useRef)(D);Re.current=D;let[ge,Rt]=(0,s.useState)(()=>Pt?.existingOrderId?{orderId:Pt.existingOrderId,attempts:1}:null),qt=(0,s.useRef)(ge);(0,s.useEffect)(()=>{qt.current=ge},[ge]);let $e=(0,s.useRef)(null),Ge=(0,s.useMemo)(()=>{if(Ce||Xe.claimBuyerIdentity||q?.buyerIdentified!==!1||!e||!t)return;let l=`${yt}|${e}|${t}`;$e.current?.key!==l&&($e.current={key:l,claim:zo(new kr.PaymentAPI(yt,{telemetry:!1}),e,t,{...a?{userId:a}:{},...h?{firstName:h}:{},...P?{lastName:P}:{}})});let T=$e.current.claim;return async ne=>{await T(ne)}},[Ce,Xe.claimBuyerIdentity,q?.buyerIdentified,e,t,yt,a,h,P]),ct=Ce??Xe.claimBuyerIdentity??Ge,pe=I??$n,he=(0,s.useMemo)(()=>(0,f.resolveTheme)(Ne),[Ne]),E=(0,s.useMemo)(()=>{let l=he?.buttonsLayout??(0,f.resolveButtonsLayoutTheme)(Ye);return be?{...l,...be,cardButton:{...l.cardButton,...be.cardButton},cardFormContainer:{...l.cardFormContainer,...be.cardFormContainer},backButton:{...l.backButton,...be.backButton},backButtonIcon:{...l.backButtonIcon,...be.backButtonIcon},submitButton:{...l.submitButton,...be.submitButton},title:{...l.title,...be.title}}:l},[he,Ye,be]),me=fe??he?.appearance,pt=(0,s.useMemo)(()=>na({appearance:me,buttonsStyles:E,layout:te}),[me,E,te]),xt=Xe.inlineSessionPatchProcessing??!1,ae=(A??De)||xt,Rn=yt.replace(/\/+$/,""),ot=(0,s.useMemo)(()=>fs({userId:a,email:o,firstName:h,lastName:P,country:z,zip:we},er),[a,o,h,P,z,we,er]),_o=[ot.firstName,ot.lastName].filter(l=>!!l?.trim()).join(" "),Qs=!(0,f.isValidEmail)(ot.email?.trim()),Wi=(0,s.useRef)(null);v&&Wi.current===null&&(Wi.current=Qs);let Qr=v&&(Wi.current??Qs),Hi=(0,s.useMemo)(()=>up(nn,Qr),[nn,Qr]),Eo=Hi.empty||Hi.malformed,Xn=(0,s.useMemo)(()=>Ue?Ue.getRawProvider():null,[Ue]),el=(0,s.useMemo)(()=>vt?vt.getRawProvider():null,[vt]),ia=je||100,Io=St.toLowerCase(),Ki=(0,s.useMemo)(()=>me?(0,kr.toStripeAppearance)(me):null,[me]),To=Ki,tl=(0,s.useMemo)(()=>{let l=Ki??{},T=l.rules??{};return{...l,rules:{...T,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...T[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...T[".AccordionItemContents"]??{}}}}},[Ki]),nl=(0,s.useMemo)(()=>({...Hl(je,F?.captureMethod,B),currency:Io,...To?{appearance:To}:null}),[je,Io,F?.captureMethod,B,To]),Gi=(0,f.resolveSetupFutureUsage)(B,"paypal","paypal"),rl=(0,s.useMemo)(()=>({mode:"payment",amount:ia,currency:Io,captureMethod:"manual",...Gi?{setupFutureUsage:Gi}:null,...To?{appearance:To}:null}),[ia,Io,Gi,To]),Le=(0,s.useCallback)(l=>{bn(l),b?.(l)},[b]),ol=(0,s.useRef)(0);(0,s.useEffect)(()=>{vn!==ol.current&&(ol.current=vn,Le(null))},[vn,Le]);let Yi=(0,s.useRef)(""),[al,gu]=(0,s.useState)(!1),Xi=(0,s.useCallback)(()=>{gu(!0)},[]);(0,s.useEffect)(()=>{if(!v||!Qr||!ct||!al||Eo||Yi.current)return;let l=qn({email:(0,f.isValidEmail)(ot.email?.trim())?ot.email?.trim():un.current.trim(),firstName:ot.firstName?.trim(),lastName:ot.lastName?.trim()});Yi.current=JSON.stringify(l),rn(T=>({...T,...l})),Promise.resolve(ct(l)).catch(T=>{Yi.current="",Le(T instanceof Error?T.message:"Failed to attach buyer details.")})},[v,Qr,ct,al,Eo,ot.email,ot.firstName,ot.lastName,Le]),(0,s.useEffect)(()=>{!v||!Mt||Mt.setCardFieldOrder?.(Y??null,ue==null&&!Qr)},[v,Mt,Y,ue,Qr]),(0,s.useEffect)(()=>{(lt==="expanding"||lt==="collapsing"||lt==="apm-expanding"||lt==="apm-collapsing")&&Le(null)},[lt,Le]);let Ar=(0,s.useCallback)((l,T,ne)=>{p?.(fn(l,T,ne))},[p]),Ao=(0,s.useCallback)((l,T,ne)=>{let ze=ne?.popupBlocked??io(T);ze&&g.markBlocked()&&S(mt=>mt+1);let ie=oo(Ls(l),ze,W.inAppBrowser),xe=Br(T),Ft=(xe?.toLowerCase()==="error"?void 0:xe)??Po(ne?.code)??"external_payment_method_failed",vr=new f.FloPayError(ie,"api_error",{code:"external_payment_method_failed",param:l,details:{providerCode:Ft,popupBlocked:ze,inAppBrowser:W.inAppBrowser,appFamily:W.appFamily,popupCapability:g.current(),presentationMode:ne?.presentationMode??"popup"}});ne?.telemetryReported||gn(Ue)?.error(Zo({...Se,presentationMode:ne?.presentationMode??"popup"},{errorCode:ze?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:ne?.provider??(l==="paypal"?"paypal":"stripe"),paymentMethodCategory:ne?.paymentMethodCategory??(l==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:ne?.terminalReason??(ze?"popup_blocked":"provider_error")})),de(null),te==="buttons"&&(pn("buttons"),Tn(null)),Le(ie),c?.(vr),console.error("[FloPay] External payment method failed:",{method:l,code:Ft,popupBlocked:ze})},[W,Se,Ue,te,c,g,Le]);(0,s.useEffect)(()=>{if(!v||!e){Ir(null);return}let l={billingApiUrl:Rn,sessionId:e,nonce:t},T=(0,f.resolveVaultMountOptions)(q?.vault,l);if(T){Ir(T);return}if(!Yt){Ir(null);return}let ne=`${Rn}\0${e}\0${t??""}`,ze=$.current;if(ze&&ze.key===ne){Ir(ze.mount);return}Ir(null);let ie=!0;return new kr.PaymentAPI(Rn).getVaultCapture(e,t).then(xe=>{if(!ie)return;let Ft=(0,f.resolveVaultMountOptions)(xe,l);Ft?.verificationRequired&&!xe.html&&($.current={key:ne,mount:Ft}),Ft?Ir(Ft):Le("Failed to load the secure card form.")}).catch(xe=>{ie&&Le(xe instanceof Error?xe.message:"Failed to load the secure card form.")}),()=>{ie=!1}},[v,Yt,kn,e,q?.vault,Rn,t,Le]);let br=(0,s.useRef)({onComplete:i,onError:c,updateError:Le,emitDecline:Ar,resolvedAccount:ot,avsConfig:ue,avsCheckProp:at,sessionId:e,nonce:t,baseUrl:Rn,captureMethod:q?.captureMethod,paymentId:q?.paymentId,authorizationExpiresAt:q?.authorizationExpiresAt,serverSideCardGateway:Bn});br.current={onComplete:i,onError:c,updateError:Le,emitDecline:Ar,resolvedAccount:ot,avsConfig:ue,avsCheckProp:at,sessionId:e,nonce:t,baseUrl:Rn,captureMethod:q?.captureMethod,paymentId:q?.paymentId,authorizationExpiresAt:q?.authorizationExpiresAt,serverSideCardGateway:Bn};let Ji=(0,s.useRef)(!1),il=(0,s.useCallback)(()=>{let l=br.current,T=l.resolvedAccount.email?.trim(),ne=(0,f.isValidEmail)(T)?T:un.current.trim();if(!(0,f.isValidEmail)(ne))return null;let ze=l.resolvedAccount.firstName?.trim(),ie=l.resolvedAccount.lastName?.trim(),xe=on.current.trim()||l.resolvedAccount.country?.trim()||"",Ft=l.avsConfig?(0,f.isAVSFieldVisible)(l.avsConfig.state,xe):!1,vr=l.avsConfig?(0,f.isAVSFieldVisible)(l.avsConfig.address_line_1,xe):!1,mt=l.avsConfig?(0,f.isAVSFieldVisible)(l.avsConfig.postal_code,xe):!1,wt=l.avsConfig?(0,f.isAVSFieldVisible)(l.avsConfig.city,xe):!1,_t=l.avsConfig?(0,f.isAVSFieldVisible)(l.avsConfig.address_line_2,xe):!1,Vt=vr&&!Ft&&mt?(0,f.getStateFromPostalCode)(xe,(At.current??"").trim()):null,go=Ft?zt.current:Vt;return{accountData:{userId:l.resolvedAccount.userId??"",email:ne,...ze?{firstName:ze}:{},...ie?{lastName:ie}:{},...mt&&At.current?{zip:At.current}:{},...wt&&dn.current?{city:dn.current}:{},...go?{state:go}:{},...vr&&cn.current?{addressLine1:cn.current}:{},..._t&&Nt.current?{addressLine2:Nt.current}:{},...xe?{country:xe}:{}},...l.avsCheckProp===void 0?{}:{avsCheck:l.avsCheckProp},...l.avsConfig?{avsConfig:{country:(0,f.isAVSFieldVisible)(l.avsConfig.country,xe),postal_code:mt,address_line_1:vr,address_line_2:_t,city:wt,state:Ft}}:{}}},[]),sl=(0,s.useRef)(j);sl.current=j,(0,s.useEffect)(()=>{j||pe!==kc||br.current.updateError(null)},[j,pe]),(0,s.useEffect)(()=>{!v||!Mt||Mt.setSubmitGate?.(Rr||j||Eo||D)},[v,Mt,Rr,j,Eo,D]),(0,s.useEffect)(()=>{if(!v||!Mt)return;Ji.current=!1;let l=null,T=()=>{l&&clearTimeout(l),l=setTimeout(()=>{l=null,y.current="idle",de(null)},400)},ne=Mt.on("submitting",()=>{fr(!0),m.current&&clearTimeout(m.current),y.current="validation-window",m.current=setTimeout(()=>{m.current=null,y.current==="validation-window"&&(y.current="processing")},Zd),de("processing");let mt=br.current;if(!mt.sessionId||!mt.nonce)return;let wt=il();if(!wt){mt.updateError("Enter a valid email address."),y.current="idle",de(null);return}new kr.PaymentAPI(mt.baseUrl).patchAccountSnapshot(mt.sessionId,mt.nonce,wt,{telemetryMode:"best_effort"}).catch(_t=>{if(!ep(_t))return;let Vt=_t instanceof Error?_t.message:"Please check your billing address and try again.";mt.updateError(Vt),y.current="idle",de(null),mt.onError?.(_t instanceof f.FloPayError?_t:new f.FloPayError(Vt,"api_error"))})}),ze=Mt.on("complete",mt=>{Yo(mt.sessionId??br.current.sessionId),y.current="terminal",U(!1),de("success"),setTimeout(()=>{if(Ji.current)return;Ji.current=!0;let wt=br.current,_t=(0,f.isAuthorizationOnlySession)(wt)||mt.outcome==="authorized",Vt=wt.serverSideCardGateway?{}:{paymentIntentId:mt.intentId};br.current.onComplete?.(_t?{status:"authorized",...Vt,paymentId:mt.paymentId??wt.paymentId,sessionId:mt.sessionId??wt.sessionId,authorizationExpiresAt:mt.authorizationExpiresAt??wt.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...Vt,checkoutMethod:"card"})},600)}),ie=Mt.on("decline",mt=>{let wt=br.current,_t=mt.message??"Your payment was declined. Please try another card or contact your bank.";y.current="terminal",U(!1),wt.updateError(_t),de("error");let Vt=mt.failureOutcome??(0,f.normalizeCheckoutFailureOutcome)(mt.declineReason)??"authorization_declined";wt.emitDecline("card",_t,{code:Vt,declineCode:Vt}),T()}),xe=Mt.on("error",mt=>{let wt=br.current,_t=mt.message??"There was a problem processing your payment. Please try again.";y.current="terminal",U(!1),wt.updateError(_t),de("error"),wt.onError?.(new f.FloPayError(_t,"api_error",{code:mt.failureOutcome??"capture_failed"})),T()}),Ft=Mt.on("challenge_dismissed",()=>{m.current&&(clearTimeout(m.current),m.current=null),y.current="processing",U(!0),de(null)}),vr=Mt.on("blocked",()=>{if(Re.current){br.current.updateError(Qd);return}if(!sl.current){fr(!0);return}Xi(),br.current.updateError(kc)});return()=>{l&&(clearTimeout(l),l=null),m.current&&(clearTimeout(m.current),m.current=null),y.current="idle",U(!1),de(null),ne(),ze(),ie(),xe(),Ft(),vr()}},[v,Mt,Xi,il]);let Mr=!!Pt?.clientId,sa=Array.isArray(ye),ja=sa&&ye.length>0,ll=sa&&ye.includes("paypal"),$a=(0,s.useRef)(null);$a.current===null&&($a.current=Xd());let Mo=$a.current?"redirect":oi(W,k,g.current()),{expressMethods:Wa,paymentElementMethods:la}=(0,s.useMemo)(()=>(0,f.partitionStripeMethods)(ye,{excludePaypal:Mr}),[ye,Mr]),cl=Mr||!!vt||ll&&Mo==="redirect",hu=(0,s.useMemo)(()=>cl?Wa.filter(l=>l!=="paypal"):Wa,[Wa,cl]),bu=(0,s.useMemo)(()=>{let l=[];return H&&l.push("apple_pay"),_e&&l.push("google_pay"),l},[H,_e]),xo=sa?hu:bu,Pu=G&&xo.length>0,Zi=dr?$t:z,Ha=(0,s.useMemo)(()=>{let l=Zi?.trim().toUpperCase();return l?N?la.filter(T=>{let ne=N[T];return!ne||ne.length===0||ne.includes(l)}):(0,f.filterStripeMethodsByCountry)(la,Zi):la},[la,Zi,N]),Qi=(0,s.useMemo)(()=>({mode:"payment",amount:ia,currency:Io,paymentMethodCreation:"manual",appearance:tl}),[ia,Io,tl]),[ul,dl]=(0,s.useState)("loading"),[pl,ml]=(0,s.useState)("loading"),[yl,fl]=(0,s.useState)("loading"),[vu,es]=(0,s.useState)(!1),[gl,ts]=(0,s.useState)("loading"),[ns,Cu]=(0,s.useState)();(0,s.useEffect)(()=>{Cu(Kr())},[]);let Ka=ns?.inAppBrowser,Ga=ns?ai(ns,Pt?.approvalPresentation,oe??(Et?"subscription":"order")):"popup",hl=C&&(Mr||(sa?ll:Ka===!1)),bl=G&&Pu,ca=(!tt||!!Xe.waitForDataAttachment)&&hl&&Mr,Pl=gl==="retrying"||gl==="exhausted",ua=null;G&&(vt?ua=el:Mo==="redirect"&&(ua=Xn));let vl=(0,s.useMemo)(()=>({...Se,presentationMode:Mo}),[Se,Mo]),da=!tt&&hl&&!!ua&&(!Mr||Pl),Fo=!tt&&bl&&!!Xn,pa=!tt&&G&&ja&&Ha.length>0&&!!Xn,Su=ca&&!Pl?vu:da&&Ms(ul),wu=Fo&&Ms(pl),ku=pa&&yl!=="load_error",Cl=l=>l==="loading"||l==="ready",Sl=ca||da&&Cl(ul)||Fo&&Cl(pl)||pa&&yl!=="load_error",Ya=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(!Ya.current){if(!G&&!C){Ya.current=!0;let l=new f.FloPayError("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");c?.(l),Le(l.message)}else if(!G&&C&&!Mr){Ya.current=!0;let l=new f.FloPayError("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");c?.(l),Le(l.message)}else if(Ka!==void 0&&!tt&&!ft&&!Sl){Ya.current=!0;let l=new f.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"});c?.(l),Le(l.message)}}},[G,C,Mr,Ka,tt,ft,Sl,c,Le]);let wl=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(wl.current||!ja)return;let l=[];H!==!0&&l.push("showApplePay"),_e!==!0&&l.push("showGooglePay"),l.length!==0&&(wl.current=!0,console.warn(`[FloPay] ${l.join(" / ")} ${l.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.`))},[ja,H,_e]);let kl=(0,s.useCallback)((l,T)=>Xe.applyInlineSessionPatch?Xe.applyInlineSessionPatch(l).then(ne=>({error:null,sessionId:ne.sessionId||e,nonce:ne.session?.clientSecret||t})).catch(ne=>{let ze=Ic(T,ne);return Le(ze.message),c?.(ze),{error:ze,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Xe.applyInlineSessionPatch,t,c,e,Le]),Pr=(0,s.useCallback)(async l=>{if(l!=="card"&&tt&&await Xe.waitForDataAttachment?.(),!se)return{proceed:!0};try{let T=await se({method:l,sessionId:e||void 0,createSession:Xe.inlineSessionDraft});if(T===!1)return{proceed:!1};if(T&&typeof T=="object"){T.account&&rn(ze=>({...ze??{},...T.account}));let ne=await kl(T,l);return ne.error?{proceed:!1,accountPatch:T.account}:{proceed:!0,accountPatch:T.account,sessionId:ne.sessionId,nonce:ne.nonce}}return{proceed:!0}}catch(T){let ne=Ic(l,T);return Le(ne.message),c?.(ne),{proceed:!1}}},[kl,Xe.inlineSessionDraft,Xe.waitForDataAttachment,tt,se,c,e,Le]),Rl=(0,s.useCallback)(async(l,T)=>{if(ee.current)return;ee.current=!0,xn(!0),de("processing"),Le(null);let ne=T?.sessionId??e,ze=T?.nonce??t,ie=fs(ot,T?.accountPatch),xe=T?.completionPaymentMethodId??Ca(l),Ft=l.originalPaymentMethodId?{...l,originalPaymentMethodId:void 0}:l,vr=op(l),mt=T?.presentationMode?vi(gn(Ue),{...Se,presentationMode:T.presentationMode}):void 0,wt=()=>{kt?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:vr}),mt?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",...wr,requestCategory:"process_payment"})};try{let _t=new kr.PaymentAPI(Rn),Vt=await _t.processPayment(ie.userId??"",{sessionId:ne,nonce:ze,paymentMethodCategory:T?.paymentMethodCategory??ip(l),tokenizedData:Ft,accountData:{...T?.accountPatch,userId:ie.userId??"",email:ie.email??"",firstName:ie.firstName||void 0,lastName:ie.lastName||void 0,...ue?(()=>{let Bt=on.current,xr=(0,f.isAVSFieldVisible)(ue.state,Bt),Zn=(0,f.isAVSFieldVisible)(ue.address_line_1,Bt),Fr=(0,f.isAVSFieldVisible)(ue.postal_code,Bt),ho=Zn&&!xr&&Fr?(0,f.getStateFromPostalCode)(Bt,(At.current??"").trim()):null,ba=xr?zt.current:ho;return{country:Bt,...Fr&&At.current?{zip:At.current}:{},...(0,f.isAVSFieldVisible)(ue.city,Bt)&&dn.current?{city:dn.current}:{},...ba?{state:ba}:{},...Zn&&cn.current?{addressLine1:cn.current}:{},...(0,f.isAVSFieldVisible)(ue.address_line_2,Bt)&&Nt.current?{addressLine2:Nt.current}:{}}})():{}},chv:M,avsCheck:at??!1,checkoutType:Ke,checkoutLayout:st,avsConfig:ue?{country:(0,f.isAVSFieldVisible)(ue.country,on.current),postal_code:(0,f.isAVSFieldVisible)(ue.postal_code,on.current),address_line_1:(0,f.isAVSFieldVisible)(ue.address_line_1,on.current),address_line_2:(0,f.isAVSFieldVisible)(ue.address_line_2,on.current),city:(0,f.isAVSFieldVisible)(ue.city,on.current),state:(0,f.isAVSFieldVisible)(ue.state,on.current)}:void 0}),go=async Bt=>{let xr=(0,f.isAuthorizationOnlySession)(q)||Bt?.status==="authorized";Yo(ne),mt?.terminal({outcome:"payment_succeeded",...wr}),de("success"),Rt(null),await new Promise(ho=>setTimeout(ho,600));let Zn;typeof Bt?.paymentId=="string"?Zn=Bt.paymentId:q?.paymentId&&(Zn=q.paymentId);let Fr;typeof Bt?.authorizationExpiresAt=="string"?Fr=Bt.authorizationExpiresAt:q?.authorizationExpiresAt&&(Fr=q.authorizationExpiresAt),i?.(xr?{status:"authorized",...Zn===void 0?{}:{paymentId:Zn},sessionId:typeof Bt?.sessionId=="string"?Bt.sessionId:ne,...Fr===void 0?{}:{authorizationExpiresAt:Fr},paymentIntentId:l.threeDSecureActionResultTokenId,paymentMethodId:xe,checkoutMethod:l.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:l.threeDSecureActionResultTokenId,paymentMethodId:xe,checkoutMethod:l.isPaypal?"paypal":"card"})};if(Vt.ok){await go(Vt.status===204?null:await Vt.json().catch(()=>null));return}let Jn=await Vt.json().catch(()=>null);if(Jn?.type==="paypal_redirect_required"){let Bt=Jn.threeDSecureToken,xr=Jn.paymentMethodId||l.id||"";if(!Ue||!Bt){de("error"),Le("PayPal authorization required but no token provided.");return}try{let Zn=vt?.getRawProvider();if(!Zn){Le("PayPal is not available.");return}let Fr={return_url:window.location.href};xr&&(Fr.payment_method=xr);let{error:ho}=await Zn.confirmPayment({clientSecret:Bt,confirmParams:Fr,redirect:"if_required"});if(ho){de("error");let ba=ho.message??"PayPal payment failed.";Le(ba),Ar("paypal",ba,{code:ho.code})}}catch(Zn){de("error"),Le(Zn instanceof Error?Zn.message:"PayPal authorization failed.")}return}if(Jn?.type==="paypal_direct_required"){let Bt=Jn.orderId;if(!Bt){de("error"),Le("PayPal retry required but no order id provided.");return}let xr=qt.current?.attempts??0;if(xr>=2){de("error"),Le("PayPal payment could not be completed after multiple attempts."),Ar("paypal","paypal_direct_required retry limit exceeded");return}es(!1),ts("loading"),Rt({orderId:Bt,attempts:xr+1}),de(null);return}if(Vt.headers.get(jd)===$d){let Bt=await Wd(_t,ne,ze);if(Bt!==void 0){await go(Bt);return}}(0,f.classifyPaymentRejection)(Vt.status,Jn)?mt?.terminal({outcome:"payment_declined",...wr,terminalReason:"provider_declined"}):wt(),de("error");let Ol=Jn?.message??"Payment failed. Please try again.";Le(Ol),Ar(l.isPaypal?"paypal":"card",Ol,{code:Jn?.code??Jn?.gatewayErrorCode,declineCode:Jn?.declineCode??Jn?.gatewayDeclineReason}),await new Promise(Bt=>setTimeout(Bt,400))}catch(_t){Oc(_t)||wt(),de("error"),Le(_t instanceof Error?_t.message:"An unexpected error occurred"),await new Promise(Vt=>setTimeout(Vt,400))}finally{xn(!1),de(null),ee.current=!1}},[Rn,e,t,ot,ue,at,Ke,st,M,Ue,vt,q,i,Le,Ar,kt,Se]),Un=(0,s.useCallback)((l,T)=>{u?u(l):Rl(l,T)},[u,Rl]),ma=`${Fc}:${e}`;(0,s.useEffect)(()=>{if(typeof window>"u")return;let l=localStorage.getItem(ma);if(!l)return;let T;try{T=JSON.parse(l)}catch{Gt(ma);return}if(!T||typeof T.createdAt!="number"||Date.now()-T.createdAt<0||Date.now()-T.createdAt>Bc||typeof T.paymentMethodId!="string"||typeof T.providerIntentId!="string"||typeof T.paymentMethodType!="string"||T.sessionId!==e||!t||T.nonce!==t||!xo.includes(T.paymentMethodType)){Gt(ma);return}Gt(ma),Un({id:T.paymentMethodId,type:"card",threeDSecureActionResultTokenId:T.providerIntentId,gateway:"stripe",paymentMethodType:T.paymentMethodType},{...T.accountPatch?{accountPatch:T.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[Un,t,e,ma,xo]);let _l=(0,s.useRef)(!1);(0,s.useEffect)(()=>{if(typeof window>"u"||_l.current)return;let[l,T,ne]=zs();if(!l||!T||$a.current||!Ue)return;let ze=Ue.getRawProvider();if(!ze)return;let ie=wt=>{let _t=localStorage.getItem(wt);if(!_t)return null;try{return JSON.parse(_t)}catch{return Gt(wt),null}},xe=ie(Or)??ie(Cc),Ft;if(xe?.clientSecret){if(xe.clientSecret!==T)return;Ft={...xe.accountPatch?{accountPatch:xe.accountPatch}:{},...xe.sessionId?{sessionId:xe.sessionId}:{},...xe.nonce?{nonce:xe.nonce}:{}}}else if(xe?.sessionId&&xe.sessionId!==e)return;_l.current=!0,Gt(Or),Gt(Cc),window.history.replaceState({},"",qs());let vr=xe?.paymentMethodType??xe?.tokenType??"card",mt="card";(async()=>{if(ne==="failed"){let Vr="Payment was declined. Please try again.";Le(Vr),Ar(mt,Vr);return}let{paymentIntent:wt,error:_t}=await ze.retrievePaymentIntent(T);if(_t){let Vr=_t.message??"Failed to retrieve payment status.";Le(Vr),Ar(mt,Vr,{code:_t.code});return}let Vt=wt?.status,go=va(Vt);if(!wt||!go){let Vr=Vt==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";Le(Vr),Ar(mt,Vr,{code:Vt??"missing_payment_intent"});return}let Jn=typeof wt.payment_method=="string"?wt.payment_method:wt.payment_method?.id;Un({id:Jn??xe?.paymentMethodId??xe?.tokenId??wt.id,type:"card",threeDSecureActionResultTokenId:wt.id,gateway:xe?.gateway??"stripe",paymentMethodType:vr},Ft)})()},[e,Un,Ue,Le,Ar]);let rs=(0,s.useCallback)(l=>{l.preventDefault()},[]);if(!(v||Ue!==null))return(0,d.jsx)("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let ya=te==="buttons",zn=me?.variables,Ru=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),os=zn?.colorBackground,_u=os&&!Ru.has(os)?os:void 0,fa=E.cardInputBorder??(ya?"#e5e7eb":"#A4A4FF"),El=zn?.colorDanger??"#dc2626",Ht=l=>tr[l]&&(Er[l]||Xt),Xa=Eo&&(Nn||Xt),or=l=>l?El:fa,Ja=(On.malformed||On.empty)&&(Ln||Xt),Eu=or(Ja),as=E.cardFormContainer?.backgroundColor??_u??(ya?"white":"#EDEDFF"),Bo=E.cardInputBackground??zn?.colorBackground??"white",is=Lo(Te),Il=Lo(Fe),Do=E.nameInput,Tl=E.cardInputFontSize??dp(Do?.fontSize)??zn?.fontSizeBase??"16px",Al=typeof Do?.fontFamily=="string"?Do.fontFamily:zn?.fontFamily??"Poppins, sans-serif",Ml=Fs(Do?.fontWeight)??400,Iu=E.cardInputColor??(typeof Do?.color=="string"?Do.color:void 0)??zn?.colorText??"#262833",Tu=E.cardInputPlaceholderColor??"#9ca3af",Zt=zn?.borderRadius??"8px",yo=zn?.borderRadius??E.cardButton?.borderRadius??Zt,fo=zn?.colorPrimary??"#4A49FF",Au=zn?.colorPrimaryHover??ta(fo,.12),ss=zn?.colorText??"#262833",ls={fontSize:Tl,fontFamily:Al,fontWeight:Ml,color:Iu,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},ga={marginTop:"0.375rem",...ls,fontSize:"0.75rem",lineHeight:1.4,color:El},Mu={"--flopay-input-placeholder-color":Tu,"--flopay-input-font-size":Tl,"--flopay-input-font-family":Al,"--flopay-input-font-weight":String(Ml)},ha=E.cardFormContainer??{},cs=ha.padding??(ya?"0":"1rem"),us=ha.borderRadius??Zt,xu=Mt&&gr?(0,d.jsx)(co,{capture:Mt,html:gr.html,messageToken:gr.messageToken,expectedOrigin:gr.expectedOrigin,verificationRequired:gr.verificationRequired,theme:pt,submitLabel:w,onReady:()=>{if(!Qr&&!ue||typeof document>"u")return;let l=()=>{let ne=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(ne){Yn.current=!0;try{ne.focus()}finally{Yn.current=!1}}};qr.current||l()},onError:l=>{l&&gr.verificationRequired&&y.current==="idle"&&(hr.current=!0),Le(l)},onValidation:l=>{let T=y.current;(T==="idle"||T==="validation-window")&&(Le(l),l&&y.current==="validation-window"&&(m.current&&(clearTimeout(m.current),m.current=null),y.current="idle",de(null)))}},vn):(0,d.jsx)("div",{"data-testid":"flopay-vault-loading",style:{minHeight:120,display:"flex",alignItems:"center",justifyContent:"center",color:"#6b7280",fontSize:14},children:"Loading secure card form\u2026"}),xl=(0,d.jsxs)("div",{onFocusCapture:l=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(l.target.tagName)&&Zr()},style:{backgroundColor:as,borderRadius:us,...ha,padding:cs,...Mu,display:"flex",flexDirection:"column"},children:[(0,d.jsx)("style",{children:`
30
+ `,Yo=44;function Xo(){return(0,Pr.jsx)("style",{children:pd})}function wa(e,t){let r=e.availablePaymentMethods;return r&&t.some(n=>r[n])?"ready":"unavailable"}function ka({state:e,placeholderTestId:t,borderRadius:r=8,children:n}){return e==="unavailable"||e==="load_error"?null:(0,Pr.jsxs)("div",{style:{position:"relative",minHeight:44},children:[(0,Pr.jsx)("div",{"data-testid":t,"aria-hidden":e==="ready",style:{position:"absolute",inset:0,height:44,borderRadius:r,background:"#e5e7eb",animation:e==="ready"?void 0:"flopay-pulse 1.5s ease-in-out infinite",opacity:e==="ready"?0:1,transform:e==="ready"?"scale(0.985)":"scale(1)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:"none"}}),(0,Pr.jsx)("div",{style:{minHeight:44,opacity:e==="ready"?1:0,transform:e==="ready"?"translateY(0)":"translateY(2px)",transition:"opacity 140ms ease-out, transform 140ms ease-out",pointerEvents:e==="ready"?"auto":"none"},children:n})]})}function ts(e){return e!=="unavailable"&&e!=="load_error"}function oi({method:e,themeId:t,submitting:r=!1,disabled:n=!1,highlighted:o=!1,hasNextStep:i=!1,onClick:l,backgroundColor:d,borderColor:p,textColor:b,borderRadius:k,fontFamily:w}){let x=(0,eo.resolveStripeMethodBrandVariant)(e,t),O=xl[e],[M,W]=(0,Al.useState)(!1),_=!!O&&!M,h=x?.backgroundColor??d??"#ffffff",v=x?.borderColor??p??"#d1d5db",te=x?.textColor??b??"#262833";return(0,Pr.jsx)("button",{type:"button","data-testid":`flopay-stripe-method-button-${e}`,"data-method":e,onClick:()=>{!r&&!n&&l()},disabled:r||n,"aria-busy":r||void 0,style:{position:"relative",width:"100%",boxSizing:"border-box",height:Yo,padding:"0 1rem",backgroundColor:h,color:te,border:`1px solid ${v}`,borderRadius:k??8,fontSize:"0.95rem",fontWeight:600,fontFamily:w,cursor:r||n?"not-allowed":"pointer",opacity:n&&!r?.55:1,animation:r?"flopay-pulse 1.5s ease-in-out infinite":void 0,display:"flex",alignItems:"center",justifyContent:"center",gap:8,transition:"transform 0.1s, opacity 140ms ease-out, border-color 140ms ease-out",boxShadow:o?"0 0 0 2px rgba(74, 73, 255, 0.15)":void 0},children:r?(0,Pr.jsx)("span",{style:{margin:"0 auto"},children:`Connecting to ${(0,eo.getStripeMethodDisplayName)(e)}\u2026`}):(0,Pr.jsxs)(Pr.Fragment,{children:[(0,Pr.jsxs)("span",{style:{display:"inline-flex",alignItems:"center",gap:(0,eo.hasVendoredStripeMethodLogo)(e)?8:0},children:[_?(0,Pr.jsx)("img",{src:O,alt:"","aria-hidden":"true",onError:()=>W(!0),loading:"lazy",decoding:"async",width:30,height:20,style:{width:30,height:20,flexShrink:0,borderRadius:3,objectFit:"contain",display:"inline-flex"}}):null,!_&&x?.logoSvg?(0,Pr.jsx)("span",{"aria-hidden":"true",style:{width:30,height:20,flexShrink:0,display:"inline-flex",borderRadius:3,overflow:"hidden"},dangerouslySetInnerHTML:{__html:x.logoSvg}}):null,(0,Pr.jsx)("span",{children:(0,eo.getStripeMethodDisplayName)(e)})]}),i&&(0,Pr.jsx)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:te,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,Pr.jsx)("path",{d:"M9 18l6-6-6-6"})})]})})}function ai(e){let t=new Set(e.map(eo.stripeExpressMethodToOptionKey)),r=n=>n==="applePay"||n==="googlePay"?"always":"auto";return Object.fromEntries(["applePay","googlePay","paypal","link","amazonPay","klarna"].map(n=>[n,t.has(n)?r(n):"never"]))}var ii={buttonType:{applePay:"plain",googlePay:"plain"},layout:{maxColumns:1,overflow:"never"}},si={type:"accordion",defaultCollapsed:!1,radios:"never"};function li({testId:e,attributes:t,disabled:r,onClick:n,color:o,borderRadius:i,style:l,children:d}){return(0,Pr.jsx)("button",{type:"button","data-testid":e,...t,onClick:n,disabled:r,style:{width:"100%",marginTop:"0.75rem",padding:"0.875rem",backgroundColor:o,color:"white",border:"none",borderRadius:i,fontSize:"1rem",fontWeight:600,cursor:r?"not-allowed":"pointer",opacity:r?.5:1,transition:"opacity 120ms ease-out",...l??{}},children:d})}var Qr=require("react");var Ra=require("@flopay/shared"),md=new Set(["animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth"]);function yd(e){let t=e.replace(/^(Webkit|Moz|ms)(?=[A-Z])/,"");return md.has(t.charAt(0).toLowerCase()+t.slice(1))}function fd(e,t){return typeof t=="number"&&t!==0&&!yd(e)?`${t}px`:String(t).trim()}function Fl(e,t){if(e.style.cssText="",!!t){for(let[r,n]of Object.entries(t))if(!(n==null||n==="")){if(r.startsWith("--")){e.style.setProperty(r,String(n));continue}e.style[r]=fd(r,n)}}}var Co=require("react/jsx-runtime"),rs=new WeakSet;function co({capture:e,html:t,messageToken:r,expectedOrigin:n,verificationRequired:o,theme:i,submitLabel:l,containerStyle:d,onReady:p,onError:b,onValidation:k}){let w=(0,Qr.useRef)(null),x=(0,Qr.useRef)(p),O=(0,Qr.useRef)(b),M=(0,Qr.useRef)(k);x.current=p,O.current=b,M.current=k;let W=(0,Qr.useRef)(i);W.current=i;let _=(0,Qr.useRef)(null),h=l??void 0,v=(0,Qr.useRef)(h);v.current=h;let te=(0,Qr.useRef)(void 0);return(0,Qr.useEffect)(()=>{let S=w.current;if(!S)return;let Pe=!0,j=!1,Q=()=>{!Pe||j||(j=!0,x.current?.())},Be=e.on("ready",()=>{Q()}),se=e.on("error",pe=>{O.current?.(pe.message??"There was a problem loading the secure card form.")}),je=e.on("validation",pe=>{M.current?.(pe.message??null)}),Je=v.current??(rs.has(e)?null:void 0),me={html:t,...r?{messageToken:r}:{},...n?{expectedOrigin:n}:{},...o?{verificationRequired:!0}:{},...W.current?{theme:W.current}:{},...Je===void 0?{}:{submitLabel:Je}};return _.current=W.current??null,te.current=v.current,v.current!==void 0&&rs.add(e),e.mount(S,me).then(()=>{Q()}).catch(pe=>{Pe&&O.current?.(pe instanceof Error?pe.message:"Failed to load the secure card form.")}),()=>{Pe=!1,Be(),se(),je(),e.unmount()}},[e,t,r,n,o]),vo(()=>{let S=w.current;S&&Fl(S,d)},[d]),(0,Qr.useEffect)(()=>{i!==void 0&&(i===null&&_.current===null||(_.current=i,e.applyTheme?.(i)))},[e,i]),(0,Qr.useEffect)(()=>{h!==te.current&&(te.current=h,h!==void 0&&rs.add(e),e.setSubmitLabel?.(h??null))},[e,h]),(0,Co.jsx)("div",{ref:w,"data-testid":"flopay-vault-card-fields"})}function ci({label:e}){return(0,Co.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:"0.75rem",margin:"0.5rem 0 0.75rem",color:"#999",fontSize:"0.85rem"},children:[(0,Co.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}}),(0,Co.jsx)("span",{children:e}),(0,Co.jsx)("div",{style:{flex:1,height:1,backgroundColor:"#ddd"}})]})}var Ir=require("@flopay/shared");var c=require("react/jsx-runtime"),Vn="flopay_stripe_resume",Bl="flopay_wallet_resume",Wl="fw1",gd="fw2",Hl=300*1e3,hd=900,Pd=25e3,vd=25e3,bd=1e4,Tn={provider:"paypal",paymentMethodCategory:"paypal"},Cd="x-flopay-process-result-source",Sd="status";async function wd(e,t,r){try{let n=(await e.getUnifiedCheckoutSession(t,r)).data.session;if(n?.status==="complete")return null;if(n?.status==="authorized")return{status:"authorized",paymentId:n.paymentId,sessionId:n.id||t,authorizationExpiresAt:n.authorizationExpiresAt}}catch{}}var di={},Ia=class{constructor(t){this.reason=t}};function kd(e){return e==null?"confirmation_result_missing":"confirmation_result_not_object"}function tr(e,t){if(typeof window>"u")return!1;try{return t===void 0?window.localStorage.removeItem(e):window.localStorage.setItem(e,JSON.stringify(t)),!0}catch{return!1}}function cs(e){return`${gd}:${e}`}function ui(e){return tr(cs(e))}function pi(e,t){if(typeof window>"u")return null;let r=cs(e);try{let n=localStorage.getItem(r);if(!n)return null;let o=JSON.parse(n);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"?(ui(e),null):o}catch{return ui(e),null}}function Rd(e){return tr(cs(e.sessionId),e)}function Dl(e,t,r){let n=pi(e,t);return!n||n.clientSecret!==r?!1:ui(e)}function ns(e,t,r){if(typeof window>"u")return;pi(e,t)?.clientSecret===r&&ui(e)}function Ed(e){return typeof e.payment_method=="string"?e.payment_method:typeof e.payment_method?.id=="string"?e.payment_method.id:null}function os(e,t,r){if(!e||typeof e.id!="string"||t&&e.id!==t)return{kind:"ambiguous"};if(e.status==="canceled"||e.status==="requires_payment_method")return{kind:"terminal"};let n=r?e.status==="succeeded":pa(e.status),o=Ed(e);return!n||!o?{kind:"ambiguous"}:{kind:"confirmed",intentId:e.id,paymentMethodId:o}}async function Ol(e,t,r){let n=null;try{return await Promise.race([fl(e,t),new Promise(o=>{n=window.setTimeout(()=>{n!==null&&r?.delete(n),o(null)},bd),r?.add(n)})])}finally{n!==null&&(window.clearTimeout(n),r?.delete(n))}}function Id(e){return e==="provider_sdk"?"PROVIDER_RUNTIME_FAILED":"REQUEST_TIMEOUT"}function Kl(e){return e instanceof u.FloPayError&&(e.type==="validation_error"||e.statusCode===400||e.statusCode===422)}async function mi(e,t,...r){let n=r[2].provider;t?.({class:"lifecycle",name:"payment.intent.started",provider:n});try{return await new Mn.PaymentAPI(e,{telemetry:!1}).createSessionIntent(...r)}catch(o){throw Kl(o)||t?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"intent_create",provider:n}),o}}var as=u.STRIPE_PAYPAL_RESUME_KEY,Ea=new Map,_d=250,Ll="Just a moment \u2014 we are finalizing your order. Please press pay again.",Td="We are still confirming your last payment with your bank. Please wait a moment before trying again.";function ds(e,t,r,n){e?.error({errorCode:"PROVIDER_LOAD_FAILED",failureCategory:"provider_runtime",stage:"provider_load",provider:t,paymentMethodCategory:r,requestCategory:"provider_sdk",...n?{terminalReason:n}:{}})}async function yi({billingApiUrl:e,sessionId:t,nonce:r,request:n}){if(!(!t||!r))try{await new Mn.PaymentAPI(e,{telemetry:!1}).reportSessionIntentDecline(t,r,n)}catch{}}function Md(e){return e instanceof u.FloPayError&&typeof e.statusCode=="number"&&e.statusCode>=400&&e.statusCode<500}function Gl({event:e,fallbackEmail:t,fallbackName:r}){let n=e.billingDetails,o=t?.trim(),i=(0,Uo.splitFullName)(r),l=i.firstName?i:(0,Uo.splitFullName)(n?.name);return(0,an.compactBuyerIdentity)({email:(0,u.isValidEmail)(o)?o:n?.email?.trim(),firstName:l.firstName,lastName:l.lastName})}async function xd({event:e,prepared:t,email:r,billingName:n,methodLabel:o,collect:i}){let l=Gl({event:e,fallbackEmail:t?.accountPatch?.email??r,fallbackName:[t?.accountPatch?.firstName,t?.accountPatch?.lastName].join(" ").trim()||n});return(0,u.isValidEmail)(l.email)?l:i(o,l)}var _a=180,Nl=`flopay-card-enter ${_a}ms cubic-bezier(0, 0, 0.2, 1) both`,Ul=`flopay-card-exit ${_a}ms cubic-bezier(0.4, 0, 0.2, 1) both`,Ad=`flopay-buttons-enter ${_a}ms cubic-bezier(0, 0, 0.2, 1) both`,Fd=`flopay-buttons-exit ${_a}ms cubic-bezier(0.4, 0, 0.2, 1) both`;function Bd(e){return e.gateway==="stripe"?"stripe":e.gateway==="paypal"||e.isPaypal?"paypal":void 0}function us(e){return(0,u.derivePrimaryTileStyle)(e)}var Dd={visibility:"hidden",position:"absolute",pointerEvents:"none",width:"100%",height:0,overflow:"hidden"};function Od(e){return e.isPaypal||e.gateway==="paypal"||e.paymentMethodType==="paypal"?"paypal":e.paymentMethodType==="apple_pay"||e.paymentMethodType==="google_pay"?"wallet":e.paymentMethodType&&e.paymentMethodType!=="card"?"apm":"card"}var is={width:"100%",minHeight:Yo,margin:"0 0 0.5rem",padding:"0.75rem 0.875rem",border:"1px solid #2563eb",borderRadius:8,background:"#eff6ff",color:"#1d4ed8",fontSize:"0.95rem",fontWeight:700,cursor:"pointer"};function zl(e){return e==="paypal"?"paypal":e==="apple_pay"?"apple_pay":"google_pay"}function ss(e){return e==="paypal"?"PayPal":(0,u.getStripeMethodDisplayName)(e)}function Ld(e){let t=(0,u.getPostalCodeExample)(e);return`Enter a valid ${(0,u.getPostalCodeLabel)(e)}${t?` (e.g. ${t})`:""}`}function Nd(e,t,r){let n=(0,u.isPostalCodeSupported)(e),o=t.trim(),i=r&&n,l=i&&!o,d=i&&!!o&&!(0,u.isValidPostalCode)(e,o);return{visible:r,supported:n,required:i,empty:l,malformed:d}}function Ud(e,t){let r=e.trim(),n=t&&!r,o=t&&!!r&&!(0,u.isValidEmail)(r);return{required:t,empty:n,malformed:o,value:r}}function zd(e){return typeof e=="number"?`${e}px`:e}function fi(e){return(0,c.jsx)(qd,{...e})}function ql({sessionId:e,nonce:t,email:r,billingApiUrl:n,onTokenizedBody:o,onErrorChange:i,isProcessing:l=!1,onButtonClick:d,onDecline:p,onTechnicalFailure:b,runBeforeButtonClick:k,billingName:w,onBuyerIdentityReady:x,onLoadStateChange:O,placeholderBorderRadius:M,popupCapabilityOwner:W,externalTelemetryContext:_,presentationMode:h}){let v=Zn(),{emitInstrument:te}=(0,a.useContext)(on),S=(0,er.useStripe)(),Pe=(0,er.useElements)(),j=(0,a.useMemo)(()=>ni(hr(v),_),[_,v]),[Q,Be]=(0,a.useState)("loading");(0,a.useEffect)(()=>{O?.(Q)},[Q,O]);let[se,je]=(0,a.useState)(!1),Je=(0,a.useRef)(!1),me=!(0,u.isValidEmail)(r?.trim())||!w?.trim(),{request:pe,collect:Ke,finish:Re}=zo(),_e=(0,a.useRef)(!1),Ee=(0,a.useRef)(null),re=(0,a.useRef)(null),[ae,ge]=(0,a.useState)(0),[Me,K]=(0,a.useState)(!1),ee=(0,a.useRef)(!1),ye=(0,a.useRef)(new Map),{startAttempt:L,finishAttempt:ve,invalidateAttempt:Y,isAttemptInvalidated:be,isAttemptCurrent:X,generationRef:ct}=ga((N,fe,Qe)=>{b?.(N,fe,{...Qe,popupBlocked:Qe?.popupBlocked??(0,ke.isPopupBlockedError)(fe),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:h,terminalReason:"overlay_timeout"}),K(!0),ge(G=>G+1)},{onHandoffObserved:()=>{W.markAvailable(),j?.log({name:"provider.popup.opened",stage:"overlay_open",...Tn,attempt:ct.current})}});(0,a.useEffect)(()=>{Me&&re.current?.focus()},[Me,ae]);let Ge=(0,a.useCallback)(()=>{ge(N=>N+1)},[]),$e=(0,a.useCallback)((N,fe,Qe)=>{Y(Qe),b?.("paypal",N,{code:fe,popupBlocked:(0,ke.isPopupBlockedError)(N),provider:"stripe",paymentMethodCategory:"paypal",presentationMode:h}),K(!0),Ge()},[Y,b,h,Ge]),lt=(0,a.useCallback)(()=>{window.setTimeout(()=>{(Ee.current?.querySelector("iframe")??Ee.current)?.focus()},0)},[]);(0,a.useEffect)(()=>{ee.current&&(ee.current=!1,lt())},[lt,ae]);let Ye=(0,a.useCallback)(()=>{K(!1),i?.(null),lt()},[lt,i]);(0,a.useEffect)(()=>{if(!S||_e.current)return;let[N,fe,Qe]=(0,u.readStripeRedirectParams)();if(!N||!fe)return;let G=(0,u.readMatchingStripePayPalContinuation)(fe);if(!G)return;_e.current=!0;let Ne=!0,Rt=Ea.get(fe);Rt||(Rt=Qe==="failed"?Promise.resolve(null):Promise.resolve().then(()=>S.retrievePaymentIntent(fe)),Ea.set(fe,Rt));let Ze={accountPatch:G.accountPatch,sessionId:G.sessionId,nonce:G.nonce},Tt=()=>{j?.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",...Tn,requestCategory:"provider_sdk"})};return j?.log({name:"provider.redirect.resumed",stage:"redirect_resume",...Tn}),(async()=>{try{je(!0);let m=await Rt;if(!Ne)return;if(m?.error){Ea.delete(fe),Tt(),i?.(m.error.message??"Failed to retrieve PayPal payment status.");return}if((0,u.clearStripePayPalReturn)(),Ea.delete(fe),Qe==="failed"){let H="PayPal payment was declined. Please try again.";j?.terminal({outcome:"payment_declined",...Tn,terminalReason:"provider_declined"}),i?.(H),p?.(gr("paypal",H));return}let P=m?.paymentIntent;if(P&&P.id!==N){Tt(),i?.("Failed to match the returned PayPal payment.");return}if(P&&(P.status==="requires_capture"||P.status==="succeeded")){let H=typeof P.payment_method=="string"?P.payment_method:P.payment_method?.id;o({id:H??P.id,type:"card",threeDSecureActionResultTokenId:P.id,isPaypal:!0},{...Ze,presentationMode:"redirect"})}else{let H="PayPal payment was not completed. Please try again.";j?.terminal({outcome:P?.status==="canceled"?"payment_cancelled":"payment_declined",...Tn,terminalReason:P?.status==="canceled"?"cancelled":"provider_declined"}),i?.(H),p?.(gr("paypal",H))}}catch(m){if(!Ne)return;Ea.delete(fe),Tt(),i?.(m instanceof Error?m.message:"Failed to complete PayPal payment.")}finally{Ne&&je(!1)}})(),()=>{Ne=!1,_e.current=!1}},[S,o,i,p,j]);let dt=(0,a.useCallback)(async(N=!1)=>{let fe=k?await k("paypal"):{proceed:!0};if(!fe.proceed)return ye.current.delete(ae),!1;let Qe=L("paypal");return ye.current.set(ae,{generation:Qe,accountPatch:fe.accountPatch,sessionId:fe.sessionId,nonce:fe.nonce}),K(!1),j?.log({name:`provider.${N?"redirect.started":"handoff.requested"}`,stage:N?"redirect":"overlay_open",...Tn,attempt:Qe}),d?.("paypal"),!0},[d,j,k,L,ae]),We=(0,a.useCallback)(async N=>{if(l||se||!await dt()){N.reject();return}N.resolve()},[l,dt,se]),Et=(0,a.useCallback)(async N=>{if(!S||!Pe)return;let fe=ye.current.get(ae);if(fe&&!X(fe.generation)){ye.current.delete(ae);return}if(!fe&&be()||fe&&!ve(fe.generation))return;fe||ve();let Qe=fe??null;if(ye.current.delete(ae),!Qe&&k){let U=await k("paypal");if(!U.proceed){N.paymentFailed({reason:"fail",message:"PayPal checkout was cancelled."});return}Qe={accountPatch:U.accountPatch,sessionId:U.sessionId,nonce:U.nonce}}let G=Qe?.sessionId??e,Ne=Qe?.nonce??t,Rt=await xd({event:N,prepared:Qe,email:r,billingName:w,methodLabel:"PayPal",collect:Ke});if(!Rt){N.paymentFailed({reason:"fail",message:"Buyer details are required."});return}let Ze=Rt.email,Tt={...Qe?.accountPatch,...(0,an.compactBuyerIdentity)(Rt,!0)};try{if(je(!0),i?.(null),!G||!(0,u.isValidEmail)(Ze))throw new Error("Missing sessionId or email for PayPal payment");await x?.(Rt);let U=S.createPaymentMethod,{error:m,paymentMethod:P}=await U({type:"paypal"});if(m){$e(m,"stripe_paypal_create_payment_method_failed",fe?.generation),N.paymentFailed({reason:"fail"});return}let H=await mi(n,te,G,Ne??"",{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",paymentMethodId:P?.id??null,intentKind:"payment"});if(H.provider!=="stripe")throw new Error("Invalid provider returned for PayPal intent");let V=H.clientSecret,he={return_url:(0,u.stripeRedirectReturnUrl)()};if(P?.id&&(he.payment_method=P.id),!tr(as,{clientSecret:V,sessionId:G,nonce:Ne,accountPatch:Tt})&&h==="redirect")throw new Error("Unable to save PayPal checkout progress. Please try again.");let{error:A,paymentIntent:ne}=await S.confirmPayment({clientSecret:V,confirmParams:he,redirect:"if_required"});if(A){if(tr(as),(0,ke.isProviderDecline)(A)){let Ce=A.message??"Your payment was declined.";j?.terminal({outcome:"payment_declined",...Tn,terminalReason:"provider_declined"}),i?.(Ce),p?.(gr("paypal",Ce,{code:(0,ke.getProviderErrorCode)(A),declineCode:(0,ke.getProviderDeclineCode)(A)})),await yi({billingApiUrl:n,sessionId:G,nonce:Ne,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:"paypal",providerDeclineReason:(0,ke.getProviderErrorCode)(A)??"provider_declined"}})}else $e(A,"stripe_paypal_confirm_failed",fe?.generation);return}tr(as);let q=typeof ne?.payment_method=="string"?ne.payment_method:ne?.payment_method?.id;o({id:q??ne?.id,type:"card",threeDSecureActionResultTokenId:ne?.id,isPaypal:!0},{accountPatch:Tt,paymentMethodCategory:"paypal",presentationMode:h,sessionId:G,nonce:Ne});return}catch(U){$e(U,"stripe_paypal_failed",fe?.generation)}finally{je(!1)}},[S,Pe,e,t,r,w,Ke,x,n,te,o,i,p,k,$e,ve,X,be,j,h,ae]),Ut=(0,a.useCallback)(async()=>{if(!(Je.current||l||se||!S||!Pe)){Je.current=!0,je(!0);try{if(!await dt(!0))return;await Et({expressPaymentType:"paypal",paymentFailed:()=>{}})}finally{Je.current=!1,je(!1)}}},[Pe,Et,l,dt,S,se]),kt=h==="redirect"?(0,c.jsx)("button",{type:"button",disabled:l||se,onClick:()=>{Ut()},style:{width:"100%",minHeight:Yo,border:"1px solid #d1d5db",borderRadius:M??8,background:"#ffc439",color:"#111827",cursor:l||se?"not-allowed":"pointer",fontSize:"1rem",fontWeight:700},children:"Pay with PayPal"}):(0,c.jsx)(er.ExpressCheckoutElement,{onReady:N=>Be(wa(N,["paypal"])),onLoadError:()=>{Be("load_error"),ds(j,"paypal","paypal","provider_error")},onClick:We,onConfirm:Et,onCancel:()=>{let N=ye.current.get(ae);ye.current.delete(ae),j?.terminal({outcome:"payment_cancelled",...Tn,terminalReason:"cancelled",...N?{attempt:N.generation}:{}}),Y(N?.generation),K(!1),ee.current=!0,Ge()},options:{buttonType:{paypal:"paypal"},billingAddressRequired:me,emailRequired:me,phoneNumberRequired:!1,shippingAddressRequired:!1,paymentMethods:{applePay:"never",googlePay:"never",paypal:"auto",link:"never"}}},ae),At=(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)("div",{ref:Ee,tabIndex:-1,"data-testid":"flopay-paypal-focus-target",role:"group","aria-label":"PayPal payment method",style:{borderRadius:8,outlineOffset:4},children:[Me&&(0,c.jsx)("button",{ref:re,type:"button","data-testid":"flopay-paypal-retry-button",onClick:Ye,style:is,children:"Try PayPal again"}),pe&&(0,c.jsx)(qo,{identity:pe.identity,methodLabel:pe.methodLabel,onComplete:Re,onCancel:()=>Re(null)},pe.id),(0,c.jsx)("div",{style:{display:pe?"none":void 0},children:kt})]}),se&&!pe&&(0,c.jsx)(qr,{status:"processing"})]});return h==="redirect"?At:(0,c.jsx)(ka,{state:Q,placeholderTestId:"flopay-paypal-placeholder",borderRadius:M,children:At})}function jl(e){return e==="apple_pay"||e==="google_pay"}function Vl({sessionId:e,nonce:t,email:r,billingApiUrl:n,intentKind:o,expressMethods:i,onTokenizedBody:l,onErrorChange:d,onButtonClick:p,onDecline:b,onTechnicalFailure:k,runBeforeButtonClick:w,billingName:x,onBuyerIdentityReady:O,onLoadStateChange:M,placeholderBorderRadius:W,popupCapabilityOwner:_,externalTelemetryContext:h}){let v=Zn(),{emitInstrument:te}=(0,a.useContext)(on),S=(0,er.useStripe)(),Pe=(0,er.useElements)(),j=(0,a.useMemo)(()=>ni(hr(v),h),[h,v]),[Q,Be]=(0,a.useState)("loading");(0,a.useEffect)(()=>{M?.(Q)},[Q,M]);let[se,je]=(0,a.useState)(!1),Je=(0,a.useRef)(!(0,u.isValidEmail)(r?.trim())||!x?.trim()).current,{request:me,collect:pe,finish:Ke}=zo(),Re=(0,a.useRef)(null),_e=(0,a.useRef)(null),[Ee,re]=(0,a.useState)(0),[ae,ge]=(0,a.useState)(!1),[Me,K]=(0,a.useState)(()=>pi(e,t)?"blocked":"idle"),[ee,ye]=(0,a.useState)("google_pay"),L=(0,a.useRef)(null),ve=(0,a.useRef)(!0),Y=(0,a.useRef)(!1),be=(0,a.useRef)("google_pay"),X=(0,a.useRef)("google_pay"),ct=(0,a.useRef)(null),Ge=(0,a.useRef)(null),$e=(0,a.useRef)(new Set),lt=(0,a.useRef)(null);(0,a.useEffect)(()=>(ve.current=!0,()=>{ve.current=!1;for(let U of $e.current)window.clearTimeout(U);$e.current.clear()}),[]);let Ye=(0,a.useRef)(new Map),{startAttempt:dt,finishAttempt:We,invalidateAttempt:Et,isAttemptInvalidated:Ut,isAttemptCurrent:kt,generationRef:At}=ga((U,m,P)=>{k?.(U,m,{...P,popupBlocked:P?.popupBlocked??(0,ke.isPopupBlockedError)(m),provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup",terminalReason:"overlay_timeout"}),ye(U),ge(!0),re(H=>H+1)},{onHandoffObserved:U=>{_.markAvailable(),j?.log({name:"provider.popup.opened",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:At.current,...U==="apple_pay"||U==="google_pay"?{walletType:U}:{}})},defersMissingTerminal:jl,onMissingTerminalDeferred:(U,m)=>{let P=j?.now()??globalThis.performance?.now()??Date.now(),H=lt.current,V=H?.generation===m?H.startedAt:P;j?.performance({stage:"overlay_return",durationMs:Math.max(0,P-V),durationMode:"buyer",provider:"stripe",paymentMethodCategory:"wallet",requestCategory:"provider_sdk",operationOutcome:"watchdog_expired",attempt:m,...jl(U)?{walletType:U}:{}}),j?.flush?.().catch(()=>{})}});(0,a.useEffect)(()=>{ae&&_e.current?.focus()},[ae,Ee]);let N=(0,a.useCallback)(()=>{re(U=>U+1)},[]),fe=(0,a.useCallback)((U,m,P,H,V=!1)=>{Et(H),k?.(U,m,{code:P,popupBlocked:(0,ke.isPopupBlockedError)(m),telemetryReported:V,provider:"stripe",paymentMethodCategory:"wallet",presentationMode:"popup"}),ye(U),ge(!0),N()},[Et,k,N]),Qe=(0,a.useCallback)(()=>{window.setTimeout(()=>{(Re.current?.querySelector("iframe")??Re.current)?.focus()},0)},[]);(0,a.useEffect)(()=>{Y.current&&(Y.current=!1,Qe())},[Qe,Ee]);let G=(0,a.useCallback)(()=>{ge(!1),d?.(null),Qe()},[Qe,d]),Ne=(0,a.useCallback)(()=>{L.current?.()},[]);(0,a.useEffect)(()=>{let U=pi(e,t);if(!U)return;let m=!1,P=!1,H=async()=>{if(!P){P=!0,m||K("checking");try{let V=await Ol(S,U.clientSecret,$e.current);if(m)return;let he=os(V,U.providerObjectId,(0,u.isSetupIntentClientSecret)(U.clientSecret));if(he.kind==="confirmed"){if(!Dl(e,t,U.clientSecret))return;L.current=null,K("idle"),l({id:he.paymentMethodId,type:"card",threeDSecureActionResultTokenId:he.intentId},{...U.accountPatch?{accountPatch:U.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t});return}if(he.kind==="terminal"){ns(e,t,U.clientSecret),L.current=null,K("idle"),ye(U.paymentMethodType),ge(!0),N();return}K("blocked")}catch{m||K("blocked")}finally{P=!1}}};return L.current=H,K("blocked"),()=>{m=!0,L.current===H&&(L.current=null)}},[t,l,N,e,S]);let Rt=(0,a.useCallback)(async U=>{let m=!1,P=mt=>{m||(m=!0,U.paymentFailed({reason:"fail",...mt?{message:mt}:{}}))};if(!S||!Pe){P();return}let H=Ye.current.get(Ee);if(H&&!kt(H.generation)){Ye.current.delete(Ee),P();return}if(!H&&Ut()){P();return}if(H&&!We(H.generation)){P();return}H||We();let V=U.expressPaymentType??H?.method??be.current,he=H??null,T=zl(V),A;V==="apple_pay"?A="apple_pay":V==="google_pay"&&(A="google_pay");let ne=H?.generation??At.current,q=j,Ce=q?.now()??globalThis.performance?.now()??Date.now(),rt=new AbortController,Ct=!1,ht=!1,xe=null,Fr=e,Vr="processing",br="other",Ht="provider_runtime",$r,Wr=new Promise((mt,it)=>{$r=it}),Rr=window.setTimeout(()=>{Ct=!0,rt.abort(),$r(di)},Pd),Lt=async(mt,it,Br)=>{Vr=mt,br=it,Ht=it==="intent_create"||it==="session_claim"?"transport_error":"provider_runtime";let Bt=q?.now()??globalThis.performance?.now()??Date.now();try{return await Promise.race([Br,Wr])}finally{let Hr=q?.now()??globalThis.performance?.now()??Date.now();q?.performance({stage:mt,durationMs:Math.max(0,Hr-Bt),durationMode:"machine",requestCategory:it,paymentMethodCategory:"wallet",provider:"stripe",...Ct?{statusClass:"timeout"}:{}})}};try{if(je(!0),d?.(null),!he&&w){let De=await Lt("processing","other",w(T));if(!De.proceed){P();return}he={accountPatch:De.accountPatch,sessionId:De.sessionId,nonce:De.nonce}}let mt=he?.sessionId??e;Fr=mt;let it=he?.nonce??t,Br=ct.current??he?.accountPatch,Bt=Gl({event:U,fallbackEmail:Br?.email??r,fallbackName:[Br?.firstName,Br?.lastName].join(" ").trim()||x});if(!(0,u.isValidEmail)(Bt.email)){P("Buyer details are required."),pe(ss(V),Bt).then(De=>{De&&(ct.current=De)});return}ct.current=null;let Hr={...he?.accountPatch,...(0,an.compactBuyerIdentity)(Bt,!0)};await Lt("processing","session_claim",Promise.resolve(O?.(Bt)));let{error:Cr}=await Lt("tokenization","provider_sdk",Pe.submit());if(Cr){P(),fe(V,Cr,"stripe_wallet_submit_failed",H?.generation);return}if(!mt)throw new Error("Missing sessionId or email for payment.");let Kt={provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:V,paymentMethodId:null,intentKind:o},or=JSON.stringify({sessionId:mt,nonce:it??"",request:Kt}),pn=Ge.current,en=pn?.retryIdentity===or?pn.authorizationAttemptId:(0,u.randomUuidV4)();Ge.current={authorizationAttemptId:en,retryIdentity:or};let ar=await Lt("processing","intent_create",mi(n,te,mt,it??"",{...Kt,authorizationAttemptId:en},{signal:rt.signal}));if(ar.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let zt=ar.clientSecret,Tr=Rd({createdAt:Date.now(),sessionId:mt,...it?{nonce:it}:{},clientSecret:zt,providerObjectId:ar.providerObjectId,paymentMethodType:V,accountPatch:Hr});window.clearTimeout(Rr),ht=!0,q?.performance({stage:"callback",durationMs:Math.max(0,(q?.now()??globalThis.performance?.now()??Date.now())-Ce),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe"});let mr=q?.now()??globalThis.performance?.now()??Date.now(),jt={stage:"provider_confirmation",provider:"stripe",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",...A?{walletType:A}:{},attempt:ne},Sr=!1,Vt=null;q?.log({name:"payment.provider_confirmation.started",...jt}),xe=window.setTimeout(()=>{xe!==null&&$e.current.delete(xe),Sr=!0;let De=q?.now()??globalThis.performance?.now()??Date.now();q?.error({errorCode:"PROVIDER_RUNTIME_FAILED",...jt,operationOutcome:"watchdog_expired",durationMs:Math.max(0,De-mr),statusClass:"timeout",failureCategory:"provider_runtime",terminalReason:"provider_error"}),q?.flush?.().catch(()=>{}),Vt?.()},vd),$e.current.add(xe);let ur=(De,vt)=>{xe!==null&&(window.clearTimeout(xe),$e.current.delete(xe),xe=null);let f=q?.now()??globalThis.performance?.now()??Date.now(),nt=Math.max(0,f-mr),ie=De;Sr&&(De==="resolved"?ie="resolved_late":De==="returned_error"?ie="returned_error_late":ie="rejected_late");let Er=vt??(De==="resolved"?"approved":"provider_error");return q?.log({name:"payment.provider_confirmation.returned",...jt,operationOutcome:ie,terminalReason:Er}),q?.performance({...jt,durationMs:nt,durationMode:"buyer",operationOutcome:ie,terminalReason:Er}),{durationMs:nt,operationOutcome:ie,terminalReason:Er}},qt=!1,Ae=!1,mn=De=>{if(!De||typeof De!="object")return null;let vt=De;if(vt.error)return null;let f=vt.setupIntent??vt.paymentIntent,nt=os(f??null,void 0,!!vt.setupIntent);return nt.kind==="confirmed"?nt:null},yn=De=>{if(qt||H&&At.current!==H.generation)return;let vt=mn(De);if(!vt)return;if(Tr&&!Dl(mt,it,zt)){qt=!0;return}let{intentId:f,paymentMethodId:nt}=vt;qt=!0,Ae=!0,Ge.current=null,L.current=null,ve.current&&(K("idle"),je(!1));let ie=`${Wl}:${mt}`;tr(ie,{createdAt:Date.now(),sessionId:mt,nonce:it,accountPatch:Hr,paymentMethodId:nt,providerIntentId:f,paymentMethodType:V});try{l({id:nt,type:"card",threeDSecureActionResultTokenId:f},{accountPatch:Hr,paymentMethodCategory:"wallet",sessionId:mt,nonce:it})}finally{tr(ie)}},fn=!1;Vt=async()=>{if(!(fn||qt||Ae)){fn=!0,ve.current&&K("checking");try{let De=await Ol(S,zt,$e.current);if(qt||Ae)return;let vt=(0,u.isSetupIntentClientSecret)(zt),f=os(De,ar.providerObjectId,vt);if(f.kind==="confirmed"){yn(vt?{setupIntent:De}:{paymentIntent:De});return}if(f.kind==="terminal"){if(Ae=!0,ns(mt,it,zt),Ge.current=null,L.current=null,!ve.current)return;K("idle"),P(),fe(V,new Error("Wallet confirmation did not complete."),"stripe_wallet_confirmation_terminal",H?.generation,!0);return}ve.current&&!Ae&&(K("blocked"),je(!1))}catch{ve.current&&!Ae&&(K("blocked"),je(!1))}finally{fn=!1}}},L.current=Vt;let ir,Dr;try{let De=await((0,u.isSetupIntentClientSecret)(zt)?S.confirmSetup({elements:Pe,clientSecret:zt,redirect:"if_required"}):S.confirmPayment({elements:Pe,clientSecret:zt,redirect:"if_required"}));if(!De||typeof De!="object")throw new Ia(kd(De));if(ir=De,!ir.error&&!mn(ir))throw new Ia("confirmation_result_unconfirmed");Dr=ur(ir.error?"returned_error":"resolved",ir.error&&(0,ke.isProviderDecline)(ir.error)?"provider_declined":void 0)}catch(De){let vt=De instanceof Ia?De.reason:void 0,f=vt!==void 0,nt=ur(f?"returned_error":"rejected");if(q?.error({...f?{errorCode:"CONFIGURATION_INVALID",failureCategory:"invalid_response",reason:vt}:Gi(De),...jt,operationOutcome:nt.operationOutcome,durationMs:nt.durationMs,statusClass:"unknown",terminalReason:nt.terminalReason}),!ve.current||qt)return;await Vt?.();return}let Mr=ir.error;if(Mr){if(!ve.current||qt)return;if((0,ke.isProviderDecline)(Mr)){Ae=!0,ns(mt,it,zt),Ge.current=null,L.current=null,K("idle");let De=Mr.message??"Your payment was declined.";P(De),d?.(De),b?.(gr(T,De,{code:(0,ke.getProviderErrorCode)(Mr),declineCode:(0,ke.getProviderDeclineCode)(Mr)})),yi({billingApiUrl:n,sessionId:mt,nonce:it,request:{provider:"stripe",paymentMethodCategory:"wallet",paymentMethodType:V,providerDeclineReason:(0,ke.getProviderErrorCode)(Mr)??"provider_declined",...ar.intentKind==="payment"&&ar.providerObjectId.startsWith("pi_")?{providerIntentId:ar.providerObjectId}:{}}})}else q?.error({...Gi(Mr),...jt,operationOutcome:Dr.operationOutcome,durationMs:Dr.durationMs,statusClass:"unknown",terminalReason:Dr.terminalReason}),await Vt?.();return}if(yn(ir),!qt)throw new Error("Invalid provider returned for APM intent")}catch(mt){if(mt===di){let it=q?.now()??globalThis.performance?.now()??Date.now();q?.error({errorCode:Id(br),stage:Vr,requestCategory:br,paymentMethodCategory:"wallet",provider:"stripe",...A?{walletType:A}:{},operationOutcome:"watchdog_expired",checkoutSessionId:Fr,durationMs:Math.max(0,it-Ce),statusClass:"timeout",failureCategory:Ht,attempt:ne,terminalReason:"provider_error"}),q?.flush?.().catch(()=>{})}P(),fe(V,mt,mt===di?"stripe_wallet_authorization_timeout":"stripe_wallet_failed",H?.generation,mt===di)}finally{if(window.clearTimeout(Rr),xe!==null&&(window.clearTimeout(xe),$e.current.delete(xe)),!ht){let mt=q?.now()??globalThis.performance?.now()??Date.now();q?.performance({stage:"callback",durationMs:Math.max(0,mt-Ce),durationMode:"machine",requestCategory:"provider_sdk",paymentMethodCategory:"wallet",provider:"stripe",...Ct?{statusClass:"timeout"}:{}})}ve.current&&je(!1)}},[S,Pe,e,t,r,x,pe,O,n,te,o,l,d,b,w,fe,We,kt,Ut,At,j,Ee]),Ze=(0,a.useMemo)(()=>ai(i),[i]),Tt=(0,a.useMemo)(()=>i.map(u.stripeExpressMethodToOptionKey),[i]);return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(ka,{state:Q,placeholderTestId:"flopay-wallet-placeholder",borderRadius:W,children:(0,c.jsxs)("div",{ref:Re,tabIndex:-1,"data-testid":"flopay-wallet-focus-target",role:"group","aria-label":"Wallet payment methods",style:{borderRadius:8,outlineOffset:4},children:[ae&&(0,c.jsxs)("button",{ref:_e,type:"button","data-testid":"flopay-wallet-retry-button",onClick:G,style:is,children:["Try ",ss(ee)," again"]}),Me!=="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:Ne,disabled:Me==="checking",style:is,children:Me==="checking"?"Checking payment status\u2026":"Check payment status"})]}),me&&(0,c.jsx)(qo,{identity:me.identity,methodLabel:me.methodLabel,onComplete:Ke,onCancel:()=>Ke(null)},me.id),Me==="idle"&&(0,c.jsx)("div",{style:{display:me?"none":void 0},children:(0,c.jsx)(er.ExpressCheckoutElement,{onReady:U=>{Be(wa(U,Tt))},onLoadError:U=>{Be("load_error"),ds(j,"stripe","wallet","provider_error")},onClick:async U=>{let m=j?.now()??globalThis.performance?.now()??Date.now();be.current=U.expressPaymentType,X.current=zl(U.expressPaymentType);let P=!0,H=window.setTimeout(()=>{P=!1,U.reject()},hd),V=w?await w(X.current):{proceed:!0};if(window.clearTimeout(H),!P)return;if(!V.proceed){Ye.current.delete(Ee),U.reject();return}let he=dt(U.expressPaymentType);lt.current={generation:he,startedAt:m},Ye.current.set(Ee,{generation:he,method:U.expressPaymentType,accountPatch:V.accountPatch,sessionId:V.sessionId,nonce:V.nonce}),ge(!1),j?.log({name:"provider.handoff.requested",stage:"overlay_open",provider:"stripe",paymentMethodCategory:"wallet",attempt:he,...U.expressPaymentType==="apple_pay"||U.expressPaymentType==="google_pay"?{walletType:U.expressPaymentType}:{}}),p?.(X.current),U.resolve()},onConfirm:Rt,onCancel:()=>{let U=Ye.current.get(Ee);Ye.current.delete(Ee),j?.terminal({outcome:"payment_cancelled",provider:"stripe",paymentMethodCategory:"wallet",terminalReason:"cancelled",...U?{attempt:U.generation}:{}}),Et(U?.generation),Ge.current=null,ge(!1),Y.current=!0,N()},options:{...ii,paymentMethods:Ze,emailRequired:Je,billingAddressRequired:Je}},Ee)})]})}),se&&(0,c.jsx)(qr,{status:"processing"})]})}function Yl(e,t,r){let n=(0,u.resolveSetupFutureUsage)(r,t,"inline_apm");return{...e,paymentMethodTypes:[t],...n?{setupFutureUsage:n}:null}}function ls({method:e,sessionId:t,nonce:r,email:n,billingName:o,onBuyerIdentityReady:i,billingApiUrl:l,onTokenizedBody:d,onErrorChange:p,onDecline:b,onCancel:k,runBeforeButtonClick:w,onButtonClick:x,isProcessing:O,submitButtonColor:M,submitButtonBorderRadius:W,submitButtonStyle:_,errorText:h}){let v=Zn(),{emitInstrument:te}=(0,a.useContext)(on),S=(0,er.useStripe)(),Pe=(0,er.useElements)(),[j,Q]=(0,a.useState)(!1),Be=(0,a.useRef)(!1),[se,je]=(0,a.useState)(!1),[Je,me]=(0,a.useState)("loading"),[pe,Ke]=(0,a.useState)(""),Re=!(0,u.isValidEmail)(n?.trim()),_e=!Re||(0,u.isValidEmail)(pe.trim()),Ee=(0,a.useCallback)(async()=>{if(!S||!Pe||O||Be.current||!se)return;Be.current=!0,Q(!0);let re=w?await w("card"):{proceed:!0};if(!re.proceed){Be.current=!1,Q(!1);return}x?.("card");let ae=re.sessionId??t,ge=re.nonce??r,Me=(0,Uo.splitFullName)(o?.trim()),K=(0,an.compactBuyerIdentity)({email:re.accountPatch?.email?.trim()||n?.trim()||pe.trim(),firstName:re.accountPatch?.firstName?.trim()||Me.firstName,lastName:re.accountPatch?.lastName?.trim()||Me.lastName}),ee=K.email,ye=(0,an.compactBuyerIdentity)({...re.accountPatch,...K});try{if(p?.(null),!(0,u.isValidEmail)(ee))throw new Error("A valid email address is required for payment.");await i?.(K);let L=await Pe.submit();if(L.error){p?.(L.error.message??"Payment failed.");return}let ve=[K.firstName,K.lastName].filter(Boolean).join(" "),Y=await S.createPaymentMethod({elements:Pe,params:{billing_details:{email:ee,...ve?{name:ve}:{}}}});if(Y.error||!Y.paymentMethod){p?.(Y.error?.message??"Failed to create payment method.");return}let be=Y.paymentMethod;if(!ae||!ee)throw new Error("Missing sessionId or email for payment.");let X=be.type||e,ct=await mi(l,te,ae,ge??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:X,paymentMethodId:null,intentKind:"payment"});if(ct.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let Ge=ct.clientSecret;tr(Vn,{clientSecret:Ge,sessionId:ae,nonce:ge,accountPatch:ye,paymentMethodId:be.id,paymentMethodType:be.type??e,gateway:"stripe"});let{error:$e,paymentIntent:lt}=await S.confirmPayment({clientSecret:Ge,confirmParams:{return_url:window.location.href,payment_method:be.id},redirect:"if_required"});if($e){tr(Vn);let We=$e.message??"Payment failed.";p?.(We),b?.(gr("card",We,{code:$e.code})),await yi({billingApiUrl:l,sessionId:ae,nonce:ge,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:e,providerDeclineReason:$e.code??"provider_declined"}});return}let Ye=lt?.status;if(!pa(Ye)){tr(Vn);let We=Ye==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";p?.(We),b?.(gr("card",We,{code:Ye??"missing_payment_intent"}));return}tr(Vn);let dt=typeof lt?.payment_method=="string"?lt.payment_method:lt?.payment_method?.id;d({id:dt??be.id,type:"card",threeDSecureActionResultTokenId:lt?.id,gateway:"stripe",paymentMethodType:be.type??e},{accountPatch:ye,paymentMethodCategory:"apm",sessionId:ae,nonce:ge})}catch(L){p?.(L instanceof Error?L.message:"Payment failed. Please try again.")}finally{Be.current=!1,Q(!1)}},[S,Pe,O,se,w,x,t,r,n,o,pe,i,l,te,e,d,p,b]);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:pe,onChange:re=>Ke(re.target.value),style:{minHeight:42,padding:"0 0.75rem",border:"1px solid #d1d5db",borderRadius:6}})]})}),(0,c.jsx)(er.PaymentElement,{onReady:()=>me("ready"),onLoadError:()=>{me("load_error"),ds(hr(v),"stripe","apm")},onChange:re=>{je(!!re.complete)},options:{layout:si,fields:{billingDetails:{email:"never"}},defaultValues:{billingDetails:{...o?.trim()?{name:o.trim()}:{},...(0,u.isValidEmail)(n?.trim())?{email:n?.trim()}:{}}}}}),(0,c.jsx)(li,{testId:`flopay-stripe-method-pay-${e}`,onClick:()=>{Ee()},disabled:!se||!_e||j||O||Je!=="ready",color:M,borderRadius:W,style:_,children:j?"Processing\u2026":`Pay with ${(0,u.getStripeMethodDisplayName)(e)}`}),h&&(0,c.jsx)($o,{margin:"0.75rem 0 0",children:h})]})}function $l({sessionId:e,nonce:t,email:r,billingName:n,onBuyerIdentityReady:o,billingApiUrl:i,paymentElementMethods:l,stripeInstance:d,paymentElementBaseOptions:p,futureUseSession:b,onTokenizedBody:k,onErrorChange:w,onButtonClick:x,onDecline:O,runBeforeButtonClick:M,onLoadStateChange:W,isProcessing:_=!1,submitButtonColor:h="#4A49FF",submitButtonBorderRadius:v=8,submitButtonStyle:te,buttonAppearance:S,themeId:Pe,onExpandApm:j,expandedApmMethod:Q}){let{emitInstrument:Be}=(0,a.useContext)(on),[se,je]=(0,a.useState)(null),[Je,me]=(0,a.useState)(null),pe=(0,a.useRef)(!1),{request:Ke,collect:Re,finish:_e}=zo();(0,a.useEffect)(()=>{l.length>0&&d?W?.("ready"):d||W?.("loading")},[l.length,d,W]);let Ee=(0,a.useCallback)(async ee=>{if(!d||pe.current||_)return;pe.current=!0,me(ee);let ye=M?await M("card"):{proceed:!0};if(!ye.proceed){pe.current=!1,me(null);return}x?.("card");let L=ye.sessionId??e,ve=ye.nonce??t,Y=(0,Uo.splitFullName)([ye.accountPatch?.firstName,ye.accountPatch?.lastName].filter(Boolean).join(" ")||n),be=(0,an.compactBuyerIdentity)({email:ye.accountPatch?.email?.trim()||r?.trim(),firstName:ye.accountPatch?.firstName?.trim()||Y.firstName,lastName:ye.accountPatch?.lastName?.trim()||Y.lastName});if(!(0,u.isValidEmail)(be.email)){me(null);let Ge=await Re((0,u.getStripeMethodDisplayName)(ee),be);if(!Ge){pe.current=!1;return}be=Ge,me(ee)}let X=be.email,ct=(0,an.compactBuyerIdentity)({...ye.accountPatch,...be});try{if(w?.(null),!L||!(0,u.isValidEmail)(X))throw new Error("Missing sessionId or email for payment.");await o?.(be);let Ge=await mi(i,Be,L,ve??"",{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ee,paymentMethodId:null,intentKind:"payment"});if(Ge.provider!=="stripe")throw new Error("Invalid provider returned for APM intent");let $e=Ge.clientSecret;tr(Vn,{clientSecret:$e,sessionId:L,nonce:ve,accountPatch:ct,paymentMethodType:ee,gateway:"stripe"});let{error:lt,paymentIntent:Ye}=await d.confirmPayment({clientSecret:$e,confirmParams:{return_url:window.location.href,payment_method_data:{type:ee,billing_details:{name:[be.firstName,be.lastName].filter(Boolean).join(" "),...X?{email:X}:{}}}},redirect:"if_required"});if(lt){tr(Vn);let Et=lt.message??"Payment failed.";w?.(Et),O?.(gr("card",Et,{code:lt.code})),await yi({billingApiUrl:i,sessionId:L,nonce:ve,request:{provider:"stripe",paymentMethodCategory:"apm",paymentMethodType:ee,providerDeclineReason:lt.code??"provider_declined"}});return}let dt=Ye?.status;if(!pa(dt)){tr(Vn);let Et=dt==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";w?.(Et),O?.(gr("card",Et,{code:dt??"missing_payment_intent"}));return}tr(Vn);let We=typeof Ye?.payment_method=="string"?Ye.payment_method:Ye?.payment_method?.id;k({id:We??Ye?.id,type:"card",threeDSecureActionResultTokenId:Ye?.id,gateway:"stripe",paymentMethodType:ee},{accountPatch:ct,paymentMethodCategory:"apm",sessionId:L,nonce:ve})}catch(Ge){w?.(Ge instanceof Error?Ge.message:"Payment failed. Please try again.")}finally{pe.current=!1,me(null)}},[d,_,M,x,e,t,r,Re,i,Be,n,o,k,w,O]),[re,ae]=(0,a.useState)(null),ge=j?Q??null:re,Me=(0,a.useCallback)(ee=>{pe.current||_||ge&&ge!==ee||((0,u.needsStripeMethodExplicitConfirm)(ee)?j?j(ee):ae(ee):Ee(ee))},[ge,_,Ee,j]),K=(0,a.useMemo)(()=>re?Yl(p,re,b):null,[re,p,b]);return(0,c.jsx)("div",{"data-testid":"flopay-stripe-payment-element-region",style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:Ke?(0,c.jsx)(qo,{identity:Ke.identity,methodLabel:Ke.methodLabel,onComplete:_e,onCancel:()=>_e(null)},Ke.id):l.map(ee=>{let ye=Q===ee,L=Je===ee,ve=Je!==null&&Je!==ee||Q!=null&&Q!==ee;return(0,c.jsxs)(a.default.Fragment,{children:[(0,c.jsx)(oi,{method:ee,themeId:Pe,submitting:L,disabled:ve,highlighted:ye,hasNextStep:(0,u.needsStripeMethodExplicitConfirm)(ee),onClick:()=>Me(ee),backgroundColor:S?.backgroundColor,borderColor:S?.borderColor,textColor:S?.textColor,borderRadius:S?.borderRadius,fontFamily:S?.fontFamily}),!j&&re===ee&&K&&d&&(0,c.jsx)(er.Elements,{stripe:d,options:K,children:(0,c.jsx)(ls,{method:ee,sessionId:e,nonce:t,email:r,billingName:n,onBuyerIdentityReady:o,billingApiUrl:i,onTokenizedBody:k,onErrorChange:w,onDecline:O,onCancel:()=>ae(null),runBeforeButtonClick:M,onButtonClick:x,isProcessing:_,submitButtonColor:h,submitButtonBorderRadius:v,submitButtonStyle:te})},ee)]},ee)})})}function qd({sessionId:e,nonce:t,billingApiUrl:r,telemetry:n,email:o,userId:i,onComplete:l,onError:d,onDecline:p,onTokenizedBody:b,firstName:k,lastName:w,chv:x,className:O,submitLabel:M,isProcessing:W,error:_,onErrorChange:h,showPayPal:v=!0,showStripe:te=!0,walletPresentation:S="auto",enabledPaymentMethods:Pe,enabledPaymentMethodCountries:j,showApplePay:Q=!0,showGooglePay:Be=!0,layout:se="default",theme:je,buttonsTheme:Je,buttonsStyles:me,appearance:pe,cardButtonContent:Ke,cardBackButtonContent:Re,cardTitleContent:_e,showSecurityFooter:Ee,onButtonClick:re,onBeforeButtonClick:ae,onBuyerIdentityReady:ge,enableAVS:Me,cardFieldOrder:K,cardPreFormSlot:ee,avsLayout:ye="row",country:L,zip:ve,addressLine1:Y,addressLine2:be,city:X,state:ct,onCountryChange:Ge,onZipChange:$e,avsCheck:lt,checkoutType:Ye,checkoutLayout:dt,totalAmount:We=0,currency:Et="usd",initialCardOpen:Ut=!1,directPaypal:kt,isSubscription:At=!1,session:N,dataAttachmentPending:fe=!1,dataAttachmentRequiresIdentity:Qe=!1,debug:G=!1}){let Ne=Zn(),Rt=Ga(),Ze=(0,a.useContext)(En),{emitInstrument:Tt}=(0,a.useContext)(on),U=(0,a.useRef)(null);U.current||(U.current=Xa());let m=U.current,[,P]=(0,a.useState)(0),H=(0,a.useRef)(null);H.current||(H.current=(0,zn.detectPayPalEnvironment)());let V=H.current,he=(0,a.useMemo)(()=>({browser:V,capability:m,presentationMode:"popup"}),[V,m]),T=N??Ze.session,A=(0,a.useMemo)(()=>({futureUse:T?.futureUse,futureUseUnsupported:T?.futureUseUnsupported}),[T?.futureUse,T?.futureUseUnsupported]),ne=T?.gateways?.paypal?.providerObjectType??kt?.providerObjectType,q=fe||Ze.claimPending===!0,Ce=Qe||Ze.claimRequiresIdentity===!0,rt=q&&!Ce,Ct=vl(),ht=r||Ct,[xe,Fr]=(0,a.useState)(!1),[Vr,br]=(0,a.useState)(null),[Ht,$r]=(0,a.useState)(L??""),[Wr,Rr]=(0,a.useState)(ve??""),[Lt,mt]=(0,a.useState)(Y??""),[it,Br]=(0,a.useState)(be??""),[Bt,Hr]=(0,a.useState)(X??""),[Cr,Kt]=(0,a.useState)(ct??""),[or,pn]=(0,a.useState)(""),[en,ar]=(0,a.useState)({}),zt=(0,a.useRef)(ve??""),Tr=(0,a.useRef)(L??""),mr=(0,a.useRef)(Y??""),jt=(0,a.useRef)(be??""),Sr=(0,a.useRef)(X??""),Vt=(0,a.useRef)(ct??""),ur=(0,a.useRef)(""),qt=(0,a.useRef)({});(0,a.useEffect)(()=>{let s=(R,ue,Ue,oe,Ie)=>{if(qt.current[R])return;let Ot=ue?.trim();!Ot||Ot===Ue.current||(Ue.current=Ot,oe(Ot),Ie?.(Ot))};s("country",L,Tr,$r,Ge),s("zip",ve,zt,Rr,$e),s("addressLine1",Y,mr,mt),s("addressLine2",be,jt,Br),s("city",X,Sr,Hr),s("state",ct,Vt,Kt)},[L,ve,Y,be,X,ct,Ge,$e]);let Ae=(0,a.useMemo)(()=>(0,u.resolveAVSConfig)(Me),[Me]),mn=Ae!==null,yn=(0,a.useMemo)(()=>(0,u.isAuthorizationOnlySession)(N),[N]),fn=(0,u.isMountableVaultBlock)(N?.vault),ir=!!N?.gateways?.pcivault,Dr=(0,Rn.hasServerSideCardGateway)(N),De=!!(N?.gateways?.stripe?.enabledPaymentMethods??Pe)?.includes("card")||(0,Rn.canRecoverHostedCardForm)(N),vt=fn||De||ir,f=!!(te&&vt&&e),[nt,ie]=(0,a.useState)(()=>se!=="buttons"||Ut?e??null:null),[Er,Kr]=(0,a.useState)(0),Zt=se!=="buttons"||Ut||!!e&&nt===e,Or=N?.captureMethod,St=(0,a.useRef)(Ne);(0,a.useEffect)(()=>{St.current=Ne},[Ne]);let[xn,no]=(0,a.useState)(null);(0,a.useEffect)(()=>{if(!f||!e||!Zt){no(null);return}let s=St.current?St.current.cardCapture({sessionId:e,captureMethod:Or}):new Mn.PciVaultCardCapture({sessionId:e,captureMethod:Or,billingApiUrl:ht,telemetry:n});return no({sessionId:e,captureMethod:Or,billingApiUrl:ht,telemetry:n,capture:s}),()=>{s.unmount()}},[f,e,Zt,Or,ht,n]);let Dt=f&&e&&Zt&&xn?.sessionId===e&&xn.captureMethod===Or&&xn.billingApiUrl===ht&&xn.telemetry===n?xn.capture:null,Gr=(0,a.useMemo)(()=>{let s=Ht,R=Ae?(0,u.isAVSFieldVisible)(Ae.postal_code,s):!1;return Nd(s,Wr,R)},[Ae,Ht,Wr]),{avsInvalid:gn,invalidAvsFields:hn}=(0,a.useMemo)(()=>{let s={line1:!1,city:!1,state:!1,zip:!1};if(!f||!Ae)return{avsInvalid:!1,invalidAvsFields:s};let R=Ht,ue=(Ie,Ot)=>(0,u.isAVSFieldVisible)(Ie,R)&&!Ot.trim(),Ue={line1:ue(Ae.address_line_1,Lt),city:ue(Ae.city,Bt),state:ue(Ae.state,Cr),zip:Gr.empty||Gr.malformed};return{avsInvalid:Ue.line1||Ue.city||Ue.state||Ue.zip,invalidAvsFields:Ue}},[f,Ae,Ht,Lt,Bt,Cr,Gr]),[Gt,An]=(0,a.useState)(!1),[Fn,Lr]=(0,a.useState)(!1),[Bn,tn]=(0,a.useState)(!1),[Dn,Hn]=(0,a.useState)({line1:!1,city:!1,state:!1}),Yr=(0,a.useRef)(!1),Pn=(0,a.useRef)({email:!1,line1:!1,city:!1,state:!1,zip:!1}),vn=(0,a.useRef)(!1),Nt=(0,a.useCallback)(s=>{Pn.current[s]=!0,vn.current=!0},[]),Xr=(0,a.useCallback)(s=>!Yr.current&&Pn.current[s],[]),xr=(0,a.useCallback)(s=>{Xr(s)&&Hn(R=>R[s]?R:{...R,[s]:!0})},[Xr]),[bn,Cn]=(0,a.useState)(()=>(0,u.resolveVaultMountOptions)(N?.vault,{billingApiUrl:ht,sessionId:e,nonce:t})),[bt,sr]=(0,a.useState)(Ut&&vt?"card":"buttons"),[yr,Nr]=(0,a.useState)(null),oo=bt==="expanding"||bt==="card",On=N?.gateways?.stripe&&!Dr?"stripe":void 0,Kn=(0,a.useCallback)(()=>{Tt?.({class:"card_surface",provider:On})},[On,Tt]),rn=(0,a.useRef)(null),lr=(0,a.useCallback)(s=>{rn.current&&clearTimeout(rn.current),rn.current=setTimeout(()=>{rn.current=null,s()},_a)},[]);(0,a.useEffect)(()=>()=>{rn.current&&clearTimeout(rn.current)},[]);let ao=(0,a.useRef)(!1),[pr,z]=(0,a.useState)(0),B=(0,a.useRef)(null),ce=(0,a.useCallback)(()=>{Kn(),ie(e??null),ao.current&&(ao.current=!1,z(s=>s+1)),Kr(s=>s+1),sr("expanding"),lr(()=>sr("card"))},[lr,Kn,e]),Se=(0,a.useCallback)(()=>{sr("collapsing"),lr(()=>sr("buttons"))},[lr]),It=(0,a.useCallback)(s=>{Nr(s),sr("apm-expanding"),lr(()=>sr("apm-form"))},[lr]),Yt=(0,a.useCallback)(()=>{sr("apm-collapsing"),lr(()=>{sr("buttons"),Nr(null)})},[lr]);(0,a.useEffect)(()=>{se==="buttons"&&Ut&&vt&&(ie(e??null),sr("card"))},[se,Ut,vt,e]);let[Oe,J]=(0,a.useState)(null),Z=(0,a.useRef)(!1),$=(0,a.useRef)(null),y=(0,a.useRef)("idle"),[g,E]=(0,a.useState)(!1),de=(0,a.useRef)(g);de.current=g;let[Fe,He]=(0,a.useState)(()=>kt?.existingOrderId?{orderId:kt.existingOrderId,attempts:1}:null),Xt=(0,a.useRef)(Fe);(0,a.useEffect)(()=>{Xt.current=Fe},[Fe]);let Te=(0,a.useRef)(null),Xe=(0,a.useMemo)(()=>{if(ge||Ze.claimBuyerIdentity||N?.buyerIdentified!==!1||!e||!t)return;let s=`${ht}|${e}|${t}`;Te.current?.key!==s&&(Te.current={key:s,claim:Lo(new Mn.PaymentAPI(ht,{telemetry:!1}),e,t,{...i?{userId:i}:{},...k?{firstName:k}:{},...w?{lastName:w}:{}})});let R=Te.current.claim;return async ue=>{await R(ue)}},[ge,Ze.claimBuyerIdentity,N?.buyerIdentified,e,t,ht,i,k,w]),ot=ge??Ze.claimBuyerIdentity??Xe,wt=_??Vr,we=(0,a.useMemo)(()=>(0,u.resolveTheme)(je),[je]),D=(0,a.useMemo)(()=>{let s=we?.buttonsLayout??(0,u.resolveButtonsLayoutTheme)(Je);return me?{...s,...me,cardButton:{...s.cardButton,...me.cardButton},cardFormContainer:{...s.cardFormContainer,...me.cardFormContainer},backButton:{...s.backButton,...me.backButton},backButtonIcon:{...s.backButtonIcon,...me.backButtonIcon},submitButton:{...s.submitButton,...me.submitButton},title:{...s.title,...me.title}}:s},[we,Je,me]),le=pe??we?.appearance,yt=(0,a.useMemo)(()=>(0,Ir.computeVaultCardThemeColors)({appearance:le,buttonsStyles:D,layout:se}),[le,D,se]),Ve=Ze.inlineSessionPatchProcessing??!1,et=(W??xe)||Ve,Mt=ht.replace(/\/+$/,""),Pt=(0,a.useMemo)(()=>Ki({userId:i,email:o,firstName:k,lastName:w,country:L,zip:ve},en),[i,o,k,w,L,ve,en]),wo=[Pt.firstName,Pt.lastName].filter(s=>!!s?.trim()).join(" "),Cs=!(0,u.isValidEmail)(Pt.email?.trim()),ki=(0,a.useRef)(null);f&&ki.current===null&&(ki.current=Cs);let io=f&&(ki.current??Cs),Ri=(0,a.useMemo)(()=>Ud(or,io),[or,io]),ko=Ri.empty||Ri.malformed,Jr=(0,a.useMemo)(()=>Ne?Ne.getRawProvider():null,[Ne]),Ss=(0,a.useMemo)(()=>Rt?Rt.getRawProvider():null,[Rt]),Qo=We||100,Ro=Et.toLowerCase(),Ei=(0,a.useMemo)(()=>le?(0,Mn.toStripeAppearance)(le):null,[le]),Eo=Ei,ws=(0,a.useMemo)(()=>{let s=Ei??{},R=s.rules??{};return{...s,rules:{...R,".AccordionItem":{padding:"10px 14px",boxShadow:"none",...R[".AccordionItem"]??{}},".AccordionItemContents":{padding:"6px 14px 12px",boxShadow:"none",...R[".AccordionItemContents"]??{}}}}},[Ei]),ks=(0,a.useMemo)(()=>({...gl(We,T?.captureMethod,A),currency:Ro,...Eo?{appearance:Eo}:null}),[We,Ro,T?.captureMethod,A,Eo]),Ii=(0,u.resolveSetupFutureUsage)(A,"paypal","paypal"),Rs=(0,a.useMemo)(()=>({mode:"payment",amount:Qo,currency:Ro,captureMethod:"manual",...Ii?{setupFutureUsage:Ii}:null,...Eo?{appearance:Eo}:null}),[Qo,Ro,Ii,Eo]),Le=(0,a.useCallback)(s=>{br(s),h?.(s)},[h]),Es=(0,a.useRef)(0);(0,a.useEffect)(()=>{pr!==Es.current&&(Es.current=pr,Le(null))},[pr,Le]);let _i=(0,a.useRef)(""),[Is,vc]=(0,a.useState)(!1),Ti=(0,a.useCallback)(()=>{vc(!0)},[]);(0,a.useEffect)(()=>{if(!f||!io||!ot||!Is||ko||_i.current)return;let s=(0,an.compactBuyerIdentity)({email:(0,u.isValidEmail)(Pt.email?.trim())?Pt.email?.trim():ur.current.trim(),firstName:Pt.firstName?.trim(),lastName:Pt.lastName?.trim()});_i.current=JSON.stringify(s),ar(R=>({...R,...s})),Promise.resolve(ot(s)).catch(R=>{_i.current="",Le(R instanceof Error?R.message:"Failed to attach buyer details.")})},[f,io,ot,Is,ko,Pt.email,Pt.firstName,Pt.lastName,Le]),(0,a.useEffect)(()=>{!f||!Dt||Dt.setCardFieldOrder?.(K??null,Ae==null&&!io)},[f,Dt,K,Ae,io]),(0,a.useEffect)(()=>{(bt==="expanding"||bt==="collapsing"||bt==="apm-expanding"||bt==="apm-collapsing")&&Le(null)},[bt,Le]);let Ln=(0,a.useCallback)((s,R,ue)=>{p?.(gr(s,R,ue))},[p]),Io=(0,a.useCallback)((s,R,ue)=>{let Ue=ue?.popupBlocked??(0,ke.isPopupBlockedError)(R);Ue&&m.markBlocked()&&P(ft=>ft+1);let oe=(0,ke.buildExternalMethodRecoveryMessage)(ss(s),Ue,V.inAppBrowser),Ie=(0,ke.getProviderErrorCode)(R),Ot=(Ie?.toLowerCase()==="error"?void 0:Ie)??(0,ke.sanitizeExternalFailureCode)(ue?.code)??"external_payment_method_failed",kn=new u.FloPayError(oe,"api_error",{code:"external_payment_method_failed",param:s,details:{providerCode:Ot,popupBlocked:Ue,inAppBrowser:V.inAppBrowser,appFamily:V.appFamily,popupCapability:m.current(),presentationMode:ue?.presentationMode??"popup"}});ue?.telemetryReported||hr(Ne)?.error(Go({...he,presentationMode:ue?.presentationMode??"popup"},{errorCode:Ue?"POPUP_BLOCKED":"PROVIDER_RUNTIME_FAILED",failureCategory:"provider_runtime",stage:"provider_ready",provider:ue?.provider??(s==="paypal"?"paypal":"stripe"),paymentMethodCategory:ue?.paymentMethodCategory??(s==="paypal"?"paypal":"wallet"),requestCategory:"provider_sdk",terminalReason:ue?.terminalReason??(Ue?"popup_blocked":"provider_error")})),J(null),se==="buttons"&&(sr("buttons"),Nr(null)),Le(oe),d?.(kn),console.error("[FloPay] External payment method failed:",{method:s,code:Ot,popupBlocked:Ue})},[V,he,Ne,se,d,m,Le]);(0,a.useEffect)(()=>{if(!f||!e){Cn(null);return}let s={billingApiUrl:Mt,sessionId:e,nonce:t},R=(0,u.resolveVaultMountOptions)(N?.vault,s);if(R){Cn(R);return}if(!Zt){Cn(null);return}let ue=`${Mt}\0${e}\0${t??""}`,Ue=B.current;if(Ue&&Ue.key===ue){Cn(Ue.mount);return}Cn(null);let oe=!0;return new Mn.PaymentAPI(Mt).getVaultCapture(e,t).then(Ie=>{if(!oe)return;let Ot=(0,u.resolveVaultMountOptions)(Ie,s);Ot?.verificationRequired&&!Ie.html&&(B.current={key:ue,mount:Ot}),Ot?Cn(Ot):Le("Failed to load the secure card form.")}).catch(Ie=>{oe&&Le(Ie instanceof Error?Ie.message:"Failed to load the secure card form.")}),()=>{oe=!1}},[f,Zt,Er,e,N?.vault,Mt,t,Le]);let Sn=(0,a.useRef)({onComplete:l,onError:d,updateError:Le,emitDecline:Ln,resolvedAccount:Pt,avsConfig:Ae,avsCheckProp:lt,sessionId:e,nonce:t,baseUrl:Mt,captureMethod:N?.captureMethod,paymentId:N?.paymentId,authorizationExpiresAt:N?.authorizationExpiresAt,serverSideCardGateway:Dr});Sn.current={onComplete:l,onError:d,updateError:Le,emitDecline:Ln,resolvedAccount:Pt,avsConfig:Ae,avsCheckProp:lt,sessionId:e,nonce:t,baseUrl:Mt,captureMethod:N?.captureMethod,paymentId:N?.paymentId,authorizationExpiresAt:N?.authorizationExpiresAt,serverSideCardGateway:Dr};let Mi=(0,a.useRef)(!1),_s=(0,a.useCallback)(()=>{let s=Sn.current,R=s.resolvedAccount.email?.trim(),ue=(0,u.isValidEmail)(R)?R:ur.current.trim();if(!(0,u.isValidEmail)(ue))return null;let Ue=s.resolvedAccount.firstName?.trim(),oe=s.resolvedAccount.lastName?.trim(),Ie=Tr.current.trim()||s.resolvedAccount.country?.trim()||"",Ot=s.avsConfig?(0,u.isAVSFieldVisible)(s.avsConfig.state,Ie):!1,kn=s.avsConfig?(0,u.isAVSFieldVisible)(s.avsConfig.address_line_1,Ie):!1,ft=s.avsConfig?(0,u.isAVSFieldVisible)(s.avsConfig.postal_code,Ie):!1,_t=s.avsConfig?(0,u.isAVSFieldVisible)(s.avsConfig.city,Ie):!1,xt=s.avsConfig?(0,u.isAVSFieldVisible)(s.avsConfig.address_line_2,Ie):!1,$t=kn&&!Ot&&ft?(0,u.getStateFromPostalCode)(Ie,(zt.current??"").trim()):null,fo=Ot?Vt.current:$t;return{accountData:{userId:s.resolvedAccount.userId??"",email:ue,...Ue?{firstName:Ue}:{},...oe?{lastName:oe}:{},...ft&&zt.current?{zip:zt.current}:{},..._t&&Sr.current?{city:Sr.current}:{},...fo?{state:fo}:{},...kn&&mr.current?{addressLine1:mr.current}:{},...xt&&jt.current?{addressLine2:jt.current}:{},...Ie?{country:Ie}:{}},...s.avsCheckProp===void 0?{}:{avsCheck:s.avsCheckProp},...s.avsConfig?{avsConfig:{country:(0,u.isAVSFieldVisible)(s.avsConfig.country,Ie),postal_code:ft,address_line_1:kn,address_line_2:xt,city:_t,state:Ot}}:{}}},[]),Ts=(0,a.useRef)(q);Ts.current=q,(0,a.useEffect)(()=>{q||wt!==Ll||Sn.current.updateError(null)},[q,wt]),(0,a.useEffect)(()=>{!f||!Dt||Dt.setSubmitGate?.(gn||q||ko||g)},[f,Dt,gn,q,ko,g]),(0,a.useEffect)(()=>{if(!f||!Dt)return;Mi.current=!1;let s=null,R=()=>{s&&clearTimeout(s),s=setTimeout(()=>{s=null,y.current="idle",J(null)},400)},ue=Dt.on("submitting",()=>{An(!0),$.current&&clearTimeout($.current),y.current="validation-window",$.current=setTimeout(()=>{$.current=null,y.current==="validation-window"&&(y.current="processing")},_d),J("processing");let ft=Sn.current;if(!ft.sessionId||!ft.nonce)return;let _t=_s();if(!_t){ft.updateError("Enter a valid email address."),y.current="idle",J(null);return}new Mn.PaymentAPI(ft.baseUrl).patchAccountSnapshot(ft.sessionId,ft.nonce,_t,{telemetryMode:"best_effort"}).catch(xt=>{if(!Md(xt))return;let $t=xt instanceof Error?xt.message:"Please check your billing address and try again.";ft.updateError($t),y.current="idle",J(null),ft.onError?.(xt instanceof u.FloPayError?xt:new u.FloPayError($t,"api_error"))})}),Ue=Dt.on("complete",ft=>{(0,_n.markSessionRecentlyCompleted)(ft.sessionId??Sn.current.sessionId),y.current="terminal",E(!1),J("success"),setTimeout(()=>{if(Mi.current)return;Mi.current=!0;let _t=Sn.current,xt=(0,u.isAuthorizationOnlySession)(_t)||ft.outcome==="authorized",$t=_t.serverSideCardGateway?{}:{paymentIntentId:ft.intentId};Sn.current.onComplete?.(xt?{status:"authorized",...$t,paymentId:ft.paymentId??_t.paymentId,sessionId:ft.sessionId??_t.sessionId,authorizationExpiresAt:ft.authorizationExpiresAt??_t.authorizationExpiresAt,checkoutMethod:"card"}:{status:"succeeded",...$t,checkoutMethod:"card"})},600)}),oe=Dt.on("decline",ft=>{let _t=Sn.current,xt=ft.message??"Your payment was declined. Please try another card or contact your bank.";y.current="terminal",E(!1),_t.updateError(xt),J("error");let $t=ft.failureOutcome??(0,u.normalizeCheckoutFailureOutcome)(ft.declineReason)??"authorization_declined";_t.emitDecline("card",xt,{code:$t,declineCode:$t}),R()}),Ie=Dt.on("error",ft=>{let _t=Sn.current,xt=ft.message??"There was a problem processing your payment. Please try again.";y.current="terminal",E(!1),_t.updateError(xt),J("error"),_t.onError?.(new u.FloPayError(xt,"api_error",{code:ft.failureOutcome??"capture_failed"})),R()}),Ot=Dt.on("challenge_dismissed",()=>{$.current&&(clearTimeout($.current),$.current=null),y.current="processing",E(!0),J(null)}),kn=Dt.on("blocked",()=>{if(de.current){Sn.current.updateError(Td);return}if(!Ts.current){An(!0);return}Ti(),Sn.current.updateError(Ll)});return()=>{s&&(clearTimeout(s),s=null),$.current&&(clearTimeout($.current),$.current=null),y.current="idle",E(!1),J(null),ue(),Ue(),oe(),Ie(),Ot(),kn()}},[f,Dt,Ti,_s]);let Nn=!!kt?.clientId,ea=Array.isArray(Pe),Fa=ea&&Pe.length>0,Ms=ea&&Pe.includes("paypal"),Ba=(0,a.useRef)(null);Ba.current===null&&(Ba.current=(0,u.hasMatchingStripePayPalReturn)());let _o=Ba.current?"redirect":(0,qn.resolveStripePayPalPresentation)(V,S,m.current()),{expressMethods:Da,paymentElementMethods:xi}=(0,a.useMemo)(()=>(0,u.partitionStripeMethods)(Pe,{excludePaypal:Nn}),[Pe,Nn]),xs=Nn||!!Rt||Ms&&_o==="redirect",bc=(0,a.useMemo)(()=>xs?Da.filter(s=>s!=="paypal"):Da,[Da,xs]),Cc=(0,a.useMemo)(()=>{let s=[];return Q&&s.push("apple_pay"),Be&&s.push("google_pay"),s},[Q,Be]),To=ea?bc:Cc,Sc=te&&To.length>0,As=mn?Ht:L,Oa=(0,a.useMemo)(()=>(0,u.filterStripeMethodsByCountryGate)(xi,As,j),[xi,As,j]),Ai=(0,a.useMemo)(()=>({mode:"payment",amount:Qo,currency:Ro,paymentMethodCreation:"manual",appearance:ws}),[Qo,Ro,ws]),[Fs,Bs]=(0,a.useState)("loading"),[Ds,Os]=(0,a.useState)("loading"),[Ls,Ns]=(0,a.useState)("loading"),[wc,Fi]=(0,a.useState)(!1),[Us,Bi]=(0,a.useState)("loading"),[Di,kc]=(0,a.useState)();(0,a.useEffect)(()=>{kc((0,zn.detectPayPalEnvironment)())},[]);let La=Di?.inAppBrowser,Na=Di?(0,qn.resolvePayPalPresentationMode)(Di,kt?.approvalPresentation,ne??(At?"subscription":"order")):"popup",zs=v&&(Nn||(ea?Ms:La===!1)),qs=te&&Sc,ta=(!rt||!!Ze.waitForDataAttachment)&&zs&&Nn,js=Us==="retrying"||Us==="exhausted",ra=null;te&&(Rt?ra=Ss:_o==="redirect"&&(ra=Jr));let Vs=(0,a.useMemo)(()=>({...he,presentationMode:_o}),[he,_o]),na=!rt&&zs&&!!ra&&(!Nn||js),Mo=!rt&&qs&&!!Jr,oa=!rt&&te&&Fa&&Oa.length>0&&!!Jr,Rc=ta&&!js?wc:na&&ts(Fs),Ec=Mo&&ts(Ds),Ic=oa&&Ls!=="load_error",$s=s=>s==="loading"||s==="ready",Ws=ta||na&&$s(Fs)||Mo&&$s(Ds)||oa&&Ls!=="load_error",Ua=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(!Ua.current){if(!te&&!v){Ua.current=!0;let s=new u.FloPayError("FloPay: both `showStripe` and `showPayPal` are false \u2014 nothing to render.","validation_error");d?.(s),Le(s.message)}else if(!te&&v&&!Nn){Ua.current=!0;let s=new u.FloPayError("FloPay: `showStripe` is false and no PayPal gateway is configured for this session \u2014 nothing to render.","validation_error");d?.(s),Le(s.message)}else if(La!==void 0&&!rt&&!vt&&!Ws){Ua.current=!0;let s=new u.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?.(s),Le(s.message)}}},[te,v,Nn,La,rt,vt,Ws,d,Le]);let Hs=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(Hs.current||!Fa)return;let s=[];Q!==!0&&s.push("showApplePay"),Be!==!0&&s.push("showGooglePay"),s.length!==0&&(Hs.current=!0,console.warn(`[FloPay] ${s.join(" / ")} ${s.length===1?"is":"are"} deprecated: the Apple Pay / Google Pay surface is now driven by \`gateways.stripe.enabledPaymentMethods\` on the session response. Remove the legacy prop(s) to silence this warning.`))},[Fa,Q,Be]);let Ks=(0,a.useCallback)((s,R)=>Ze.applyInlineSessionPatch?Ze.applyInlineSessionPatch(s).then(ue=>({error:null,sessionId:ue.sessionId||e,nonce:ue.session?.clientSecret||t})).catch(ue=>{let Ue=(0,u.normalizeBeforeButtonClickError)(R,ue);return Le(Ue.message),d?.(Ue),{error:Ue,sessionId:e,nonce:t}}):Promise.resolve({error:null,sessionId:e,nonce:t}),[Ze.applyInlineSessionPatch,t,d,e,Le]),wn=(0,a.useCallback)(async s=>{if(s!=="card"&&rt&&await Ze.waitForDataAttachment?.(),!ae)return{proceed:!0};try{let R=await ae({method:s,sessionId:e||void 0,createSession:Ze.inlineSessionDraft});if(R===!1)return{proceed:!1};if(R&&typeof R=="object"){R.account&&ar(Ue=>({...Ue??{},...R.account}));let ue=await Ks(R,s);return ue.error?{proceed:!1,accountPatch:R.account}:{proceed:!0,accountPatch:R.account,sessionId:ue.sessionId,nonce:ue.nonce}}return{proceed:!0}}catch(R){let ue=(0,u.normalizeBeforeButtonClickError)(s,R);return Le(ue.message),d?.(ue),{proceed:!1}}},[Ks,Ze.inlineSessionDraft,Ze.waitForDataAttachment,rt,ae,d,e,Le]),Gs=(0,a.useCallback)(async(s,R)=>{if(Z.current)return;Z.current=!0,Fr(!0),J("processing"),Le(null);let ue=R?.sessionId??e,Ue=R?.nonce??t,oe=Ki(Pt,R?.accountPatch),Ie=R?.completionPaymentMethodId??ma(s),Ot=s.originalPaymentMethodId?{...s,originalPaymentMethodId:void 0}:s,kn=Bd(s),ft=R?.presentationMode?ni(hr(Ne),{...he,presentationMode:R.presentationMode}):void 0,_t=()=>{Tt?.({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:"process_payment",provider:kn}),ft?.error({errorCode:"PAYMENT_PROCESSING_FAILED",stage:"processing",...Tn,requestCategory:"process_payment"})};try{let xt=new Mn.PaymentAPI(Mt),$t=await xt.processPayment(oe.userId??"",{sessionId:ue,nonce:Ue,paymentMethodCategory:R?.paymentMethodCategory??Od(s),tokenizedData:Ot,accountData:{...R?.accountPatch,userId:oe.userId??"",email:oe.email??"",firstName:oe.firstName||void 0,lastName:oe.lastName||void 0,...(0,u.buildProcessPaymentAvsAccount)({avsConfig:Ae,country:Tr.current,zip:zt.current,city:Sr.current,state:Vt.current,addressLine1:mr.current,addressLine2:jt.current})},...(0,u.buildCheckoutProcessMetadata)({chv:x,avsCheck:lt,checkoutType:Ye,checkoutLayout:dt,avsConfig:Ae,country:Tr.current})}),fo=async fr=>{let go=(0,u.isAuthorizationOnlySession)(N)||fr?.status==="authorized";(0,_n.markSessionRecentlyCompleted)(ue),ft?.terminal({outcome:"payment_succeeded",...Tn}),J("success"),He(null),await new Promise(da=>setTimeout(da,600));let Un;typeof fr?.paymentId=="string"?Un=fr.paymentId:N?.paymentId&&(Un=N.paymentId);let ho;typeof fr?.authorizationExpiresAt=="string"?ho=fr.authorizationExpiresAt:N?.authorizationExpiresAt&&(ho=N.authorizationExpiresAt),l?.(go?{status:"authorized",...Un===void 0?{}:{paymentId:Un},sessionId:typeof fr?.sessionId=="string"?fr.sessionId:ue,...ho===void 0?{}:{authorizationExpiresAt:ho},paymentIntentId:s.threeDSecureActionResultTokenId,paymentMethodId:Ie,checkoutMethod:s.isPaypal?"paypal":"card"}:{status:"succeeded",paymentIntentId:s.threeDSecureActionResultTokenId,paymentMethodId:Ie,checkoutMethod:s.isPaypal?"paypal":"card"})};if($t.ok){await fo($t.status===204?null:await $t.json().catch(()=>null));return}let Zr=await $t.json().catch(()=>null);if(Zr?.type==="paypal_redirect_required"){let fr=Zr.threeDSecureToken,go=Zr.paymentMethodId||s.id||"";if(!Ne||!fr){J("error"),Le("PayPal authorization required but no token provided.");return}try{let Un=Rt?.getRawProvider();if(!Un){Le("PayPal is not available.");return}let ho={return_url:window.location.href};go&&(ho.payment_method=go);let{error:da}=await Un.confirmPayment({clientSecret:fr,confirmParams:ho,redirect:"if_required"});if(da){J("error");let il=da.message??"PayPal payment failed.";Le(il),Ln("paypal",il,{code:da.code})}}catch(Un){J("error"),Le(Un instanceof Error?Un.message:"PayPal authorization failed.")}return}if(Zr?.type==="paypal_direct_required"){let fr=Zr.orderId;if(!fr){J("error"),Le("PayPal retry required but no order id provided.");return}let go=Xt.current?.attempts??0;if(go>=2){J("error"),Le("PayPal payment could not be completed after multiple attempts."),Ln("paypal","paypal_direct_required retry limit exceeded");return}Fi(!1),Bi("loading"),He({orderId:fr,attempts:go+1}),J(null);return}if($t.headers.get(Cd)===Sd){let fr=await wd(xt,ue,Ue);if(fr!==void 0){await fo(fr);return}}(0,u.classifyPaymentRejection)($t.status,Zr)?ft?.terminal({outcome:"payment_declined",...Tn,terminalReason:"provider_declined"}):_t(),J("error");let al=Zr?.message??"Payment failed. Please try again.";Le(al),Ln(s.isPaypal?"paypal":"card",al,{code:Zr?.code??Zr?.gatewayErrorCode,declineCode:Zr?.declineCode??Zr?.gatewayDeclineReason}),await new Promise(fr=>setTimeout(fr,400))}catch(xt){Kl(xt)||_t(),J("error"),Le(xt instanceof Error?xt.message:"An unexpected error occurred"),await new Promise($t=>setTimeout($t,400))}finally{Fr(!1),J(null),Z.current=!1}},[Mt,e,t,Pt,Ae,lt,Ye,dt,x,Ne,Rt,N,l,Le,Ln,Tt,he]),Ur=(0,a.useCallback)((s,R)=>{b?b(s):Gs(s,R)},[b,Gs]),aa=`${Wl}:${e}`;(0,a.useEffect)(()=>{if(typeof window>"u")return;let s=localStorage.getItem(aa);if(!s)return;let R;try{R=JSON.parse(s)}catch{tr(aa);return}if(!R||typeof R.createdAt!="number"||Date.now()-R.createdAt<0||Date.now()-R.createdAt>Hl||typeof R.paymentMethodId!="string"||typeof R.providerIntentId!="string"||typeof R.paymentMethodType!="string"||R.sessionId!==e||!t||R.nonce!==t||!To.includes(R.paymentMethodType)){tr(aa);return}tr(aa),Ur({id:R.paymentMethodId,type:"card",threeDSecureActionResultTokenId:R.providerIntentId,gateway:"stripe",paymentMethodType:R.paymentMethodType},{...R.accountPatch?{accountPatch:R.accountPatch}:{},paymentMethodCategory:"wallet",sessionId:e,nonce:t})},[Ur,t,e,aa,To]);let Ys=(0,a.useRef)(!1);(0,a.useEffect)(()=>{if(typeof window>"u"||Ys.current)return;let[s,R,ue]=(0,u.readStripeRedirectParams)();if(!s||!R||Ba.current||!Ne)return;let Ue=Ne.getRawProvider();if(!Ue)return;let oe=_t=>{let xt=localStorage.getItem(_t);if(!xt)return null;try{return JSON.parse(xt)}catch{return tr(_t),null}},Ie=oe(Vn)??oe(Bl),Ot;if(Ie?.clientSecret){if(Ie.clientSecret!==R)return;Ot={...Ie.accountPatch?{accountPatch:Ie.accountPatch}:{},...Ie.sessionId?{sessionId:Ie.sessionId}:{},...Ie.nonce?{nonce:Ie.nonce}:{}}}else if(Ie?.sessionId&&Ie.sessionId!==e)return;Ys.current=!0,tr(Vn),tr(Bl),window.history.replaceState({},"",(0,u.stripeRedirectReturnUrl)());let kn=Ie?.paymentMethodType??Ie?.tokenType??"card",ft="card";(async()=>{if(ue==="failed"){let Gn="Payment was declined. Please try again.";Le(Gn),Ln(ft,Gn);return}let{paymentIntent:_t,error:xt}=await Ue.retrievePaymentIntent(R);if(xt){let Gn=xt.message??"Failed to retrieve payment status.";Le(Gn),Ln(ft,Gn,{code:xt.code});return}let $t=_t?.status,fo=pa($t);if(!_t||!fo){let Gn=$t==="canceled"?"Payment was canceled.":"Payment was not completed. Please try again.";Le(Gn),Ln(ft,Gn,{code:$t??"missing_payment_intent"});return}let Zr=typeof _t.payment_method=="string"?_t.payment_method:_t.payment_method?.id;Ur({id:Zr??Ie?.paymentMethodId??Ie?.tokenId??_t.id,type:"card",threeDSecureActionResultTokenId:_t.id,gateway:Ie?.gateway??"stripe",paymentMethodType:kn},Ot)})()},[e,Ur,Ne,Le,Ln]);let Oi=(0,a.useCallback)(s=>{s.preventDefault()},[]);if(!(f||Ne!==null))return(0,c.jsx)("div",{"data-testid":"flopay-loading","aria-busy":"true",children:"Loading payment form..."});let ia=se==="buttons",zr=le?.variables,_c=new Set(["#FFFFFF","#ffffff","#fff","#FFF","white"]),Li=zr?.colorBackground,Tc=Li&&!_c.has(Li)?Li:void 0,sa=D.cardInputBorder??(ia?"#e5e7eb":"#A4A4FF"),Xs=zr?.colorDanger??"#dc2626",Jt=s=>hn[s]&&(Dn[s]||Gt),za=ko&&(Bn||Gt),nn=s=>s?Xs:sa,qa=(Gr.malformed||Gr.empty)&&(Fn||Gt),Mc=nn(qa),Ni=D.cardFormContainer?.backgroundColor??Tc??(ia?"white":"#EDEDFF"),xo=D.cardInputBackground??zr?.colorBackground??"white",Ui=Bo(Re),Js=Bo(_e),Ao=D.nameInput,Zs=D.cardInputFontSize??zd(Ao?.fontSize)??zr?.fontSizeBase??"16px",Qs=typeof Ao?.fontFamily=="string"?Ao.fontFamily:zr?.fontFamily??"Poppins, sans-serif",el=(0,Ir.toCssWeight)(Ao?.fontWeight)??400,xc=D.cardInputColor??(typeof Ao?.color=="string"?Ao.color:void 0)??zr?.colorText??"#262833",Ac=D.cardInputPlaceholderColor??"#9ca3af",Qt=zr?.borderRadius??"8px",mo=zr?.borderRadius??D.cardButton?.borderRadius??Qt,yo=zr?.colorPrimary??"#4A49FF",Fc=zr?.colorPrimaryHover??(0,Ir.darkenHex)(yo,.12),zi=zr?.colorText??"#262833",qi={fontSize:Zs,fontFamily:Qs,fontWeight:el,color:xc,WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"},la={marginTop:"0.375rem",...qi,fontSize:"0.75rem",lineHeight:1.4,color:Xs},Bc={"--flopay-input-placeholder-color":Ac,"--flopay-input-font-size":Zs,"--flopay-input-font-family":Qs,"--flopay-input-font-weight":String(el)},ca=D.cardFormContainer??{},ji=ca.padding??(ia?"0":"1rem"),Vi=ca.borderRadius??Qt,Dc=Dt&&bn?(0,c.jsx)(co,{capture:Dt,html:bn.html,messageToken:bn.messageToken,expectedOrigin:bn.expectedOrigin,verificationRequired:bn.verificationRequired,theme:yt,submitLabel:M,onReady:()=>{if(!io&&!Ae||typeof document>"u")return;let s=()=>{let ue=(document.querySelector('[data-testid="flopay-vault-identity-fields"]')??document.querySelector('[data-testid="flopay-avs-fields"]'))?.querySelector("input:not([disabled]), select:not([disabled])");if(ue){Yr.current=!0;try{ue.focus()}finally{Yr.current=!1}}};vn.current||s()},onError:s=>{s&&bn.verificationRequired&&y.current==="idle"&&(ao.current=!0),Le(s)},onValidation:s=>{let R=y.current;(R==="idle"||R==="validation-window")&&(Le(s),s&&y.current==="validation-window"&&($.current&&(clearTimeout($.current),$.current=null),y.current="idle",J(null)))}},pr):(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"}),tl=(0,c.jsxs)("div",{onFocusCapture:s=>{["INPUT","SELECT","TEXTAREA","IFRAME"].includes(s.target.tagName)&&Kn()},style:{backgroundColor:Ni,borderRadius:Vi,...ca,padding:ji,...Bc,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 @@ ${gt.join(`
35
35
  font-family: var(--flopay-input-font-family);
36
36
  font-weight: var(--flopay-input-font-weight);
37
37
  }
38
- `}),ya&&mo&&(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:v?-2:0},children:[(0,d.jsxs)("button",{type:"button",onClick:Me,style:{display:"inline-flex",alignItems:"center",gap:is?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:E.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...E.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...E.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Uo,{content:Te})]}),Il?(0,d.jsx)("div",{style:{flex:1}}):(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:E.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...E.title},children:(0,d.jsx)(Pa,{content:Fe})})]}),!ya&&!Il&&(0,d.jsx)("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:ss,order:v?-3:0,...E.title},children:(0,d.jsx)(Pa,{content:Fe})}),v&&Q&&(0,d.jsx)("div",{style:{order:-2,width:"100%"},children:Q}),v&&Qr&&(0,d.jsxs)("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[(0,d.jsx)("div",{style:{backgroundColor:Bo,border:`1px solid ${or(Xa)}`,borderRadius:Zt,padding:"10px"},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-buyer-email",name:"email",type:"email",autoComplete:"email","aria-label":"Email address",placeholder:"Email address",value:nn,onChange:l=>{Ot("email"),un.current=l.target.value,ur(l.target.value)},onPointerDown:()=>Ot("email"),onKeyDown:()=>Ot("email"),onBlur:()=>{In("email")&&_r(!0),Eo||Xi()},disabled:ae,required:!0,"aria-invalid":Xa||void 0,"aria-describedby":Xa?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...ls}})}),Xa&&(0,d.jsx)("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:ga,children:Hi.empty?"Email address is required":"Enter a valid email address"})]}),ue&&(0,d.jsx)("div",{style:{order:v?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let l=$t,T=(ie=!1)=>({backgroundColor:Bo,border:`1px solid ${or(ie)}`,borderRadius:Zt,marginTop:"0.5rem",padding:"10px"}),ne=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...ls}),ze=(0,f.getStateOptions)(l);return(0,d.jsxs)(d.Fragment,{children:[(0,f.isAVSFieldVisible)(ue.address_line_1,l)&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{style:T(Ht("line1")),children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line1",name:"billing-address-line1",placeholder:"Street Address (e.g. 123 Main St)",autoComplete:"billing address-line1",value:Dt,onChange:ie=>{Ot("line1"),Ut.current.addressLine1=!0,cn.current=ie.target.value,dt(ie.target.value)},onPointerDown:()=>Ot("line1"),onKeyDown:()=>Ot("line1"),onBlur:()=>rr("line1"),disabled:ae,required:!0,"aria-invalid":Ht("line1")||void 0,"aria-describedby":Ht("line1")?"flopay-billing-address-line1-error":void 0,"data-testid":"flopay-address-line1",style:ne()})}),Ht("line1")&&(0,d.jsx)("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:ga,children:"Street address is required"})]}),(0,f.isAVSFieldVisible)(ue.address_line_2,l)&&(0,d.jsx)("div",{style:T(),children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-address-line2",name:"billing-address-line2",placeholder:"Apt, Suite, Unit (optional)",autoComplete:"billing address-line2",value:rt,onChange:ie=>{Ut.current.addressLine2=!0,Nt.current=ie.target.value,Fn(ie.target.value)},disabled:ae,"data-testid":"flopay-address-line2",style:ne()})}),((0,f.isAVSFieldVisible)(ue.city,l)||(0,f.isAVSFieldVisible)(ue.state,l))&&(0,d.jsxs)("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[(0,f.isAVSFieldVisible)(ue.city,l)&&(0,d.jsx)("div",{style:{flex:1,backgroundColor:Bo,borderTop:`1px solid ${or(Ht("city"))}`,borderRight:`1px solid ${or(Ht("city"))}`,borderBottom:`1px solid ${or(Ht("city"))}`,borderLeft:`1px solid ${or(Ht("city"))}`,padding:"10px",borderTopLeftRadius:Zt,borderBottomLeftRadius:Zt,...(0,f.isAVSFieldVisible)(ue.state,l)?{borderRight:"none",borderTopRightRadius:0,borderBottomRightRadius:0}:{borderRadius:Zt}},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-city",name:"billing-city",placeholder:"City",autoComplete:"billing address-level2",value:Tt,onChange:ie=>{Ot("city"),Ut.current.city=!0,dn.current=ie.target.value,Kn(ie.target.value)},onPointerDown:()=>Ot("city"),onKeyDown:()=>Ot("city"),onBlur:()=>rr("city"),disabled:ae,required:!0,"aria-invalid":Ht("city")||void 0,"aria-describedby":Ht("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:ne()})}),(0,f.isAVSFieldVisible)(ue.state,l)&&(0,d.jsx)("div",{style:{flex:1,backgroundColor:Bo,borderTop:`1px solid ${or(Ht("state"))}`,borderRight:`1px solid ${or(Ht("state"))}`,borderBottom:`1px solid ${or(Ht("state"))}`,borderLeft:`1px solid ${or(Ht("state"))}`,padding:"10px",borderTopRightRadius:Zt,borderBottomRightRadius:Zt,...(0,f.isAVSFieldVisible)(ue.city,l)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${or(Ht("state")||Ht("city"))}`}:{borderRadius:Zt}},children:ze?(0,d.jsxs)("select",{id:"flopay-billing-state",name:"billing-state",value:Pn,onChange:ie=>{Ot("state"),Ut.current.state=!0,zt.current=ie.target.value,Wt(ie.target.value)},onPointerDown:()=>Ot("state"),onKeyDown:()=>Ot("state"),onBlur:()=>rr("state"),disabled:ae,autoComplete:"billing address-level1",required:!0,"aria-invalid":Ht("state")||void 0,"aria-describedby":Ht("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:{...ne(),cursor:"pointer"},children:[(0,d.jsx)("option",{value:"",children:(0,f.getStateLabel)(l)}),ze.map(ie=>(0,d.jsx)("option",{value:ie.code,children:ie.name},ie.code))]}):(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:(0,f.getStateLabel)(l),autoComplete:"billing address-level1",value:Pn,onChange:ie=>{Ot("state"),Ut.current.state=!0,zt.current=ie.target.value,Wt(ie.target.value)},onPointerDown:()=>Ot("state"),onKeyDown:()=>Ot("state"),onBlur:()=>rr("state"),disabled:ae,required:!0,"aria-invalid":Ht("state")||void 0,"aria-describedby":Ht("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:ne()})})]}),Ht("city")&&(0,d.jsx)("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:ga,children:"City is required"}),Ht("state")&&(0,d.jsxs)("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:ga,children:[(0,f.getStateLabel)(l)," is required"]}),((0,f.isAVSFieldVisible)(ue.country,l)||(0,f.isAVSFieldVisible)(ue.postal_code,l))&&(0,d.jsxs)("div",{style:{display:"flex",flexDirection:Pe==="column"?"column":"row",gap:Pe==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[(0,f.isAVSFieldVisible)(ue.country,l)&&(0,d.jsx)("div",{style:{flex:Pe==="row"?1:void 0,backgroundColor:Bo,borderTop:`1px solid ${fa}`,borderRight:`1px solid ${fa}`,borderBottom:`1px solid ${fa}`,borderLeft:`1px solid ${fa}`,padding:"10px",...Pe==="row"&&(0,f.isAVSFieldVisible)(ue.postal_code,l)?{borderRadius:"0",borderTopLeftRadius:Zt,borderBottomLeftRadius:Zt,borderRight:"none"}:{borderRadius:Zt}},children:(0,d.jsxs)("select",{id:"flopay-billing-country",name:"billing-country",value:$t,onChange:ie=>{Ut.current.country=!0,on.current=ie.target.value,Wn(ie.target.value),He?.(ie.target.value),zt.current="",Wt("")},disabled:ae,autoComplete:"billing country","data-testid":"flopay-country",style:{...ne(),cursor:"pointer"},children:[$t===""?(0,d.jsx)("option",{value:"",children:"Select country"}):null,f.COUNTRY_OPTIONS.map(ie=>(0,d.jsxs)("option",{value:ie.code,children:[ie.flag," ",ie.name]},ie.code))]})}),(0,f.isAVSFieldVisible)(ue.postal_code,l)&&(0,d.jsx)("div",{style:{flex:Pe==="row"?1:void 0,backgroundColor:Bo,border:`1px solid ${Eu}`,padding:"10px",...Pe==="row"&&(0,f.isAVSFieldVisible)(ue.country,l)?{borderRadius:"0",borderTopRightRadius:Zt,borderBottomRightRadius:Zt}:{borderRadius:Zt}},children:(0,d.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-postal-code",name:"billing-postal-code",placeholder:(0,f.getPostalCodeLabel)($t),autoComplete:"billing postal-code",value:Hn,onChange:ie=>{Ot("zip"),Ut.current.zip=!0,At.current=ie.target.value,wn(ie.target.value),Ve?.(ie.target.value)},onPointerDown:()=>Ot("zip"),onKeyDown:()=>Ot("zip"),onBlur:()=>{In("zip")&&Ur(!0)},disabled:ae,required:On.required,"aria-invalid":Ja||void 0,"aria-describedby":Ja?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:ne()})})]}),Ja&&(0,d.jsx)("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:ga,children:On.empty?`${(0,f.getPostalCodeLabel)(l)} is required`:lp(l)})]})})()}),v&&xu,pe&&(0,d.jsx)(Ho,{margin:"0.75rem 0",styleOverride:E.errorBanner,children:pe})]}),Za={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"},Fl=l=>X?!C||!Mr?(0,d.jsx)("pre",{"data-testid":l,style:Za,children:"FloPay/DirectPayPal-debug - not enabled"}):(0,d.jsx)("pre",{"data-testid":l,style:Za,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${C}`,` directPaypalConfigured=${Mr}`,` inAppBrowserDetected=${String(Ka)}`,` shouldRenderDirectPayPal=${ca}`,` shouldRenderStripePayPal=${da}`,` hasPaypalStripeInstance=${!!el}`].join(`
39
- `)}):null,Bl=l=>X?!G||!Xn?(0,d.jsx)("pre",{"data-testid":l,style:Za,children:"FloPay/Stripe-debug - not enabled"}):(0,d.jsx)("pre",{"data-testid":l,style:Za,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${G}`,` currency=${St}`,` amountInCents=${ia}`,` enabledPaymentMethods: ${JSON.stringify(ye??[])}`,` enabledPaymentMethodsProvided=${sa}`,` hasEnabledMethods=${ja}`,` expressMethods: ${JSON.stringify(Wa)}`,` walletExpressMethods: ${JSON.stringify(xo)}`,` paymentElementMethods: ${JSON.stringify(la)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(Ha)}`,` hasStripeInstance=${!!Xn}`,` shouldRenderWallets=${Fo}`,` shouldRenderPaymentElement=${pa}`].join(`
40
- `)}):null,Dl=lt==="apm-expanding"||lt==="apm-form"||lt==="apm-collapsing",Oo;lt==="apm-expanding"?Oo=Rc:lt==="apm-collapsing"&&(Oo=_c);let Qa=mn?Uc(Qi,mn,B):null;if(te==="buttons"){let l=lt==="buttons"||lt==="expanding"||lt==="apm-expanding",T=lt==="expanding"||lt==="card"||lt==="collapsing",ne=We===void 0?{boxSizing:"border-box",height:Qo,padding:"0 1rem"}:{padding:"0.9rem 1rem"},ze;lt==="expanding"||lt==="apm-expanding"?ze=rp:(lt==="collapsing"||lt==="apm-collapsing")&&(ze=np);let ie;return lt==="expanding"?ie=Rc:lt==="collapsing"&&(ie=_c),(0,d.jsxs)("form",{onSubmit:rs,className:_,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(ea,{}),ke&&(0,d.jsx)(Vn,{status:ke,errorMessage:pe,authorized:pr}),(0,d.jsxs)("div",{style:{display:"grid"},children:[(0,d.jsxs)("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!l&&!ze?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!l&&!ze?ap:{},...ze?{animation:ze,pointerEvents:"none"}:{}},children:[Fl("flopay-direct-paypal-gate-debug"),Bl("flopay-stripe-gate-debug"),ca&&Pt&&(0,d.jsxs)(d.Fragment,{children:[ge&&(0,d.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,d.jsx)(wa.Provider,{value:g,children:(0,d.jsx)(Ra,{sessionId:e,nonce:t,billingApiUrl:yt,email:ot.email,billingName:_o||void 0,onBuyerIdentityReady:ct,clientId:Pt.clientId,environment:Pt.environment,currency:St.toUpperCase(),isSubscription:Et,providerObjectType:oe,approvalPresentation:Ga==="popup"?void 0:Ga,onTokenizedBody:Un,onComplete:i,onErrorChange:Le,onDecline:p,onTechnicalFailure:Ao,onButtonClick:re,runBeforeButtonClick:Pr,isProcessing:ae,onLoadStateChange:es,onInitializationStateChange:ts,session:F,existingOrderId:ge?.orderId,debug:X},ge?.orderId??"fresh")})]}),da&&(0,d.jsx)(Qt.Elements,{stripe:ua,options:rl,children:(0,d.jsx)(Tc,{sessionId:e,nonce:t,email:ot.email,billingName:_o||void 0,onBuyerIdentityReady:ct,billingApiUrl:yt,onTokenizedBody:Un,onErrorChange:Le,isProcessing:ae,onButtonClick:re,onDecline:p,onTechnicalFailure:Ao,runBeforeButtonClick:Pr,onLoadStateChange:dl,placeholderBorderRadius:yo,popupCapabilityOwner:g,externalTelemetryContext:vl,presentationMode:Mo})}),Fo?(0,d.jsx)(Qt.Elements,{stripe:Xn,options:nl,children:(0,d.jsx)(Mc,{sessionId:e,nonce:t,email:ot.email,billingName:_o||void 0,onBuyerIdentityReady:ct,billingApiUrl:yt,intentKind:je>0?"payment":"setup",expressMethods:xo,onTokenizedBody:Un,onErrorChange:Le,onButtonClick:re,onDecline:p,onTechnicalFailure:Ao,runBeforeButtonClick:Pr,onLoadStateChange:ml,placeholderBorderRadius:yo,popupCapabilityOwner:g,externalTelemetryContext:Se})}):null,!Fo&&bl?(0,d.jsx)("div",{style:{height:Qo,borderRadius:yo,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,pa&&(0,d.jsx)(xc,{sessionId:e,nonce:t,email:ot.email,billingName:[ot.firstName,ot.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:ct,billingApiUrl:yt,paymentElementMethods:Ha,stripeInstance:Xn,paymentElementBaseOptions:Qi,futureUseSession:B,onTokenizedBody:Un,onErrorChange:Le,onButtonClick:re,onDecline:p,runBeforeButtonClick:Pr,onLoadStateChange:fl,isProcessing:ae,submitButtonColor:fo,submitButtonBorderRadius:Zt,submitButtonStyle:E.submitButton,onExpandApm:Ct,expandedApmMethod:mn,themeId:Ne,buttonAppearance:{backgroundColor:E.cardButton?.backgroundColor,borderColor:E.cardInputBorder,textColor:E.cardButton?.color,borderRadius:yo}}),v&&(0,d.jsx)("button",{type:"button",onClick:async()=>{ae||!(await Pr("card")).proceed||(re?.("card"),ce())},disabled:ae,style:{width:"100%",...ne,...E.cardButton,...js({themeBundle:he,resolvedPrimaryColor:fo,resolvedBorderRadius:Zt,submitButtonStyle:E.submitButton,explicitPrimaryColor:zn?.colorPrimary}),fontSize:E.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:xe=>{!ae&&(he||zn?.colorPrimary)&&(xe.currentTarget.style.backgroundColor=Au)},onMouseLeave:xe=>{(he||zn?.colorPrimary)&&(xe.currentTarget.style.backgroundColor=fo)},onMouseDown:xe=>{xe.currentTarget.style.transform="scale(0.985)"},onMouseUp:xe=>{xe.currentTarget.style.transform="scale(1)"},children:(0,d.jsx)(No,{content:We})}),pe&&lt==="buttons"&&(0,d.jsx)(Ho,{margin:"0.25rem 0",styleOverride:E.errorBanner,children:pe})]}),v&&T&&(0,d.jsx)("div",{style:{gridArea:"1 / 1",...ie?{animation:ie}:{},...lt==="collapsing"?{pointerEvents:"none"}:{}},children:xl}),G&&Dl&&mn&&Qa&&Xn&&(0,d.jsx)("div",{style:{gridArea:"1 / 1",...Oo?{animation:Oo}:{},...lt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,d.jsxs)("div",{style:{backgroundColor:as,borderRadius:us,...ha,padding:cs},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,d.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button",onClick:Jt,style:{display:"inline-flex",alignItems:"center",gap:is?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:E.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...E.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...E.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Uo,{content:Te})]}),(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:E.titleFontSize??"1.05rem",color:ss,paddingRight:80,...E.title},children:`Pay with ${(0,f.getStripeMethodDisplayName)(mn)}`})]}),(0,d.jsx)(Qt.Elements,{stripe:Xn,options:Qa,children:(0,d.jsx)(Ns,{method:mn,sessionId:e,nonce:t,email:ot.email,billingName:[ot.firstName,ot.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:ct,billingApiUrl:yt,onTokenizedBody:Un,onErrorChange:Le,onDecline:p,onCancel:Jt,runBeforeButtonClick:Pr,onButtonClick:re,isProcessing:ae,submitButtonColor:fo,submitButtonBorderRadius:Zt,submitButtonStyle:E.submitButton,errorText:pe})},mn)]})})]})]})}return Dl&&mn&&Qa&&Xn&&G?(0,d.jsxs)("form",{onSubmit:rs,className:_,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(ea,{}),ke&&(0,d.jsx)(Vn,{status:ke,errorMessage:pe,authorized:pr}),(0,d.jsx)("div",{style:{...Oo?{animation:Oo}:{},...lt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,d.jsxs)("div",{style:{backgroundColor:as,borderRadius:us,...ha,padding:cs},children:[(0,d.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,d.jsxs)("button",{type:"button","data-testid":"flopay-apm-back-button-default",onClick:Jt,style:{display:"inline-flex",alignItems:"center",gap:is?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:E.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...E.backButton},"aria-label":"Back to payment methods",children:[(0,d.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",transition:"background-color 0.15s",...E.backButtonIcon},children:(0,d.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,d.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,d.jsx)(Uo,{content:Te})]}),(0,d.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:E.titleFontSize??"1.05rem",color:ss,paddingRight:80,...E.title},children:`Pay with ${(0,f.getStripeMethodDisplayName)(mn)}`})]}),(0,d.jsx)(Qt.Elements,{stripe:Xn,options:Qa,children:(0,d.jsx)(Ns,{method:mn,sessionId:e,nonce:t,email:ot.email,billingName:[ot.firstName,ot.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:ct,billingApiUrl:yt,onTokenizedBody:Un,onErrorChange:Le,onDecline:p,onCancel:Jt,runBeforeButtonClick:Pr,onButtonClick:re,isProcessing:ae,submitButtonColor:fo,submitButtonBorderRadius:Zt,submitButtonStyle:E.submitButton,errorText:pe})},mn)]})})]}):(0,d.jsxs)("form",{onSubmit:rs,className:_,noValidate:!0,style:{position:"relative"},children:[(0,d.jsx)(ea,{}),ke&&(0,d.jsx)(Vn,{status:ke,errorMessage:pe,authorized:pr}),(0,d.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[Fl("flopay-direct-paypal-gate-debug-default"),Bl("flopay-stripe-gate-debug-default"),ca&&Pt&&(0,d.jsxs)(d.Fragment,{children:[ge&&(0,d.jsx)("div",{"data-testid":"flopay-paypal-direct-retry-notice-default",style:{padding:"8px 10px",background:"#fef3c7",border:"1px solid #fcd34d",borderRadius:6,color:"#78350f",fontSize:13,lineHeight:1.4},children:"Please confirm your PayPal payment to complete checkout."}),(0,d.jsx)(wa.Provider,{value:g,children:(0,d.jsx)(Ra,{sessionId:e,nonce:t,billingApiUrl:yt,email:ot.email,billingName:_o||void 0,onBuyerIdentityReady:ct,clientId:Pt.clientId,environment:Pt.environment,currency:St.toUpperCase(),isSubscription:Et,providerObjectType:oe,approvalPresentation:Ga==="popup"?void 0:Ga,onTokenizedBody:Un,onComplete:i,onErrorChange:Le,onDecline:p,onTechnicalFailure:Ao,onButtonClick:re,runBeforeButtonClick:Pr,isProcessing:ae,onLoadStateChange:es,onInitializationStateChange:ts,session:F,existingOrderId:ge?.orderId,debug:X},ge?.orderId??"fresh")})]}),da&&(0,d.jsx)(Qt.Elements,{stripe:ua,options:rl,children:(0,d.jsx)(Tc,{sessionId:e,nonce:t,email:ot.email,billingName:_o||void 0,onBuyerIdentityReady:ct,billingApiUrl:yt,onTokenizedBody:Un,onErrorChange:Le,isProcessing:ae,onButtonClick:re,onDecline:p,onTechnicalFailure:Ao,runBeforeButtonClick:Pr,onLoadStateChange:dl,placeholderBorderRadius:yo,popupCapabilityOwner:g,externalTelemetryContext:vl,presentationMode:Mo})}),Fo&&(0,d.jsx)(Qt.Elements,{stripe:Xn,options:nl,children:(0,d.jsx)(Mc,{sessionId:e,nonce:t,email:ot.email,billingName:_o||void 0,onBuyerIdentityReady:ct,billingApiUrl:yt,intentKind:je>0?"payment":"setup",expressMethods:xo,onTokenizedBody:Un,onErrorChange:Le,onButtonClick:re,onDecline:p,onTechnicalFailure:Ao,runBeforeButtonClick:Pr,onLoadStateChange:ml,placeholderBorderRadius:yo,popupCapabilityOwner:g,externalTelemetryContext:Se})}),pa&&(0,d.jsx)(xc,{sessionId:e,nonce:t,email:ot.email,billingName:[ot.firstName,ot.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:yt,paymentElementMethods:Ha,stripeInstance:Xn,paymentElementBaseOptions:Qi,futureUseSession:B,onTokenizedBody:Un,onErrorChange:Le,onButtonClick:re,onDecline:p,runBeforeButtonClick:Pr,onLoadStateChange:fl,isProcessing:ae,submitButtonColor:fo,submitButtonBorderRadius:Zt,submitButtonStyle:E.submitButton,themeId:Ne,onExpandApm:Ct,expandedApmMethod:mn,buttonAppearance:{backgroundColor:E.cardButton?.backgroundColor,borderColor:E.cardInputBorder,textColor:E.cardButton?.color,borderRadius:yo}})]}),v&&(wu||Su||ku)&&(0,d.jsx)(Ei,{label:"or pay with card"}),v&&xl]})}var O=require("react/jsx-runtime"),ra=44,Ys="flopay_checkout_saved_payment_resume",Li=new Map,Di=new Map;function zc(e,t){t.settled&&t.consumers===0&&Li.get(e)===t&&Li.delete(e)}function mp(e,t,n){let r=Di.get(e);if(r&&(!r.sdkGeneratedIdempotencyKey||!t||r.sdkGeneratedIdempotencyKey===t))return r.attempt;let o=n(),a={attempt:o,sdkGeneratedIdempotencyKey:t};Di.set(e,a);let i=()=>{Di.get(e)===a&&Di.delete(e)};return o.then(i,i),o}function Ua(e){return new Promise(t=>setTimeout(t,e))}function Oi(e,t,n){let r=li({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:et.SDK_VERSION,enabled:t!==!1});return r.beginCheckout(n),r}function za(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function $s(e,t,n,r,o,a){let i=Oi(e,t,n);i.error({errorCode:r,stage:o,paymentMethodCategory:"unknown",...a,...o==="session_read"?{requestCategory:"session_read"}:{}}),za(i)}function qc(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 Vc(e,t,n,r,o){let a=(0,et.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 et.FloPayError&&t.code==="session_auto_completed"?!1:t instanceof et.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 Hc(e,t){let n=e?.data.paypal?.publishableKey;if(n)return{clientId:n,environment:e?.data.paypal?.environment,providerObjectType:e?.data.paypal?.providerObjectType,approvalPresentation:e?.data.paypal?.approvalPresentation,...t?{existingOrderId:t}:{}}}function Ws(e){return!e||e.data.stripe?.publishableKey?!1:!!Hc(e)?.clientId}var yp={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function fp(e){return new Xr.FloPay(yp,{publishableKey:"provider_unavailable",...e})}async function Hs(e,t){let{publishableKey:n,paypalPublishableKey:r}=Ts(e);return{...await As({publishableKey:n,paypalPublishableKey:r,...t}),publishableKey:n,paypalPublishableKey:r}}function Xs(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function gp(){if(!Xs())return null;try{let e=window.sessionStorage.getItem(Ys);return e?JSON.parse(e):null}catch{return null}}function jc(e){if(Xs())try{window.sessionStorage.setItem(Ys,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function Ks(){if(Xs())try{window.sessionStorage.removeItem(Ys)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function hp(){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 $c(e){if(typeof window>"u")return;let t=new URL(window.location.href);t.searchParams.set("mode",e),window.history.replaceState(window.history.state,"",t.toString())}function Gs(e,t){return e?"custom_layout":t==="buttons"?"buttons_layout":"default_layout"}function bp(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function Wc(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Pp(e){return e?e.account&&Object.keys(e.account).length>0||e.couponCodes!==void 0||e.checkoutMetadata!==void 0||e.tagsData!==void 0||e.utmMetadata!==void 0:!1}function Ni({sessionId:e,nonce:t,createSession:n,billingApiUrl:r,telemetry:o,appearance:a,locale:i,loading:c,error:p,onComplete:u,onError:h,onInstrument:P,onDecline:M,onCountryChange:_,onZipChange:w,showPayPal:A=!0,showStripe:I=!0,walletPresentation:b="auto",enabledPaymentMethods:C,showApplePay:G=!0,showGooglePay:k=!0,debug:ye=!1,layout:N,theme:H,buttonsTheme:_e,buttonsStyles:te,cardButtonContent:Ne,cardBackButtonContent:Ye,cardTitleContent:be,showSecurityFooter:fe,onButtonClick:We,onBeforeButtonClick:Te,enableAVS:Fe,cardFieldOrder:Ae,cardPreFormSlot:re,avsLayout:se,submitLabel:Ce,className:Be,initialErrorMessage:Y=null,initialPayPalOrderId:Q,children:Pe,checkoutMode:z,confirmLabel:we,renderConfirmButton:J,onSessionCompleted:Ee}){let Z=(0,et.resolveBillingApiUrl)(r),it=(0,R.useMemo)(()=>(0,et.resolveTheme)(H),[H]),He=a??it?.appearance,Ve=n?"embedded_checkout":"standard_checkout",at=Gs(Pe,N),[Ke,st]=(0,R.useState)(null),[je,St]=(0,R.useState)(null),Lt=(0,R.useRef)(null),Pt=(0,R.useRef)(null),Et=(0,R.useRef)(0),[q,ve]=(0,R.useState)(null),Qe=(0,R.useRef)(null),[X,Ue]=(0,R.useState)(null),vt=(0,R.useMemo)(()=>n?Go(n):"",[n]),Xe=n?`create:${vt}`:`session:${e??""}`,kt=Wc(X),V=(0,R.useRef)(new Set),g=(0,R.useRef)(Xe),S=(0,R.useRef)(Xe);Co(()=>{S.current=Xe,g.current!==Xe&&(g.current=Xe,V.current.clear())},[Xe]);let K=(0,R.useCallback)(L=>{if(S.current===Xe){if(Ps.has(L.name)){if(V.current.has(L.name))return;V.current.add(L.name)}Je(()=>P?.(L))}},[Xe,P]),W=Wo(K,Xe),Se=(0,R.useRef)(!1),F=(0,R.useCallback)(L=>{if(Se.current)return;let $=L.gateway||!kt?L:{...L,gateway:kt};K($)},[K,kt]);(0,R.useEffect)(()=>{W({class:"lifecycle",name:"checkout.mount"})},[W]);let[B,oe]=(0,R.useState)(e??""),j=e??B,Ie=n?"":j,[tt,gt]=(0,R.useState)(!0),[yt,De]=(0,R.useState)(null),[xn,$n]=(0,R.useState)(0),[bn,$t]=(0,R.useState)("full"),[Wn,Hn]=(0,R.useState)(!1),[wn,Dt]=(0,R.useState)(Y),[dt,rt]=(0,R.useState)(null),[Fn,Tt]=(0,R.useState)(null),[Kn,Pn]=(0,R.useState)(!1),[Wt,nn]=(0,R.useState)(void 0),[ur,er]=(0,R.useState)(""),[rn,At]=(0,R.useState)(!1),[on,cn]=(0,R.useState)(!1),[Nt,dn]=(0,R.useState)(!1),zt=(0,R.useRef)(null),un=(0,R.useRef)(0),Ut=(0,R.useRef)(void 0),[ue,dr]=(0,R.useState)("loading"),[pr,mr]=(0,R.useState)(0),an=(0,R.useRef)(!1),Bn=(0,R.useRef)(!1),En=(0,R.useRef)(!1),Oe=(0,R.useRef)(null),ft=(0,R.useRef)(null),v=(0,R.useMemo)(()=>({checkoutMode:z??bn,layout:bp(Pe,N)}),[z,Pe,bn,N]),nt=(0,R.useRef)(u);nt.current=u;let le=(0,R.useRef)(h);le.current=h;let kn=(0,R.useRef)(M);kn.current=M;let Gn=(0,R.useCallback)(L=>hi(Oe,async $=>{try{return await L($)}catch(ce){throw $.aborted?lo(ce):ce}}),[]);(0,R.useEffect)(()=>()=>{Oe.current?.abort(),Oe.current=null},[]);let Yt=(0,R.useCallback)((L,$)=>{Lt.current=L,St(L),Qe.current=$,ve($)},[]),Dn=(0,R.useCallback)(()=>{let L=Pt.current;L&&(Pt.current=null,L.destroy())},[]);(0,R.useEffect)(()=>{gn(je)?.setCheckoutContext(v),q&&q!==je&&gn(q)?.setCheckoutContext(v)},[je,q,v]);let ht=(0,R.useRef)(Ee);ht.current=Ee;let yr=(0,R.useCallback)(L=>{dr(L),!(L!=="exhausted"||En.current)&&(En.current=!0,le.current?.(new et.FloPayError("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),po=(0,R.useCallback)(()=>{dr("retrying"),mr(L=>L+1)},[]);(0,R.useEffect)(()=>{dr("loading"),mr(0),En.current=!1},[j]),(0,R.useEffect)(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:et.SDK_VERSION,checkout_type:Ve,checkout_layout:at,billing_api_url:Z})},[at,Ve,Z]);let Mt=(0,R.useMemo)(()=>n?Go(n,!0):"",[n]),On=(0,R.useMemo)(()=>ur===Mt?Wt:void 0,[Wt,ur,Mt]),Rr=(0,R.useMemo)(()=>n?ys(n,On):void 0,[n,On]),tr=z??Rr?.checkoutMode??"full",Xt=(0,R.useMemo)(()=>Rr?{...Rr,checkoutMode:tr}:void 0,[Rr,tr]);(0,R.useEffect)(()=>{nn(void 0),er(Mt),Ut.current=void 0,zt.current=null,dn(!1)},[Mt]),(0,R.useEffect)(()=>{Dt(Y)},[Y]);let fr=(0,R.useCallback)((L,$,ce)=>{Je(()=>{kn.current?.(fn(L,$,ce))})},[]),Ln=(0,R.useCallback)(async(L,$)=>{Dt(null),Tt(null),Pn(!1),rt("processing");let ce=$?.sessionId??L.id,Me=L.clientSecret||t,Ct=Wc(L),Jt=Lt.current??Qe.current,ke=gn(Jt),de=Jt?null:Oi(Z,o,v),ee={log:$e=>{ke?ke.log($e):de?.log($e)},error:$e=>{ke?ke.error($e):de?.error($e)},terminal:$e=>{ke?ke.terminal($e):de?.terminal($e)},performance:$e=>{ke?ke.performance($e):de?.performance($e)},now:()=>ke?.now()??de?.now()??0,elapsed:$e=>ke?.elapsed($e)??Math.max(0,(de?.now()??$e)-$e)},m=ee.now(),y=!!($?.initialAutoProcessingError||$?.initialAutoProcessingPending),D=!1,U,Re=()=>{D||(D=!0,y=!0,U=ee.now(),ee.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),ee.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},ge=!1,Rt=()=>{ge||(ge=!0,ee.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),ee.performance({stage:"processing",durationMs:ee.elapsed(m),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),U!==void 0&&ee.performance({stage:"recovery",durationMs:ee.elapsed(U),durationMode:"machine",paymentMethodCategory:"saved"}))};ee.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),Se.current=!0;try{ee.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{Se.current=!1}W({class:"lifecycle",name:"payment.processing.started",provider:Ct}),y&&Re();let qt;try{let $e=cc($?.initialAutoProcessingError),Ge=$?.initialAutoProcessingError?.type==="3ds_required"&&!$.initialAutoProcessingError.threeDSecureToken&&$.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:$.initialAutoProcessingError.nextActionRedirectUrl}:null,ct,pe=he=>(Re(),Gn(E=>Xo(he,{billingApiUrl:Z,sessionId:ce,nonce:Me,session:L,signal:E})));if(Ge)ct=await pe(Ge);else if($e)Re(),$e.type==="paypal_redirect_required"&&ft.current?.publishableKey&&jc({sessionId:ce,publishableKey:ft.current.publishableKey,paypalPublishableKey:ft.current.paypalPublishableKey}),ct=await Gn(he=>Pi($e,{flopay:Lt.current,paypalFlopay:Qe.current,attempt3DS:$?.attempt3DS,billingApiUrl:Z,sessionId:ce,session:L,telemetry:!1,signal:he})),$e.type==="paypal_redirect_required"&&Ks();else if($?.initialAutoProcessingPending){let he=$.initialAutoProcessingPending,E=new Xr.PaymentAPI(Z,{telemetry:!1}),me=await Gn(ae=>E.waitForCheckoutSessionCompletion(he.sessionId,{initialDelayMs:he.retryAfterMs,nonce:Me,statusUrl:he.statusUrl,signal:ae})),pt=ro(me,L),xt=me.autoProcessingError?.type==="3ds_required"&&me.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:me.autoProcessingError.nextActionRedirectUrl}:null;if(xt)ct=await pe(xt);else{if(!$r(pt))throw qo(pt);ct=jr(pt,ce)}}else{if($?.initialAutoProcessingError)throw Dr($.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:$.initialAutoProcessingError.checkoutMethod});if($?.fromCreateSession)return $?.fallbackToFull&&($t("full"),$c("full")),!1;{let he=await Jo({billingApiUrl:Z,sessionId:ce,session:L,nonce:Me,telemetry:!1});he.type==="success"?ct=he.result:he.type==="next_action_required"?ct=await pe(he):(Re(),he.type==="paypal_redirect_required"&&ft.current?.publishableKey&&jc({sessionId:ce,publishableKey:ft.current.publishableKey,paypalPublishableKey:ft.current.paypalPublishableKey}),ct=await Gn(E=>Pi(he,{flopay:Lt.current,paypalFlopay:Qe.current,attempt3DS:$?.attempt3DS,billingApiUrl:Z,sessionId:ce,session:L,telemetry:!1,signal:E})),he.type==="paypal_redirect_required"&&Ks())}}ce&&Yo(ce),Rt(),y&&(ee.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),ee.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),ee.terminal({outcome:ct.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),Pn(ct.status==="authorized"),rt("success"),await Ua(600),qt=()=>nt.current?.(ct)}catch($e){let Ge=to(Aa($e),ce);if(Ge.code==="three_ds_aborted")return!1;let ct=Ge.checkoutMethod??Ta;Dt(Ge.message),Tt(Ge.message),Pn(!1),$?.fallbackToFull&&(ee.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),$t("full"),$c("full")),Rt();let pe=Ge.statusCode===void 0?void 0:(0,et.telemetryStatusClass)(Ge.statusCode,"unknown"),he=pe==="4xx"?{requestCategory:"process_payment",statusClass:pe}:{},E=pe===void 0||pe==="4xx";if(E&&(Ge.telemetryOutcome==="payment_declined"||!!(Ge.declineCode||Ge.code?.toLowerCase().includes("declin"))))ee.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...he});else if(E&&(Ge.telemetryOutcome==="validation_rejected"||Ge.type==="validation_error"))ee.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...he});else{let xt=(0,et.classifyTelemetryFailure)($e,y?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),ae=Ge.telemetryRequestCategory??"process_payment";Se.current=!0;try{ee.error({...xt,...Ge.telemetryFailureCategory?{failureCategory:Ge.telemetryFailureCategory}:{},stage:y?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:ae})}finally{Se.current=!1}W({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:ae,provider:Ct})}return Je(()=>le.current?.(Ge)),fr(ct,Ge,{code:Ge.code,declineCode:Ge.declineCode}),rt("error"),await Promise.allSettled([Ua(400),$?.ensureProvidersReady?$.ensureProvidersReady():Promise.resolve()]),y&&(ee.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),ee.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{Rt(),de&&za(de),rt(null),Tt(null)}return Je(qt),!0},[fr,W,t,Z,Gn,o,v]);(0,R.useEffect)(()=>{if(typeof window>"u"||Bn.current)return;let L=new URLSearchParams(window.location.search),$=L.get("payment_intent_client_secret");if(!$)return;let ce=gp();ce&&(Bn.current=!0,(async()=>{let Me,Ct=0;Dt(null),Tt(null),rt("processing"),Hn(!0);try{if(L.get("redirect_status")==="failed")throw Object.assign(new et.FloPayError("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:Jt,paypalFlopay:ke}=await As({publishableKey:ce.publishableKey,paypalPublishableKey:ce.paypalPublishableKey,billingApiUrl:Z,locale:i,telemetry:o});Me=gn(ke??Jt),Me?.setCheckoutContext(v),Ct=Me?.now()??0,Me?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),Me?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let de=(ke??Jt)?.getRawProvider();if(!de)throw Object.assign(new et.FloPayError("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:ee,error:m}=await de.retrievePaymentIntent($);if(m)throw Object.assign(new et.FloPayError(m.message??"Failed to retrieve PayPal payment status.","api_error",{code:m.code}),{checkoutMethod:"paypal"});let y=$l(ee?.status);if(!ee||y==="failed")throw Object.assign(new et.FloPayError("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let D=typeof ee.payment_method=="string"?ee.payment_method:ee.payment_method?.id,U=y;if(ce.sessionId){let Rt=(await new Xr.PaymentAPI(Z,{telemetry:!1}).getUnifiedCheckoutSession(ce.sessionId)).data.session;if(Rt&&Rt.status!=="complete"){let qt=await Jo({billingApiUrl:Z,sessionId:ce.sessionId,session:Rt,telemetry:!1,tokenizedData:{id:D??ee.id,type:"card",threeDSecureActionResultTokenId:ee.id,isPaypal:!0}});if(qt.type!=="success")throw Object.assign(new et.FloPayError("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});U=qt.result.status}}ce.sessionId&&Yo(ce.sessionId),Me?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),Me?.performance({stage:"redirect_resume",durationMs:Me.elapsed(Ct),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),Me?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),rt("success"),await Ua(600),Je(()=>nt.current?.({status:U,paymentIntentId:ee.id,paymentMethodId:D,checkoutMethod:"paypal"}))}catch(Jt){let ke=to(Aa(Jt),ce.sessionId),de=ke.checkoutMethod??"paypal",ee=!!(ke.declineCode||ke.code?.toLowerCase().includes("declin"));if(Me)Me.performance({stage:"redirect_resume",durationMs:Me.elapsed(Ct),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),ee?Me.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):Me.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(ee){let m=Oi(Z,o,v);m.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),za(m)}else $s(Z,o,v,"REDIRECT_RESUME_FAILED","redirect_resume");Dt(ke.message),Tt(ke.message),Je(()=>le.current?.(ke)),fr(de,ke,{code:ke.code,declineCode:ke.declineCode}),rt("error"),await Ua(400)}finally{Ks(),hp(),rt(null),Tt(null),Hn(!1)}})())},[fr,i,Z,o,v]);let Ur=(0,R.useRef)(null),Nn=(0,R.useMemo)(()=>Xt?Go(Xt):"",[Xt]),_r=(0,R.useRef)(Xt);_r.current=Xt,(0,R.useEffect)(()=>{oe(e??"")},[e]),(0,R.useEffect)(()=>{an.current=!1,Dt(Y),Tt(null),Pn(!1),rt(null)},[Nn,Y,e]);async function Er(L,$,ce){let Me=Oi(Z,o,v),Ct=new Xr.PaymentAPI(Z,{telemetry:!1}),Jt=!1;try{let ke=L.idempotencyKey===void 0?void 0:(0,et.resolveIdempotencyKey)(L.idempotencyKey),de=Ss($,ce),ee=ws($,ce);de?.canonicalIdentity===ce&&ee&&ee.canonicalIdentity===void 0&&(fi($,ce,ee.idempotencyKey),ee={...ee,canonicalIdentity:ce});let m=ke??(ee?.canonicalIdentity===ce?ee.idempotencyKey:void 0),y,D=!1;Me.log({name:de?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let U=de?.sid??null,Re=null,ge,Rt,qt=!1;if(U)try{Re=await Ct.getUnifiedCheckoutSession(U,de?.nonce),de&&de.canonicalIdentity===void 0&&(ac(Re.data.session,L)?(yi($,ce,U,de.nonce??Re.data.session?.clientSecret),ee&&ee.canonicalIdentity===void 0&&(fi($,ce,ee.idempotencyKey),m??(m=ee.idempotencyKey))):(mi($,ce),ee=null,m=ke,U=null,Re=null));let Ge=Re?.data.session?.status,ct=Re?.data.session,pe=ct?.clientSecret||de?.nonce;if(U&&ct?.buyerIdentified===!1&&pe&&(Rt=zo(Ct,U,pe,L.account)),U&&Re&&Ge==="complete"){if(ks(U))return{sid:U,result:Re};mi($,ce),U=null,Re=null,D=!0}}catch{Me.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),de?.canonicalIdentity===void 0?(mi($,ce),m=ke):pi($,ce),U=null}if(!U){!ke&&(D||!m)&&(m=(0,et.resolveIdempotencyKey)(),y=m),m&&fi($,ce,m);let Ge=Me.now(),ct=0;Me.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let pe={...L,idempotencyKey:m,avsCheck:!!Fe,avsConfig:typeof Fe=="object"?Fe:void 0,checkoutType:"embedded_checkout",checkoutLayout:Gs(Pe,N)};Object.defineProperty(pe,Xr.SESSION_CREATE_TELEMETRY,{configurable:!1,enumerable:!1,value:{onAttempt:me=>{ct=Math.max(ct,me)}}});let he=()=>{qc(Me,"session_create",Ge,ct)},E=me=>{Vc(Me,me,"session_create",Ge,ct)&&W({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if((0,et.isDetachedSessionEligible)(pe)){let me=await Ct.createDetachedSession(pe);me.claimed.catch(()=>{}),Re=me.shell,U=me.sessionId,Rt=me.claim;let pt=Me.now();Me.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),ge=me.claimed.then(xt=>{let ae=xt.data.session?.id??me.sessionId;return ae&&yi($,ce,ae,xt.data.session?.clientSecret??me.nonce),qc(Me,"session_claim",pt),he(),xt},xt=>{throw pi($,ce),Vc(Me,xt,"session_claim",pt,0)&&W({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),xt}).finally(()=>za(Me)),ge.catch(()=>{}),Jt=!0,Me.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),Me.performance({stage:"session_shell",durationMs:Me.now()-Ge,durationMode:"machine",requestCategory:"session_create",attempt:ct,statusClass:"2xx",paymentMethodCategory:"card"})}else Re=await Ct.createAndFetchSession(pe),he()}catch(me){throw E(me),me}U=Re.data.session?.id??U??"",U&&!ge&&yi($,ce,U,Re.data.session?.clientSecret)}let $e=Re?.data.session;return!Rt&&U&&$e?.buyerIdentified===!1&&$e.clientSecret&&(Rt=zo(Ct,U,$e.clientSecret,L.account)),{sid:U??"",result:Re,sdkGeneratedIdempotencyKey:y,...ge?{claimed:ge}:{},...Rt?{claim:Rt}:{},...qt?{claimRequiresIdentity:!0}:{}}}finally{Jt||za(Me)}}let zr=(0,R.useRef)(Er);Co(()=>{zr.current=Er},[Er]);let Yn=(0,R.useCallback)(async(L,$)=>{let ce=_r.current;if(!ce)throw new et.FloPayError("createSession is required to bootstrap checkout.","validation_error");let Me=ys(ce,L),Ct=Go(Me),Jt=oc(Me),ke=Li.get(Ct);if(!ke){let m={canonicalIdentity:Ct,promise:zr.current(Me,Jt,Ct),consumers:0,settled:!1};ke=m,Li.set(Ct,m);let y=()=>{m.settled=!0,zc(Ct,m)};m.promise.then(y,y)}ke.consumers+=1;let de=!1,ee=()=>{de||(de=!0,ke.consumers-=1,zc(Ct,ke))};$?.(ee);try{let m=await ke.promise;Ur.current=Ct,L&&(er(Mt),nn($e=>ql($e,L)));let{sid:y,result:D,claimed:U,claim:Re,claimRequiresIdentity:ge}=m;if(Ut.current=Re,dn(ge===!0),st(D),D.data.session&&Ue(D.data.session),y&&oe(y),U){un.current+=1;let $e=un.current;zt.current=U,cn(!0),U.then(Ge=>{un.current===$e&&(zt.current===U&&(zt.current=null),st(Ge),Ge.data.session&&Ue(Ge.data.session),cn(!1),dn(!1))},Ge=>{un.current===$e&&(zt.current===U&&(zt.current=null),cn(!1),dn(!1),De(Ge instanceof et.FloPayError?Ge:new et.FloPayError(Ge instanceof Error?Ge.message:"Failed to create session","api_error")))})}else un.current+=1,zt.current=null,cn(!1),dn(!1);let{flopay:Rt,paypalFlopay:qt}=await Hs(D,{billingApiUrl:Z,locale:i,telemetry:o});return Yt(Rt,qt),gt(!1),m}catch(m){throw Ur.current===Ct&&(Ur.current=null),m}finally{$||ee()}},[Mt,Yt,i,Z,o]),nr=(0,R.useRef)(Ln);nr.current=Ln;let qr=(0,R.useRef)(Yn);qr.current=Yn;let Ot=(0,R.useCallback)(async L=>{if(!Pp(L)||rn)return{sessionId:B,session:X};At(!0);try{let $=await Yn(L);return{sessionId:$.sid,session:$.result.data.session??null}}finally{At(!1)}},[Yn,rn,B,X]),In=(0,R.useCallback)(async L=>{let $=Ut.current;if(!$)return;let ce=un.current,Me=await $(L);un.current===ce&&(st(Me),Me.data.session&&Ue(Me.data.session))},[]),rr=(0,R.useCallback)(async()=>{await zt.current},[]),gr=(0,R.useCallback)(async()=>(await rr(),{proceed:!0}),[rr]);(0,R.useEffect)(()=>{let L=!1,$,ce=++Et.current;Dn(),De(null),$n(0);let Me=()=>{L=!0,Et.current===ce&&(Et.current+=1,Dn())},Ct=_r.current;if(Nn&&Ct)return $t(tr),gt(!1),Ur.current===Nn?Me:(Ue(Vl(Ct,z)),(async()=>{let de=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),ee=tr==="auto"&&!an.current&&!de;ee&&(Dt(null),Tt(null),rt("processing"));try{let m=await qr.current(void 0,Re=>{$=Re}),y=m.result.data.session??null;ft.current=Ts(m.result);let D=Ws(m.result),U=ks(m.sid||y?.id);if(!L&&ee&&y&&!D&&!U){an.current=!0,await mp(Nn,m.sdkGeneratedIdempotencyKey,()=>nr.current(y,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:m.result.autoProcessingError,initialAutoProcessingPending:m.result.autoProcessingPending,autoProcessingAttempted:m.result.autoProcessingAttempted,sessionId:m.sid||y.id}));return}!L&&ee&&((D||U)&&(an.current=!0),rt(null),Tt(null))}catch(m){if(L)return;let y=ni(m);if(ee&&y==="session_auto_completed"){an.current=!0,rt("success"),await Ua(600),L||(Je(()=>{nt.current?.({status:"succeeded"})}),rt(null),Tt(null));return}ee&&(rt(null),Tt(null));let D=m instanceof et.FloPayError?m:new et.FloPayError(m instanceof Error?m.message:"Failed to create session","api_error");De(D)}finally{$?.(),$=void 0}})(),()=>{Me(),$?.()});gt(!0);async function Jt(){let de=!1,ee=null;try{let m=new Xr.PaymentAPI(Z,{telemetry:!1}),y=await m.getUnifiedCheckoutSession(j,t);if(ee=y,L)return;st(y);let D=y.data.session??null;if(Ue(D),!D)throw new et.FloPayError("No session data returned","api_error");let U=D.checkoutMode;if(U==="setup")throw new et.FloPayError("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(D.status==="authorized"){gt(!1),Je(()=>{nt.current?.(jr(D,j)),ht.current?.(D.successUrl??"")});return}if(D.status==="complete"){gt(!1),Je(()=>{ht.current?.(D.successUrl??"")});return}if(D.status==="expired")throw ti(D);de=!0;let Re=z??U??"full";$t(Re),un.current+=1;let ge=D.clientSecret||t;Ut.current=D.buyerIdentified===!1&&ge?zo(m,j,ge,{...D.customer?.id?{userId:D.customer.id}:{}}):void 0,cn(!1),dn(!1);let Rt=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),qt=Ws(y);if(Re==="auto"&&!an.current&&!Rt&&!qt){an.current=!0;let $e=ke(y);try{if(await nr.current(D,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>$e,sessionId:j||D.id}),L)return;await $e,L||gt(!1);return}catch{if(L)return;await $e,L||gt(!1);return}}await ke(y),L||gt(!1)}catch(m){if(L)return;let y=zl(m,de);if(de&&W({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),y){let{errorCode:U,stage:Re,...ge}=y;$s(Z,o,v,U,Re,ge)}if(y?.stage==="provider_load"&&(z??ee?.data.session?.checkoutMode??"full")==="full"&&Ul(ee,A,I)){let U=fp({billingApiUrl:Z,locale:i,telemetry:o});Pt.current=U,Yt(U,null),$n(1),gt(!1);return}let D=m instanceof et.FloPayError&&y?.stage!=="provider_load"?m:Nl();D!==m&&Je(()=>le.current?.(D)),De(D),gt(!1)}}async function ke(de){let{flopay:ee,paypalFlopay:m,...y}=await Hs(de,{billingApiUrl:Z,locale:i,telemetry:o});ft.current={publishableKey:y.publishableKey,paypalPublishableKey:y.paypalPublishableKey},Yt(ee,m),$n(0)}return Jt(),Me},[z,Nn,tr,Ie,t,A,I]);let Ir=(0,R.useCallback)(async()=>{if(!Ke||xn!==1)return;let L=Et.current;$n(2);try{let{flopay:$,paypalFlopay:ce}=await Hs(Ke,{billingApiUrl:Z,locale:i,telemetry:o});if(Et.current!==L)return;Dn(),Yt($,ce),$n(0)}catch($){if(Et.current!==L)return;let{errorCode:ce,stage:Me,...Ct}=ps($);$s(Z,o,v,ce,Me,Ct)}},[Dn,Yt,i,xn,Z,o,v,Ke]),lt=!!(j&&(X?.clientSecret||t)),pn=Wn||!lt,mn=(0,R.useCallback)(async()=>{if(!(Wn||!lt||!X)){Hn(!0),Dt(null);try{await Ln(X,{attempt3DS:!0,fallbackToFull:!0,sessionId:j||X.id})}finally{Hn(!1)}}},[j,Wn,lt,Ln,X]),Tn=Hc(Ke,Q),mo=Ws(Ke),Tr=(0,R.useMemo)(()=>{if(!(!Ke||!X||!Ke.data.stripe?.publishableKey))return{billingApiUrl:Z}},[Ke,X,Z]),Zr=!!(n&&!Pe&&N==="buttons"&&Te&&tr==="full"),An=!!(j&&((0,et.isMountableVaultBlock)(X?.vault)||eo(X))),yn=(0,R.useMemo)(()=>({session:X,loading:tt,error:yt,checkoutMode:bn,inlineSessionDraft:Xt,applyInlineSessionPatch:Zr?Ot:void 0,inlineSessionPatchProcessing:rn,claimPending:on,claimRequiresIdentity:Nt,claimBuyerIdentity:In,waitForDataAttachment:rr}),[X,tt,yt,bn,Xt,Zr,Ot,rn,on,Nt,In,rr]),hr=!!n&&N==="buttons"&&!mo&&!An&&(!je||!Tr),vn=dt?(0,O.jsx)(Vn,{status:dt,errorMessage:Fn,authorized:Kn}):null;if(tt&&!An){if(c)return(0,O.jsxs)(O.Fragment,{children:[c,vn]});if(N==="buttons"){let L=it?.buttonsLayout?.cardButton?.borderRadius??it?.appearance.variables?.borderRadius??8,$=ce=>(0,O.jsx)("div",{style:{height:ce,borderRadius:L,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[A&&$(ra),I&&(G||k)&&$(ra),I&&$(ra),(0,O.jsx)("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),vn]})}return(0,O.jsxs)(O.Fragment,{children:[(0,O.jsxs)("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[(0,O.jsx)("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),(0,O.jsx)("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),vn]})}return yt?p?(0,O.jsx)(Cr.Provider,{value:yn,children:p(yt)}):(0,O.jsx)(Cr.Provider,{value:yn,children:(0,O.jsx)("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:yt.message})}):hr?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(Cr.Provider,{value:yn,children:(0,O.jsx)(Cp,{onButtonClick:We,showPayPal:A,showStripe:I,showApplePay:G,showGooglePay:k,theme:H,buttonsTheme:_e,buttonsStyles:te,cardButtonContent:Ne,cardBackButtonContent:Ye,cardTitleContent:be})}),vn]}):mo&&X&&Tn?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(Cr.Provider,{value:yn,children:(0,O.jsxs)("div",{className:Be,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[wn&&(0,O.jsx)(Ho,{icon:!1,children:wn}),ue==="retrying"&&(0,O.jsx)("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),ue==="exhausted"&&(0,O.jsxs)("div",{role:"alert",children:[(0,O.jsx)("div",{children:"PayPal is temporarily unavailable. Please try again."}),(0,O.jsx)("button",{type:"button",onClick:po,children:"Retry PayPal"})]}),ue!=="exhausted"&&(0,O.jsx)("div",{"aria-hidden":ue==="retrying"?!0:void 0,style:ue==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:(0,O.jsx)(rc,{sessionId:j,nonce:X.clientSecret||void 0,billingApiUrl:Z,email:X.customer?.email||Xt?.account?.email,billingName:[X.customer?.firstName,X.customer?.lastName].filter(Boolean).join(" ")||[Xt?.account?.firstName,Xt?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:In,clientId:Tn.clientId,environment:Tn.environment,currency:(X.currency??"usd").toUpperCase(),isSubscription:X.mode==="subscription",providerObjectType:Tn.providerObjectType,approvalPresentation:Tn.approvalPresentation,existingOrderId:Tn.existingOrderId,onComplete:u,onErrorChange:Dt,onDecline:M,onButtonClick:We,runBeforeButtonClick:gr,onInitializationStateChange:yr,allowAutomaticRetry:pr===0,session:X,telemetry:o,telemetryContext:v,onInstrument:F,debug:ye},`${Xe}:paypal-init-${pr}`)})]})}),vn]}):bn==="confirm"?(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(Cr.Provider,{value:yn,children:(0,O.jsx)(Ea,{flopay:je,paypalFlopay:q,options:Tr??{billingApiUrl:Z},onInstrument:F,children:(0,O.jsxs)("div",{className:Be,children:[wn&&(0,O.jsx)("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:wn}),J?J({onConfirm:mn,isProcessing:pn}):(0,O.jsx)("button",{type:"button",onClick:mn,disabled:pn,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:pn?"not-allowed":"pointer",opacity:pn?.6:1},children:Wn?"Processing...":we??"Confirm Purchase"})]})},Xe)}),vn]}):(!je||!Tr)&&!(An&&bn==="full")?(0,O.jsx)(O.Fragment,{children:vn}):(0,O.jsxs)(O.Fragment,{children:[(0,O.jsx)(Cr.Provider,{value:yn,children:(0,O.jsxs)(Ea,{flopay:je,paypalFlopay:q,options:Tr??{billingApiUrl:Z},onInstrument:F,children:[xn===1&&(0,O.jsx)("button",{type:"button",onClick:Ir,children:"Retry payment methods"}),Pe?(0,O.jsxs)(O.Fragment,{children:[wn&&(0,O.jsx)("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:wn}),(0,O.jsx)(vp,{sessionId:j,nonce:X?.clientSecret||void 0,billingApiUrl:Z,session:X,submitLabel:Ce,walletPresentation:b,children:Pe})]}):(0,O.jsx)(Bi,{sessionId:j,nonce:X?.clientSecret||void 0,telemetry:o,email:X?.customer?.email||Xt?.account?.email,userId:X?.customer?.id||Xt?.account?.userId,firstName:X?.customer?.firstName||Xt?.account?.firstName,lastName:X?.customer?.lastName||Xt?.account?.lastName,totalAmount:X?Math.round((0,et.buildCheckoutDisplayData)(X).total*100):0,currency:X?.currency?.toLowerCase()??"usd",onComplete:u,onError:h,onDecline:M,error:wn,onErrorChange:Dt,showPayPal:A,showStripe:I,walletPresentation:b,enabledPaymentMethods:xn?[]:C??Ke?.data.stripe?.enabledPaymentMethods??X?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:Ke?.data.stripe?.enabledPaymentMethodCountries,showApplePay:G,showGooglePay:k,layout:N,theme:H,buttonsTheme:_e,buttonsStyles:te,appearance:He,cardButtonContent:Ne,cardBackButtonContent:Ye,cardTitleContent:be,onButtonClick:We,onBeforeButtonClick:Te,onBuyerIdentityReady:In,enableAVS:Fe,...Ae?{cardFieldOrder:Ae}:{},...re?{cardPreFormSlot:re}:{},avsLayout:se,country:X?.customer?.country,city:X?.customer?.city,state:X?.customer?.state,onCountryChange:_,onZipChange:w,avsCheck:!!Fe,checkoutType:n?"embedded_checkout":"standard_checkout",checkoutLayout:Gs(Pe,N),className:Be,submitLabel:Ce,directPaypal:Tn,isSubscription:X?.mode==="subscription",session:X,dataAttachmentPending:on,dataAttachmentRequiresIdentity:Nt,debug:ye})]},Xe)}),vn]})}function vp({sessionId:e,nonce:t,billingApiUrl:n,session:r,submitLabel:o,walletPresentation:a,children:i}){return(0,O.jsx)(O.Fragment,{children:R.default.Children.map(i,c=>{if(!R.default.isValidElement(c))return c;let p=c.props,u={};return p.sessionId||(u.sessionId=e),!p.nonce&&t&&(u.nonce=t),p.billingApiUrl||(u.billingApiUrl=n),p.submitLabel===void 0&&o!==void 0&&(u.submitLabel=o),p.walletPresentation===void 0&&(u.walletPresentation=a),r?.customer&&(p.email||(u.email=r.customer.email),p.userId||(u.userId=r.customer.id),p.firstName||(u.firstName=r.customer.firstName),p.lastName||(u.lastName=r.customer.lastName)),Object.keys(u).length===0?c:R.default.cloneElement(c,u)})})}function Cp({onButtonClick:e,showPayPal:t,showStripe:n=!0,showApplePay:r,showGooglePay:o,theme:a,buttonsTheme:i,buttonsStyles:c,cardButtonContent:p,cardBackButtonContent:u,cardTitleContent:h}){let[P,M]=(0,R.useState)(!1),_=(0,R.useMemo)(()=>(0,et.resolveTheme)(a),[a]),w=(0,R.useMemo)(()=>{let C=_?.buttonsLayout??(0,et.resolveButtonsLayoutTheme)(i);return c?{...C,...c,cardButton:{...C.cardButton,...c.cardButton},cardFormContainer:{...C.cardFormContainer,...c.cardFormContainer},backButton:{...C.backButton,...c.backButton},backButtonIcon:{...C.backButtonIcon,...c.backButtonIcon},submitButton:{...C.submitButton,...c.submitButton},title:{...C.title,...c.title}}:C},[_,i,c]),A=_?.buttonsLayout?.cardButton?.borderRadius??_?.appearance.variables?.borderRadius??8,I=C=>(0,O.jsx)("div",{style:{height:C,borderRadius:A,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),b=p===void 0?{boxSizing:"border-box",height:ra,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(P){let C=w.cardInputBorder??"#e5e7eb",G=w.cardInputBackground??"white",k=Lo(u),ye=Lo(h);return(0,O.jsxs)("div",{style:{backgroundColor:w.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...w.cardFormContainer},children:[(0,O.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,O.jsxs)("button",{type:"button",onClick:()=>M(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:k?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...w.backButton},children:[(0,O.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...w.backButtonIcon},children:(0,O.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,O.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,O.jsx)(Uo,{content:u})]}),ye?(0,O.jsx)("div",{style:{flex:1}}):(0,O.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...w.title},children:(0,O.jsx)(Pa,{content:h})})]}),(0,O.jsx)("div",{style:{backgroundColor:G,border:`1px solid ${C}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:(0,O.jsx)("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,O.jsxs)("div",{style:{display:"flex"},children:[(0,O.jsx)("div",{style:{flex:1,backgroundColor:G,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${C}`,borderLeft:`1px solid ${C}`,borderBottomLeftRadius:8,padding:12,height:45},children:(0,O.jsx)("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,O.jsx)("div",{style:{flex:1,backgroundColor:G,borderTop:"none",borderRight:`1px solid ${C}`,borderBottom:`1px solid ${C}`,borderLeft:`1px solid ${C}`,borderBottomRightRadius:8,padding:12,height:45},children:(0,O.jsx)("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),(0,O.jsx)("div",{style:{backgroundColor:G,border:`1px solid ${C}`,borderRadius:8,marginTop:8,padding:12,height:45},children:(0,O.jsx)("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,O.jsx)("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...w.submitButton,opacity:.5}}),(0,O.jsx)("style",{children:`
38
+ `}),ia&&oo&&(0,c.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem",order:f?-2:0},children:[(0,c.jsxs)("button",{type:"button",onClick:Se,style:{display:"inline-flex",alignItems:"center",gap:Ui?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:D.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...D.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",...D.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)(Oo,{content:Re})]}),Js?(0,c.jsx)("div",{style:{flex:1}}):(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:D.titleFontSize??"1.05rem",color:"#262833",paddingRight:80,...D.title},children:(0,c.jsx)(ua,{content:_e})})]}),!ia&&!Js&&(0,c.jsx)("div",{style:{textAlign:"center",fontWeight:600,fontSize:"1.1rem",padding:"0.5rem 0",color:zi,order:f?-3:0,...D.title},children:(0,c.jsx)(ua,{content:_e})}),f&&ee&&(0,c.jsx)("div",{style:{order:-2,width:"100%"},children:ee}),f&&io&&(0,c.jsxs)("div",{"data-testid":"flopay-vault-identity-fields",style:{order:-1,marginTop:"0.5rem"},children:[(0,c.jsx)("div",{style:{backgroundColor:xo,border:`1px solid ${nn(za)}`,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:or,onChange:s=>{Nt("email"),ur.current=s.target.value,pn(s.target.value)},onPointerDown:()=>Nt("email"),onKeyDown:()=>Nt("email"),onBlur:()=>{Xr("email")&&tn(!0),ko||Ti()},disabled:et,required:!0,"aria-invalid":za||void 0,"aria-describedby":za?"flopay-buyer-email-error":void 0,"data-testid":"flopay-email",style:{width:"100%",border:"none",outline:"none",background:"transparent",...qi}})}),za&&(0,c.jsx)("div",{id:"flopay-buyer-email-error",role:"alert","data-testid":"flopay-email-error",style:la,children:Ri.empty?"Email address is required":"Enter a valid email address"})]}),Ae&&(0,c.jsx)("div",{style:{order:f?-1:0},"data-testid":"flopay-avs-fields",children:(()=>{let s=Ht,R=(oe=!1)=>({backgroundColor:xo,border:`1px solid ${nn(oe)}`,borderRadius:Qt,marginTop:"0.5rem",padding:"10px"}),ue=()=>({width:"100%",border:"none",outline:"none",background:"transparent",...qi}),Ue=(0,u.getStateOptions)(s);return(0,c.jsxs)(c.Fragment,{children:[(0,u.isAVSFieldVisible)(Ae.address_line_1,s)&&(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)("div",{style:R(Jt("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:Lt,onChange:oe=>{Nt("line1"),qt.current.addressLine1=!0,mr.current=oe.target.value,mt(oe.target.value)},onPointerDown:()=>Nt("line1"),onKeyDown:()=>Nt("line1"),onBlur:()=>xr("line1"),disabled:et,required:!0,"aria-invalid":Jt("line1")||void 0,"aria-describedby":Jt("line1")?"flopay-billing-address-line1-error":void 0,"data-testid":"flopay-address-line1",style:ue()})}),Jt("line1")&&(0,c.jsx)("div",{id:"flopay-billing-address-line1-error",role:"alert","data-testid":"flopay-address-line1-error",style:la,children:"Street address is required"})]}),(0,u.isAVSFieldVisible)(Ae.address_line_2,s)&&(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:it,onChange:oe=>{qt.current.addressLine2=!0,jt.current=oe.target.value,Br(oe.target.value)},disabled:et,"data-testid":"flopay-address-line2",style:ue()})}),((0,u.isAVSFieldVisible)(Ae.city,s)||(0,u.isAVSFieldVisible)(Ae.state,s))&&(0,c.jsxs)("div",{style:{display:"flex",gap:"0",marginTop:"0.5rem"},children:[(0,u.isAVSFieldVisible)(Ae.city,s)&&(0,c.jsx)("div",{style:{flex:1,backgroundColor:xo,borderTop:`1px solid ${nn(Jt("city"))}`,borderRight:`1px solid ${nn(Jt("city"))}`,borderBottom:`1px solid ${nn(Jt("city"))}`,borderLeft:`1px solid ${nn(Jt("city"))}`,padding:"10px",borderTopLeftRadius:Qt,borderBottomLeftRadius:Qt,...(0,u.isAVSFieldVisible)(Ae.state,s)?{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:Bt,onChange:oe=>{Nt("city"),qt.current.city=!0,Sr.current=oe.target.value,Hr(oe.target.value)},onPointerDown:()=>Nt("city"),onKeyDown:()=>Nt("city"),onBlur:()=>xr("city"),disabled:et,required:!0,"aria-invalid":Jt("city")||void 0,"aria-describedby":Jt("city")?"flopay-billing-city-error":void 0,"data-testid":"flopay-city",style:ue()})}),(0,u.isAVSFieldVisible)(Ae.state,s)&&(0,c.jsx)("div",{style:{flex:1,backgroundColor:xo,borderTop:`1px solid ${nn(Jt("state"))}`,borderRight:`1px solid ${nn(Jt("state"))}`,borderBottom:`1px solid ${nn(Jt("state"))}`,borderLeft:`1px solid ${nn(Jt("state"))}`,padding:"10px",borderTopRightRadius:Qt,borderBottomRightRadius:Qt,...(0,u.isAVSFieldVisible)(Ae.city,s)?{borderTopLeftRadius:0,borderBottomLeftRadius:0,borderLeft:`1px solid ${nn(Jt("state")||Jt("city"))}`}:{borderRadius:Qt}},children:Ue?(0,c.jsxs)("select",{id:"flopay-billing-state",name:"billing-state",value:Cr,onChange:oe=>{Nt("state"),qt.current.state=!0,Vt.current=oe.target.value,Kt(oe.target.value)},onPointerDown:()=>Nt("state"),onKeyDown:()=>Nt("state"),onBlur:()=>xr("state"),disabled:et,autoComplete:"billing address-level1",required:!0,"aria-invalid":Jt("state")||void 0,"aria-describedby":Jt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:{...ue(),cursor:"pointer"},children:[(0,c.jsx)("option",{value:"",children:(0,u.getStateLabel)(s)}),Ue.map(oe=>(0,c.jsx)("option",{value:oe.code,children:oe.name},oe.code))]}):(0,c.jsx)("input",{className:"flopay-shared-input",id:"flopay-billing-state",name:"billing-state",placeholder:(0,u.getStateLabel)(s),autoComplete:"billing address-level1",value:Cr,onChange:oe=>{Nt("state"),qt.current.state=!0,Vt.current=oe.target.value,Kt(oe.target.value)},onPointerDown:()=>Nt("state"),onKeyDown:()=>Nt("state"),onBlur:()=>xr("state"),disabled:et,required:!0,"aria-invalid":Jt("state")||void 0,"aria-describedby":Jt("state")?"flopay-billing-state-error":void 0,"data-testid":"flopay-state",style:ue()})})]}),Jt("city")&&(0,c.jsx)("div",{id:"flopay-billing-city-error",role:"alert","data-testid":"flopay-city-error",style:la,children:"City is required"}),Jt("state")&&(0,c.jsxs)("div",{id:"flopay-billing-state-error",role:"alert","data-testid":"flopay-state-error",style:la,children:[(0,u.getStateLabel)(s)," is required"]}),((0,u.isAVSFieldVisible)(Ae.country,s)||(0,u.isAVSFieldVisible)(Ae.postal_code,s))&&(0,c.jsxs)("div",{style:{display:"flex",flexDirection:ye==="column"?"column":"row",gap:ye==="column"?"0.5rem":"0",marginTop:"0.5rem"},children:[(0,u.isAVSFieldVisible)(Ae.country,s)&&(0,c.jsx)("div",{style:{flex:ye==="row"?1:void 0,backgroundColor:xo,borderTop:`1px solid ${sa}`,borderRight:`1px solid ${sa}`,borderBottom:`1px solid ${sa}`,borderLeft:`1px solid ${sa}`,padding:"10px",...ye==="row"&&(0,u.isAVSFieldVisible)(Ae.postal_code,s)?{borderRadius:"0",borderTopLeftRadius:Qt,borderBottomLeftRadius:Qt,borderRight:"none"}:{borderRadius:Qt}},children:(0,c.jsxs)("select",{id:"flopay-billing-country",name:"billing-country",value:Ht,onChange:oe=>{qt.current.country=!0,Tr.current=oe.target.value,$r(oe.target.value),Ge?.(oe.target.value),Vt.current="",Kt("")},disabled:et,autoComplete:"billing country","data-testid":"flopay-country",style:{...ue(),cursor:"pointer"},children:[Ht===""?(0,c.jsx)("option",{value:"",children:"Select country"}):null,u.COUNTRY_OPTIONS.map(oe=>(0,c.jsxs)("option",{value:oe.code,children:[oe.flag," ",oe.name]},oe.code))]})}),(0,u.isAVSFieldVisible)(Ae.postal_code,s)&&(0,c.jsx)("div",{style:{flex:ye==="row"?1:void 0,backgroundColor:xo,border:`1px solid ${Mc}`,padding:"10px",...ye==="row"&&(0,u.isAVSFieldVisible)(Ae.country,s)?{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,u.getPostalCodeLabel)(Ht),autoComplete:"billing postal-code",value:Wr,onChange:oe=>{Nt("zip"),qt.current.zip=!0,zt.current=oe.target.value,Rr(oe.target.value),$e?.(oe.target.value)},onPointerDown:()=>Nt("zip"),onKeyDown:()=>Nt("zip"),onBlur:()=>{Xr("zip")&&Lr(!0)},disabled:et,required:Gr.required,"aria-invalid":qa||void 0,"aria-describedby":qa?"flopay-billing-postal-code-error":void 0,"data-testid":"flopay-zip",style:ue()})})]}),qa&&(0,c.jsx)("div",{id:"flopay-billing-postal-code-error",role:"alert","data-testid":"flopay-zip-error",style:la,children:Gr.empty?`${(0,u.getPostalCodeLabel)(s)} is required`:Ld(s)})]})})()}),f&&Dc,wt&&(0,c.jsx)($o,{margin:"0.75rem 0",styleOverride:D.errorBanner,children:wt})]}),ja={margin:0,padding:"6px 8px",background:"#eef2ff",border:"1px solid #c7d2fe",borderRadius:6,color:"#111827",font:"11px/1.35 ui-monospace, SFMono-Regular, Menlo, monospace",whiteSpace:"pre-wrap",wordBreak:"break-word"},rl=s=>G?!v||!Nn?(0,c.jsx)("pre",{"data-testid":s,style:ja,children:"FloPay/DirectPayPal-debug - not enabled"}):(0,c.jsx)("pre",{"data-testid":s,style:ja,children:["FloPay/DirectPayPal-debug (parent gate)",` showPayPal=${v}`,` directPaypalConfigured=${Nn}`,` inAppBrowserDetected=${String(La)}`,` shouldRenderDirectPayPal=${ta}`,` shouldRenderStripePayPal=${na}`,` hasPaypalStripeInstance=${!!Ss}`].join(`
39
+ `)}):null,nl=s=>G?!te||!Jr?(0,c.jsx)("pre",{"data-testid":s,style:ja,children:"FloPay/Stripe-debug - not enabled"}):(0,c.jsx)("pre",{"data-testid":s,style:ja,children:["FloPay/Stripe-debug (parent gate)",` showStripe=${te}`,` currency=${Et}`,` amountInCents=${Qo}`,` enabledPaymentMethods: ${JSON.stringify(Pe??[])}`,` enabledPaymentMethodsProvided=${ea}`,` hasEnabledMethods=${Fa}`,` expressMethods: ${JSON.stringify(Da)}`,` walletExpressMethods: ${JSON.stringify(To)}`,` paymentElementMethods: ${JSON.stringify(xi)}`,` paymentElementMethodsForCurrency: ${JSON.stringify(Oa)}`,` hasStripeInstance=${!!Jr}`,` shouldRenderWallets=${Mo}`,` shouldRenderPaymentElement=${oa}`].join(`
40
+ `)}):null,ol=bt==="apm-expanding"||bt==="apm-form"||bt==="apm-collapsing",Fo;bt==="apm-expanding"?Fo=Nl:bt==="apm-collapsing"&&(Fo=Ul);let Va=yr?Yl(Ai,yr,A):null;if(se==="buttons"){let s=bt==="buttons"||bt==="expanding"||bt==="apm-expanding",R=bt==="expanding"||bt==="card"||bt==="collapsing",ue=Ke===void 0?{boxSizing:"border-box",height:Yo,padding:"0 1rem"}:{padding:"0.9rem 1rem"},Ue;bt==="expanding"||bt==="apm-expanding"?Ue=Fd:(bt==="collapsing"||bt==="apm-collapsing")&&(Ue=Ad);let oe;return bt==="expanding"?oe=Nl:bt==="collapsing"&&(oe=Ul),(0,c.jsxs)("form",{onSubmit:Oi,className:O,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(Xo,{}),Oe&&(0,c.jsx)(qr,{status:Oe,errorMessage:wt,authorized:yn}),(0,c.jsxs)("div",{style:{display:"grid"},children:[(0,c.jsxs)("div",{"data-testid":"flopay-buttons-panel","aria-hidden":!s&&!Ue?!0:void 0,style:{gridArea:"1 / 1",display:"flex",flexDirection:"column",gap:"0.5rem",...!s&&!Ue?Dd:{},...Ue?{animation:Ue,pointerEvents:"none"}:{}},children:[rl("flopay-direct-paypal-gate-debug"),nl("flopay-stripe-gate-debug"),ta&&kt&&(0,c.jsxs)(c.Fragment,{children:[Fe&&(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)(fa.Provider,{value:m,children:(0,c.jsx)(ha,{sessionId:e,nonce:t,billingApiUrl:ht,email:Pt.email,billingName:wo||void 0,onBuyerIdentityReady:ot,clientId:kt.clientId,environment:kt.environment,currency:Et.toUpperCase(),isSubscription:At,providerObjectType:ne,approvalPresentation:Na==="popup"?void 0:Na,onTokenizedBody:Ur,onComplete:l,onErrorChange:Le,onDecline:p,onTechnicalFailure:Io,onButtonClick:re,runBeforeButtonClick:wn,isProcessing:et,onLoadStateChange:Fi,onInitializationStateChange:Bi,session:T,existingOrderId:Fe?.orderId,debug:G},Fe?.orderId??"fresh")})]}),na&&(0,c.jsx)(er.Elements,{stripe:ra,options:Rs,children:(0,c.jsx)(ql,{sessionId:e,nonce:t,email:Pt.email,billingName:wo||void 0,onBuyerIdentityReady:ot,billingApiUrl:ht,onTokenizedBody:Ur,onErrorChange:Le,isProcessing:et,onButtonClick:re,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Bs,placeholderBorderRadius:mo,popupCapabilityOwner:m,externalTelemetryContext:Vs,presentationMode:_o})}),Mo?(0,c.jsx)(er.Elements,{stripe:Jr,options:ks,children:(0,c.jsx)(Vl,{sessionId:e,nonce:t,email:Pt.email,billingName:wo||void 0,onBuyerIdentityReady:ot,billingApiUrl:ht,intentKind:We>0?"payment":"setup",expressMethods:To,onTokenizedBody:Ur,onErrorChange:Le,onButtonClick:re,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Os,placeholderBorderRadius:mo,popupCapabilityOwner:m,externalTelemetryContext:he})}):null,!Mo&&qs?(0,c.jsx)("div",{style:{height:Yo,borderRadius:mo,background:"#e5e7eb",animation:"flopay-pulse 1.5s ease-in-out infinite"}}):null,oa&&(0,c.jsx)($l,{sessionId:e,nonce:t,email:Pt.email,billingName:[Pt.firstName,Pt.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:ot,billingApiUrl:ht,paymentElementMethods:Oa,stripeInstance:Jr,paymentElementBaseOptions:Ai,futureUseSession:A,onTokenizedBody:Ur,onErrorChange:Le,onButtonClick:re,onDecline:p,runBeforeButtonClick:wn,onLoadStateChange:Ns,isProcessing:et,submitButtonColor:yo,submitButtonBorderRadius:Qt,submitButtonStyle:D.submitButton,onExpandApm:It,expandedApmMethod:yr,themeId:je,buttonAppearance:{backgroundColor:D.cardButton?.backgroundColor,borderColor:D.cardInputBorder,textColor:D.cardButton?.color,borderRadius:mo}}),f&&(0,c.jsx)("button",{type:"button",onClick:async()=>{et||!(await wn("card")).proceed||(re?.("card"),ce())},disabled:et,style:{width:"100%",...ue,...D.cardButton,...us({themeBundle:we,resolvedPrimaryColor:yo,resolvedBorderRadius:Qt,submitButtonStyle:D.submitButton,explicitPrimaryColor:zr?.colorPrimary}),fontSize:D.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:et?"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:et?.6:1},onMouseEnter:Ie=>{!et&&(we||zr?.colorPrimary)&&(Ie.currentTarget.style.backgroundColor=Fc)},onMouseLeave:Ie=>{(we||zr?.colorPrimary)&&(Ie.currentTarget.style.backgroundColor=yo)},onMouseDown:Ie=>{Ie.currentTarget.style.transform="scale(0.985)"},onMouseUp:Ie=>{Ie.currentTarget.style.transform="scale(1)"},children:(0,c.jsx)(Do,{content:Ke})}),wt&&bt==="buttons"&&(0,c.jsx)($o,{margin:"0.25rem 0",styleOverride:D.errorBanner,children:wt})]}),f&&R&&(0,c.jsx)("div",{style:{gridArea:"1 / 1",...oe?{animation:oe}:{},...bt==="collapsing"?{pointerEvents:"none"}:{}},children:tl}),te&&ol&&yr&&Va&&Jr&&(0,c.jsx)("div",{style:{gridArea:"1 / 1",...Fo?{animation:Fo}:{},...bt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,c.jsxs)("div",{style:{backgroundColor:Ni,borderRadius:Vi,...ca,padding:ji},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:Yt,style:{display:"inline-flex",alignItems:"center",gap:Ui?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:D.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...D.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",...D.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)(Oo,{content:Re})]}),(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:D.titleFontSize??"1.05rem",color:zi,paddingRight:80,...D.title},children:`Pay with ${(0,u.getStripeMethodDisplayName)(yr)}`})]}),(0,c.jsx)(er.Elements,{stripe:Jr,options:Va,children:(0,c.jsx)(ls,{method:yr,sessionId:e,nonce:t,email:Pt.email,billingName:[Pt.firstName,Pt.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:ot,billingApiUrl:ht,onTokenizedBody:Ur,onErrorChange:Le,onDecline:p,onCancel:Yt,runBeforeButtonClick:wn,onButtonClick:re,isProcessing:et,submitButtonColor:yo,submitButtonBorderRadius:Qt,submitButtonStyle:D.submitButton,errorText:wt})},yr)]})})]})]})}return ol&&yr&&Va&&Jr&&te?(0,c.jsxs)("form",{onSubmit:Oi,className:O,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(Xo,{}),Oe&&(0,c.jsx)(qr,{status:Oe,errorMessage:wt,authorized:yn}),(0,c.jsx)("div",{style:{...Fo?{animation:Fo}:{},...bt==="apm-collapsing"?{pointerEvents:"none"}:{}},children:(0,c.jsxs)("div",{style:{backgroundColor:Ni,borderRadius:Vi,...ca,padding:ji},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:Yt,style:{display:"inline-flex",alignItems:"center",gap:Ui?0:"0.5rem",background:"none",border:"none",cursor:"pointer",color:"#4b5563",fontSize:D.backButtonFontSize??"0.85rem",fontWeight:500,padding:0,transition:"color 0.15s",flexShrink:0,...D.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",...D.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)(Oo,{content:Re})]}),(0,c.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:D.titleFontSize??"1.05rem",color:zi,paddingRight:80,...D.title},children:`Pay with ${(0,u.getStripeMethodDisplayName)(yr)}`})]}),(0,c.jsx)(er.Elements,{stripe:Jr,options:Va,children:(0,c.jsx)(ls,{method:yr,sessionId:e,nonce:t,email:Pt.email,billingName:[Pt.firstName,Pt.lastName].filter(Boolean).join(" ").trim()||void 0,onBuyerIdentityReady:ot,billingApiUrl:ht,onTokenizedBody:Ur,onErrorChange:Le,onDecline:p,onCancel:Yt,runBeforeButtonClick:wn,onButtonClick:re,isProcessing:et,submitButtonColor:yo,submitButtonBorderRadius:Qt,submitButtonStyle:D.submitButton,errorText:wt})},yr)]})})]}):(0,c.jsxs)("form",{onSubmit:Oi,className:O,noValidate:!0,style:{position:"relative"},children:[(0,c.jsx)(Xo,{}),Oe&&(0,c.jsx)(qr,{status:Oe,errorMessage:wt,authorized:yn}),(0,c.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[rl("flopay-direct-paypal-gate-debug-default"),nl("flopay-stripe-gate-debug-default"),ta&&kt&&(0,c.jsxs)(c.Fragment,{children:[Fe&&(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)(fa.Provider,{value:m,children:(0,c.jsx)(ha,{sessionId:e,nonce:t,billingApiUrl:ht,email:Pt.email,billingName:wo||void 0,onBuyerIdentityReady:ot,clientId:kt.clientId,environment:kt.environment,currency:Et.toUpperCase(),isSubscription:At,providerObjectType:ne,approvalPresentation:Na==="popup"?void 0:Na,onTokenizedBody:Ur,onComplete:l,onErrorChange:Le,onDecline:p,onTechnicalFailure:Io,onButtonClick:re,runBeforeButtonClick:wn,isProcessing:et,onLoadStateChange:Fi,onInitializationStateChange:Bi,session:T,existingOrderId:Fe?.orderId,debug:G},Fe?.orderId??"fresh")})]}),na&&(0,c.jsx)(er.Elements,{stripe:ra,options:Rs,children:(0,c.jsx)(ql,{sessionId:e,nonce:t,email:Pt.email,billingName:wo||void 0,onBuyerIdentityReady:ot,billingApiUrl:ht,onTokenizedBody:Ur,onErrorChange:Le,isProcessing:et,onButtonClick:re,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Bs,placeholderBorderRadius:mo,popupCapabilityOwner:m,externalTelemetryContext:Vs,presentationMode:_o})}),Mo&&(0,c.jsx)(er.Elements,{stripe:Jr,options:ks,children:(0,c.jsx)(Vl,{sessionId:e,nonce:t,email:Pt.email,billingName:wo||void 0,onBuyerIdentityReady:ot,billingApiUrl:ht,intentKind:We>0?"payment":"setup",expressMethods:To,onTokenizedBody:Ur,onErrorChange:Le,onButtonClick:re,onDecline:p,onTechnicalFailure:Io,runBeforeButtonClick:wn,onLoadStateChange:Os,placeholderBorderRadius:mo,popupCapabilityOwner:m,externalTelemetryContext:he})}),oa&&(0,c.jsx)($l,{sessionId:e,nonce:t,email:Pt.email,billingName:[Pt.firstName,Pt.lastName].filter(Boolean).join(" ").trim()||void 0,billingApiUrl:ht,paymentElementMethods:Oa,stripeInstance:Jr,paymentElementBaseOptions:Ai,futureUseSession:A,onTokenizedBody:Ur,onErrorChange:Le,onButtonClick:re,onDecline:p,runBeforeButtonClick:wn,onLoadStateChange:Ns,isProcessing:et,submitButtonColor:yo,submitButtonBorderRadius:Qt,submitButtonStyle:D.submitButton,themeId:je,onExpandApm:It,expandedApmMethod:yr,buttonAppearance:{backgroundColor:D.cardButton?.backgroundColor,borderColor:D.cardInputBorder,textColor:D.cardButton?.color,borderRadius:mo}})]}),f&&(Ec||Rc||Ic)&&(0,c.jsx)(ci,{label:"or pay with card"}),f&&tl]})}var F=require("react/jsx-runtime"),Jo=44,hs="flopay_checkout_saved_payment_resume",Pi=new Map,gi=new Map;function Xl(e,t){t.settled&&t.consumers===0&&Pi.get(e)===t&&Pi.delete(e)}function jd(e,t,r){let n=gi.get(e);if(n&&(!n.sdkGeneratedIdempotencyKey||!t||n.sdkGeneratedIdempotencyKey===t))return n.attempt;let o=r(),i={attempt:o,sdkGeneratedIdempotencyKey:t};gi.set(e,i);let l=()=>{gi.get(e)===i&&gi.delete(e)};return o.then(l,l),o}function Ta(e){return new Promise(t=>setTimeout(t,e))}function hi(e,t,r){let n=Ja({billingApiUrl:e,sdkPackage:"@flopay/react",sdkVersion:ze.SDK_VERSION,enabled:t!==!1});return n.beginCheckout(r),n}function Ma(e){e.flush().catch(()=>{}).finally(()=>e.destroy())}function ps(e,t,r,n,o,i){let l=hi(e,t,r);l.error({errorCode:n,stage:o,paymentMethodCategory:"unknown",...i,...o==="session_read"?{requestCategory:"session_read"}:{}}),Ma(l)}function Jl(e,t,r,n){e.log({name:t==="session_claim"?"session.claim.completed":"session.request.completed",stage:t,requestCategory:t,statusClass:"2xx"}),e.performance({stage:t,durationMs:Math.max(0,e.now()-r),durationMode:"machine",requestCategory:t,...n===void 0?{}:{attempt:n},statusClass:"2xx"})}function Zl(e,t,r,n,o){let i=(0,ze.classifyTelemetryFailure)(t,"CHECKOUT_SESSION_CREATE_FAILED","unknown");return e.performance({stage:r,durationMs:Math.max(0,e.now()-n),durationMode:"machine",requestCategory:r,attempt:o,statusClass:i.statusClass}),t instanceof ze.FloPayError&&t.code==="session_auto_completed"?!1:t instanceof ze.FloPayError&&t.type==="validation_error"?(e.terminal({outcome:"validation_rejected",stage:r,paymentMethodCategory:"unknown"}),!1):i.statusClass==="4xx"?(e.terminal({outcome:"validation_rejected",stage:r,paymentMethodCategory:"unknown",requestCategory:r,statusClass:"4xx"}),!1):(e.error({...i,stage:r,paymentMethodCategory:"unknown",requestCategory:r}),!0)}function ms(e){return!e||e.data.stripe?.publishableKey?!1:!!(0,ze.resolveDirectPaypalConfig)(e.data.paypal)?.clientId}var Vd={name:"provider_unavailable",initialize:()=>Promise.resolve(),getRawProvider:()=>null,destroy:()=>{}};function $d(e){return new to.FloPay(Vd,{publishableKey:"provider_unavailable",...e})}async function ys(e,t){let{publishableKey:r,paypalPublishableKey:n}=Qi(e);return{...await es({publishableKey:r,paypalPublishableKey:n,...t}),publishableKey:r,paypalPublishableKey:n}}function Ps(){return typeof window<"u"&&typeof window.sessionStorage<"u"}function Wd(){if(!Ps())return null;try{let e=window.sessionStorage.getItem(hs);return e?JSON.parse(e):null}catch{return null}}function Ql(e){if(Ps())try{window.sessionStorage.setItem(hs,JSON.stringify(e))}catch(t){console.warn("[FloPayCheckout] Failed to persist PayPal resume state.",t)}}function fs(){if(Ps())try{window.sessionStorage.removeItem(hs)}catch(e){console.warn("[FloPayCheckout] Failed to clear PayPal resume state.",e)}}function Hd(){if(typeof window>"u")return;let e=new URL(window.location.href),t=["payment_intent","payment_intent_client_secret","redirect_status"],r=!1;for(let n of t)e.searchParams.has(n)&&(e.searchParams.delete(n),r=!0);r&&window.history.replaceState(window.history.state,"",e.toString())}function ec(e){if(typeof window>"u")return;let t=new URL(window.location.href);t.searchParams.set("mode",e),window.history.replaceState(window.history.state,"",t.toString())}function gs(e,t){return(0,ze.resolveCheckoutLogLayout)(!!e,t)}function Kd(e,t){return e?"unknown":t==="buttons"?"buttons":"embedded"}function tc(e){return e?.gateways?.stripe?"stripe":e?.gateways?.paypal?"paypal":void 0}function Gd(e){return e?e.account&&Object.keys(e.account).length>0||e.couponCodes!==void 0||e.checkoutMetadata!==void 0||e.tagsData!==void 0||e.utmMetadata!==void 0:!1}function vi({sessionId:e,nonce:t,createSession:r,billingApiUrl:n,telemetry:o,appearance:i,locale:l,loading:d,error:p,onComplete:b,onError:k,onInstrument:w,onDecline:x,onCountryChange:O,onZipChange:M,showPayPal:W=!0,showStripe:_=!0,walletPresentation:h="auto",enabledPaymentMethods:v,showApplePay:te=!0,showGooglePay:S=!0,debug:Pe=!1,layout:j,theme:Q,buttonsTheme:Be,buttonsStyles:se,cardButtonContent:je,cardBackButtonContent:Je,cardTitleContent:me,showSecurityFooter:pe,onButtonClick:Ke,onBeforeButtonClick:Re,enableAVS:_e,cardFieldOrder:Ee,cardPreFormSlot:re,avsLayout:ae,submitLabel:ge,className:Me,initialErrorMessage:K=null,initialPayPalOrderId:ee,children:ye,checkoutMode:L,confirmLabel:ve,renderConfirmButton:Y,onSessionCompleted:be}){let X=(0,ze.resolveBillingApiUrl)(n),ct=(0,C.useMemo)(()=>(0,ze.resolveTheme)(Q),[Q]),Ge=i??ct?.appearance,$e=r?"embedded_checkout":"standard_checkout",lt=gs(ye,j),[Ye,dt]=(0,C.useState)(null),[We,Et]=(0,C.useState)(null),Ut=(0,C.useRef)(null),kt=(0,C.useRef)(null),At=(0,C.useRef)(0),[N,fe]=(0,C.useState)(null),Qe=(0,C.useRef)(null),[G,Ne]=(0,C.useState)(null),Rt=(0,C.useMemo)(()=>r?(0,ut.serializeCreateParams)(r):"",[r]),Ze=r?`create:${Rt}`:`session:${e??""}`,Tt=tc(G),U=(0,C.useRef)(new Set),m=(0,C.useRef)(Ze),P=(0,C.useRef)(Ze);vo(()=>{P.current=Ze,m.current!==Ze&&(m.current=Ze,U.current.clear())},[Ze]);let H=(0,C.useCallback)(z=>{if(P.current===Ze){if(Xi.FLO_INSTRUMENT_ONCE_NAMES.has(z.name)){if(U.current.has(z.name))return;U.current.add(z.name)}(0,tt.invokeMerchantCallback)(()=>w?.(z))}},[Ze,w]),V=Vo(H,Ze),he=(0,C.useRef)(!1),T=(0,C.useCallback)(z=>{if(he.current)return;let B=z.gateway||!Tt?z:{...z,gateway:Tt};H(B)},[H,Tt]);(0,C.useEffect)(()=>{V({class:"lifecycle",name:"checkout.mount"})},[V]);let[A,ne]=(0,C.useState)(e??""),q=e??A,Ce=r?"":q,[rt,Ct]=(0,C.useState)(!0),[ht,xe]=(0,C.useState)(null),[Fr,Vr]=(0,C.useState)(0),[br,Ht]=(0,C.useState)("full"),[$r,Wr]=(0,C.useState)(!1),[Rr,Lt]=(0,C.useState)(K),[mt,it]=(0,C.useState)(null),[Br,Bt]=(0,C.useState)(null),[Hr,Cr]=(0,C.useState)(!1),[Kt,or]=(0,C.useState)(void 0),[pn,en]=(0,C.useState)(""),[ar,zt]=(0,C.useState)(!1),[Tr,mr]=(0,C.useState)(!1),[jt,Sr]=(0,C.useState)(!1),Vt=(0,C.useRef)(null),ur=(0,C.useRef)(0),qt=(0,C.useRef)(void 0),[Ae,mn]=(0,C.useState)("loading"),[yn,fn]=(0,C.useState)(0),ir=(0,C.useRef)(!1),Dr=(0,C.useRef)(!1),Mr=(0,C.useRef)(!1),De=(0,C.useRef)(null),vt=(0,C.useRef)(null),f=(0,C.useMemo)(()=>({checkoutMode:L??br,layout:Kd(ye,j)}),[L,ye,br,j]),nt=(0,C.useRef)(b);nt.current=b;let ie=(0,C.useRef)(k);ie.current=k;let Er=(0,C.useRef)(x);Er.current=x;let Kr=(0,C.useCallback)(z=>ei(De,async B=>{try{return await z(B)}catch(ce){throw B.aborted?Wo(ce):ce}}),[]);(0,C.useEffect)(()=>()=>{De.current?.abort(),De.current=null},[]);let Zt=(0,C.useCallback)((z,B)=>{Ut.current=z,Et(z),Qe.current=B,fe(B)},[]),Or=(0,C.useCallback)(()=>{let z=kt.current;z&&(kt.current=null,z.destroy())},[]);(0,C.useEffect)(()=>{hr(We)?.setCheckoutContext(f),N&&N!==We&&hr(N)?.setCheckoutContext(f)},[We,N,f]);let St=(0,C.useRef)(be);St.current=be;let xn=(0,C.useCallback)(z=>{mn(z),!(z!=="exhausted"||Mr.current)&&(Mr.current=!0,ie.current?.(new ze.FloPayError("PayPal is temporarily unavailable. Please try again.","api_error",{code:"paypal_init_timeout"})))},[]),no=(0,C.useCallback)(()=>{mn("retrying"),fn(z=>z+1)},[]);(0,C.useEffect)(()=>{mn("loading"),fn(0),Mr.current=!1},[q]),(0,C.useEffect)(()=>{console.info("[FloPay] Checkout initialized",{sdk_version:ze.SDK_VERSION,checkout_type:$e,checkout_layout:lt,billing_api_url:X})},[lt,$e,X]);let Dt=(0,C.useMemo)(()=>r?(0,ut.serializeCreateParams)(r,!0):"",[r]),Gr=(0,C.useMemo)(()=>pn===Dt?Kt:void 0,[Kt,pn,Dt]),gn=(0,C.useMemo)(()=>r?Hi(r,Gr):void 0,[r,Gr]),hn=L??gn?.checkoutMode??"full",Gt=(0,C.useMemo)(()=>gn?{...gn,checkoutMode:hn}:void 0,[gn,hn]);(0,C.useEffect)(()=>{or(void 0),en(Dt),qt.current=void 0,Vt.current=null,Sr(!1)},[Dt]),(0,C.useEffect)(()=>{Lt(K)},[K]);let An=(0,C.useCallback)((z,B,ce)=>{(0,tt.invokeMerchantCallback)(()=>{Er.current?.(gr(z,B,ce))})},[]),Fn=(0,C.useCallback)(async(z,B)=>{Lt(null),Bt(null),Cr(!1),it("processing");let ce=B?.sessionId??z.id,Se=z.clientSecret||t,It=tc(z),Yt=Ut.current??Qe.current,Oe=hr(Yt),J=Yt?null:hi(X,o,f),Z={log:Te=>{Oe?Oe.log(Te):J?.log(Te)},error:Te=>{Oe?Oe.error(Te):J?.error(Te)},terminal:Te=>{Oe?Oe.terminal(Te):J?.terminal(Te)},performance:Te=>{Oe?Oe.performance(Te):J?.performance(Te)},now:()=>Oe?.now()??J?.now()??0,elapsed:Te=>Oe?.elapsed(Te)??Math.max(0,(J?.now()??Te)-Te)},$=Z.now(),y=!!(B?.initialAutoProcessingError||B?.initialAutoProcessingPending),g=!1,E,de=()=>{g||(g=!0,y=!0,E=Z.now(),Z.log({name:"checkout.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}),Z.log({name:"operation.recovery.started",stage:"recovery",paymentMethodCategory:"saved"}))},Fe=!1,He=()=>{Fe||(Fe=!0,Z.log({name:"payment.processing.completed",stage:"processing",paymentMethodCategory:"saved"}),Z.performance({stage:"processing",durationMs:Z.elapsed($),durationMode:"machine",paymentMethodCategory:"saved",requestCategory:"process_payment"}),E!==void 0&&Z.performance({stage:"recovery",durationMs:Z.elapsed(E),durationMode:"machine",paymentMethodCategory:"saved"}))};Z.log({name:"payment.method.selected",stage:"processing",paymentMethodCategory:"saved"}),he.current=!0;try{Z.log({name:"payment.processing.started",stage:"processing",paymentMethodCategory:"saved"})}finally{he.current=!1}V({class:"lifecycle",name:"payment.processing.started",provider:It}),y&&de();let Xt;try{let Te=_l(B?.initialAutoProcessingError),Xe=B?.initialAutoProcessingError?.type==="3ds_required"&&!B.initialAutoProcessingError.threeDSecureToken&&B.initialAutoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:B.initialAutoProcessingError.nextActionRedirectUrl}:null,ot,wt=we=>(de(),Kr(D=>Ho(we,{billingApiUrl:X,sessionId:ce,nonce:Se,session:z,signal:D})));if(Xe)ot=await wt(Xe);else if(Te)de(),Te.type==="paypal_redirect_required"&&vt.current?.publishableKey&&Ql({sessionId:ce,publishableKey:vt.current.publishableKey,paypalPublishableKey:vt.current.paypalPublishableKey}),ot=await Kr(we=>ri(Te,{flopay:Ut.current,paypalFlopay:Qe.current,attempt3DS:B?.attempt3DS,billingApiUrl:X,sessionId:ce,session:z,telemetry:!1,signal:we})),Te.type==="paypal_redirect_required"&&fs();else if(B?.initialAutoProcessingPending){let we=B.initialAutoProcessingPending,D=new to.PaymentAPI(X,{telemetry:!1}),le=await Kr(et=>D.waitForCheckoutSessionCompletion(we.sessionId,{initialDelayMs:we.retryAfterMs,nonce:Se,statusUrl:we.statusUrl,signal:et})),yt=lo(le,z),Ve=le.autoProcessingError?.type==="3ds_required"&&le.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:le.autoProcessingError.nextActionRedirectUrl}:null;if(Ve)ot=await wt(Ve);else{if(!Xn(yt))throw No(yt);ot=Yn(yt,ce)}}else{if(B?.initialAutoProcessingError)throw jn(B.initialAutoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:B.initialAutoProcessingError.checkoutMethod});if(B?.fromCreateSession)return B?.fallbackToFull&&(Ht("full"),ec("full")),!1;{let we=await Ko({billingApiUrl:X,sessionId:ce,session:z,nonce:Se,telemetry:!1});we.type==="success"?ot=we.result:we.type==="next_action_required"?ot=await wt(we):(de(),we.type==="paypal_redirect_required"&&vt.current?.publishableKey&&Ql({sessionId:ce,publishableKey:vt.current.publishableKey,paypalPublishableKey:vt.current.paypalPublishableKey}),ot=await Kr(D=>ri(we,{flopay:Ut.current,paypalFlopay:Qe.current,attempt3DS:B?.attempt3DS,billingApiUrl:X,sessionId:ce,session:z,telemetry:!1,signal:D})),we.type==="paypal_redirect_required"&&fs())}}ce&&(0,_n.markSessionRecentlyCompleted)(ce),He(),y&&(Z.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),Z.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),Z.terminal({outcome:ot.status==="authorized"?"payment_authorized":"payment_succeeded",paymentMethodCategory:"saved"}),Cr(ot.status==="authorized"),it("success"),await Ta(600),Xt=()=>nt.current?.(ot)}catch(Te){let Xe=so(Sa(Te),ce);if(Xe.code==="three_ds_aborted")return!1;let ot=Xe.checkoutMethod??Ca;Lt(Xe.message),Bt(Xe.message),Cr(!1),B?.fallbackToFull&&(Z.log({name:"operation.fallback",stage:"recovery",paymentMethodCategory:"saved"}),Ht("full"),ec("full")),He();let wt=Xe.statusCode===void 0?void 0:(0,ze.telemetryStatusClass)(Xe.statusCode,"unknown"),we=wt==="4xx"?{requestCategory:"process_payment",statusClass:wt}:{},D=wt===void 0||wt==="4xx";if(D&&(Xe.telemetryOutcome==="payment_declined"||!!(Xe.declineCode||Xe.code?.toLowerCase().includes("declin"))))Z.terminal({outcome:"payment_declined",paymentMethodCategory:"saved",...we});else if(D&&(Xe.telemetryOutcome==="validation_rejected"||Xe.type==="validation_error"))Z.terminal({outcome:"validation_rejected",paymentMethodCategory:"saved",...we});else{let Ve=(0,ze.classifyTelemetryFailure)(Te,y?"RECOVERY_FAILED":"PAYMENT_PROCESSING_FAILED","unknown"),et=Xe.telemetryRequestCategory??"process_payment";he.current=!0;try{Z.error({...Ve,...Xe.telemetryFailureCategory?{failureCategory:Xe.telemetryFailureCategory}:{},stage:y?"recovery":"processing",paymentMethodCategory:"saved",requestCategory:et})}finally{he.current=!1}V({class:"technical_error",errorCode:"PAYMENT_PROCESSING_FAILED",requestCategory:et,provider:It})}return(0,tt.invokeMerchantCallback)(()=>ie.current?.(Xe)),An(ot,Xe,{code:Xe.code,declineCode:Xe.declineCode}),it("error"),await Promise.allSettled([Ta(400),B?.ensureProvidersReady?B.ensureProvidersReady():Promise.resolve()]),y&&(Z.log({name:"checkout.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"}),Z.log({name:"operation.recovery.completed",stage:"recovery",paymentMethodCategory:"saved"})),!1}finally{He(),J&&Ma(J),it(null),Bt(null)}return(0,tt.invokeMerchantCallback)(Xt),!0},[An,V,t,X,Kr,o,f]);(0,C.useEffect)(()=>{if(typeof window>"u"||Dr.current)return;let z=new URLSearchParams(window.location.search),B=z.get("payment_intent_client_secret");if(!B)return;let ce=Wd();ce&&(Dr.current=!0,(async()=>{let Se,It=0;Lt(null),Bt(null),it("processing"),Wr(!0);try{if(z.get("redirect_status")==="failed")throw Object.assign(new ze.FloPayError("PayPal payment was declined. Please try again.","api_error",{declineCode:"paypal_redirect_failed"}),{checkoutMethod:"paypal"});let{flopay:Yt,paypalFlopay:Oe}=await es({publishableKey:ce.publishableKey,paypalPublishableKey:ce.paypalPublishableKey,billingApiUrl:X,locale:l,telemetry:o});Se=hr(Oe??Yt),Se?.setCheckoutContext(f),It=Se?.now()??0,Se?.log({name:"provider.redirect.resumed",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"}),Se?.log({name:"operation.recovery.started",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"});let J=(Oe??Yt)?.getRawProvider();if(!J)throw Object.assign(new ze.FloPayError("PayPal is not available.","api_error"),{checkoutMethod:"paypal"});let{paymentIntent:Z,error:$}=await J.retrievePaymentIntent(B);if($)throw Object.assign(new ze.FloPayError($.message??"Failed to retrieve PayPal payment status.","api_error",{code:$.code}),{checkoutMethod:"paypal"});let y=yl(Z?.status);if(!Z||y==="failed")throw Object.assign(new ze.FloPayError("PayPal payment was not completed. Please try again.","api_error"),{checkoutMethod:"paypal"});let g=typeof Z.payment_method=="string"?Z.payment_method:Z.payment_method?.id,E=y;if(ce.sessionId){let He=(await new to.PaymentAPI(X,{telemetry:!1}).getUnifiedCheckoutSession(ce.sessionId)).data.session;if(He&&He.status!=="complete"){let Xt=await Ko({billingApiUrl:X,sessionId:ce.sessionId,session:He,telemetry:!1,tokenizedData:{id:g??Z.id,type:"card",threeDSecureActionResultTokenId:Z.id,isPaypal:!0}});if(Xt.type!=="success")throw Object.assign(new ze.FloPayError("Failed to finalize PayPal payment.","api_error"),{checkoutMethod:"paypal"});E=Xt.result.status}}ce.sessionId&&(0,_n.markSessionRecentlyCompleted)(ce.sessionId),Se?.log({name:"operation.recovery.completed",stage:"recovery",provider:"paypal",paymentMethodCategory:"paypal"}),Se?.performance({stage:"redirect_resume",durationMs:Se.elapsed(It),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),Se?.terminal({outcome:"payment_succeeded",provider:"paypal",paymentMethodCategory:"paypal"}),it("success"),await Ta(600),(0,tt.invokeMerchantCallback)(()=>nt.current?.({status:E,paymentIntentId:Z.id,paymentMethodId:g,checkoutMethod:"paypal"}))}catch(Yt){let Oe=so(Sa(Yt),ce.sessionId),J=Oe.checkoutMethod??"paypal",Z=!!(Oe.declineCode||Oe.code?.toLowerCase().includes("declin"));if(Se)Se.performance({stage:"redirect_resume",durationMs:Se.elapsed(It),durationMode:"machine",provider:"paypal",paymentMethodCategory:"paypal"}),Z?Se.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}):Se.error({errorCode:"REDIRECT_RESUME_FAILED",stage:"redirect_resume",provider:"paypal",paymentMethodCategory:"paypal"});else if(Z){let $=hi(X,o,f);$.terminal({outcome:"payment_declined",provider:"paypal",paymentMethodCategory:"paypal"}),Ma($)}else ps(X,o,f,"REDIRECT_RESUME_FAILED","redirect_resume");Lt(Oe.message),Bt(Oe.message),(0,tt.invokeMerchantCallback)(()=>ie.current?.(Oe)),An(J,Oe,{code:Oe.code,declineCode:Oe.declineCode}),it("error"),await Ta(400)}finally{fs(),Hd(),it(null),Bt(null),Wr(!1)}})())},[An,l,X,o,f]);let Lr=(0,C.useRef)(null),Bn=(0,C.useMemo)(()=>Gt?(0,ut.serializeCreateParams)(Gt):"",[Gt]),tn=(0,C.useRef)(Gt);tn.current=Gt,(0,C.useEffect)(()=>{ne(e??"")},[e]),(0,C.useEffect)(()=>{ir.current=!1,Lt(K),Bt(null),Cr(!1),it(null)},[Bn,K,e]);async function Dn(z,B,ce){let Se=hi(X,o,f),It=new to.PaymentAPI(X,{telemetry:!1}),Yt=!1;try{let Oe=z.idempotencyKey===void 0?void 0:(0,ze.resolveIdempotencyKey)(z.idempotencyKey),J=(0,ut.readCachedInlineSession)(B,ce),Z=(0,ut.readCachedInlineIdempotencyKey)(B,ce);J?.canonicalIdentity===ce&&Z&&Z.canonicalIdentity===void 0&&((0,ut.persistCachedInlineIdempotencyKey)(B,ce,Z.idempotencyKey),Z={...Z,canonicalIdentity:ce});let $=Oe??(Z?.canonicalIdentity===ce?Z.idempotencyKey:void 0),y,g=!1;Se.log({name:J?"operation.cache.hit":"operation.cache.miss",stage:"session_create",requestCategory:"session_create"});let E=J?.sid??null,de=null,Fe,He,Xt=!1;if(E)try{de=await It.getUnifiedCheckoutSession(E,J?.nonce),J&&J.canonicalIdentity===void 0&&((0,ut.legacyCachedSessionMatchesDraft)(de.data.session,z)?((0,ut.persistCachedInlineSession)(B,ce,E,J.nonce??de.data.session?.clientSecret),Z&&Z.canonicalIdentity===void 0&&((0,ut.persistCachedInlineIdempotencyKey)(B,ce,Z.idempotencyKey),$??($=Z.idempotencyKey))):((0,ut.clearCachedInlineCheckout)(B,ce),Z=null,$=Oe,E=null,de=null));let Xe=de?.data.session?.status,ot=de?.data.session,wt=ot?.clientSecret||J?.nonce;if(E&&ot?.buyerIdentified===!1&&wt&&(He=Lo(It,E,wt,z.account)),E&&de&&Xe==="complete"){if((0,_n.wasSessionRecentlyCompleted)(E))return{sid:E,result:de};(0,ut.clearCachedInlineCheckout)(B,ce),E=null,de=null,g=!0}}catch{Se.log({name:"operation.fallback",stage:"session_read",requestCategory:"session_read"}),J?.canonicalIdentity===void 0?((0,ut.clearCachedInlineCheckout)(B,ce),$=Oe):(0,ut.clearCachedInlineSession)(B,ce),E=null}if(!E){!Oe&&(g||!$)&&($=(0,ze.resolveIdempotencyKey)(),y=$),$&&(0,ut.persistCachedInlineIdempotencyKey)(B,ce,$);let Xe=Se.now(),ot=0;Se.log({name:"session.create.started",stage:"session_create",requestCategory:"session_create"});let wt={...z,idempotencyKey:$,avsCheck:!!_e,avsConfig:typeof _e=="object"?_e:void 0,checkoutType:"embedded_checkout",checkoutLayout:gs(ye,j)};Object.defineProperty(wt,to.SESSION_CREATE_TELEMETRY,{configurable:!1,enumerable:!1,value:{onAttempt:le=>{ot=Math.max(ot,le)}}});let we=()=>{Jl(Se,"session_create",Xe,ot)},D=le=>{Zl(Se,le,"session_create",Xe,ot)&&V({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_create"})};try{if((0,ze.isDetachedSessionEligible)(wt)){let le=await It.createDetachedSession(wt);le.claimed.catch(()=>{}),de=le.shell,E=le.sessionId,He=le.claim;let yt=Se.now();Se.log({name:"session.claim.started",stage:"session_claim",requestCategory:"session_claim"}),Fe=le.claimed.then(Ve=>{let et=Ve.data.session?.id??le.sessionId;return et&&(0,ut.persistCachedInlineSession)(B,ce,et,Ve.data.session?.clientSecret??le.nonce),Jl(Se,"session_claim",yt),we(),Ve},Ve=>{throw(0,ut.clearCachedInlineSession)(B,ce),Zl(Se,Ve,"session_claim",yt,0)&&V({class:"technical_error",errorCode:"CHECKOUT_SESSION_CREATE_FAILED",requestCategory:"session_claim"}),Ve}).finally(()=>Ma(Se)),Fe.catch(()=>{}),Yt=!0,Se.log({name:"session.shell.ready",stage:"session_shell",requestCategory:"session_create",paymentMethodCategory:"card",statusClass:"2xx"}),Se.performance({stage:"session_shell",durationMs:Se.now()-Xe,durationMode:"machine",requestCategory:"session_create",attempt:ot,statusClass:"2xx",paymentMethodCategory:"card"})}else de=await It.createAndFetchSession(wt),we()}catch(le){throw D(le),le}E=de.data.session?.id??E??"",E&&!Fe&&(0,ut.persistCachedInlineSession)(B,ce,E,de.data.session?.clientSecret)}let Te=de?.data.session;return!He&&E&&Te?.buyerIdentified===!1&&Te.clientSecret&&(He=Lo(It,E,Te.clientSecret,z.account)),{sid:E??"",result:de,sdkGeneratedIdempotencyKey:y,...Fe?{claimed:Fe}:{},...He?{claim:He}:{},...Xt?{claimRequiresIdentity:!0}:{}}}finally{Yt||Ma(Se)}}let Hn=(0,C.useRef)(Dn);vo(()=>{Hn.current=Dn},[Dn]);let Yr=(0,C.useCallback)(async(z,B)=>{let ce=tn.current;if(!ce)throw new ze.FloPayError("createSession is required to bootstrap checkout.","validation_error");let Se=Hi(ce,z),It=(0,ut.serializeCreateParams)(Se),Yt=(0,ut.hashCreateParams)(Se),Oe=Pi.get(It);if(!Oe){let $={canonicalIdentity:It,promise:Hn.current(Se,Yt,It),consumers:0,settled:!1};Oe=$,Pi.set(It,$);let y=()=>{$.settled=!0,Xl(It,$)};$.promise.then(y,y)}Oe.consumers+=1;let J=!1,Z=()=>{J||(J=!0,Oe.consumers-=1,Xl(It,Oe))};B?.(Z);try{let $=await Oe.promise;Lr.current=It,z&&(en(Dt),or(Te=>ul(Te,z)));let{sid:y,result:g,claimed:E,claim:de,claimRequiresIdentity:Fe}=$;if(qt.current=de,Sr(Fe===!0),dt(g),g.data.session&&Ne(g.data.session),y&&ne(y),E){ur.current+=1;let Te=ur.current;Vt.current=E,mr(!0),E.then(Xe=>{ur.current===Te&&(Vt.current===E&&(Vt.current=null),dt(Xe),Xe.data.session&&Ne(Xe.data.session),mr(!1),Sr(!1))},Xe=>{ur.current===Te&&(Vt.current===E&&(Vt.current=null),mr(!1),Sr(!1),xe(Xe instanceof ze.FloPayError?Xe:new ze.FloPayError(Xe instanceof Error?Xe.message:"Failed to create session","api_error")))})}else ur.current+=1,Vt.current=null,mr(!1),Sr(!1);let{flopay:He,paypalFlopay:Xt}=await ys(g,{billingApiUrl:X,locale:l,telemetry:o});return Zt(He,Xt),Ct(!1),$}catch($){throw Lr.current===It&&(Lr.current=null),$}finally{B||Z()}},[Dt,Zt,l,X,o]),Pn=(0,C.useRef)(Fn);Pn.current=Fn;let vn=(0,C.useRef)(Yr);vn.current=Yr;let Nt=(0,C.useCallback)(async z=>{if(!Gd(z)||ar)return{sessionId:A,session:G};zt(!0);try{let B=await Yr(z);return{sessionId:B.sid,session:B.result.data.session??null}}finally{zt(!1)}},[Yr,ar,A,G]),Xr=(0,C.useCallback)(async z=>{let B=qt.current;if(!B)return;let ce=ur.current,Se=await B(z);ur.current===ce&&(dt(Se),Se.data.session&&Ne(Se.data.session))},[]),xr=(0,C.useCallback)(async()=>{await Vt.current},[]),bn=(0,C.useCallback)(async()=>(await xr(),{proceed:!0}),[xr]);(0,C.useEffect)(()=>{let z=!1,B,ce=++At.current;Or(),xe(null),Vr(0);let Se=()=>{z=!0,At.current===ce&&(At.current+=1,Or())},It=tn.current;if(Bn&&It)return Ht(hn),Ct(!1),Lr.current===Bn?Se:(Ne(pl(It,L)),(async()=>{let J=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),Z=hn==="auto"&&!ir.current&&!J;Z&&(Lt(null),Bt(null),it("processing"));try{let $=await vn.current(void 0,de=>{B=de}),y=$.result.data.session??null;vt.current=Qi($.result);let g=ms($.result),E=(0,_n.wasSessionRecentlyCompleted)($.sid||y?.id);if(!z&&Z&&y&&!g&&!E){ir.current=!0,await jd(Bn,$.sdkGeneratedIdempotencyKey,()=>Pn.current(y,{attempt3DS:!0,fallbackToFull:!0,fromCreateSession:!0,initialAutoProcessingError:$.result.autoProcessingError,initialAutoProcessingPending:$.result.autoProcessingPending,autoProcessingAttempted:$.result.autoProcessingAttempted,sessionId:$.sid||y.id}));return}!z&&Z&&((g||E)&&(ir.current=!0),it(null),Bt(null))}catch($){if(z)return;let y=Ha($);if(Z&&y==="session_auto_completed"){ir.current=!0,it("success"),await Ta(600),z||((0,tt.invokeMerchantCallback)(()=>{nt.current?.({status:"succeeded"})}),it(null),Bt(null));return}Z&&(it(null),Bt(null));let g=$ instanceof ze.FloPayError?$:new ze.FloPayError($ instanceof Error?$.message:"Failed to create session","api_error");xe(g)}finally{B?.(),B=void 0}})(),()=>{Se(),B?.()});Ct(!0);async function Yt(){let J=!1,Z=null;try{let $=new to.PaymentAPI(X,{telemetry:!1}),y=await $.getUnifiedCheckoutSession(q,t);if(Z=y,z)return;dt(y);let g=y.data.session??null;if(Ne(g),!g)throw new ze.FloPayError("No session data returned","api_error");let E=g.checkoutMode;if(E==="setup")throw new ze.FloPayError("This is a card setup session. Use FloPayCardSetup instead of FloPayCheckout.","validation_error",{code:"InvalidCardSetupSurface",param:"sessionId"});if(g.status==="authorized"){Ct(!1),(0,tt.invokeMerchantCallback)(()=>{nt.current?.(Yn(g,q)),St.current?.(g.successUrl??"")});return}if(g.status==="complete"){Ct(!1),(0,tt.invokeMerchantCallback)(()=>{St.current?.(g.successUrl??"")});return}if(g.status==="expired")throw Wa(g);J=!0;let de=L??E??"full";Ht(de),ur.current+=1;let Fe=g.clientSecret||t;qt.current=g.buyerIdentified===!1&&Fe?Lo($,q,Fe,{...g.customer?.id?{userId:g.customer.id}:{}}):void 0,mr(!1),Sr(!1);let He=typeof window<"u"&&new URLSearchParams(window.location.search).has("payment_intent"),Xt=ms(y);if(de==="auto"&&!ir.current&&!He&&!Xt){ir.current=!0;let Te=Oe(y);try{if(await Pn.current(g,{attempt3DS:!0,fallbackToFull:!0,ensureProvidersReady:()=>Te,sessionId:q||g.id}),z)return;await Te,z||Ct(!1);return}catch{if(z)return;await Te,z||Ct(!1);return}}await Oe(y),z||Ct(!1)}catch($){if(z)return;let y=dl($,J);if(J&&V({class:"technical_error",errorCode:"SDK_INITIALIZATION_FAILED"}),y){let{errorCode:E,stage:de,...Fe}=y;ps(X,o,f,E,de,Fe)}if(y?.stage==="provider_load"&&(L??Z?.data.session?.checkoutMode??"full")==="full"&&cl(Z,W,_)){let E=$d({billingApiUrl:X,locale:l,telemetry:o});kt.current=E,Zt(E,null),Vr(1),Ct(!1);return}let g=$ instanceof ze.FloPayError&&y?.stage!=="provider_load"?$:ll();g!==$&&(0,tt.invokeMerchantCallback)(()=>ie.current?.(g)),xe(g),Ct(!1)}}async function Oe(J){let{flopay:Z,paypalFlopay:$,...y}=await ys(J,{billingApiUrl:X,locale:l,telemetry:o});vt.current={publishableKey:y.publishableKey,paypalPublishableKey:y.paypalPublishableKey},Zt(Z,$),Vr(0)}return Yt(),Se},[L,Bn,hn,Ce,t,W,_]);let Cn=(0,C.useCallback)(async()=>{if(!Ye||Fr!==1)return;let z=At.current;Vr(2);try{let{flopay:B,paypalFlopay:ce}=await ys(Ye,{billingApiUrl:X,locale:l,telemetry:o});if(At.current!==z)return;Or(),Zt(B,ce),Vr(0)}catch(B){if(At.current!==z)return;let{errorCode:ce,stage:Se,...It}=Wi(B);ps(X,o,f,ce,Se,It)}},[Or,Zt,l,Fr,X,o,f,Ye]),bt=!!(q&&(G?.clientSecret||t)),sr=$r||!bt,yr=(0,C.useCallback)(async()=>{if(!($r||!bt||!G)){Wr(!0),Lt(null);try{await Fn(G,{attempt3DS:!0,fallbackToFull:!0,sessionId:q||G.id})}finally{Wr(!1)}}},[q,$r,bt,Fn,G]),Nr=(0,ze.resolveDirectPaypalConfig)(Ye?.data.paypal,ee),oo=ms(Ye),On=(0,C.useMemo)(()=>{if(!(!Ye||!G||!Ye.data.stripe?.publishableKey))return{billingApiUrl:X}},[Ye,G,X]),Kn=!!(r&&!ye&&j==="buttons"&&Re&&hn==="full"),rn=!!(q&&((0,ze.isMountableVaultBlock)(G?.vault)||(0,Rn.canRecoverHostedCardForm)(G))),lr=(0,C.useMemo)(()=>({session:G,loading:rt,error:ht,checkoutMode:br,inlineSessionDraft:Gt,applyInlineSessionPatch:Kn?Nt:void 0,inlineSessionPatchProcessing:ar,claimPending:Tr,claimRequiresIdentity:jt,claimBuyerIdentity:Xr,waitForDataAttachment:xr}),[G,rt,ht,br,Gt,Kn,Nt,ar,Tr,jt,Xr,xr]),ao=!!r&&j==="buttons"&&!oo&&!rn&&(!We||!On),pr=mt?(0,F.jsx)(qr,{status:mt,errorMessage:Br,authorized:Hr}):null;if(rt&&!rn){if(d)return(0,F.jsxs)(F.Fragment,{children:[d,pr]});if(j==="buttons"){let z=ct?.buttonsLayout?.cardButton?.borderRadius??ct?.appearance.variables?.borderRadius??8,B=ce=>(0,F.jsx)("div",{style:{height:ce,borderRadius:z,background:"#e5e7eb",animation:"flopay-loading-pulse 1.5s ease-in-out infinite"}});return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[W&&B(Jo),_&&(te||S)&&B(Jo),_&&B(Jo),(0,F.jsx)("style",{children:"@keyframes flopay-loading-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]}),pr]})}return(0,F.jsxs)(F.Fragment,{children:[(0,F.jsxs)("div",{style:{display:"flex",justifyContent:"center",padding:32},children:[(0,F.jsx)("div",{style:{width:24,height:24,border:"2px solid #e5e7eb",borderTopColor:"#6b7280",borderRadius:"50%",animation:"spin 0.6s linear infinite"}}),(0,F.jsx)("style",{children:"@keyframes spin { to { transform: rotate(360deg); } }"})]}),pr]})}return ht?p?(0,F.jsx)(En.Provider,{value:lr,children:p(ht)}):(0,F.jsx)(En.Provider,{value:lr,children:(0,F.jsx)("div",{role:"alert","data-testid":"flopay-load-error",style:{padding:24,textAlign:"center",color:"#dc2626",fontSize:14},children:ht.message})}):ao?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(En.Provider,{value:lr,children:(0,F.jsx)(Xd,{onButtonClick:Ke,showPayPal:W,showStripe:_,showApplePay:te,showGooglePay:S,theme:Q,buttonsTheme:Be,buttonsStyles:se,cardButtonContent:je,cardBackButtonContent:Je,cardTitleContent:me})}),pr]}):oo&&G&&Nr?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(En.Provider,{value:lr,children:(0,F.jsxs)("div",{className:Me,style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[Rr&&(0,F.jsx)($o,{icon:!1,children:Rr}),Ae==="retrying"&&(0,F.jsx)("div",{role:"status","aria-live":"polite",children:"PayPal is temporarily unavailable. Retrying\u2026"}),Ae==="exhausted"&&(0,F.jsxs)("div",{role:"alert",children:[(0,F.jsx)("div",{children:"PayPal is temporarily unavailable. Please try again."}),(0,F.jsx)("button",{type:"button",onClick:no,children:"Retry PayPal"})]}),Ae!=="exhausted"&&(0,F.jsx)("div",{"aria-hidden":Ae==="retrying"?!0:void 0,style:Ae==="retrying"?{position:"relative",height:0,opacity:0,pointerEvents:"none"}:void 0,children:(0,F.jsx)(kl,{sessionId:q,nonce:G.clientSecret||void 0,billingApiUrl:X,email:G.customer?.email||Gt?.account?.email,billingName:[G.customer?.firstName,G.customer?.lastName].filter(Boolean).join(" ")||[Gt?.account?.firstName,Gt?.account?.lastName].filter(Boolean).join(" ")||void 0,onBuyerIdentityReady:Xr,clientId:Nr.clientId,environment:Nr.environment,currency:(G.currency??"usd").toUpperCase(),isSubscription:G.mode==="subscription",providerObjectType:Nr.providerObjectType,approvalPresentation:Nr.approvalPresentation,existingOrderId:Nr.existingOrderId,onComplete:b,onErrorChange:Lt,onDecline:x,onButtonClick:Ke,runBeforeButtonClick:bn,onInitializationStateChange:xn,allowAutomaticRetry:yn===0,session:G,telemetry:o,telemetryContext:f,onInstrument:T,debug:Pe},`${Ze}:paypal-init-${yn}`)})]})}),pr]}):br==="confirm"?(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(En.Provider,{value:lr,children:(0,F.jsx)(va,{flopay:We,paypalFlopay:N,options:On??{billingApiUrl:X},onInstrument:T,children:(0,F.jsxs)("div",{className:Me,children:[Rr&&(0,F.jsx)("div",{style:{color:"#dc2626",fontSize:"0.875rem",marginBottom:"0.75rem",textAlign:"center"},children:Rr}),Y?Y({onConfirm:yr,isProcessing:sr}):(0,F.jsx)("button",{type:"button",onClick:yr,disabled:sr,style:{width:"100%",padding:"0.875rem",backgroundColor:"#4A49FF",color:"white",border:"none",borderRadius:"8px",fontSize:"1rem",fontWeight:600,cursor:sr?"not-allowed":"pointer",opacity:sr?.6:1},children:$r?"Processing...":ve??"Confirm Purchase"})]})},Ze)}),pr]}):(!We||!On)&&!(rn&&br==="full")?(0,F.jsx)(F.Fragment,{children:pr}):(0,F.jsxs)(F.Fragment,{children:[(0,F.jsx)(En.Provider,{value:lr,children:(0,F.jsxs)(va,{flopay:We,paypalFlopay:N,options:On??{billingApiUrl:X},onInstrument:T,children:[Fr===1&&(0,F.jsx)("button",{type:"button",onClick:Cn,children:"Retry payment methods"}),ye?(0,F.jsxs)(F.Fragment,{children:[Rr&&(0,F.jsx)("div",{style:{padding:"0.75rem 1rem",marginBottom:"0.75rem",backgroundColor:"#FEF3C7",border:"1px solid #F59E0B",borderRadius:"8px",color:"#92400E",fontSize:"0.875rem"},children:Rr}),(0,F.jsx)(Yd,{sessionId:q,nonce:G?.clientSecret||void 0,billingApiUrl:X,session:G,submitLabel:ge,walletPresentation:h,children:ye})]}):(0,F.jsx)(fi,{sessionId:q,nonce:G?.clientSecret||void 0,telemetry:o,email:G?.customer?.email||Gt?.account?.email,userId:G?.customer?.id||Gt?.account?.userId,firstName:G?.customer?.firstName||Gt?.account?.firstName,lastName:G?.customer?.lastName||Gt?.account?.lastName,totalAmount:G?Math.round((0,ze.buildCheckoutDisplayData)(G).total*100):0,currency:G?.currency?.toLowerCase()??"usd",onComplete:b,onError:k,onDecline:x,error:Rr,onErrorChange:Lt,showPayPal:W,showStripe:_,walletPresentation:h,enabledPaymentMethods:Fr?[]:v??Ye?.data.stripe?.enabledPaymentMethods??G?.gateways?.stripe?.enabledPaymentMethods,enabledPaymentMethodCountries:Ye?.data.stripe?.enabledPaymentMethodCountries,showApplePay:te,showGooglePay:S,layout:j,theme:Q,buttonsTheme:Be,buttonsStyles:se,appearance:Ge,cardButtonContent:je,cardBackButtonContent:Je,cardTitleContent:me,onButtonClick:Ke,onBeforeButtonClick:Re,onBuyerIdentityReady:Xr,enableAVS:_e,...Ee?{cardFieldOrder:Ee}:{},...re?{cardPreFormSlot:re}:{},avsLayout:ae,country:G?.customer?.country,city:G?.customer?.city,state:G?.customer?.state,onCountryChange:O,onZipChange:M,avsCheck:!!_e,checkoutType:r?"embedded_checkout":"standard_checkout",checkoutLayout:gs(ye,j),className:Me,submitLabel:ge,directPaypal:Nr,isSubscription:G?.mode==="subscription",session:G,dataAttachmentPending:Tr,dataAttachmentRequiresIdentity:jt,debug:Pe})]},Ze)}),pr]})}function Yd({sessionId:e,nonce:t,billingApiUrl:r,session:n,submitLabel:o,walletPresentation:i,children:l}){return(0,F.jsx)(F.Fragment,{children:C.default.Children.map(l,d=>{if(!C.default.isValidElement(d))return d;let p=d.props,b={};return p.sessionId||(b.sessionId=e),!p.nonce&&t&&(b.nonce=t),p.billingApiUrl||(b.billingApiUrl=r),p.submitLabel===void 0&&o!==void 0&&(b.submitLabel=o),p.walletPresentation===void 0&&(b.walletPresentation=i),n?.customer&&(p.email||(b.email=n.customer.email),p.userId||(b.userId=n.customer.id),p.firstName||(b.firstName=n.customer.firstName),p.lastName||(b.lastName=n.customer.lastName)),Object.keys(b).length===0?d:C.default.cloneElement(d,b)})})}function Xd({onButtonClick:e,showPayPal:t,showStripe:r=!0,showApplePay:n,showGooglePay:o,theme:i,buttonsTheme:l,buttonsStyles:d,cardButtonContent:p,cardBackButtonContent:b,cardTitleContent:k}){let[w,x]=(0,C.useState)(!1),O=(0,C.useMemo)(()=>(0,ze.resolveTheme)(i),[i]),M=(0,C.useMemo)(()=>{let v=O?.buttonsLayout??(0,ze.resolveButtonsLayoutTheme)(l);return d?{...v,...d,cardButton:{...v.cardButton,...d.cardButton},cardFormContainer:{...v.cardFormContainer,...d.cardFormContainer},backButton:{...v.backButton,...d.backButton},backButtonIcon:{...v.backButtonIcon,...d.backButtonIcon},submitButton:{...v.submitButton,...d.submitButton},title:{...v.title,...d.title}}:v},[O,l,d]),W=O?.buttonsLayout?.cardButton?.borderRadius??O?.appearance.variables?.borderRadius??8,_=v=>(0,F.jsx)("div",{style:{height:v,borderRadius:W,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}}),h=p===void 0?{boxSizing:"border-box",height:Jo,padding:"0 1rem"}:{padding:"0.9rem 1rem"};if(w){let v=M.cardInputBorder??"#e5e7eb",te=M.cardInputBackground??"white",S=Bo(b),Pe=Bo(k);return(0,F.jsxs)("div",{style:{backgroundColor:M.cardFormContainer?.backgroundColor??"white",borderRadius:"8px",animation:"flopay-interim-expand 0.35s cubic-bezier(0.4, 0, 0.2, 1) both",overflow:"hidden",...M.cardFormContainer},children:[(0,F.jsxs)("div",{style:{display:"flex",alignItems:"center",padding:"0.75rem 0 0.625rem"},children:[(0,F.jsxs)("button",{type:"button",onClick:()=>x(!1),"aria-label":"Back to payment methods",style:{display:"inline-flex",alignItems:"center",gap:S?0:"0.5rem",background:"none",border:"none",color:"#4b5563",fontSize:"0.85rem",fontWeight:500,padding:0,flexShrink:0,opacity:1,cursor:"pointer",...M.backButton},children:[(0,F.jsx)("span",{style:{display:"inline-flex",alignItems:"center",justifyContent:"center",width:28,height:28,borderRadius:"50%",backgroundColor:"#f3f4f6",...M.backButtonIcon},children:(0,F.jsx)("svg",{"aria-hidden":"true",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:(0,F.jsx)("path",{d:"M15 18l-6-6 6-6"})})}),(0,F.jsx)(Oo,{content:b})]}),Pe?(0,F.jsx)("div",{style:{flex:1}}):(0,F.jsx)("div",{style:{flex:1,textAlign:"center",fontWeight:600,fontSize:"1.05rem",color:"#262833",paddingRight:80,...M.title},children:(0,F.jsx)(ua,{content:k})})]}),(0,F.jsx)("div",{style:{backgroundColor:te,border:`1px solid ${v}`,borderTopLeftRadius:8,borderTopRightRadius:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"60%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,F.jsxs)("div",{style:{display:"flex"},children:[(0,F.jsx)("div",{style:{flex:1,backgroundColor:te,borderTop:"none",borderRight:"none",borderBottom:`1px solid ${v}`,borderLeft:`1px solid ${v}`,borderBottomLeftRadius:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"50%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,F.jsx)("div",{style:{flex:1,backgroundColor:te,borderTop:"none",borderRight:`1px solid ${v}`,borderBottom:`1px solid ${v}`,borderLeft:`1px solid ${v}`,borderBottomRightRadius:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"40%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})})]}),(0,F.jsx)("div",{style:{backgroundColor:te,border:`1px solid ${v}`,borderRadius:8,marginTop:8,padding:12,height:45},children:(0,F.jsx)("div",{style:{width:"45%",height:14,borderRadius:4,background:"#e5e7eb",animation:"flopay-interim-pulse 1.5s ease-in-out infinite"}})}),(0,F.jsx)("div",{style:{height:50,borderRadius:8,marginTop:16,background:"#c8c8ff",animation:"flopay-interim-pulse 1.5s ease-in-out infinite",...M.submitButton,opacity:.5}}),(0,F.jsx)("style",{children:`
41
41
  @keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }
42
42
  @keyframes flopay-interim-expand {
43
43
  0% { opacity: 0; max-height: 0; transform: translateY(-12px); }
44
44
  40% { opacity: 1; }
45
45
  100% { opacity: 1; max-height: 600px; transform: translateY(0); }
46
46
  }
47
- `})]})}return(0,O.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&I(ra),n&&(r||o)&&I(ra),n&&(0,O.jsx)("button",{type:"button",onClick:()=>{e?.("card"),M(!0)},style:{width:"100%",...b,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:w.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,...w.cardButton},onMouseDown:C=>{C.currentTarget.style.transform="scale(0.985)"},onMouseUp:C=>{C.currentTarget.style.transform="scale(1)"},children:(0,O.jsx)(No,{content:p})}),(0,O.jsx)("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}var lr=require("react/jsx-runtime"),Sp=44;function Kc(e){return new Promise(t=>setTimeout(t,e))}function wp(e,t){return e instanceof cr.FloPayError?e:new cr.FloPayError(e instanceof Error?e.message:t,"api_error")}function kp(e,t){return!(!t||e.type==="validation_error"||e.checkoutMethod&&e.checkoutMethod!=="card"&&e.checkoutMethod!=="paypal")}function Rp(e){if(e.createSession)return{...e.createSession,checkoutMode:"auto"};if(!e.clientId||!e.account||!e.successUrl||!e.cancelUrl)return null;let t=e.products!=null;return{clientId:e.clientId,products:e.products,items:t?void 0:e.items,subscriptions:t?void 0:e.subscriptions,account:e.account,successUrl:e.successUrl,cancelUrl:e.cancelUrl,couponCodes:e.couponCodes,tagsData:e.tagsData,utmMetadata:e.utmMetadata,checkoutMode:"auto"}}function Gc({sessionId:e,nonce:t,createSession:n,paymentMethodId:r,checkoutMethod:o,clientId:a,products:i,items:c,subscriptions:p,account:u,successUrl:h,cancelUrl:P,couponCodes:M,tagsData:_,utmMetadata:w,billingApiUrl:A,locale:I,theme:b,appearance:C,buttonsTheme:G,buttonsStyles:k,onSuccess:ye,onError:N,onDecline:H,children:_e,disabled:te=!1,type:Ne="button",style:Ye,...be}){let fe=(0,ut.useMemo)(()=>(0,cr.resolveBillingApiUrl)(A),[A]),We=(0,ut.useMemo)(()=>Rp({createSession:n,clientId:a,products:i,items:c,subscriptions:p,account:u,successUrl:h,cancelUrl:P,couponCodes:M,tagsData:_,utmMetadata:w}),[u,P,a,M,n,i,c,p,h,_,w]),[Te,Fe]=(0,ut.useState)(!1),[Ae,re]=(0,ut.useState)(null),[se,Ce]=(0,ut.useState)(null),[Be,Y]=(0,ut.useState)(!1),[Q,Pe]=(0,ut.useState)(null),[z,we]=(0,ut.useState)(null),J=(0,ut.useRef)(!0),Ee=(0,ut.useRef)(null),Z=(0,ut.useRef)(z),it=(0,ut.useRef)(ye),He=(0,ut.useRef)(N),Ve=(0,ut.useRef)(H),at=(0,ut.useCallback)(g=>hi(Ee,async S=>{try{return await g(S)}catch(K){throw S.aborted?lo(K):K}}),[]);(0,ut.useEffect)(()=>{Z.current=z},[z]),(0,ut.useEffect)(()=>{it.current=ye},[ye]),(0,ut.useEffect)(()=>{He.current=N},[N]),(0,ut.useEffect)(()=>{Ve.current=H},[H]),(0,ut.useEffect)(()=>(J.current=!0,()=>{J.current=!1,Ee.current?.abort()}),[]),(0,ut.useEffect)(()=>{if(typeof window>"u")return;let g=S=>{S.key==="Escape"&&we(null)};return window.addEventListener("keydown",g),()=>{window.removeEventListener("keydown",g)}},[]);let Ke=(0,ut.useCallback)((g,S=Ta)=>{Ve.current?.(fn(S,g,{code:g.code,declineCode:g.declineCode}))},[]),st=(0,ut.useCallback)(async g=>{J.current&&(Ce(null),Y(g.result.status==="authorized"),re("success"),await Kc(600),J.current&&Je(()=>it.current?.(g)))},[]),je=(0,ut.useCallback)(async(g,S)=>{J.current&&(He.current?.(g),S?.emitDecline&&Ke(g,S.method),Ce(g.message),Y(!1),re("error"),await Kc(400))},[Ke]),St=(0,ut.useCallback)(async(g,S,K)=>{let W=g.data.session??null;if(!W)throw to(new cr.FloPayError("No session data returned","api_error"),S);let Se=W.clientSecret||t;if($r(W)){await st({result:jr(W,S),session:W,sessionId:W.id||S,autoCompleted:!1});return}if(W.status==="expired")throw to(ti(W),W.id||S);try{if(g.autoProcessingPending){let B=g.autoProcessingPending,oe=new Ui.PaymentAPI(fe),j=await at(gt=>oe.waitForCheckoutSessionCompletion(B.sessionId,{initialDelayMs:B.retryAfterMs,nonce:Se,statusUrl:B.statusUrl,signal:gt})),Ie=ro(j,W),tt=j.autoProcessingError?.type==="3ds_required"&&j.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:j.autoProcessingError.nextActionRedirectUrl}:null;if(tt&&S&&Se){let gt=await at(yt=>Xo(tt,{billingApiUrl:fe,sessionId:S,nonce:Se,session:W,signal:yt,telemetry:!0}));await st({result:gt,session:W,sessionId:W.id||S,autoCompleted:!1});return}if(j.autoProcessingError)throw Dr(j.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:j.autoProcessingError.checkoutMethod});if(!$r(Ie))throw qo(Ie);await st({result:jr(Ie,S),session:Ie,sessionId:Ie.id||S,autoCompleted:!1});return}if(g.autoProcessingError){let B=g.autoProcessingError.nextActionRedirectUrl;if(g.autoProcessingError.type==="3ds_required"&&B&&S&&Se){let oe=await at(gt=>Is({billingApiUrl:fe,sessionId:S,nonce:Se,nextActionRedirectUrl:B,signal:gt}));if(oe.status==="declined")throw Dr({type:oe.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:oe.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:g.autoProcessingError.checkoutMethod});let Ie=await new Ui.PaymentAPI(fe).waitForCheckoutSessionCompletion(S,{initialDelayMs:0,nonce:Se}),tt=ro(Ie,W);if(!$r(tt))throw Dr({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:g.autoProcessingError.checkoutMethod});await st({result:jr(tt,S),session:tt,sessionId:tt.id||S,autoCompleted:!1});return}throw Dr(g.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:g.autoProcessingError.checkoutMethod})}if(K?.fromCreateSession&&g.autoProcessingAttempted===!0)throw Dr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let F=await Jo({billingApiUrl:fe,sessionId:S??W.id,session:W,nonce:Se});if(F.type==="next_action_required"&&Se){let B=S??W.id,oe=await at(j=>Xo(F,{billingApiUrl:fe,sessionId:B,nonce:Se,session:W,signal:j,telemetry:!0}));await st({result:oe,session:W,sessionId:W.id||B,autoCompleted:!1});return}if(F.type!=="success")throw Dr({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await st({result:F.result,session:W,sessionId:W.id||S,autoCompleted:!1})}catch(F){let B=W.id||S,oe=to(Aa(F),B);if(oe.code==="three_ds_aborted")return;if(oe.code==="checkout_processing_timeout"){if(!J.current)return;Pe(oe.message),Je(()=>He.current?.(oe));return}await je(oe,{emitDecline:!0,method:oe.checkoutMethod??Ta}),kp(oe,B)&&B&&J.current&&we({sessionId:B,errorMessage:oe.message,nonce:Se||void 0,payPalOrderId:oe.orderId})}},[t,fe,at,je,st]),Lt=(0,ut.useCallback)(async g=>{if(be.onClick?.(g),!(g.defaultPrevented||te||Te)){if(we(null),Pe(null),e&&We){let S=new cr.FloPayError("Provide either sessionId or create-session props, not both.","validation_error");await je(S),J.current&&(re(null),Ce(null));return}if(!e&&!We){let S=new cr.FloPayError("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await je(S),J.current&&(re(null),Ce(null));return}Fe(!0),Ce(null),Y(!1),re("processing");try{let S=new Ui.PaymentAPI(fe);if(e){let K=await S.getUnifiedCheckoutSession(e,t);await St(K,e);return}try{let K=await S.createAndFetchSession({...We});await St(K,K.data.session?.id??null,{fromCreateSession:!0})}catch(K){if(ni(K)==="session_auto_completed"){await st({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw K}}catch(S){await je(to(wp(S,"Automatic payment failed. Please try again."),e))}finally{J.current&&(re(null),Ce(null),Fe(!1))}}},[be.onClick,We,te,Te,t,St,fe,e,je,st]),Pt=(0,ut.useCallback)(g=>{let S=Z.current;we(null),it.current?.({result:g,session:null,sessionId:S?.sessionId??null,autoCompleted:!1})},[]),Et=(0,ut.useCallback)(g=>{He.current?.(g)},[]),q=(0,ut.useCallback)(g=>{Ve.current?.(g)},[]),ve=(0,ut.useMemo)(()=>(0,cr.resolveTheme)(b),[b]),Qe=(0,ut.useMemo)(()=>{let g=ve?.buttonsLayout??(0,cr.resolveButtonsLayoutTheme)(G);return k?{...g,...k,cardButton:{...g.cardButton,...k.cardButton}}:g},[ve,G,k]),X=(0,ut.useMemo)(()=>{let g=ve?.appearance;return C?g?{...g,...C,variables:{...g.variables,...C.variables}}:C:g},[C,ve]),Ue=X?.variables,vt=Ue?.colorPrimary??"#4A49FF",Xe=Ue?.colorPrimaryHover??ta(vt,.12),kt=Ue?.borderRadius??"8px";return(0,lr.jsxs)(lr.Fragment,{children:[(0,lr.jsx)("button",{...be,type:Ne,onClick:Lt,disabled:te||Te,"aria-busy":Te,style:{width:"100%",..._e===void 0?{boxSizing:"border-box",height:Sp,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...Qe.cardButton,...js({themeBundle:ve,resolvedPrimaryColor:vt,resolvedBorderRadius:kt,submitButtonStyle:Qe.submitButton,explicitPrimaryColor:Ue?.colorPrimary}),fontSize:Qe.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:te||Te?"not-allowed":"pointer",display:"flex",alignItems:"center",justifyContent:"center",gap:"0.625rem",transition:"background-color 0.15s, border-color 0.2s, box-shadow 0.2s, transform 0.1s",position:"relative",opacity:te||Te?.6:1,...Ye},onMouseEnter:g=>{be.onMouseEnter?.(g),!g.defaultPrevented&&!te&&!Te&&(ve||Ue?.colorPrimary)&&(g.currentTarget.style.backgroundColor=Xe)},onMouseLeave:g=>{be.onMouseLeave?.(g),!g.defaultPrevented&&(ve||Ue?.colorPrimary)&&(g.currentTarget.style.backgroundColor=vt)},onMouseDown:g=>{be.onMouseDown?.(g),g.defaultPrevented||(g.currentTarget.style.transform="scale(0.985)")},onMouseUp:g=>{be.onMouseUp?.(g),g.defaultPrevented||(g.currentTarget.style.transform="scale(1)")},children:(0,lr.jsx)(No,{content:_e})}),Q&&(0,lr.jsx)("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:Q}),Ae&&(0,lr.jsx)(Vn,{status:Ae,errorMessage:se,authorized:Be}),z&&(0,lr.jsx)("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:g=>{g.target===g.currentTarget&&we(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,lr.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,lr.jsx)(Ni,{sessionId:z.sessionId,nonce:z.nonce,checkoutMode:"full",billingApiUrl:fe,locale:I,theme:b,...X?{appearance:X}:{},buttonsTheme:G,buttonsStyles:k,initialErrorMessage:z.errorMessage,initialPayPalOrderId:z.payPalOrderId,cardTitleContent:null,onComplete:Pt,onError:Et,onDecline:q})})})]})}var qi=require("@flopay/js/card-setup"),Sn=require("@flopay/shared"),It=require("react");var Yc={light:{success:"#166534",error:"#991B1B"},dark:{success:"#4ADE80",error:"#FCA5A5"}};function zi(e){let t=e.appearance.variables??{},n=e.buttonsLayout.cardFormContainer??{},r=e.appearance.theme==="night",o=r?Yc.dark:Yc.light,a=t.colorText??(r?"#F1F5F9":"#262833"),i=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:i?.color??a}}var Lr=require("react/jsx-runtime"),qa=class extends Sn.FloPayError{constructor(t,n,r){super(t,n,r),this.name="FloPayCardSetupError",this.retryable=r.retryable}};function Jr(e,t={}){let n=e instanceof Sn.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 qa(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 Xc({sessionId:e,nonce:t,billingApiUrl:n,telemetry:r,theme:o="modern-light",containerStyle:a,loading:i=null,onReady:c,onComplete:p,onDecline:u,onCancel:h,onValidation:P,onError:M}){let[_,w]=(0,It.useState)(null),[A,I]=(0,It.useState)(null),[b,C]=(0,It.useState)(null),[G,k]=(0,It.useState)(null),[ye,N]=(0,It.useState)(null),H=(0,It.useRef)(!1),_e=(0,It.useRef)(!1),te=(0,It.useMemo)(()=>typeof o=="object"?void 0:(0,Sn.resolveTheme)(o),[o]),Ne=(0,It.useMemo)(()=>typeof o=="object"?o:te?na({appearance:te.appearance,buttonsStyles:te.buttonsLayout,layout:"default"}):null,[te,o]),Ye=(0,It.useMemo)(()=>_i(te?.buttonsLayout.cardFormContainer,a),[te,a]),be=(0,It.useMemo)(()=>te?zi(te):void 0,[te]),fe=(0,It.useRef)(c),We=(0,It.useRef)(M),Te=(0,It.useRef)(p),Fe=(0,It.useRef)(u),Ae=(0,It.useRef)(h),re=(0,It.useRef)(P),se=(0,It.useRef)(!1),Ce=(0,It.useRef)(!1),Be=(0,It.useRef)(0);return fe.current=c,We.current=M,Te.current=p,Fe.current=u,Ae.current=h,re.current=P,(0,It.useEffect)(()=>{let Y=Be.current+1;return Be.current=Y,()=>{queueMicrotask(()=>{Be.current===Y&&(se.current||Ce.current||(Ce.current=!0,Je(()=>{Ae.current?.({status:"cancelled",sessionId:e})})))})}},[e]),(0,It.useEffect)(()=>{let Y=!0,Q=(0,Sn.resolveBillingApiUrl)(n),Pe=new qi.PaymentAPI(Q,{telemetry:r});return w(null),I(null),C(null),se.current=!1,Ce.current=!1,(async()=>{try{if(!e.trim())throw new Sn.FloPayError("FloPayCardSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!t.trim())throw new Sn.FloPayError("FloPayCardSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let z=await Pe.getUnifiedCheckoutSession(e,t);if(!Y)return;let we=z.data.session;if(!we||!(0,Sn.isCardSetupCheckoutSession)(we))throw new Sn.FloPayError("FloPayCardSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidCardSetupSession",param:"sessionId"});let J=we.vault;(0,Sn.isMountableVaultBlock)(J)||(J=await Pe.getVaultCapture(e,t));let Ee=(0,Sn.resolveVaultMountOptions)(J,{billingApiUrl:Q,sessionId:e,nonce:t});if(!Ee)throw new Sn.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});if(!Y)return;I(Ee),w(new qi.PciVaultCardCapture({sessionId:e,operation:"card_setup",telemetry:r}))}catch(z){if(!Y)return;let we=Jr(z);se.current=!0,C(we),Je(()=>We.current?.(we))}})(),()=>{Y=!1,Pe.destroy()}},[n,t,e,r]),(0,It.useEffect)(()=>{if(!_)return;let Y=!1;_e.current=!1,H.current=!1;let Q=_.on("submitting",()=>{H.current=!0,N(null),k("processing")}),Pe=_.on("complete",J=>{se.current=!0,H.current=!1,k("success"),(async()=>(await new Promise(Ee=>setTimeout(Ee,600)),!_e.current&&(_e.current=!0,Je(()=>{Te.current?.({status:"succeeded",sessionId:e,...J.paymentMethod?{paymentMethod:J.paymentMethod}:{}})}),Y||k(null))))()}),z=_.on("decline",J=>{se.current=!0,H.current=!1,N(J.message??null),k("error"),Je(()=>{Fe.current?.({status:"declined",sessionId:e,...J.declineReason?{reason:J.declineReason}:{},...J.message?{message:J.message}:{}})}),(async()=>(await new Promise(Ee=>setTimeout(Ee,400)),Y||k(null)))()}),we=_.on("challenge_dismissed",()=>{k(null)});return()=>{Y=!0,Q(),Pe(),z(),we()}},[_,e]),b?(0,Lr.jsx)("div",{role:"alert",children:b.message}):!_||!A?.html?(0,Lr.jsx)(Lr.Fragment,{children:i}):(0,Lr.jsxs)(Lr.Fragment,{children:[G&&(0,Lr.jsx)(Vn,{status:G,errorMessage:ye,processingLabel:"SAVING CARD...",successLabel:"CARD SAVED",errorLabel:"CARD NOT SAVED",successNote:null,...be?{theme:be}:{}}),(0,Lr.jsx)(co,{capture:_,html:A.html,messageToken:A.messageToken,expectedOrigin:A.expectedOrigin,verificationRequired:A.verificationRequired,theme:Ne,containerStyle:Ye,onReady:()=>{Je(()=>fe.current?.())},onValidation:Y=>{Je(()=>re.current?.(Y))},onError:Y=>{if(!Y)return;H.current&&(H.current=!1,N(Y),k("error"),setTimeout(()=>k(null),400));let Q=Jr(new Error(Y),{code:"card_setup_widget_failed",retryable:!0});Je(()=>We.current?.(Q))}})]})}var Jc=require("@flopay/js/card-setup"),uo=require("@flopay/shared"),Zc=require("@paypal/paypal-js"),Ro=require("react");var eu=require("react/jsx-runtime");function Qc({clientId:e,environment:t,currency:n,sessionId:r,nonce:o,billingApiUrl:a,telemetry:i,customer:{userId:c,email:p},onSubmitting:u,onConfirmed:h,onFailed:P,onAbandoned:M}){let _=(0,Ro.useRef)(null),w=(0,Ro.useRef)({onSubmitting:u,onConfirmed:h,onFailed:P,onAbandoned:M});w.current={onSubmitting:u,onConfirmed:h,onFailed:P,onAbandoned:M};let[A]=(0,Ro.useState)(()=>Kr().inAppBrowser);return(0,Ro.useEffect)(()=>{let I=!0,b,C=new Jc.PaymentAPI(a,{telemetry:i}),G={userId:c,email:p};return(async()=>{try{let k=await(0,Zc.loadScript)({clientId:e,...n?{currency:n.toUpperCase()}:{},components:"buttons",...t==="sandbox"||t==="production"?{environment:t}:{}}),ye=_.current;if(!I||!ye)return;if(!k?.Buttons)throw new uo.FloPayError("PayPal could not be loaded.","api_error",{code:"paypal_unavailable"});let N=k.Buttons({createVaultSetupToken:async()=>{w.current.onSubmitting();let H=await C.createSessionIntent(r,o,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:uo.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE,paymentMethodId:null,intentKind:"setup"});if(H.provider!=="paypal"||H.providerObjectType!=="setup_token")throw new uo.FloPayError("The billing API did not return a PayPal setup token.","api_error",{code:"InvalidSessionIntentResponse"});return H.providerObjectId},onApprove:async H=>{let _e=H.vaultSetupToken;if(!_e)throw new uo.FloPayError("PayPal approved without a setup token.","api_error",{code:"paypal_setup_token_missing"});let te=await C.processPayment(G.userId,{sessionId:r,nonce:o,paymentMethodCategory:"paypal",tokenizedData:{id:_e,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:uo.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE},accountData:G});if(!te.ok)throw new uo.FloPayError("PayPal could not be saved.","api_error",{code:"paypal_setup_failed",statusCode:te.status});I&&w.current.onConfirmed()},onCancel:()=>{I&&w.current.onAbandoned()},onError:H=>{if(!I)return;let{popupBlocked:_e}=ao(H,{inAppBrowser:A,handoffObserved:!1});w.current.onFailed(_e?new Error(oo("PayPal",!0,A)):H,{code:_e?"popup_blocked":"paypal_setup_failed",retryable:!0})}});b=()=>N.close(),await N.render(ye)}catch(k){if(!I)return;w.current.onFailed(k,{code:"paypal_unavailable",retryable:!0})}})(),()=>{I=!1,b?.().catch(()=>{}),C.destroy()}},[a,e,n,p,t,A,o,r,i,c]),(0,eu.jsx)("div",{ref:_,"data-flopay-paypal-setup":""})}var nu=require("@flopay/js/card-setup"),oa=require("@flopay/shared"),Nr=require("@stripe/react-stripe-js"),ru=require("@stripe/stripe-js"),Mn=require("react");var _n=require("react/jsx-runtime"),ou={apple_pay:{types:["card"],wallet:"applePay"},google_pay:{types:["card"],wallet:"googlePay"},link:{types:["link"],wallet:"link"},paypal:{types:["paypal"],wallet:"paypal"},amazon_pay:{types:["amazon_pay"],wallet:"amazonPay"}},Js=new Map;function _p(e){let t=Js.get(e);if(t)return t;let n=(0,ru.loadStripe)(e).catch(r=>{throw Js.delete(e),r});return Js.set(e,n),n}var Ep={night:"night",flat:"flat"};function Ip(e){return e?{theme:Ep[e.theme??"default"]??"stripe",...e.variables?{variables:e.variables}:{},...e.rules?{rules:e.rules}:{}}:void 0}function Tp(e){return vo(e)||e.code==="setup_intent_authentication_failure"||e.code==="payment_method_provider_decline"}function tu(e){return e==="paypal"?"PayPal":(0,oa.getStripeMethodDisplayName)(e)}function Ap(){return typeof window>"u"?"":window.location.href}var Mp={position:"absolute",width:"100%",height:0,overflow:"hidden",visibility:"hidden",pointerEvents:"none"};function au(e){let{publishableKey:t,method:n,currency:r,futureUse:o,futureUseUnsupported:a,appearance:i}=e,[c]=(0,Mn.useState)(()=>_p(t)),p=(0,Mn.useMemo)(()=>{let u=Ip(i),h=(0,oa.resolveSetupFutureUsage)({futureUse:o,futureUseUnsupported:a},n,"setup");return{mode:"setup",currency:r.toLowerCase(),paymentMethodTypes:ou[n]?.types??[n],...h?{setupFutureUsage:h}:{},...u?{appearance:u}:{}}},[i,r,o,a,n]);return(0,_n.jsx)(Nr.Elements,{stripe:c,options:p,children:(0,_n.jsx)(xp,{...e})})}function xp({method:e,category:t,sessionId:n,nonce:r,billingApiUrl:o,telemetry:a,appearance:i,themeId:c,buttonsLayout:p,onSubmitting:u,onConfirmed:h,onDeclined:P,onFailed:M,onValidation:_,onUnavailable:w}){let A=(0,Nr.useStripe)(),I=(0,Nr.useElements)(),[b,C]=(0,Mn.useState)(!1),[G,k]=(0,Mn.useState)("loading"),[ye,N]=(0,Mn.useState)(!1),[H,_e]=(0,Mn.useState)(!1),te=(0,Mn.useRef)(!1),[Ne]=(0,Mn.useState)(()=>Kr()),[Ye,be]=(0,Mn.useState)(!1),fe=(0,Mn.useCallback)((se,Ce)=>{if(ao(se,{inAppBrowser:Ne.inAppBrowser,handoffObserved:!1}).popupBlocked){be(!0),M(new Error(oo(tu(e),!0,Ne.inAppBrowser)),{code:"popup_blocked",retryable:!0});return}M(Ce.message===void 0?se:new Error(Ce.message),{code:Ce.code,retryable:!0})},[Ne.inAppBrowser,e,M]),We=(0,Mn.useCallback)(async()=>{if(!(!A||!I||te.current)){te.current=!0,C(!0);try{let se=await I.submit();if(se.error){_(se.error.message??null);return}u();let Ce=await new nu.PaymentAPI(o,{telemetry:a}).createSessionIntent(n,r,{provider:"stripe",paymentMethodCategory:t,paymentMethodType:e,paymentMethodId:null,intentKind:"setup"});if(Ce.provider!=="stripe"||Ce.intentKind!=="setup")throw new oa.FloPayError("The billing API returned a non-setup intent.","api_error",{code:"InvalidSessionIntentResponse"});let Be=await A.confirmSetup({elements:I,clientSecret:Ce.clientSecret,confirmParams:{return_url:Ap()},redirect:"if_required"});if(Be.error){Tp(Be.error)?P({...Be.error.decline_code||Be.error.code?{reason:Be.error.decline_code??Be.error.code}:{},...Be.error.message?{message:Be.error.message}:{}}):fe(Be.error,{code:"payment_method_setup_provider_failed",message:Be.error.message??"The payment method could not be saved."});return}h()}catch(se){fe(se,{code:"payment_method_setup_failed"})}finally{te.current=!1,C(!1)}}},[o,t,I,e,r,h,P,u,_,fe,n,A,a]),Te=ou[e]?.wallet,Fe=Te==="paypal"&&oi(Ne,"auto",Ye?"blocked":Ne.popupCapability)==="redirect",Ae=i?.variables?.borderRadius??p?.cardButton?.borderRadius??8;if(t==="wallet"&&Te&&!Fe)return(0,_n.jsxs)(_n.Fragment,{children:[(0,_n.jsx)(ea,{}),(0,_n.jsx)(xa,{state:G,borderRadius:Ae,children:(0,_n.jsx)(Nr.ExpressCheckoutElement,{options:{...wi,paymentMethods:Si([e])},onReady:se=>{let Ce=Ma(se,[Te]);k(Ce),Ce==="unavailable"&&w()},onLoadError:()=>{k("load_error"),w()},onConfirm:()=>{We()}})})]});let re=tu(e);return(0,_n.jsxs)(_n.Fragment,{children:[ye?(0,_n.jsx)(Ci,{method:e,themeId:c,hasNextStep:!0,highlighted:H,disabled:b,onClick:()=>_e(se=>!se),backgroundColor:p?.cardButton?.backgroundColor,borderColor:p?.cardInputBorder,textColor:p?.cardButton?.color,borderRadius:Ae}):null,(0,_n.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,"aria-hidden":!H,style:H?{display:"flex",flexDirection:"column"}:Mp,children:[(0,_n.jsx)(Nr.PaymentElement,{options:{layout:ki},onReady:()=>N(!0),onLoadError:()=>w(),onChange:se=>{se.complete&&_(null)}}),(0,_n.jsx)(Ri,{testId:`flopay-payment-method-save-${e}`,attributes:{"data-flopay-payment-method-save":e},disabled:!A||!I||b||!H,onClick:()=>{We()},color:i?.variables?.colorPrimary??"#4A49FF",borderRadius:i?.variables?.borderRadius??"8px",style:p?.submitButton,children:b?"Saving\u2026":`Save ${re}`})]})]})}var Va=require("@flopay/js/card-setup"),tn=require("@flopay/shared"),qe=ds(require("react"),1);var iu=require("@flopay/shared"),Fp=new Set(["apple_pay","google_pay","link","paypal","amazon_pay"]),Bp=new Set(["wallet","apm"]);function aa(e){return typeof e=="string"&&e.trim().length>0}function Dp(e){if(typeof e!="object"||e===null)return!1;let t=e;return aa(t.family)&&aa(t.paymentMethodType)}function Op(e){let n=e.raw?.data?.currency;return aa(n)?n.trim().toUpperCase():null}function su(e){let t=Op(e),n=e.data.session?.advertisedPaymentMethods;if(!Array.isArray(n))return{card:!0,stripe:[],paypal:null,currency:t,skippedForMissingCurrency:[]};let r={card:!1,stripe:[],paypal:null,currency:t,skippedForMissingCurrency:[]},o=new Set;for(let a of n){if(!Dp(a)||o.has(a.paymentMethodType))continue;let{family:i,paymentMethodType:c,providerType:p,publishableKey:u}=a;if(i==="card"){if(c!=="card")continue;r.card=!0}else if(Bp.has(i)){if(p!=="stripe"||c==="card"||!aa(u))continue;if(t===null){r.skippedForMissingCurrency.includes(c)||r.skippedForMissingCurrency.push(c);continue}r.stripe.push({method:c,publishableKey:u,currency:t})}else if(i==="paypal"){if(c!==iu.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE||p!=="paypal"||!aa(u))continue;r.paypal={clientId:u,...aa(a.environment)?{environment:a.environment}:{}}}else continue;o.add(c)}return r.paypal&&(r.stripe=r.stripe.filter(a=>a.method!=="paypal")),r}function Vi(e){return[...e.card?["card"]:[],...e.stripe.map(t=>t.method),...e.paypal?["paypal"]:[]]}function lu(e){return Vi(e).length>0}function ji(e){return Fp.has(e)?"wallet":"apm"}var Lp=["setup_intent","setup_intent_client_secret","redirect_status"];function cu(){if(typeof window>"u")return null;let e=new URLSearchParams(window.location.search);return!e.has("setup_intent")||!e.has("redirect_status")?null:{failed:e.get("redirect_status")==="failed"}}function uu(){if(typeof window>"u")return;let e=new URL(window.location.href),t=!1;for(let n of Lp)e.searchParams.has(n)&&(e.searchParams.delete(n),t=!0);t&&window.history.replaceState(window.history.state,"",e.toString())}function du(e){return e==="card"?{processingLabel:"SAVING CARD...",successLabel:"CARD SAVED",errorLabel:"CARD NOT SAVED"}:{processingLabel:"SAVING PAYMENT METHOD...",successLabel:"PAYMENT METHOD SAVED",errorLabel:"PAYMENT METHOD NOT SAVED"}}var en=require("react/jsx-runtime"),Np=15,Up=2e3;function zp(e){return{userId:e.customer?.id??"",email:e.customer?.email??""}}function Zs(e){return new Promise(t=>setTimeout(t,e))}async function qp(e,t,n){if(!t.trim())throw new tn.FloPayError("FloPayPaymentMethodSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!n.trim())throw new tn.FloPayError("FloPayPaymentMethodSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let r=await e.getUnifiedCheckoutSession(t,n),o=r.data.session;if(!o||!(0,tn.isCardSetupCheckoutSession)(o))throw new tn.FloPayError("FloPayPaymentMethodSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidPaymentMethodSetupSession",param:"sessionId"});let a=su(r);if(!lu(a)){let{skippedForMissingCurrency:i}=a,c=i.length>0?`FloPay: this setup session advertises only Stripe methods (${i.join(", ")}), and they need the session's currency, which the setup-session read did not carry.`:"FloPay: this setup session advertises no payment method.";throw new tn.FloPayError(c,"validation_error",{code:"NoAdvertisedPaymentMethods",param:"sessionId"})}return{session:o,advertisement:a}}async function Vp(e,t,n,r,o){let a=t.vault??null;(0,tn.isMountableVaultBlock)(a)||(a=await e.getVaultCapture(n,r));let i=(0,tn.resolveVaultMountOptions)(a,{billingApiUrl:o,sessionId:n,nonce:r});if(!i)throw new tn.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});return i}var $i=class extends qe.default.Component{constructor(){super(...arguments);this.state={failed:!1}}static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(n){this.props.onFailed(n,{code:"payment_method_setup_load_failed",retryable:!1})}render(){return this.state.failed?null:this.props.children}};function pu({branches:{StripeSetupMethod:e,PayPalSetupMethod:t},sessionId:n,nonce:r,billingApiUrl:o,telemetry:a,theme:i="modern-light",containerStyle:c,loading:p=null,onReady:u,onComplete:h,onDecline:P,onCancel:M,onValidation:_,onError:w}){let[A]=(0,qe.useState)(cu),[I,b]=(0,qe.useState)(null),[C,G]=(0,qe.useState)(!1),[k,ye]=(0,qe.useState)(null),[N,H]=(0,qe.useState)(null),[_e,te]=(0,qe.useState)(null),[Ne,Ye]=(0,qe.useState)(null),[be,fe]=(0,qe.useState)(()=>new Set),We=(0,qe.useRef)(be),Te=(0,qe.useRef)(null);Te.current=I;let Fe=(0,qe.useRef)(!1),Ae=(0,qe.useRef)(!1),re=(0,qe.useRef)(!1),se=(0,qe.useRef)(!1),Ce=(0,qe.useRef)(0),Be=(0,qe.useRef)(0),Y=(0,qe.useRef)(!1),Q=(0,qe.useMemo)(()=>typeof i=="object"?void 0:(0,tn.resolveTheme)(i),[i]),Pe=(0,qe.useMemo)(()=>typeof i=="object"?i:Q?na({appearance:Q.appearance,buttonsStyles:Q.buttonsLayout,layout:"default"}):null,[Q,i]),z=(0,qe.useMemo)(()=>_i(Q?.buttonsLayout.cardFormContainer,c),[Q,c]),we=(0,qe.useMemo)(()=>Q?zi(Q):void 0,[Q]),J=(0,qe.useRef)({sessionId:n,nonce:r,billingApiUrl:o,telemetry:a,onReady:u,onComplete:h,onDecline:P,onCancel:M,onValidation:_,onError:w});J.current={sessionId:n,nonce:r,billingApiUrl:o,telemetry:a,onReady:u,onComplete:h,onDecline:P,onCancel:M,onValidation:_,onError:w},(0,qe.useEffect)(()=>{Y.current=!0;let F=Ce.current+1;return Ce.current=F,()=>{Y.current=!1,Be.current+=1,queueMicrotask(()=>{Ce.current===F&&(re.current||se.current||(se.current=!0,Je(()=>{J.current.onCancel?.({status:"cancelled",sessionId:n})})))})}},[n]);let Ee=(0,qe.useCallback)((F,B)=>{re.current=!0,Fe.current=!1,Ye({status:"success",wording:F,message:null}),(async()=>(await Zs(600),!Ae.current&&(Ae.current=!0,Je(()=>{J.current.onComplete?.({status:"succeeded",sessionId:J.current.sessionId,...B?{paymentMethod:B}:{}})}),Y.current&&Ye(null))))()},[]),Z=(0,qe.useCallback)((F,B)=>{re.current=!0,Fe.current=!1,Ye({status:"error",wording:F,message:B.message??null}),Je(()=>{J.current.onDecline?.({status:"declined",sessionId:J.current.sessionId,...B.reason?{reason:B.reason}:{},...B.message?{message:B.message}:{}})}),(async()=>(await Zs(400),Y.current&&Ye(null)))()},[]),it=(0,qe.useCallback)((F,B)=>{Fe.current?(Fe.current=!1,Ye({status:"error",wording:F,message:B.message}),setTimeout(()=>{Y.current&&Ye(null)},400)):Ye(null),Je(()=>J.current.onError?.(B))},[]),He=(0,qe.useCallback)(async F=>{let B=Be.current+1;Be.current=B;let oe=()=>!Y.current||B!==Be.current;Fe.current=!0,Ye({status:"processing",wording:"payment_method",message:null});let j=new Va.PaymentAPI((0,tn.resolveBillingApiUrl)(J.current.billingApiUrl),{telemetry:J.current.telemetry});try{for(let Ie=0;Ie<Np;Ie+=1){if((Ie>0||F.waitFirst)&&await Zs(Up),oe())return;let tt=await j.getUnifiedCheckoutSession(J.current.sessionId,J.current.nonce);if(oe())return;let gt=tt.data.session?.status;if(gt==="complete"){G(!0),Ee("payment_method");return}if(gt==="expired")throw new tn.FloPayError("This setup session expired before the payment method was saved.","validation_error",{code:"payment_method_setup_expired"})}throw new tn.FloPayError("The payment method could not be confirmed yet. Please try again.","api_error",{code:"payment_method_setup_unverified"})}catch(Ie){if(oe())return;let tt=Ie instanceof tn.FloPayError&&Ie.code==="payment_method_setup_unverified";it("payment_method",Jr(Ie,tt?{retryable:!0}:{}))}finally{j.destroy()}},[it,Ee]);(0,qe.useEffect)(()=>{let F=!0,B=(0,tn.resolveBillingApiUrl)(o),oe=new Va.PaymentAPI(B,{telemetry:a});b(null),G(!1),ye(null),H(null),te(null);let j=new Set;return We.current=j,fe(j),re.current=!1,se.current=!1,Ae.current=!1,(async()=>{try{let{session:Ie,advertisement:tt}=await qp(oe,n,r);if(!F)return;let gt={advertisement:tt,customer:zp(Ie),...Ie.futureUse?{futureUse:Ie.futureUse}:{},...Ie.futureUseUnsupported?{futureUseUnsupported:Ie.futureUseUnsupported}:{}};if(A){if(uu(),Ie.status==="complete"){G(!0),b(gt),Ee("payment_method");return}A.failed?Z("payment_method",{reason:"redirect_failed"}):He({waitFirst:!0})}let yt=tt.card?await Vp(oe,Ie,n,r,B):null;if(!F)return;b(gt),yt&&(H(yt),ye(new Va.PciVaultCardCapture({sessionId:n,operation:"card_setup",telemetry:a})))}catch(Ie){if(!F)return;let tt=Jr(Ie);re.current=!0,te(tt),Je(()=>J.current.onError?.(tt))}})(),()=>{F=!1,oe.destroy()}},[o,r,A,Z,Ee,n,a,He]),(0,qe.useEffect)(()=>{if(!k)return;Fe.current=!1;let F=k.on("submitting",()=>{Fe.current=!0,Ye({status:"processing",wording:"card",message:null})}),B=k.on("complete",Ie=>{Ee("card",Ie.paymentMethod)}),oe=k.on("decline",Ie=>{Z("card",{...Ie.declineReason?{reason:Ie.declineReason}:{},...Ie.message?{message:Ie.message}:{}})}),j=k.on("challenge_dismissed",()=>{Ye(null)});return()=>{F(),B(),oe(),j()}},[k,Z,Ee]);let Ve=(0,qe.useCallback)((F,B,oe)=>{if(oe.retryable){it("payment_method",Jr(B,oe));return}if(We.current.has(F))return;let j=new Set(We.current);j.add(F),We.current=j,fe(j);let Ie=Te.current?.advertisement,tt=Ie?Vi(Ie).some(gt=>!j.has(gt)):!1;it("payment_method",Jr(B,{code:oe.code,retryable:tt}))},[it]),at=(0,qe.useMemo)(()=>({onSubmitting:()=>{Fe.current=!0,Ye({status:"processing",wording:"payment_method",message:null})},onConfirmed:()=>{He({waitFirst:!1})},onDeclined:F=>Z("payment_method",F),onValidation:F=>{Je(()=>J.current.onValidation?.(F))},onAbandoned:()=>{Fe.current=!1,Ye(null)}}),[Z,He]),Ke=(0,qe.useRef)(Ve);Ke.current=Ve;let st=(0,qe.useRef)(new Map),je=F=>{let B=st.current.get(F);if(B)return B;let oe=(j,Ie)=>Ke.current(F,j,Ie);return st.current.set(F,oe),oe},St=(0,qe.useCallback)(F=>{if(We.current.has(F))return;let B=new Set(We.current);B.add(F),We.current=B,fe(B);let oe=Te.current?.advertisement;oe&&Vi(oe).some(Ie=>!B.has(Ie))||it("payment_method",Jr(new Error("FloPay: none of the advertised payment methods can be used here."),{code:"payment_method_setup_unavailable",retryable:!1}))},[it]),Lt=(0,qe.useRef)(St);Lt.current=St;let Pt=(0,qe.useRef)(new Map),Et=F=>{let B=Pt.current.get(F);if(B)return B;let oe=()=>Lt.current(F);return Pt.current.set(F,oe),oe},q=Ne?(0,en.jsx)(Vn,{status:Ne.status,errorMessage:Ne.message,...du(Ne.wording),successNote:null,...we?{theme:we}:{}}):null;if(_e)return(0,en.jsx)("div",{role:"alert",children:_e.message});if(!I||C)return(0,en.jsxs)(en.Fragment,{children:[q,I?null:p]});let{advertisement:ve,customer:Qe,futureUse:X,futureUseUnsupported:Ue}=I,vt=(0,tn.resolveBillingApiUrl)(o),Xe=a===void 0?{}:{telemetry:a},kt=ve.stripe.filter(({method:F})=>!be.has(F)),V=be.has("paypal")?null:ve.paypal,g=!!(ve.card&&k&&N?.html),S=({method:F,publishableKey:B,currency:oe})=>(0,en.jsx)("div",{"data-flopay-payment-method":F,style:{display:"contents"},children:(0,en.jsx)($i,{onFailed:je(F),children:(0,en.jsx)(qe.Suspense,{fallback:null,children:(0,en.jsx)(e,{method:F,category:ji(F),publishableKey:B,currency:oe,...X?{futureUse:X}:{},...Ue?{futureUseUnsupported:Ue}:{},sessionId:n,nonce:r,billingApiUrl:vt,...Xe,...Q?{appearance:Q.appearance,buttonsLayout:Q.buttonsLayout}:{},...typeof i=="string"?{themeId:i}:{},...at,onFailed:je(F),onUnavailable:Et(F)})})})},F),K=kt.filter(({method:F})=>ji(F)==="wallet"),W=kt.filter(({method:F})=>ji(F)!=="wallet"),Se=kt.length>0||V!==null;return(0,en.jsxs)(en.Fragment,{children:[q,Se?(0,en.jsxs)("div",{"data-flopay-payment-methods":"",style:{position:"relative",display:"flex",flexDirection:"column",gap:"0.5rem"},children:[K.map(S),V?(0,en.jsx)("div",{"data-flopay-payment-method":"paypal",children:(0,en.jsx)($i,{onFailed:je("paypal"),children:(0,en.jsx)(qe.Suspense,{fallback:null,children:(0,en.jsx)(t,{clientId:V.clientId,...V.environment?{environment:V.environment}:{},...ve.currency?{currency:ve.currency}:{},sessionId:n,nonce:r,billingApiUrl:vt,customer:Qe,...Xe,...at,onFailed:je("paypal"),onUnavailable:Et("paypal")})})})}):null,W.map(S)]}):null,g&&Se?(0,en.jsx)(Ei,{label:"or add a card"}):null,g&&k&&N?.html?(0,en.jsx)("div",{"data-flopay-payment-method":"card",children:(0,en.jsx)(co,{capture:k,html:N.html,messageToken:N.messageToken,expectedOrigin:N.expectedOrigin,verificationRequired:N.verificationRequired,theme:Pe,containerStyle:z,onReady:()=>{Je(()=>J.current.onReady?.())},onValidation:F=>{Je(()=>J.current.onValidation?.(F))},onError:F=>{F&&it("card",Jr(new Error(F),{code:"card_setup_widget_failed",retryable:!0}))}})}):null]})}var yu=require("react/jsx-runtime"),jp={StripeSetupMethod:au,PayPalSetupMethod:Qc};function mu(e){return(0,yu.jsx)(pu,{...e,branches:jp})}0&&(module.exports={DirectPayPalButton,FloPayAutomaticPaymentButton,FloPayCardSetup,FloPayCardSetupError,FloPayCheckout,FloPayPaymentMethodSetup,FloPayProvider,SplitCardForm,VaultCardFields,dropThirdPartyOnlyError,useCheckout,useFloPay,usePayPalFloPay});
47
+ `})]})}return(0,F.jsxs)("div",{style:{display:"flex",flexDirection:"column",gap:"0.5rem"},children:[t&&_(Jo),r&&(n||o)&&_(Jo),r&&(0,F.jsx)("button",{type:"button",onClick:()=>{e?.("card"),x(!0)},style:{width:"100%",...h,backgroundColor:"white",color:"#262833",border:"1px solid #d1d5db",borderRadius:"8px",fontSize:M.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,...M.cardButton},onMouseDown:v=>{v.currentTarget.style.transform="scale(0.985)"},onMouseUp:v=>{v.currentTarget.style.transform="scale(1)"},children:(0,F.jsx)(Do,{content:p})}),(0,F.jsx)("style",{children:"@keyframes flopay-interim-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.4; } }"})]})}var dn=require("react/jsx-runtime"),Jd=44;function rc(e){return new Promise(t=>setTimeout(t,e))}function Zd(e,t){return e instanceof un.FloPayError?e:new un.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 eu(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 nc({sessionId:e,nonce:t,createSession:r,paymentMethodId:n,checkoutMethod:o,clientId:i,products:l,items:d,subscriptions:p,account:b,successUrl:k,cancelUrl:w,couponCodes:x,tagsData:O,utmMetadata:M,billingApiUrl:W,locale:_,theme:h,appearance:v,buttonsTheme:te,buttonsStyles:S,onSuccess:Pe,onError:j,onDecline:Q,children:Be,disabled:se=!1,type:je="button",style:Je,...me}){let pe=(0,pt.useMemo)(()=>(0,un.resolveBillingApiUrl)(W),[W]),Ke=(0,pt.useMemo)(()=>eu({createSession:r,clientId:i,products:l,items:d,subscriptions:p,account:b,successUrl:k,cancelUrl:w,couponCodes:x,tagsData:O,utmMetadata:M}),[b,w,i,x,r,l,d,p,k,O,M]),[Re,_e]=(0,pt.useState)(!1),[Ee,re]=(0,pt.useState)(null),[ae,ge]=(0,pt.useState)(null),[Me,K]=(0,pt.useState)(!1),[ee,ye]=(0,pt.useState)(null),[L,ve]=(0,pt.useState)(null),Y=(0,pt.useRef)(!0),be=(0,pt.useRef)(null),X=(0,pt.useRef)(L),ct=(0,pt.useRef)(Pe),Ge=(0,pt.useRef)(j),$e=(0,pt.useRef)(Q),lt=(0,pt.useCallback)(m=>ei(be,async P=>{try{return await m(P)}catch(H){throw P.aborted?Wo(H):H}}),[]);(0,pt.useEffect)(()=>{X.current=L},[L]),(0,pt.useEffect)(()=>{ct.current=Pe},[Pe]),(0,pt.useEffect)(()=>{Ge.current=j},[j]),(0,pt.useEffect)(()=>{$e.current=Q},[Q]),(0,pt.useEffect)(()=>(Y.current=!0,()=>{Y.current=!1,be.current?.abort()}),[]),(0,pt.useEffect)(()=>{if(typeof window>"u")return;let m=P=>{P.key==="Escape"&&ve(null)};return window.addEventListener("keydown",m),()=>{window.removeEventListener("keydown",m)}},[]);let Ye=(0,pt.useCallback)((m,P=Ca)=>{$e.current?.(gr(P,m,{code:m.code,declineCode:m.declineCode}))},[]),dt=(0,pt.useCallback)(async m=>{Y.current&&(ge(null),K(m.result.status==="authorized"),re("success"),await rc(600),Y.current&&(0,tt.invokeMerchantCallback)(()=>ct.current?.(m)))},[]),We=(0,pt.useCallback)(async(m,P)=>{Y.current&&(Ge.current?.(m),P?.emitDecline&&Ye(m,P.method),ge(m.message),K(!1),re("error"),await rc(400))},[Ye]),Et=(0,pt.useCallback)(async(m,P,H)=>{let V=m.data.session??null;if(!V)throw so(new un.FloPayError("No session data returned","api_error"),P);let he=V.clientSecret||t;if(Xn(V)){await dt({result:Yn(V,P),session:V,sessionId:V.id||P,autoCompleted:!1});return}if(V.status==="expired")throw so(Wa(V),V.id||P);try{if(m.autoProcessingPending){let A=m.autoProcessingPending,ne=new bi.PaymentAPI(pe),q=await lt(Ct=>ne.waitForCheckoutSessionCompletion(A.sessionId,{initialDelayMs:A.retryAfterMs,nonce:he,statusUrl:A.statusUrl,signal:Ct})),Ce=lo(q,V),rt=q.autoProcessingError?.type==="3ds_required"&&q.autoProcessingError.nextActionRedirectUrl?{type:"next_action_required",nextActionRedirectUrl:q.autoProcessingError.nextActionRedirectUrl}:null;if(rt&&P&&he){let Ct=await lt(ht=>Ho(rt,{billingApiUrl:pe,sessionId:P,nonce:he,session:V,signal:ht,telemetry:!0}));await dt({result:Ct,session:V,sessionId:V.id||P,autoCompleted:!1});return}if(q.autoProcessingError)throw jn(q.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:q.autoProcessingError.checkoutMethod});if(!Xn(Ce))throw No(Ce);await dt({result:Yn(Ce,P),session:Ce,sessionId:Ce.id||P,autoCompleted:!1});return}if(m.autoProcessingError){let A=m.autoProcessingError.nextActionRedirectUrl;if(m.autoProcessingError.type==="3ds_required"&&A&&P&&he){let ne=await lt(Ct=>Tl({billingApiUrl:pe,sessionId:P,nonce:he,nextActionRedirectUrl:A,signal:Ct}));if(ne.status==="declined")throw jn({type:ne.declineReason??"decline",message:"Card was declined.",gatewayErrorCode:ne.gatewayDeclineReason??void 0},"Card was declined.",{checkoutMethod:m.autoProcessingError.checkoutMethod});let Ce=await new bi.PaymentAPI(pe).waitForCheckoutSessionCompletion(P,{initialDelayMs:0,nonce:he}),rt=lo(Ce,V);if(!Xn(rt))throw jn({type:"unknown",message:"Card authentication was not completed."},"Card authentication was not completed.",{checkoutMethod:m.autoProcessingError.checkoutMethod});await dt({result:Yn(rt,P),session:rt,sessionId:rt.id||P,autoCompleted:!1});return}throw jn(m.autoProcessingError,"Automatic payment failed. Please try again.",{checkoutMethod:m.autoProcessingError.checkoutMethod})}if(H?.fromCreateSession&&m.autoProcessingAttempted===!0)throw jn({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");let T=await Ko({billingApiUrl:pe,sessionId:P??V.id,session:V,nonce:he});if(T.type==="next_action_required"&&he){let A=P??V.id,ne=await lt(q=>Ho(T,{billingApiUrl:pe,sessionId:A,nonce:he,session:V,signal:q,telemetry:!0}));await dt({result:ne,session:V,sessionId:V.id||A,autoCompleted:!1});return}if(T.type!=="success")throw jn({type:"unknown",message:"Automatic payment failed. Please try again."},"Automatic payment failed. Please try again.");await dt({result:T.result,session:V,sessionId:V.id||P,autoCompleted:!1})}catch(T){let A=V.id||P,ne=so(Sa(T),A);if(ne.code==="three_ds_aborted")return;if(ne.code==="checkout_processing_timeout"){if(!Y.current)return;ye(ne.message),(0,tt.invokeMerchantCallback)(()=>Ge.current?.(ne));return}await We(ne,{emitDecline:!0,method:ne.checkoutMethod??Ca}),Qd(ne,A)&&A&&Y.current&&ve({sessionId:A,errorMessage:ne.message,nonce:he||void 0,payPalOrderId:ne.orderId})}},[t,pe,lt,We,dt]),Ut=(0,pt.useCallback)(async m=>{if(me.onClick?.(m),!(m.defaultPrevented||se||Re)){if(ve(null),ye(null),e&&Ke){let P=new un.FloPayError("Provide either sessionId or create-session props, not both.","validation_error");await We(P),Y.current&&(re(null),ge(null));return}if(!e&&!Ke){let P=new un.FloPayError("Provide a sessionId or the props required to create an automatic payment session.","validation_error");await We(P),Y.current&&(re(null),ge(null));return}_e(!0),ge(null),K(!1),re("processing");try{let P=new bi.PaymentAPI(pe);if(e){let H=await P.getUnifiedCheckoutSession(e,t);await Et(H,e);return}try{let H=await P.createAndFetchSession({...Ke});await Et(H,H.data.session?.id??null,{fromCreateSession:!0})}catch(H){if(Ha(H)==="session_auto_completed"){await dt({result:{status:"succeeded"},session:null,sessionId:null,autoCompleted:!0});return}throw H}}catch(P){await We(so(Zd(P,"Automatic payment failed. Please try again."),e))}finally{Y.current&&(re(null),ge(null),_e(!1))}}},[me.onClick,Ke,se,Re,t,Et,pe,e,We,dt]),kt=(0,pt.useCallback)(m=>{let P=X.current;ve(null),ct.current?.({result:m,session:null,sessionId:P?.sessionId??null,autoCompleted:!1})},[]),At=(0,pt.useCallback)(m=>{Ge.current?.(m)},[]),N=(0,pt.useCallback)(m=>{$e.current?.(m)},[]),fe=(0,pt.useMemo)(()=>(0,un.resolveTheme)(h),[h]),Qe=(0,pt.useMemo)(()=>{let m=fe?.buttonsLayout??(0,un.resolveButtonsLayoutTheme)(te);return S?{...m,...S,cardButton:{...m.cardButton,...S.cardButton}}:m},[fe,te,S]),G=(0,pt.useMemo)(()=>{let m=fe?.appearance;return v?m?{...m,...v,variables:{...m.variables,...v.variables}}:v:m},[v,fe]),Ne=G?.variables,Rt=Ne?.colorPrimary??"#4A49FF",Ze=Ne?.colorPrimaryHover??(0,Ir.darkenHex)(Rt,.12),Tt=Ne?.borderRadius??"8px";return(0,dn.jsxs)(dn.Fragment,{children:[(0,dn.jsx)("button",{...me,type:je,onClick:Ut,disabled:se||Re,"aria-busy":Re,style:{width:"100%",...Be===void 0?{boxSizing:"border-box",height:Jd,padding:"0 1rem"}:{padding:"0.9rem 1rem"},...Qe.cardButton,...us({themeBundle:fe,resolvedPrimaryColor:Rt,resolvedBorderRadius:Tt,submitButtonStyle:Qe.submitButton,explicitPrimaryColor:Ne?.colorPrimary}),fontSize:Qe.cardButtonFontSize??"0.95rem",fontWeight:600,cursor:se||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:se||Re?.6:1,...Je},onMouseEnter:m=>{me.onMouseEnter?.(m),!m.defaultPrevented&&!se&&!Re&&(fe||Ne?.colorPrimary)&&(m.currentTarget.style.backgroundColor=Ze)},onMouseLeave:m=>{me.onMouseLeave?.(m),!m.defaultPrevented&&(fe||Ne?.colorPrimary)&&(m.currentTarget.style.backgroundColor=Rt)},onMouseDown:m=>{me.onMouseDown?.(m),m.defaultPrevented||(m.currentTarget.style.transform="scale(0.985)")},onMouseUp:m=>{me.onMouseUp?.(m),m.defaultPrevented||(m.currentTarget.style.transform="scale(1)")},children:(0,dn.jsx)(Do,{content:Be})}),ee&&(0,dn.jsx)("p",{role:"status","data-testid":"flopay-automatic-payment-pending-notice",style:{margin:"0.5rem 0 0",fontSize:"0.875rem",textAlign:"center"},children:ee}),Ee&&(0,dn.jsx)(qr,{status:Ee,errorMessage:ae,authorized:Me}),L&&(0,dn.jsx)("div",{"data-testid":"flopay-automatic-payment-fallback",role:"dialog","aria-modal":"true",onClick:m=>{m.target===m.currentTarget&&ve(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,dn.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,dn.jsx)(vi,{sessionId:L.sessionId,nonce:L.nonce,checkoutMode:"full",billingApiUrl:pe,locale:_,theme:h,...G?{appearance:G}:{},buttonsTheme:te,buttonsStyles:S,initialErrorMessage:L.errorMessage,initialPayPalOrderId:L.payPalOrderId,cardTitleContent:null,onComplete:kt,onError:At,onDecline:N})})})]})}var Si=require("@flopay/js/card-setup"),kr=require("@flopay/shared"),Ft=require("react");var oc=require("@flopay/shared");function Ci(e){return(0,oc.computeCardSetupOverlayTheme)(e)}var $n=require("react/jsx-runtime"),xa=class extends kr.FloPayError{constructor(t,r,n){super(t,r,n),this.name="FloPayCardSetupError",this.retryable=n.retryable}};function ro(e,t={}){let r=e instanceof kr.FloPayError?e:void 0,n=r?.statusCode,o=t.retryable??(r?.type==="network_error"||r?.type==="rate_limit_error"||typeof n=="number"&&n>=500||r?.code==="vault_capture_timeout"||!r);return new xa(r?.message??(e instanceof Error?e.message:"Failed to load the secure card form."),r?.type??"api_error",{code:t.code??r?.code??"card_setup_load_failed",retryable:o,...r?.param?{param:r.param}:{},...n===void 0?{}:{statusCode:n}})}function ac({sessionId:e,nonce:t,billingApiUrl:r,telemetry:n,theme:o="modern-light",containerStyle:i,loading:l=null,onReady:d,onComplete:p,onDecline:b,onCancel:k,onValidation:w,onError:x}){let[O,M]=(0,Ft.useState)(null),[W,_]=(0,Ft.useState)(null),[h,v]=(0,Ft.useState)(null),[te,S]=(0,Ft.useState)(null),[Pe,j]=(0,Ft.useState)(null),Q=(0,Ft.useRef)(!1),Be=(0,Ft.useRef)(!1),se=(0,Ft.useMemo)(()=>typeof o=="object"?void 0:(0,kr.resolveTheme)(o),[o]),je=(0,Ft.useMemo)(()=>typeof o=="object"?o:se?(0,Ir.computeVaultCardThemeColors)({appearance:se.appearance,buttonsStyles:se.buttonsLayout,layout:"default"}):null,[se,o]),Je=(0,Ft.useMemo)(()=>(0,Ra.mergeCardSetupSurface)(se?.buttonsLayout.cardFormContainer,i),[se,i]),me=(0,Ft.useMemo)(()=>se?Ci(se):void 0,[se]),pe=(0,Ft.useRef)(d),Ke=(0,Ft.useRef)(x),Re=(0,Ft.useRef)(p),_e=(0,Ft.useRef)(b),Ee=(0,Ft.useRef)(k),re=(0,Ft.useRef)(w),ae=(0,Ft.useRef)(!1),ge=(0,Ft.useRef)(!1),Me=(0,Ft.useRef)(0);return pe.current=d,Ke.current=x,Re.current=p,_e.current=b,Ee.current=k,re.current=w,(0,Ft.useEffect)(()=>{let K=Me.current+1;return Me.current=K,()=>{queueMicrotask(()=>{Me.current===K&&(ae.current||ge.current||(ge.current=!0,(0,tt.invokeMerchantCallback)(()=>{Ee.current?.({status:"cancelled",sessionId:e})})))})}},[e]),(0,Ft.useEffect)(()=>{let K=!0,ee=(0,kr.resolveBillingApiUrl)(r),ye=new Si.PaymentAPI(ee,{telemetry:n});return M(null),_(null),v(null),ae.current=!1,ge.current=!1,(async()=>{try{if(!e.trim())throw new kr.FloPayError("FloPayCardSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!t.trim())throw new kr.FloPayError("FloPayCardSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let L=await ye.getUnifiedCheckoutSession(e,t);if(!K)return;let ve=L.data.session;if(!ve||!(0,kr.isCardSetupCheckoutSession)(ve))throw new kr.FloPayError("FloPayCardSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidCardSetupSession",param:"sessionId"});let Y=ve.vault;(0,kr.isMountableVaultBlock)(Y)||(Y=await ye.getVaultCapture(e,t));let be=(0,kr.resolveVaultMountOptions)(Y,{billingApiUrl:ee,sessionId:e,nonce:t});if(!be)throw new kr.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});if(!K)return;_(be),M(new Si.PciVaultCardCapture({sessionId:e,operation:"card_setup",telemetry:n}))}catch(L){if(!K)return;let ve=ro(L);ae.current=!0,v(ve),(0,tt.invokeMerchantCallback)(()=>Ke.current?.(ve))}})(),()=>{K=!1,ye.destroy()}},[r,t,e,n]),(0,Ft.useEffect)(()=>{if(!O)return;let K=!1;Be.current=!1,Q.current=!1;let ee=O.on("submitting",()=>{Q.current=!0,j(null),S("processing")}),ye=O.on("complete",Y=>{ae.current=!0,Q.current=!1,S("success"),(async()=>(await new Promise(be=>setTimeout(be,600)),!Be.current&&(Be.current=!0,(0,tt.invokeMerchantCallback)(()=>{Re.current?.({status:"succeeded",sessionId:e,...Y.paymentMethod?{paymentMethod:Y.paymentMethod}:{}})}),K||S(null))))()}),L=O.on("decline",Y=>{ae.current=!0,Q.current=!1,j(Y.message??null),S("error"),(0,tt.invokeMerchantCallback)(()=>{_e.current?.({status:"declined",sessionId:e,...Y.declineReason?{reason:Y.declineReason}:{},...Y.message?{message:Y.message}:{}})}),(async()=>(await new Promise(be=>setTimeout(be,400)),K||S(null)))()}),ve=O.on("challenge_dismissed",()=>{S(null)});return()=>{K=!0,ee(),ye(),L(),ve()}},[O,e]),h?(0,$n.jsx)("div",{role:"alert",children:h.message}):!O||!W?.html?(0,$n.jsx)($n.Fragment,{children:l}):(0,$n.jsxs)($n.Fragment,{children:[te&&(0,$n.jsx)(qr,{status:te,errorMessage:Pe,processingLabel:"SAVING CARD...",successLabel:"CARD SAVED",errorLabel:"CARD NOT SAVED",successNote:null,...me?{theme:me}:{}}),(0,$n.jsx)(co,{capture:O,html:W.html,messageToken:W.messageToken,expectedOrigin:W.expectedOrigin,verificationRequired:W.verificationRequired,theme:je,containerStyle:Je,onReady:()=>{(0,tt.invokeMerchantCallback)(()=>pe.current?.())},onValidation:K=>{(0,tt.invokeMerchantCallback)(()=>re.current?.(K))},onError:K=>{if(!K)return;Q.current&&(Q.current=!1,j(K),S("error"),setTimeout(()=>S(null),400));let ee=ro(new Error(K),{code:"card_setup_widget_failed",retryable:!0});(0,tt.invokeMerchantCallback)(()=>Ke.current?.(ee))}})]})}var ic=require("@flopay/js/card-setup"),uo=require("@flopay/shared"),sc=require("@paypal/paypal-js"),So=require("react");var cc=require("react/jsx-runtime");function lc({clientId:e,environment:t,currency:r,sessionId:n,nonce:o,billingApiUrl:i,telemetry:l,customer:{userId:d,email:p},onSubmitting:b,onConfirmed:k,onFailed:w,onAbandoned:x}){let O=(0,So.useRef)(null),M=(0,So.useRef)({onSubmitting:b,onConfirmed:k,onFailed:w,onAbandoned:x});M.current={onSubmitting:b,onConfirmed:k,onFailed:w,onAbandoned:x};let[W]=(0,So.useState)(()=>(0,zn.detectPayPalEnvironment)().inAppBrowser);return(0,So.useEffect)(()=>{let _=!0,h,v=new ic.PaymentAPI(i,{telemetry:l}),te={userId:d,email:p};return(async()=>{try{let S=await(0,sc.loadScript)({clientId:e,...r?{currency:r.toUpperCase()}:{},components:"buttons",...t==="sandbox"||t==="production"?{environment:t}:{}}),Pe=O.current;if(!_||!Pe)return;if(!S?.Buttons)throw new uo.FloPayError("PayPal could not be loaded.","api_error",{code:"paypal_unavailable"});let j=S.Buttons({createVaultSetupToken:async()=>{M.current.onSubmitting();let Q=await v.createSessionIntent(n,o,{provider:"paypal",paymentMethodCategory:"wallet",paymentMethodType:uo.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE,paymentMethodId:null,intentKind:"setup"});if(Q.provider!=="paypal"||Q.providerObjectType!=="setup_token")throw new uo.FloPayError("The billing API did not return a PayPal setup token.","api_error",{code:"InvalidSessionIntentResponse"});return Q.providerObjectId},onApprove:async Q=>{let Be=Q.vaultSetupToken;if(!Be)throw new uo.FloPayError("PayPal approved without a setup token.","api_error",{code:"paypal_setup_token_missing"});let se=await v.processPayment(te.userId,{sessionId:n,nonce:o,paymentMethodCategory:"paypal",tokenizedData:{id:Be,type:"paypal_setup_token",isPaypal:!0,gateway:"paypal",paymentMethodType:uo.PAYPAL_VAULTED_PAYMENT_METHOD_TYPE},accountData:te});if(!se.ok)throw new uo.FloPayError("PayPal could not be saved.","api_error",{code:"paypal_setup_failed",statusCode:se.status});_&&M.current.onConfirmed()},onCancel:()=>{_&&M.current.onAbandoned()},onError:Q=>{if(!_)return;let{popupBlocked:Be}=(0,ke.classifyExternalMethodFailure)(Q,{inAppBrowser:W,handoffObserved:!1});M.current.onFailed(Be?new Error((0,ke.buildExternalMethodRecoveryMessage)("PayPal",!0,W)):Q,{code:Be?"popup_blocked":"paypal_setup_failed",retryable:!0})}});h=()=>j.close(),await j.render(Pe)}catch(S){if(!_)return;M.current.onFailed(S,{code:"paypal_unavailable",retryable:!0})}})(),()=>{_=!1,h?.().catch(()=>{}),v.destroy()}},[i,e,r,p,t,W,o,n,l,d]),(0,cc.jsx)("div",{ref:O,"data-flopay-paypal-setup":""})}var uc=require("@flopay/js/card-setup"),po=require("@flopay/shared"),Wn=require("@stripe/react-stripe-js"),pc=require("@stripe/stripe-js"),Ar=require("react");var _r=require("react/jsx-runtime"),mc={apple_pay:{types:["card"],wallet:"applePay"},google_pay:{types:["card"],wallet:"googlePay"},link:{types:["link"],wallet:"link"},paypal:{types:["paypal"],wallet:"paypal"},amazon_pay:{types:["amazon_pay"],wallet:"amazonPay"}},vs=new Map;function tu(e){let t=vs.get(e);if(t)return t;let r=(0,pc.loadStripe)(e).catch(n=>{throw vs.delete(e),n});return vs.set(e,r),r}function ru(e){return e?(0,po.toStripeAppearance)(e):void 0}function nu(e){return(0,ke.isProviderDecline)(e)||e.code==="setup_intent_authentication_failure"||e.code==="payment_method_provider_decline"}function dc(e){return e==="paypal"?"PayPal":(0,po.getStripeMethodDisplayName)(e)}function ou(){return typeof window>"u"?"":window.location.href}var au={position:"absolute",width:"100%",height:0,overflow:"hidden",visibility:"hidden",pointerEvents:"none"};function yc(e){let{publishableKey:t,method:r,currency:n,futureUse:o,futureUseUnsupported:i,appearance:l}=e,[d]=(0,Ar.useState)(()=>tu(t)),p=(0,Ar.useMemo)(()=>{let b=ru(l),k=(0,po.resolveSetupFutureUsage)({futureUse:o,futureUseUnsupported:i},r,"setup");return{mode:"setup",currency:n.toLowerCase(),paymentMethodTypes:mc[r]?.types??[r],...k?{setupFutureUsage:k}:{},...b?{appearance:b}:{}}},[l,n,o,i,r]);return(0,_r.jsx)(Wn.Elements,{stripe:d,options:p,children:(0,_r.jsx)(iu,{...e})})}function iu({method:e,category:t,sessionId:r,nonce:n,billingApiUrl:o,telemetry:i,appearance:l,themeId:d,buttonsLayout:p,onSubmitting:b,onConfirmed:k,onDeclined:w,onFailed:x,onValidation:O,onUnavailable:M}){let W=(0,Wn.useStripe)(),_=(0,Wn.useElements)(),[h,v]=(0,Ar.useState)(!1),[te,S]=(0,Ar.useState)("loading"),[Pe,j]=(0,Ar.useState)(!1),[Q,Be]=(0,Ar.useState)(!1),se=(0,Ar.useRef)(!1),[je]=(0,Ar.useState)(()=>(0,zn.detectPayPalEnvironment)()),[Je,me]=(0,Ar.useState)(!1),pe=(0,Ar.useCallback)((ae,ge)=>{if((0,ke.classifyExternalMethodFailure)(ae,{inAppBrowser:je.inAppBrowser,handoffObserved:!1}).popupBlocked){me(!0),x(new Error((0,ke.buildExternalMethodRecoveryMessage)(dc(e),!0,je.inAppBrowser)),{code:"popup_blocked",retryable:!0});return}x(ge.message===void 0?ae:new Error(ge.message),{code:ge.code,retryable:!0})},[je.inAppBrowser,e,x]),Ke=(0,Ar.useCallback)(async()=>{if(!(!W||!_||se.current)){se.current=!0,v(!0);try{let ae=await _.submit();if(ae.error){O(ae.error.message??null);return}b();let ge=await new uc.PaymentAPI(o,{telemetry:i}).createSessionIntent(r,n,{provider:"stripe",paymentMethodCategory:t,paymentMethodType:e,paymentMethodId:null,intentKind:"setup"});if(ge.provider!=="stripe"||ge.intentKind!=="setup")throw new po.FloPayError("The billing API returned a non-setup intent.","api_error",{code:"InvalidSessionIntentResponse"});let Me=await W.confirmSetup({elements:_,clientSecret:ge.clientSecret,confirmParams:{return_url:ou()},redirect:"if_required"});if(Me.error){nu(Me.error)?w({...Me.error.decline_code||Me.error.code?{reason:Me.error.decline_code??Me.error.code}:{},...Me.error.message?{message:Me.error.message}:{}}):pe(Me.error,{code:"payment_method_setup_provider_failed",message:Me.error.message??"The payment method could not be saved."});return}k()}catch(ae){pe(ae,{code:"payment_method_setup_failed"})}finally{se.current=!1,v(!1)}}},[o,t,_,e,n,k,w,b,O,pe,r,W,i]),Re=mc[e]?.wallet,_e=Re==="paypal"&&(0,qn.resolveStripePayPalPresentation)(je,"auto",Je?"blocked":je.popupCapability)==="redirect",Ee=l?.variables?.borderRadius??p?.cardButton?.borderRadius??8;if(t==="wallet"&&Re&&!_e)return(0,_r.jsxs)(_r.Fragment,{children:[(0,_r.jsx)(Xo,{}),(0,_r.jsx)(ka,{state:te,borderRadius:Ee,children:(0,_r.jsx)(Wn.ExpressCheckoutElement,{options:{...ii,paymentMethods:ai([e])},onReady:ae=>{let ge=wa(ae,[Re]);S(ge),ge==="unavailable"&&M()},onLoadError:()=>{S("load_error"),M()},onConfirm:()=>{Ke()}})})]});let re=dc(e);return(0,_r.jsxs)(_r.Fragment,{children:[Pe?(0,_r.jsx)(oi,{method:e,themeId:d,hasNextStep:!0,highlighted:Q,disabled:h,onClick:()=>Be(ae=>!ae),backgroundColor:p?.cardButton?.backgroundColor,borderColor:p?.cardInputBorder,textColor:p?.cardButton?.color,borderRadius:Ee}):null,(0,_r.jsxs)("div",{"data-testid":`flopay-stripe-method-form-${e}`,"aria-hidden":!Q,style:Q?{display:"flex",flexDirection:"column"}:au,children:[(0,_r.jsx)(Wn.PaymentElement,{options:{layout:si},onReady:()=>j(!0),onLoadError:()=>M(),onChange:ae=>{ae.complete&&O(null)}}),(0,_r.jsx)(li,{testId:`flopay-payment-method-save-${e}`,attributes:{"data-flopay-payment-method-save":e},disabled:!W||!_||h||!Q,onClick:()=>{Ke()},color:l?.variables?.colorPrimary??"#4A49FF",borderRadius:l?.variables?.borderRadius??"8px",style:p?.submitButton,children:h?"Saving\u2026":`Save ${re}`})]})]})}var Aa=require("@flopay/js/card-setup"),nr=require("@flopay/shared"),qe=$i(require("react"),1);var Zo=require("@flopay/js/card-setup"),vr=require("@flopay/shared");var rr=require("react/jsx-runtime"),su=15,lu=2e3;function cu(e){return{userId:e.customer?.id??"",email:e.customer?.email??""}}function bs(e){return new Promise(t=>setTimeout(t,e))}async function du(e,t,r){if(!t.trim())throw new nr.FloPayError("FloPayPaymentMethodSetup requires a sessionId.","validation_error",{code:"MissingCheckoutSessionId",param:"sessionId"});if(!r.trim())throw new nr.FloPayError("FloPayPaymentMethodSetup requires a session nonce.","validation_error",{code:"MissingCheckoutSessionToken",param:"nonce"});let n=await e.getUnifiedCheckoutSession(t,r),o=n.data.session;if(!o||!(0,nr.isCardSetupCheckoutSession)(o))throw new nr.FloPayError("FloPayPaymentMethodSetup only accepts a zero-amount, productless setup session.","validation_error",{code:"InvalidPaymentMethodSetupSession",param:"sessionId"});let i=(0,vr.readSetupAdvertisement)(n);if(!(0,vr.advertisesAnyMethod)(i)){let{skippedForMissingCurrency:l}=i,d=l.length>0?`FloPay: this setup session advertises only Stripe methods (${l.join(", ")}), and they need the session's currency, which the setup-session read did not carry.`:"FloPay: this setup session advertises no payment method.";throw new nr.FloPayError(d,"validation_error",{code:"NoAdvertisedPaymentMethods",param:"sessionId"})}return{session:o,advertisement:i}}async function uu(e,t,r,n,o){let i=t.vault??null;(0,nr.isMountableVaultBlock)(i)||(i=await e.getVaultCapture(r,n));let l=(0,nr.resolveVaultMountOptions)(i,{billingApiUrl:o,sessionId:r,nonce:n});if(!l)throw new nr.FloPayError("FloPay: this setup session has no vault card capability. Upgrade the billing backend integration.","api_error",{code:"UnsupportedBackendVaultCapability"});return l}var wi=class extends qe.default.Component{constructor(){super(...arguments);this.state={failed:!1}}static getDerivedStateFromError(){return{failed:!0}}componentDidCatch(r){this.props.onFailed(r,{code:"payment_method_setup_load_failed",retryable:!1})}render(){return this.state.failed?null:this.props.children}};function fc({branches:{StripeSetupMethod:e,PayPalSetupMethod:t},sessionId:r,nonce:n,billingApiUrl:o,telemetry:i,theme:l="modern-light",containerStyle:d,loading:p=null,onReady:b,onComplete:k,onDecline:w,onCancel:x,onValidation:O,onError:M}){let[W]=(0,qe.useState)(Zo.readSetupRedirectReturn),[_,h]=(0,qe.useState)(null),[v,te]=(0,qe.useState)(!1),[S,Pe]=(0,qe.useState)(null),[j,Q]=(0,qe.useState)(null),[Be,se]=(0,qe.useState)(null),[je,Je]=(0,qe.useState)(null),[me,pe]=(0,qe.useState)(()=>new Set),Ke=(0,qe.useRef)(me),Re=(0,qe.useRef)(null);Re.current=_;let _e=(0,qe.useRef)(!1),Ee=(0,qe.useRef)(!1),re=(0,qe.useRef)(!1),ae=(0,qe.useRef)(!1),ge=(0,qe.useRef)(0),Me=(0,qe.useRef)(0),K=(0,qe.useRef)(!1),ee=(0,qe.useMemo)(()=>typeof l=="object"?void 0:(0,nr.resolveTheme)(l),[l]),ye=(0,qe.useMemo)(()=>typeof l=="object"?l:ee?(0,Ir.computeVaultCardThemeColors)({appearance:ee.appearance,buttonsStyles:ee.buttonsLayout,layout:"default"}):null,[ee,l]),L=(0,qe.useMemo)(()=>(0,Ra.mergeCardSetupSurface)(ee?.buttonsLayout.cardFormContainer,d),[ee,d]),ve=(0,qe.useMemo)(()=>ee?Ci(ee):void 0,[ee]),Y=(0,qe.useRef)({sessionId:r,nonce:n,billingApiUrl:o,telemetry:i,onReady:b,onComplete:k,onDecline:w,onCancel:x,onValidation:O,onError:M});Y.current={sessionId:r,nonce:n,billingApiUrl:o,telemetry:i,onReady:b,onComplete:k,onDecline:w,onCancel:x,onValidation:O,onError:M},(0,qe.useEffect)(()=>{K.current=!0;let T=ge.current+1;return ge.current=T,()=>{K.current=!1,Me.current+=1,queueMicrotask(()=>{ge.current===T&&(re.current||ae.current||(ae.current=!0,(0,tt.invokeMerchantCallback)(()=>{Y.current.onCancel?.({status:"cancelled",sessionId:r})})))})}},[r]);let be=(0,qe.useCallback)((T,A)=>{re.current=!0,_e.current=!1,Je({status:"success",wording:T,message:null}),(async()=>(await bs(600),!Ee.current&&(Ee.current=!0,(0,tt.invokeMerchantCallback)(()=>{Y.current.onComplete?.({status:"succeeded",sessionId:Y.current.sessionId,...A?{paymentMethod:A}:{}})}),K.current&&Je(null))))()},[]),X=(0,qe.useCallback)((T,A)=>{re.current=!0,_e.current=!1,Je({status:"error",wording:T,message:A.message??null}),(0,tt.invokeMerchantCallback)(()=>{Y.current.onDecline?.({status:"declined",sessionId:Y.current.sessionId,...A.reason?{reason:A.reason}:{},...A.message?{message:A.message}:{}})}),(async()=>(await bs(400),K.current&&Je(null)))()},[]),ct=(0,qe.useCallback)((T,A)=>{_e.current?(_e.current=!1,Je({status:"error",wording:T,message:A.message}),setTimeout(()=>{K.current&&Je(null)},400)):Je(null),(0,tt.invokeMerchantCallback)(()=>Y.current.onError?.(A))},[]),Ge=(0,qe.useCallback)(async T=>{let A=Me.current+1;Me.current=A;let ne=()=>!K.current||A!==Me.current;_e.current=!0,Je({status:"processing",wording:"payment_method",message:null});let q=new Aa.PaymentAPI((0,nr.resolveBillingApiUrl)(Y.current.billingApiUrl),{telemetry:Y.current.telemetry});try{for(let Ce=0;Ce<su;Ce+=1){if((Ce>0||T.waitFirst)&&await bs(lu),ne())return;let rt=await q.getUnifiedCheckoutSession(Y.current.sessionId,Y.current.nonce);if(ne())return;let Ct=rt.data.session?.status;if(Ct==="complete"){te(!0),be("payment_method");return}if(Ct==="expired")throw new nr.FloPayError("This setup session expired before the payment method was saved.","validation_error",{code:"payment_method_setup_expired"})}throw new nr.FloPayError("The payment method could not be confirmed yet. Please try again.","api_error",{code:"payment_method_setup_unverified"})}catch(Ce){if(ne())return;let rt=Ce instanceof nr.FloPayError&&Ce.code==="payment_method_setup_unverified";ct("payment_method",ro(Ce,rt?{retryable:!0}:{}))}finally{q.destroy()}},[ct,be]);(0,qe.useEffect)(()=>{let T=!0,A=(0,nr.resolveBillingApiUrl)(o),ne=new Aa.PaymentAPI(A,{telemetry:i});h(null),te(!1),Pe(null),Q(null),se(null);let q=new Set;return Ke.current=q,pe(q),re.current=!1,ae.current=!1,Ee.current=!1,(async()=>{try{let{session:Ce,advertisement:rt}=await du(ne,r,n);if(!T)return;let Ct={advertisement:rt,customer:cu(Ce),...Ce.futureUse?{futureUse:Ce.futureUse}:{},...Ce.futureUseUnsupported?{futureUseUnsupported:Ce.futureUseUnsupported}:{}};if(W){if((0,Zo.clearSetupRedirectParams)(),Ce.status==="complete"){te(!0),h(Ct),be("payment_method");return}W.failed?X("payment_method",{reason:"redirect_failed"}):Ge({waitFirst:!0})}let ht=rt.card?await uu(ne,Ce,r,n,A):null;if(!T)return;h(Ct),ht&&(Q(ht),Pe(new Aa.PciVaultCardCapture({sessionId:r,operation:"card_setup",telemetry:i})))}catch(Ce){if(!T)return;let rt=ro(Ce);re.current=!0,se(rt),(0,tt.invokeMerchantCallback)(()=>Y.current.onError?.(rt))}})(),()=>{T=!1,ne.destroy()}},[o,n,W,X,be,r,i,Ge]),(0,qe.useEffect)(()=>{if(!S)return;_e.current=!1;let T=S.on("submitting",()=>{_e.current=!0,Je({status:"processing",wording:"card",message:null})}),A=S.on("complete",Ce=>{be("card",Ce.paymentMethod)}),ne=S.on("decline",Ce=>{X("card",{...Ce.declineReason?{reason:Ce.declineReason}:{},...Ce.message?{message:Ce.message}:{}})}),q=S.on("challenge_dismissed",()=>{Je(null)});return()=>{T(),A(),ne(),q()}},[S,X,be]);let $e=(0,qe.useCallback)((T,A,ne)=>{if(ne.retryable){ct("payment_method",ro(A,ne));return}if(Ke.current.has(T))return;let q=new Set(Ke.current);q.add(T),Ke.current=q,pe(q);let Ce=Re.current?.advertisement,rt=Ce?(0,vr.advertisedMethodKeys)(Ce).some(Ct=>!q.has(Ct)):!1;ct("payment_method",ro(A,{code:ne.code,retryable:rt}))},[ct]),lt=(0,qe.useMemo)(()=>({onSubmitting:()=>{_e.current=!0,Je({status:"processing",wording:"payment_method",message:null})},onConfirmed:()=>{Ge({waitFirst:!1})},onDeclined:T=>X("payment_method",T),onValidation:T=>{(0,tt.invokeMerchantCallback)(()=>Y.current.onValidation?.(T))},onAbandoned:()=>{_e.current=!1,Je(null)}}),[X,Ge]),Ye=(0,qe.useRef)($e);Ye.current=$e;let dt=(0,qe.useRef)(new Map),We=T=>{let A=dt.current.get(T);if(A)return A;let ne=(q,Ce)=>Ye.current(T,q,Ce);return dt.current.set(T,ne),ne},Et=(0,qe.useCallback)(T=>{if(Ke.current.has(T))return;let A=new Set(Ke.current);A.add(T),Ke.current=A,pe(A);let ne=Re.current?.advertisement;ne&&(0,vr.advertisedMethodKeys)(ne).some(Ce=>!A.has(Ce))||ct("payment_method",ro(new Error("FloPay: none of the advertised payment methods can be used here."),{code:"payment_method_setup_unavailable",retryable:!1}))},[ct]),Ut=(0,qe.useRef)(Et);Ut.current=Et;let kt=(0,qe.useRef)(new Map),At=T=>{let A=kt.current.get(T);if(A)return A;let ne=()=>Ut.current(T);return kt.current.set(T,ne),ne},N=je?(0,rr.jsx)(qr,{status:je.status,errorMessage:je.message,...(0,vr.setupOverlayLabels)(je.wording),successNote:null,...ve?{theme:ve}:{}}):null;if(Be)return(0,rr.jsx)("div",{role:"alert",children:Be.message});if(!_||v)return(0,rr.jsxs)(rr.Fragment,{children:[N,_?null:p]});let{advertisement:fe,customer:Qe,futureUse:G,futureUseUnsupported:Ne}=_,Rt=(0,nr.resolveBillingApiUrl)(o),Ze=i===void 0?{}:{telemetry:i},Tt=fe.stripe.filter(({method:T})=>!me.has(T)),U=me.has("paypal")?null:fe.paypal,m=!!(fe.card&&S&&j?.html),P=({method:T,publishableKey:A,currency:ne})=>(0,rr.jsx)("div",{"data-flopay-payment-method":T,style:{display:"contents"},children:(0,rr.jsx)(wi,{onFailed:We(T),children:(0,rr.jsx)(qe.Suspense,{fallback:null,children:(0,rr.jsx)(e,{method:T,category:(0,vr.stripeMethodCategory)(T),publishableKey:A,currency:ne,...G?{futureUse:G}:{},...Ne?{futureUseUnsupported:Ne}:{},sessionId:r,nonce:n,billingApiUrl:Rt,...Ze,...ee?{appearance:ee.appearance,buttonsLayout:ee.buttonsLayout}:{},...typeof l=="string"?{themeId:l}:{},...lt,onFailed:We(T),onUnavailable:At(T)})})})},T),H=Tt.filter(({method:T})=>(0,vr.stripeMethodCategory)(T)==="wallet"),V=Tt.filter(({method:T})=>(0,vr.stripeMethodCategory)(T)!=="wallet"),he=Tt.length>0||U!==null;return(0,rr.jsxs)(rr.Fragment,{children:[N,he?(0,rr.jsxs)("div",{"data-flopay-payment-methods":"",style:{position:"relative",display:"flex",flexDirection:"column",gap:"0.5rem"},children:[H.map(P),U?(0,rr.jsx)("div",{"data-flopay-payment-method":"paypal",children:(0,rr.jsx)(wi,{onFailed:We("paypal"),children:(0,rr.jsx)(qe.Suspense,{fallback:null,children:(0,rr.jsx)(t,{clientId:U.clientId,...U.environment?{environment:U.environment}:{},...fe.currency?{currency:fe.currency}:{},sessionId:r,nonce:n,billingApiUrl:Rt,customer:Qe,...Ze,...lt,onFailed:We("paypal"),onUnavailable:At("paypal")})})})}):null,V.map(P)]}):null,m&&he?(0,rr.jsx)(ci,{label:"or add a card"}):null,m&&S&&j?.html?(0,rr.jsx)("div",{"data-flopay-payment-method":"card",children:(0,rr.jsx)(co,{capture:S,html:j.html,messageToken:j.messageToken,expectedOrigin:j.expectedOrigin,verificationRequired:j.verificationRequired,theme:ye,containerStyle:L,onReady:()=>{(0,tt.invokeMerchantCallback)(()=>Y.current.onReady?.())},onValidation:T=>{(0,tt.invokeMerchantCallback)(()=>Y.current.onValidation?.(T))},onError:T=>{T&&ct("card",ro(new Error(T),{code:"card_setup_widget_failed",retryable:!0}))}})}):null]})}var hc=require("react/jsx-runtime"),pu={StripeSetupMethod:yc,PayPalSetupMethod:lc};function gc(e){return(0,hc.jsx)(fc,{...e,branches:pu})}0&&(module.exports={DirectPayPalButton,FloPayAutomaticPaymentButton,FloPayCardSetup,FloPayCardSetupError,FloPayCheckout,FloPayPaymentMethodSetup,FloPayProvider,SplitCardForm,VaultCardFields,dropThirdPartyOnlyError,useCheckout,useFloPay,usePayPalFloPay});