@payconductor/react 1.0.1 → 1.0.3

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.
@@ -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/v1\";\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\") && !window.location.search.includes(\"production\");\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.some(allowed => {\n try {\n return new URL(allowed).origin === origin;\n } catch {\n return allowed === origin;\n }\n });\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 const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n if (window.PayConductor && window.PayConductor.frame) window.PayConductor.frame.isReady = true;\n onReady?.();\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n resolve(data);\n }\n return;\n }\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n if (requestId && pendingMap && 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.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 [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) console.log(\"[PayConductor]\", ...args);\n };\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n const pendingMap: Map<string, PendingRequest> = createPendingRequestsMap();\n let configSent = false;\n log(\"init\", props.publicKey);\n log(\"iframeUrl\", iframeUrl);\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (ref) {\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n const obj = ref as Record<string, unknown>;\n if (\"current\" in obj && obj.current instanceof HTMLIFrameElement)\n return obj.current;\n if (\"value\" in obj && obj.value instanceof HTMLIFrameElement)\n return obj.value;\n }\n return ref as HTMLIFrameElement;\n }\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? undefined\n );\n };\n const frame: PayConductorFrame = {\n get iframe(): HTMLIFrameElement | null {\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? null\n );\n },\n set iframe(_: HTMLIFrameElement | Element | unknown | null) {},\n iframeUrl,\n isReady:\n window.PayConductor && window.PayConductor.frame\n ? window.PayConductor.frame.isReady\n : false,\n error: null,\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(\"→ CONFIRM_PAYMENT\", {\n orderId: options.orderId,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"→ VALIDATE\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"→ RESET\");\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(\"registered\");\n window.dispatchEvent(\n new CustomEvent(\"payconductor:registered\", {\n detail: window.PayConductor,\n })\n );\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"→ CONFIG skipped: iframe not found\");\n return;\n }\n configSent = true;\n log(\"→ CONFIG\", {\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 if (event.data?.type) {\n log(\"←\", event.data.type, event.data.data ?? \"\");\n }\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n frame.isReady = val;\n if (window.PayConductor?.frame)\n window.PayConductor.frame.isReady = val;\n if (val) sendConfigToIframe();\n },\n (val) => {\n setError(val);\n frame.error = val;\n if (window.PayConductor?.frame) window.PayConductor.frame.error = val;\n },\n () => {\n props.onReady?.();\n },\n (err) => {\n props.onError?.(err);\n },\n (data) => {\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n setSelectedPaymentMethod(method);\n if (window.PayConductor)\n window.PayConductor.selectedPaymentMethod = method;\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n const trySendConfig = () => {\n const el = getIframe();\n if (!el) return false;\n try {\n const readyState =\n el.contentDocument?.readyState ??\n el.contentWindow?.document?.readyState;\n if (readyState === \"complete\") {\n sendConfigToIframe();\n return true;\n }\n } catch {}\n return false;\n };\n const pollForIframe = () => {\n if (trySendConfig()) return;\n const el = getIframe();\n if (el) {\n el.addEventListener(\"load\", () => sendConfigToIframe(), {\n once: true,\n });\n return;\n }\n setTimeout(pollForIframe, 50);\n };\n pollForIframe();\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 init = (ctx: typeof window.PayConductor) => {\n if (!ctx?.frame) return;\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n setIsLoaded(true);\n if (window.PayConductor && window.PayConductor.frame)\n window.PayConductor.frame.isReady = true;\n console.log(\"init\", {\n PayConductor: window.PayConductor,\n });\n };\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (ctx) {\n init(ctx);\n } else {\n const handler = (e: Event) => {\n init((e as CustomEvent).detail);\n window.removeEventListener(\"payconductor:registered\", handler);\n };\n window.addEventListener(\"payconductor:registered\", handler);\n }\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) {\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) return iframeRef;\n if (iframeRef && typeof iframeRef === \"object\") {\n if (\"current\" in iframeRef) {\n const el = (iframeRef as any).current;\n if (el instanceof HTMLIFrameElement) return el;\n }\n if (\"value\" in iframeRef) {\n const el = (iframeRef as any).value;\n if (el instanceof HTMLIFrameElement) return el;\n }\n }\n }\n return document.querySelector(\".payconductor-element iframe\") as HTMLIFrameElement ?? null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const getCtx = () => typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n const ctx = getCtx();\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 return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(getCtx());\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(getCtx());\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: (data: unknown) => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve(false);\n return ctx.api.validate(data);\n },\n reset: () => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve();\n return ctx.api.reset();\n },\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return getCtx()?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = getCtx()?.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 = getCtx()?.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(getCtx());\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","allowed","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","selectedPaymentMethod","setSelectedPaymentMethod","useEffect","log","args","configSent","getIframe","ref","_b","_a","obj","frame","_","api","sendConfigToIframe","eventHandler","val","err","method","trySendConfig","el","_c","pollForIframe","jsx","PayConductorCheckoutElement","iframeRef","useRef","init","ctx","handler","e","usePayConductor","getIframeFromContext","usePayconductorElement","getCtx","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/v1\";\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 Resize = \"Resize\",\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 height?: string;\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\") && !window.location.search.includes(\"production\");\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 RESIZE: IncomingMessage.Resize\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\";\nexport const SKELETON_STYLE_ID = \"payconductor-skeleton-style\";\nexport const SKELETON_CSS = `\n\t@keyframes payconductor-shimmer {\n\t 0% { background-position: -200% 0; }\n\t 100% { background-position: 200% 0; }\n\t}\n\t.payconductor-skeleton {\n\t background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n\t background-size: 200% 100%;\n\t animation: payconductor-shimmer 1.5s infinite linear;\n\t border-radius: 4px;\n\t width: 100%;\n\t}\n`;\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.some(allowed => {\n try {\n return new URL(allowed).origin === origin;\n } catch {\n return allowed === origin;\n }\n });\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, 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 const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (type === POST_MESSAGES.READY) {\n onReady?.();\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n resolve(data);\n }\n return;\n }\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n if (requestId && pendingMap && 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.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 if (type === POST_MESSAGES.RESIZE) {\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 { POST_MESSAGES } from \"./constants\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\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 [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) console.log(\"[PayConductor]\", ...args);\n };\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n const pendingMap: Map<string, PendingRequest> = createPendingRequestsMap();\n let configSent = false;\n log(\"init\", props.publicKey);\n log(\"iframeUrl\", iframeUrl);\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (ref) {\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n const obj = ref as Record<string, unknown>;\n if (\"current\" in obj && obj.current instanceof HTMLIFrameElement)\n return obj.current;\n if (\"value\" in obj && obj.value instanceof HTMLIFrameElement)\n return obj.value;\n }\n return ref as HTMLIFrameElement;\n }\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? undefined\n );\n };\n const frame: PayConductorFrame = {\n get iframe(): HTMLIFrameElement | null {\n return (\n (document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement) ?? null\n );\n },\n set iframe(_: HTMLIFrameElement | Element | unknown | null) {},\n iframeUrl,\n error: null,\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(\"→ CONFIRM_PAYMENT\", {\n orderId: options.orderId,\n });\n const iframe = getIframe();\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage(\n {\n type: POST_MESSAGES.CONFIG,\n data: {\n publicKey: props.publicKey,\n orderId: options.orderId,\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 );\n }\n config.orderId = options.orderId;\n if (window.PayConductor?.config) {\n window.PayConductor.config.orderId = options.orderId;\n }\n return confirmPayment(iframe, pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"→ VALIDATE\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"→ RESET\");\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(\"registered\");\n window.dispatchEvent(\n new CustomEvent(\"payconductor:registered\", {\n detail: window.PayConductor,\n })\n );\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"→ CONFIG skipped: iframe not found\");\n return;\n }\n configSent = true;\n log(\"→ CONFIG\", {\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 if (event.data?.type) {\n log(\"←\", event.data.type, event.data.data ?? \"\");\n }\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setError(val);\n frame.error = val;\n if (window.PayConductor?.frame) {\n window.PayConductor.frame.error = val;\n }\n },\n () => {\n props.onReady?.();\n sendConfigToIframe();\n },\n (err) => {\n props.onError?.(err);\n },\n (data) => {\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n props.onPaymentPending?.(data as PaymentResult);\n },\n (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 const trySendConfig = () => {\n const el = getIframe();\n if (!el) return false;\n try {\n const readyState =\n el.contentDocument?.readyState ??\n el.contentWindow?.document?.readyState;\n if (readyState === \"complete\") {\n sendConfigToIframe();\n return true;\n }\n } catch {}\n return false;\n };\n const pollForIframe = () => {\n if (trySendConfig()) return;\n const el = getIframe();\n if (el) {\n el.addEventListener(\"load\", () => sendConfigToIframe(), {\n once: true,\n });\n return;\n }\n setTimeout(pollForIframe, 50);\n };\n pollForIframe();\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, POST_MESSAGES } from \"./constants\";\nimport { PayConductorContextValue } from \"./types\";\nimport { SKELETON_CSS, SKELETON_STYLE_ID } from \"./utils\";\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 const [iframeHeight, setIframeHeight] = useState(() => \"\");\n\n useEffect(() => {\n if (\n typeof document !== \"undefined\" &&\n !document.getElementById(SKELETON_STYLE_ID)\n ) {\n const styleEl = document.createElement(\"style\");\n styleEl.id = SKELETON_STYLE_ID;\n styleEl.textContent = SKELETON_CSS;\n document.head.appendChild(styleEl);\n }\n const init = (ctx: PayConductorContextValue) => {\n if (!ctx?.frame) return;\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n setIsLoaded(true);\n console.log(\"init\", {\n PayConductor: window.PayConductor,\n });\n };\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (ctx) {\n init(ctx);\n } else {\n const handler = (e: Event) => {\n init((e as CustomEvent).detail as PayConductorContextValue);\n window.removeEventListener(\"payconductor:registered\", handler);\n };\n window.addEventListener(\"payconductor:registered\", handler);\n }\n let heightSent = false;\n const handleMessages = (event: MessageEvent) => {\n if (\n event.data?.type === POST_MESSAGES.RESIZE &&\n event.data?.data?.height\n ) {\n setIframeHeight(event.data.data.height + \"px\");\n }\n if (\n event.data?.type === POST_MESSAGES.READY &&\n props.height &&\n !heightSent\n ) {\n heightSent = true;\n const iframe = document.querySelector(\n \".payconductor-element iframe\"\n ) as HTMLIFrameElement;\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage(\n {\n type: POST_MESSAGES.CONFIG,\n data: {\n height: props.height,\n },\n requestId: \"element-height\",\n },\n \"*\"\n );\n }\n }\n };\n window.addEventListener(\"message\", handleMessages);\n return () => window.removeEventListener(\"message\", handleMessages);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {!isLoaded ? (\n <div\n className=\"payconductor-skeleton\"\n style={{\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n }}\n />\n ) : null}\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 || iframeHeight || 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 error: ctx.frame.error\n } : {\n iframe: null,\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 { createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nimport { PayConductorContextValue } from \"../types\";\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: PayConductorContextValue | null): HTMLIFrameElement | null {\n if (ctx?.frame?.iframe) {\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) return iframeRef;\n if (iframeRef && typeof iframeRef === \"object\") {\n if (\"current\" in iframeRef) {\n const el = (iframeRef as any).current;\n if (el instanceof HTMLIFrameElement) return el;\n }\n if (\"value\" in iframeRef) {\n const el = (iframeRef as any).value;\n if (el instanceof HTMLIFrameElement) return el;\n }\n }\n }\n return document.querySelector(\".payconductor-element iframe\") as HTMLIFrameElement ?? null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const getCtx = () => typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n const ctx = getCtx();\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 return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(getCtx());\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n const ctx = getCtx();\n if (!ctx?.api) throw new Error(\"PayConductor not initialized\");\n return ctx.api.confirmPayment(options);\n },\n validate: (data: unknown) => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve(false);\n return ctx.api.validate(data);\n },\n reset: () => {\n const ctx = getCtx();\n if (!ctx) return Promise.resolve();\n return ctx.api.reset();\n },\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return getCtx()?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = getCtx()?.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 = getCtx()?.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(getCtx());\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","PaymentMethod","PaymentMethodLayout","PaymentStatus","DeviceType","InputStyleKey","OutgoingMessage","IncomingMessage","ErrorCode","defaultTheme","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","SKELETON_STYLE_ID","SKELETON_CSS","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","allowed","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","iframeUrl","setIframeUrl","selectedPaymentMethod","setSelectedPaymentMethod","useEffect","log","args","configSent","getIframe","ref","_b","_a","obj","frame","_","api","sendConfigToIframe","eventHandler","val","err","method","trySendConfig","el","_c","pollForIframe","jsx","PayConductorCheckoutElement","iframeRef","useRef","iframeHeight","setIframeHeight","styleEl","init","ctx","handler","e","heightSent","handleMessages","_d","jsxs","usePayConductor","getIframeFromContext","usePayconductorElement","getCtx","sendToIframe","currentConfig","orderId"],"mappings":"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"}
@@ -18,6 +18,7 @@ export declare const POST_MESSAGES: {
18
18
  readonly PAYMENT_PENDING: IncomingMessage.PaymentPending;
19
19
  readonly VALIDATION_ERROR: IncomingMessage.ValidationError;
20
20
  readonly PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected;
21
+ readonly RESIZE: IncomingMessage.Resize;
21
22
  };
