@payconductor-sdk-web/library-react 1.0.5 → 1.0.7
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.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +84 -84
- package/dist/index.es.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const D=require("react/jsx-runtime"),m=require("react"),L="https://iframe.payconductor.ai/v1",O="http://localhost:5175",
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const D=require("react/jsx-runtime"),m=require("react"),L="https://iframe.payconductor.ai/v1",O="http://localhost:5175",j=3e4,B="600px";var w=(e=>(e.Init="Init",e.Config="Config",e.Update="Update",e.ConfirmPayment="ConfirmPayment",e.Validate="Validate",e.Reset="Reset",e))(w||{}),I=(e=>(e.Ready="Ready",e.Error="Error",e.PaymentComplete="PaymentComplete",e.PaymentFailed="PaymentFailed",e.PaymentPending="PaymentPending",e.ValidationError="ValidationError",e.PaymentMethodSelected="PaymentMethodSelected",e))(I||{});const Q=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),U=Q?O:L,b=[O,L],v=B,F=j,s={INIT:w.Init,CONFIG:w.Config,UPDATE:w.Update,CONFIRM_PAYMENT:w.ConfirmPayment,VALIDATE:w.Validate,RESET:w.Reset,READY:I.Ready,ERROR:I.Error,PAYMENT_COMPLETE:I.PaymentComplete,PAYMENT_FAILED:I.PaymentFailed,PAYMENT_PENDING:I.PaymentPending,VALIDATION_ERROR:I.ValidationError,PAYMENT_METHOD_SELECTED:I.PaymentMethodSelected},$={INVALID_CLIENT:"InvalidClient",INVALID_TOKEN:"InvalidToken",NETWORK_ERROR:"NetworkError",IFRAME_NOT_READY:"IframeNotReady",PAYMENT_DECLINED:"PaymentDeclined",VALIDATION_ERROR:"ValidationError",TIMEOUT:"Timeout"};function K(e){const n=new URLSearchParams({publicKey:e.publicKey});return`${U}?${n.toString()}`}function V(){return crypto.randomUUID()}function g(e,n){return n.includes(e)}function S(){return new Map}function R(e,n,r,t){return new Promise((i,f)=>{if(!e||!("contentWindow"in e)){f(new Error("Iframe not defined"));return}if(!(e!=null&&e.contentWindow)){f(new Error("Iframe not ready"));return}if(!n){f(new Error("Pending requests not initialized"));return}const c=V();n.set(c,{resolve:i,reject:f}),e.contentWindow.postMessage({type:r,data:t,requestId:c},"*"),setTimeout(()=>{n!=null&&n.has(c)&&(n.delete(c),f(new Error("Request timeout")))},F)})}function Y(e,n,r){return R(e,n,s.CONFIRM_PAYMENT,{orderId:r.orderId})}function J(e,n,r){return R(e,n,s.VALIDATE,r)}function X(e,n){return R(e,n,s.RESET)}function Z(e,n,r){return R(e,n,s.CONFIG,r)}function x(e,n,r){return R(e,n,s.INIT,r)}function p(e,n,r,t,i,f,c,C,T,E){if(!g(e.origin,b))return;const N=e.data,{requestId:h,type:P,data:u,error:y}=N;if(h&&(n!=null&&n.has(h))){const{resolve:d,reject:M}=n.get(h);n.delete(h),y?M(new Error(String(y.message))):d(u);return}if(P===s.READY){r(!0),i==null||i();return}if(P===s.ERROR){t((y==null?void 0:y.message)||"Unknown error"),f==null||f(new Error(String(y==null?void 0:y.message)));return}if(P===s.PAYMENT_COMPLETE){u&&typeof u=="object"&&"status"in u&&(c==null||c(u));return}if(P===s.PAYMENT_FAILED){u&&typeof u=="object"&&"status"in u&&(C==null||C(u));return}if(P===s.PAYMENT_PENDING){u&&typeof u=="object"&&"status"in u&&(T==null||T(u));return}if(P===s.PAYMENT_METHOD_SELECTED){u&&typeof u=="object"&&"paymentMethod"in u&&(E==null||E(u.paymentMethod));return}}function G(e){const[n,r]=m.useState(()=>!1),[t,i]=m.useState(()=>!1),[f,c]=m.useState(()=>null),[C,T]=m.useState(()=>""),[E,N]=m.useState(()=>null),[h,P]=m.useState(()=>null),[u,y]=m.useState(()=>!1);return m.useEffect(()=>{const d=(...a)=>{e.debug&&console.log("[PayConductor]",...a)};d("SDK initializing",{publicKey:e.publicKey});const M=K({publicKey:e.publicKey});T(M),r(!0),N(S()),d("iframeUrl built:",M),d("pendingMap created");const _=()=>{var o,l;const a=(l=(o=window.PayConductor)==null?void 0:o.frame)==null?void 0:l.iframe;if(a){if(a instanceof HTMLIFrameElement)return a;if(typeof a=="object"&&a!==null){if("current"in a)return a.current??void 0;if("value"in a)return a.value??void 0}return a}},H={iframe:null,iframeUrl:M,get isReady(){return t},get error(){return f}},z={publicKey:e.publicKey,theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod},k={confirmPayment:a=>(d("confirmPayment called",{orderId:a.orderId}),Y(_(),E,a)),validate:a=>(d("validate called",a),J(_(),E,a)),reset:()=>(d("reset called"),X(_(),E)),getSelectedPaymentMethod:()=>h};window.PayConductor={frame:H,config:z,api:k,selectedPaymentMethod:h},d("window.PayConductor registered");const q=async()=>{if(!u){const a=_();if(!a){d("sendConfigToIframe: iframe not found, skipping");return}y(!0),d("sendConfig →",{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons}),Z(a,E,{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons,nuPayConfig:e.nuPayConfig})}},W=a=>{p(a,E,o=>{i(o),o&&(d("iframe Ready — sending config"),q())},o=>{c(o),d("iframe Error:",o)},()=>{var o;d("onReady fired"),(o=e.onReady)==null||o.call(e)},o=>{var l;d("onError fired:",o),(l=e.onError)==null||l.call(e,o)},o=>{var l;d("PaymentComplete:",o),(l=e.onPaymentComplete)==null||l.call(e,o)},o=>{var l;d("PaymentFailed:",o),(l=e.onPaymentFailed)==null||l.call(e,o)},o=>{var l;d("PaymentPending:",o),(l=e.onPaymentPending)==null||l.call(e,o)},o=>{var l;d("PaymentMethodSelected:",o),P(o),window.PayConductor&&(window.PayConductor.selectedPaymentMethod=o),(l=e.onPaymentMethodSelected)==null||l.call(e,o)})};window.addEventListener("message",W),d("SDK initialized — waiting for PayConductorCheckoutElement")},[]),D.jsx("div",{className:"payconductor",id:"payconductor",style:{display:"contents"},children:e.children})}function ee(e){const n=m.useRef(null),[r,t]=m.useState(()=>""),[i,f]=m.useState(()=>!1);return m.useEffect(()=>{const c=typeof window<"u"?window.PayConductor:null;c||console.warn("[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>"),c!=null&&c.frame&&(t(c.frame.iframeUrl||""),c.frame.iframe=n.current,console.log("[PayConductorCheckoutElement] iframe registered, src:",r)),f(!0)},[]),D.jsx("div",{className:"payconductor-element",style:{width:"100%"},children:i&&r&&n.current&&"contentWindow"in n.current?D.jsx("iframe",{allow:"payment",title:"PayConductor",ref:n,src:r,style:{width:"100%",height:e.height||v,border:"none"}}):null})}function te(){const e=typeof window<"u"?window.PayConductor:null,n=e!=null&&e.config?{publicKey:e.config.publicKey,orderId:e.config.orderId,theme:e.config.theme,locale:e.config.locale}:{},r=e!=null&&e.frame?{iframe:e.frame.iframe,isReady:e.frame.isReady,error:e.frame.error}:{iframe:null,isReady:!1,error:null};return{...n,...r}}function A(e){var r;if(!((r=e==null?void 0:e.frame)!=null&&r.iframe))return null;const n=e.frame.iframe;if(n instanceof HTMLIFrameElement)return n;if(n&&typeof n=="object"&&"value"in n){const t=n.value;if(t instanceof HTMLIFrameElement)return t}return null}function ne(){const e=typeof window<"u"?window.PayConductor:null,n=(r,t)=>{if(!e)return;const i=A(e);i!=null&&i.contentWindow&&i.contentWindow.postMessage({type:r,data:t},"*")};return e?{init:async r=>{const t=A(e),i=S();return x(t||void 0,i,r)},confirmPayment:async r=>{const t=A(e),i=S();if(!r.orderId)throw new Error("Order ID is required");return Y(t||void 0,i,r)},validate:e.api.validate,reset:e.api.reset,getSelectedPaymentMethod:()=>(e==null?void 0:e.selectedPaymentMethod)??null,updateConfig:r=>{const t=e.config;n(s.CONFIG,{publicKey:t==null?void 0:t.publicKey,orderId:t==null?void 0:t.orderId,theme:r.theme??(t==null?void 0:t.theme),locale:r.locale??(t==null?void 0:t.locale),paymentMethods:r.paymentMethods??(t==null?void 0:t.paymentMethods)})},updateorderId:r=>{const t=e.config;n(s.CONFIG,{publicKey:t==null?void 0:t.publicKey,orderId:r,theme:t==null?void 0:t.theme,locale:t==null?void 0:t.locale,paymentMethods:t==null?void 0:t.paymentMethods})},update:r=>{n(s.UPDATE,r)},submit:async()=>{const r=A(e),t=S();try{return await R(r||void 0,t,s.CONFIRM_PAYMENT,{}),{paymentMethod:void 0}}catch(i){return{error:{message:i instanceof Error?i.message:"Payment failed",code:"payment_error",type:"payment_error"}}}}}:{init:async()=>{throw new Error("PayConductor not initialized")},confirmPayment:async()=>{throw new Error("PayConductor not initialized")},validate:async()=>{throw new Error("PayConductor not initialized")},reset:async()=>{throw new Error("PayConductor not initialized")},getSelectedPaymentMethod:()=>null,updateConfig:()=>{throw new Error("PayConductor not initialized")},updateorderId:()=>{throw new Error("PayConductor not initialized")},update:()=>{throw new Error("PayConductor not initialized")},submit:async()=>{throw new Error("PayConductor not initialized")}}}exports.ALLOWED_ORIGINS=b;exports.ERROR_CODES=$;exports.IFRAME_BASE_URL=U;exports.IFRAME_DEFAULT_HEIGHT_VALUE=v;exports.POST_MESSAGES=s;exports.PayConductor=G;exports.PayConductorCheckoutElement=ee;exports.REQUEST_TIMEOUT=F;exports.buildIframeUrl=K;exports.default=G;exports.generateRequestId=V;exports.isValidOrigin=g;exports.usePayConductor=te;exports.usePayconductorElement=ne;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n orderId: options.orderId\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"confirmPayment called\", {\n orderId: options.orderId,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n isReady: ctx.frame.isReady,\n error: ctx.frame.error\n } : {\n iframe: null,\n isReady: false,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { confirmPayment, createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateorderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateorderId: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateorderId: (orderId: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","orderId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n orderId: options.orderId\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"confirmPayment called\", {\n orderId: options.orderId,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded &&\n iframeUrl &&\n iframeRef.current &&\n \"contentWindow\" in iframeRef.current ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n isReady: ctx.frame.isReady,\n error: ctx.frame.error\n } : {\n iframe: null,\n isReady: false,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { confirmPayment, createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateorderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateorderId: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateorderId: (orderId: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","orderId"],"mappings":"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"}
|
package/dist/index.es.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { jsx as L } from "react/jsx-runtime";
|
|
2
2
|
import { useState as E, useEffect as S, useRef as g } from "react";
|
|
3
3
|
const U = "https://iframe.payconductor.ai/v1", b = "http://localhost:5175", z = 3e4, G = "600px";
|
|
4
|
-
var I = /* @__PURE__ */ ((e) => (e.Init = "Init", e.Config = "Config", e.Update = "Update", e.ConfirmPayment = "ConfirmPayment", e.Validate = "Validate", e.Reset = "Reset", e))(I || {}),
|
|
5
|
-
const H = typeof window < "u" && (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1"), k = H ? b : U,
|
|
4
|
+
var I = /* @__PURE__ */ ((e) => (e.Init = "Init", e.Config = "Config", e.Update = "Update", e.ConfirmPayment = "ConfirmPayment", e.Validate = "Validate", e.Reset = "Reset", e))(I || {}), w = /* @__PURE__ */ ((e) => (e.Ready = "Ready", e.Error = "Error", e.PaymentComplete = "PaymentComplete", e.PaymentFailed = "PaymentFailed", e.PaymentPending = "PaymentPending", e.ValidationError = "ValidationError", e.PaymentMethodSelected = "PaymentMethodSelected", e))(w || {});
|
|
5
|
+
const H = typeof window < "u" && (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1"), k = H ? b : U, W = [b, U], q = G, B = z, f = {
|
|
6
6
|
INIT: I.Init,
|
|
7
7
|
CONFIG: I.Config,
|
|
8
8
|
UPDATE: I.Update,
|
|
9
9
|
CONFIRM_PAYMENT: I.ConfirmPayment,
|
|
10
10
|
VALIDATE: I.Validate,
|
|
11
11
|
RESET: I.Reset,
|
|
12
|
-
READY:
|
|
13
|
-
ERROR:
|
|
14
|
-
PAYMENT_COMPLETE:
|
|
15
|
-
PAYMENT_FAILED:
|
|
16
|
-
PAYMENT_PENDING:
|
|
17
|
-
VALIDATION_ERROR:
|
|
18
|
-
PAYMENT_METHOD_SELECTED:
|
|
12
|
+
READY: w.Ready,
|
|
13
|
+
ERROR: w.Error,
|
|
14
|
+
PAYMENT_COMPLETE: w.PaymentComplete,
|
|
15
|
+
PAYMENT_FAILED: w.PaymentFailed,
|
|
16
|
+
PAYMENT_PENDING: w.PaymentPending,
|
|
17
|
+
VALIDATION_ERROR: w.ValidationError,
|
|
18
|
+
PAYMENT_METHOD_SELECTED: w.PaymentMethodSelected
|
|
19
19
|
}, ne = {
|
|
20
20
|
INVALID_CLIENT: "InvalidClient",
|
|
21
21
|
INVALID_TOKEN: "InvalidToken",
|
|
@@ -40,7 +40,7 @@ function $(e, n) {
|
|
|
40
40
|
function N() {
|
|
41
41
|
return /* @__PURE__ */ new Map();
|
|
42
42
|
}
|
|
43
|
-
function R(e, n,
|
|
43
|
+
function R(e, n, r, t) {
|
|
44
44
|
return new Promise((i, m) => {
|
|
45
45
|
if (!e || !("contentWindow" in e)) {
|
|
46
46
|
m(new Error("Iframe not defined"));
|
|
@@ -59,50 +59,50 @@ function R(e, n, o, t) {
|
|
|
59
59
|
resolve: i,
|
|
60
60
|
reject: m
|
|
61
61
|
}), e.contentWindow.postMessage({
|
|
62
|
-
type:
|
|
62
|
+
type: r,
|
|
63
63
|
data: t,
|
|
64
64
|
requestId: c
|
|
65
65
|
}, "*"), setTimeout(() => {
|
|
66
66
|
n != null && n.has(c) && (n.delete(c), m(new Error("Request timeout")));
|
|
67
|
-
},
|
|
67
|
+
}, B);
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
|
-
function v(e, n,
|
|
70
|
+
function v(e, n, r) {
|
|
71
71
|
return R(e, n, f.CONFIRM_PAYMENT, {
|
|
72
|
-
orderId:
|
|
72
|
+
orderId: r.orderId
|
|
73
73
|
});
|
|
74
74
|
}
|
|
75
|
-
function J(e, n,
|
|
76
|
-
return R(e, n, f.VALIDATE,
|
|
75
|
+
function J(e, n, r) {
|
|
76
|
+
return R(e, n, f.VALIDATE, r);
|
|
77
77
|
}
|
|
78
78
|
function X(e, n) {
|
|
79
79
|
return R(e, n, f.RESET);
|
|
80
80
|
}
|
|
81
|
-
function Z(e, n,
|
|
82
|
-
return R(e, n, f.CONFIG,
|
|
81
|
+
function Z(e, n, r) {
|
|
82
|
+
return R(e, n, f.CONFIG, r);
|
|
83
83
|
}
|
|
84
|
-
function x(e, n,
|
|
85
|
-
return R(e, n, f.INIT,
|
|
84
|
+
function x(e, n, r) {
|
|
85
|
+
return R(e, n, f.INIT, r);
|
|
86
86
|
}
|
|
87
|
-
function p(e, n,
|
|
88
|
-
if (!$(e.origin,
|
|
87
|
+
function p(e, n, r, t, i, m, c, C, T, y) {
|
|
88
|
+
if (!$(e.origin, W))
|
|
89
89
|
return;
|
|
90
90
|
const D = e.data, {
|
|
91
|
-
requestId:
|
|
91
|
+
requestId: h,
|
|
92
92
|
type: P,
|
|
93
93
|
data: l,
|
|
94
94
|
error: s
|
|
95
95
|
} = D;
|
|
96
|
-
if (
|
|
96
|
+
if (h && (n != null && n.has(h))) {
|
|
97
97
|
const {
|
|
98
98
|
resolve: d,
|
|
99
99
|
reject: M
|
|
100
|
-
} = n.get(
|
|
101
|
-
n.delete(
|
|
100
|
+
} = n.get(h);
|
|
101
|
+
n.delete(h), s ? M(new Error(String(s.message))) : d(l);
|
|
102
102
|
return;
|
|
103
103
|
}
|
|
104
104
|
if (P === f.READY) {
|
|
105
|
-
|
|
105
|
+
r(!0), i == null || i();
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
108
|
if (P === f.ERROR) {
|
|
@@ -126,8 +126,8 @@ function p(e, n, o, t, i, m, c, C, T, y) {
|
|
|
126
126
|
return;
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
function
|
|
130
|
-
const [n,
|
|
129
|
+
function re(e) {
|
|
130
|
+
const [n, r] = E(
|
|
131
131
|
() => !1
|
|
132
132
|
), [t, i] = E(
|
|
133
133
|
() => !1
|
|
@@ -135,7 +135,7 @@ function oe(e) {
|
|
|
135
135
|
() => ""
|
|
136
136
|
), [y, D] = E(
|
|
137
137
|
() => null
|
|
138
|
-
), [
|
|
138
|
+
), [h, P] = E(() => null), [l, s] = E(() => !1);
|
|
139
139
|
return S(() => {
|
|
140
140
|
const d = (...a) => {
|
|
141
141
|
e.debug && console.log("[PayConductor]", ...a);
|
|
@@ -146,10 +146,10 @@ function oe(e) {
|
|
|
146
146
|
const M = j({
|
|
147
147
|
publicKey: e.publicKey
|
|
148
148
|
});
|
|
149
|
-
T(M),
|
|
149
|
+
T(M), r(!0), D(N()), d("iframeUrl built:", M), d("pendingMap created");
|
|
150
150
|
const A = () => {
|
|
151
|
-
var
|
|
152
|
-
const a = (u = (
|
|
151
|
+
var o, u;
|
|
152
|
+
const a = (u = (o = window.PayConductor) == null ? void 0 : o.frame) == null ? void 0 : u.iframe;
|
|
153
153
|
if (a) {
|
|
154
154
|
if (a instanceof HTMLIFrameElement) return a;
|
|
155
155
|
if (typeof a == "object" && a !== null) {
|
|
@@ -179,13 +179,13 @@ function oe(e) {
|
|
|
179
179
|
}), v(A(), y, a)),
|
|
180
180
|
validate: (a) => (d("validate called", a), J(A(), y, a)),
|
|
181
181
|
reset: () => (d("reset called"), X(A(), y)),
|
|
182
|
-
getSelectedPaymentMethod: () =>
|
|
182
|
+
getSelectedPaymentMethod: () => h
|
|
183
183
|
};
|
|
184
184
|
window.PayConductor = {
|
|
185
185
|
frame: O,
|
|
186
186
|
config: F,
|
|
187
187
|
api: K,
|
|
188
|
-
selectedPaymentMethod:
|
|
188
|
+
selectedPaymentMethod: h
|
|
189
189
|
}, d("window.PayConductor registered");
|
|
190
190
|
const V = async () => {
|
|
191
191
|
if (!l) {
|
|
@@ -213,35 +213,35 @@ function oe(e) {
|
|
|
213
213
|
p(
|
|
214
214
|
a,
|
|
215
215
|
y,
|
|
216
|
-
(
|
|
217
|
-
i(
|
|
216
|
+
(o) => {
|
|
217
|
+
i(o), o && (d("iframe Ready — sending config"), V());
|
|
218
218
|
},
|
|
219
|
-
(
|
|
220
|
-
c(
|
|
219
|
+
(o) => {
|
|
220
|
+
c(o), d("iframe Error:", o);
|
|
221
221
|
},
|
|
222
222
|
() => {
|
|
223
|
-
var
|
|
224
|
-
d("onReady fired"), (
|
|
223
|
+
var o;
|
|
224
|
+
d("onReady fired"), (o = e.onReady) == null || o.call(e);
|
|
225
225
|
},
|
|
226
|
-
(
|
|
226
|
+
(o) => {
|
|
227
227
|
var u;
|
|
228
|
-
d("onError fired:",
|
|
228
|
+
d("onError fired:", o), (u = e.onError) == null || u.call(e, o);
|
|
229
229
|
},
|
|
230
|
-
(
|
|
230
|
+
(o) => {
|
|
231
231
|
var u;
|
|
232
|
-
d("PaymentComplete:",
|
|
232
|
+
d("PaymentComplete:", o), (u = e.onPaymentComplete) == null || u.call(e, o);
|
|
233
233
|
},
|
|
234
|
-
(
|
|
234
|
+
(o) => {
|
|
235
235
|
var u;
|
|
236
|
-
d("PaymentFailed:",
|
|
236
|
+
d("PaymentFailed:", o), (u = e.onPaymentFailed) == null || u.call(e, o);
|
|
237
237
|
},
|
|
238
|
-
(
|
|
238
|
+
(o) => {
|
|
239
239
|
var u;
|
|
240
|
-
d("PaymentPending:",
|
|
240
|
+
d("PaymentPending:", o), (u = e.onPaymentPending) == null || u.call(e, o);
|
|
241
241
|
},
|
|
242
|
-
(
|
|
242
|
+
(o) => {
|
|
243
243
|
var u;
|
|
244
|
-
d("PaymentMethodSelected:",
|
|
244
|
+
d("PaymentMethodSelected:", o), P(o), window.PayConductor && (window.PayConductor.selectedPaymentMethod = o), (u = e.onPaymentMethodSelected) == null || u.call(e, o);
|
|
245
245
|
}
|
|
246
246
|
);
|
|
247
247
|
};
|
|
@@ -258,15 +258,15 @@ function oe(e) {
|
|
|
258
258
|
}
|
|
259
259
|
);
|
|
260
260
|
}
|
|
261
|
-
function
|
|
262
|
-
const n = g(null), [
|
|
261
|
+
function oe(e) {
|
|
262
|
+
const n = g(null), [r, t] = E(() => ""), [i, m] = E(() => !1);
|
|
263
263
|
return S(() => {
|
|
264
264
|
const c = typeof window < "u" ? window.PayConductor : null;
|
|
265
265
|
c || console.warn(
|
|
266
266
|
"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>"
|
|
267
267
|
), c != null && c.frame && (t(c.frame.iframeUrl || ""), c.frame.iframe = n.current, console.log(
|
|
268
268
|
"[PayConductorCheckoutElement] iframe registered, src:",
|
|
269
|
-
|
|
269
|
+
r
|
|
270
270
|
)), m(!0);
|
|
271
271
|
}, []), /* @__PURE__ */ L(
|
|
272
272
|
"div",
|
|
@@ -275,16 +275,16 @@ function re(e) {
|
|
|
275
275
|
style: {
|
|
276
276
|
width: "100%"
|
|
277
277
|
},
|
|
278
|
-
children: i &&
|
|
278
|
+
children: i && r && n.current && "contentWindow" in n.current ? /* @__PURE__ */ L(
|
|
279
279
|
"iframe",
|
|
280
280
|
{
|
|
281
281
|
allow: "payment",
|
|
282
282
|
title: "PayConductor",
|
|
283
283
|
ref: n,
|
|
284
|
-
src:
|
|
284
|
+
src: r,
|
|
285
285
|
style: {
|
|
286
286
|
width: "100%",
|
|
287
|
-
height: e.height ||
|
|
287
|
+
height: e.height || q,
|
|
288
288
|
border: "none"
|
|
289
289
|
}
|
|
290
290
|
}
|
|
@@ -298,7 +298,7 @@ function ae() {
|
|
|
298
298
|
orderId: e.config.orderId,
|
|
299
299
|
theme: e.config.theme,
|
|
300
300
|
locale: e.config.locale
|
|
301
|
-
} : {},
|
|
301
|
+
} : {}, r = e != null && e.frame ? {
|
|
302
302
|
iframe: e.frame.iframe,
|
|
303
303
|
isReady: e.frame.isReady,
|
|
304
304
|
error: e.frame.error
|
|
@@ -309,12 +309,12 @@ function ae() {
|
|
|
309
309
|
};
|
|
310
310
|
return {
|
|
311
311
|
...n,
|
|
312
|
-
...
|
|
312
|
+
...r
|
|
313
313
|
};
|
|
314
314
|
}
|
|
315
315
|
function _(e) {
|
|
316
|
-
var
|
|
317
|
-
if (!((
|
|
316
|
+
var r;
|
|
317
|
+
if (!((r = e == null ? void 0 : e.frame) != null && r.iframe)) return null;
|
|
318
318
|
const n = e.frame.iframe;
|
|
319
319
|
if (n instanceof HTMLIFrameElement)
|
|
320
320
|
return n;
|
|
@@ -326,55 +326,55 @@ function _(e) {
|
|
|
326
326
|
return null;
|
|
327
327
|
}
|
|
328
328
|
function ie() {
|
|
329
|
-
const e = typeof window < "u" ? window.PayConductor : null, n = (
|
|
329
|
+
const e = typeof window < "u" ? window.PayConductor : null, n = (r, t) => {
|
|
330
330
|
if (!e) return;
|
|
331
331
|
const i = _(e);
|
|
332
332
|
i != null && i.contentWindow && i.contentWindow.postMessage({
|
|
333
|
-
type:
|
|
333
|
+
type: r,
|
|
334
334
|
data: t
|
|
335
335
|
}, "*");
|
|
336
336
|
};
|
|
337
337
|
return e ? {
|
|
338
|
-
init: async (
|
|
338
|
+
init: async (r) => {
|
|
339
339
|
const t = _(e), i = N();
|
|
340
|
-
return x(t || void 0, i,
|
|
340
|
+
return x(t || void 0, i, r);
|
|
341
341
|
},
|
|
342
|
-
confirmPayment: async (
|
|
342
|
+
confirmPayment: async (r) => {
|
|
343
343
|
const t = _(e), i = N();
|
|
344
|
-
if (!
|
|
344
|
+
if (!r.orderId)
|
|
345
345
|
throw new Error("Order ID is required");
|
|
346
|
-
return v(t || void 0, i,
|
|
346
|
+
return v(t || void 0, i, r);
|
|
347
347
|
},
|
|
348
348
|
validate: e.api.validate,
|
|
349
349
|
reset: e.api.reset,
|
|
350
350
|
getSelectedPaymentMethod: () => (e == null ? void 0 : e.selectedPaymentMethod) ?? null,
|
|
351
|
-
updateConfig: (
|
|
351
|
+
updateConfig: (r) => {
|
|
352
352
|
const t = e.config;
|
|
353
353
|
n(f.CONFIG, {
|
|
354
354
|
publicKey: t == null ? void 0 : t.publicKey,
|
|
355
355
|
orderId: t == null ? void 0 : t.orderId,
|
|
356
|
-
theme:
|
|
357
|
-
locale:
|
|
358
|
-
paymentMethods:
|
|
356
|
+
theme: r.theme ?? (t == null ? void 0 : t.theme),
|
|
357
|
+
locale: r.locale ?? (t == null ? void 0 : t.locale),
|
|
358
|
+
paymentMethods: r.paymentMethods ?? (t == null ? void 0 : t.paymentMethods)
|
|
359
359
|
});
|
|
360
360
|
},
|
|
361
|
-
updateorderId: (
|
|
361
|
+
updateorderId: (r) => {
|
|
362
362
|
const t = e.config;
|
|
363
363
|
n(f.CONFIG, {
|
|
364
364
|
publicKey: t == null ? void 0 : t.publicKey,
|
|
365
|
-
orderId:
|
|
365
|
+
orderId: r,
|
|
366
366
|
theme: t == null ? void 0 : t.theme,
|
|
367
367
|
locale: t == null ? void 0 : t.locale,
|
|
368
368
|
paymentMethods: t == null ? void 0 : t.paymentMethods
|
|
369
369
|
});
|
|
370
370
|
},
|
|
371
|
-
update: (
|
|
372
|
-
n(f.UPDATE,
|
|
371
|
+
update: (r) => {
|
|
372
|
+
n(f.UPDATE, r);
|
|
373
373
|
},
|
|
374
374
|
submit: async () => {
|
|
375
|
-
const
|
|
375
|
+
const r = _(e), t = N();
|
|
376
376
|
try {
|
|
377
|
-
return await R(
|
|
377
|
+
return await R(r || void 0, t, f.CONFIRM_PAYMENT, {}), {
|
|
378
378
|
paymentMethod: void 0
|
|
379
379
|
};
|
|
380
380
|
} catch (i) {
|
|
@@ -416,16 +416,16 @@ function ie() {
|
|
|
416
416
|
};
|
|
417
417
|
}
|
|
418
418
|
export {
|
|
419
|
-
|
|
419
|
+
W as ALLOWED_ORIGINS,
|
|
420
420
|
ne as ERROR_CODES,
|
|
421
421
|
k as IFRAME_BASE_URL,
|
|
422
|
-
|
|
422
|
+
q as IFRAME_DEFAULT_HEIGHT_VALUE,
|
|
423
423
|
f as POST_MESSAGES,
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
424
|
+
re as PayConductor,
|
|
425
|
+
oe as PayConductorCheckoutElement,
|
|
426
|
+
B as REQUEST_TIMEOUT,
|
|
427
427
|
j as buildIframeUrl,
|
|
428
|
-
|
|
428
|
+
re as default,
|
|
429
429
|
Q as generateRequestId,
|
|
430
430
|
$ as isValidOrigin,
|
|
431
431
|
ae as usePayConductor,
|
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n orderId: options.orderId\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"confirmPayment called\", {\n orderId: options.orderId,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n isReady: ctx.frame.isReady,\n error: ctx.frame.error\n } : {\n iframe: null,\n isReady: false,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { confirmPayment, createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateorderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateorderId: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateorderId: (orderId: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","orderId"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n orderId: options.orderId\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"confirmPayment called\", {\n orderId: options.orderId,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded &&\n iframeUrl &&\n iframeRef.current &&\n \"contentWindow\" in iframeRef.current ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n isReady: ctx.frame.isReady,\n error: ctx.frame.error\n } : {\n iframe: null,\n isReady: false,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { confirmPayment, createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateorderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateorderId: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateorderId: (orderId: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","orderId"],"mappings":"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"}
|