22
23
  export declare const ERROR_CODES: {
23
24
  readonly INVALID_CLIENT: "InvalidClient";
@@ -23,7 +23,7 @@ export interface UsePayconductorElementReturn {
23
23
  reset: () => Promise<void>;
24
24
  getSelectedPaymentMethod: () => PaymentMethod | null;
25
25
  updateConfig: (config: Partial<Pick<PayConductorConfig, "theme" | "locale" | "paymentMethods">>) => void;
26
- updateorderId: (orderId: string) => void;
26
+ updateOrderId: (orderId: string) => void;
27
27
  update: (options: UpdateOptions) => void;
28
28
  submit: () => Promise<SubmitResult>;
29
29
  }
@@ -48,7 +48,8 @@ export declare enum IncomingMessage {
48
48
  PaymentFailed = "PaymentFailed",
49
49
  PaymentPending = "PaymentPending",
50
50
  ValidationError = "ValidationError",
51
- PaymentMethodSelected = "PaymentMethodSelected"
51
+ PaymentMethodSelected = "PaymentMethodSelected",
52
+ Resize = "Resize"
52
53
  }
53
54
  export declare enum ErrorCode {
54
55
  InvalidClient = "InvalidClient",
@@ -143,6 +144,7 @@ export type PayConductorConfig = {
143
144
  paymentMethodsConfig?: PaymentMethodConfig[];
144
145
  methodsDirection?: "vertical" | "horizontal";
145
146
  showPaymentButtons?: boolean;
147
+ height?: string;
146
148
  /** Required when NuPay is an available payment method */
147
149
  nuPayConfig?: NuPayData;
148
150
  };
@@ -8,4 +8,4 @@ export declare function validatePayment(iframe: HTMLIFrameElement | Element | un
8
8
  export declare function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void>;
9
9
  export declare function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, "theme" | "locale" | "paymentMethods" | "defaultPaymentMethod" | "showPaymentButtons" | "nuPayConfig">): Promise<void>;
10
10
  export declare function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void>;
11
- export declare 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): void;
11
+ export declare function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, 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): void;
@@ -1,6 +1,6 @@
1
1
  import { PayConductorConfig, PaymentMethod, PaymentResult } from './iframe/types';
2
2
 
3
- export type * from './iframe/types';
3
+ export * from './iframe/types';
4
4
  export type ConfirmPaymentOptions = {
5
5
  orderId: string;
6
6
  returnUrl?: string;
@@ -22,7 +22,6 @@ export type PayConductorApi = {
22
22
  export type PayConductorFrame = {
23
23
  iframe: HTMLIFrameElement | Element | unknown | null;
24
24
  iframeUrl?: string;
25
- isReady: boolean;
26
25
  error: string | null;
27
26
  };
28
27
  export type PayConductorContextValue = {
@@ -33,7 +32,6 @@ export type PayConductorContextValue = {
33
32
  };
34
33
  export type PayConductorState = {
35
34
  isLoaded: boolean;
36
- isReady: boolean;
37
35
  error: string | null;
38
36
  iframeUrl: string;
39
37
  selectedPaymentMethod: PaymentMethod | null;
@@ -1,5 +1,6 @@
1
1
  import { PayConductorConfig } from './iframe/types';
2
-
2
+ export declare const SKELETON_STYLE_ID = "payconductor-skeleton-style";
3
+ export declare const SKELETON_CSS = "\n\t@keyframes payconductor-shimmer {\n\t 0% { background-position: -200% 0; }\n\t 100% { background-position: 200% 0; }\n\t}\n\t.payconductor-skeleton {\n\t background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);\n\t background-size: 200% 100%;\n\t animation: payconductor-shimmer 1.5s infinite linear;\n\t border-radius: 4px;\n\t width: 100%;\n\t}\n";
3
4
  export declare function buildIframeUrl(config: PayConductorConfig): string;
4
5
  export declare function generateRequestId(): string;
5
6
  export declare function isValidOrigin(origin: string, allowedOrigins: string[]): boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payconductor/react",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "React SDK for PayConductor",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",