@payconductor/react 1.0.0

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/README.md ADDED
@@ -0,0 +1,253 @@
1
+ # @payconductor-sdk-web/library-react
2
+
3
+ React SDK for [PayConductor](https://payconductor.ai) payment integration.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@payconductor-sdk-web/library-react.svg?style=flat-square)](https://www.npmjs.com/package/@payconductor-sdk-web/library-react)
6
+
7
+ ## Requirements
8
+
9
+ Minimum React version: **v16.8**.
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ npm install @payconductor-sdk-web/library-react payconductor-sdk
15
+ # or
16
+ yarn add @payconductor-sdk-web/library-react payconductor-sdk
17
+ # or
18
+ pnpm add @payconductor-sdk-web/library-react payconductor-sdk
19
+ # or
20
+ bun add @payconductor-sdk-web/library-react payconductor-sdk
21
+ ```
22
+
23
+ ## Quick Start
24
+
25
+ ```tsx
26
+ import {
27
+ PayConductor,
28
+ PayConductorCheckoutElement,
29
+ usePayConductor,
30
+ usePayconductorElement,
31
+ type PaymentMethod,
32
+ type PaymentResult,
33
+ } from '@payconductor-sdk-web/library-react';
34
+ import {
35
+ AvailablePaymentMethods,
36
+ Configuration,
37
+ DocumentType,
38
+ OrderApi,
39
+ type OrderCreateRequest,
40
+ } from 'payconductor-sdk';
41
+
42
+ const sdkConfig = new Configuration({
43
+ username: import.meta.env.VITE_PAYCONDUCTOR_CLIENT_ID || 'your_client_id',
44
+ password: import.meta.env.VITE_PAYCONDUCTOR_CLIENT_SECRET || 'your_client_secret',
45
+ });
46
+ const orderApi = new OrderApi(sdkConfig);
47
+
48
+ function CheckoutForm() {
49
+ const { isReady, error } = usePayConductor();
50
+ const { confirmPayment, getSelectedPaymentMethod } = usePayconductorElement();
51
+
52
+ const [errorMessage, setErrorMessage] = useState<string | null>(null);
53
+ const [isProcessing, setIsProcessing] = useState(false);
54
+
55
+ const handleFinalize = async () => {
56
+ if (!isReady) return;
57
+ setIsProcessing(true);
58
+ setErrorMessage(null);
59
+
60
+ try {
61
+ // 1. Create the Draft order via payconductor-sdk to get the orderId
62
+ const orderRequest: OrderCreateRequest = {
63
+ chargeAmount: 100.00,
64
+ clientIp: '0.0.0.0',
65
+ customer: {
66
+ documentNumber: '12345678900',
67
+ documentType: DocumentType.Cpf,
68
+ email: 'customer@example.com',
69
+ name: 'Customer Name',
70
+ },
71
+ discountAmount: 0,
72
+ externalId: `order-${Date.now()}`,
73
+ payment: {
74
+ paymentMethod: 'Draft',
75
+ availablePaymentMethods: [
76
+ AvailablePaymentMethods.CreditCard,
77
+ AvailablePaymentMethods.Pix,
78
+ AvailablePaymentMethods.BankSlip,
79
+ ],
80
+ },
81
+ shippingFee: 0,
82
+ taxFee: 0,
83
+ };
84
+ const { data } = await orderApi.orderCreate(orderRequest);
85
+
86
+ // 2. Confirm payment with the obtained orderId
87
+ const result: PaymentResult = await confirmPayment({ orderId: data.id });
88
+ if (result.status === 'succeeded') alert('Payment successful!');
89
+ } catch (err: unknown) {
90
+ setErrorMessage(err instanceof Error ? err.message : 'Payment failed');
91
+ } finally {
92
+ setIsProcessing(false);
93
+ }
94
+ };
95
+
96
+ const selectedMethod = getSelectedPaymentMethod();
97
+
98
+ return (
99
+ <div>
100
+ {/* The iframe is rendered here */}
101
+ <PayConductorCheckoutElement height="600px" />
102
+
103
+ {selectedMethod && <p>Selected method: <strong>{selectedMethod}</strong></p>}
104
+
105
+ <button type="button" onClick={handleFinalize} disabled={!isReady || isProcessing}>
106
+ {isProcessing ? 'Processing...' : 'Checkout'}
107
+ </button>
108
+
109
+ {errorMessage && <div>{errorMessage}</div>}
110
+ {error && <div>Error: {error}</div>}
111
+ </div>
112
+ );
113
+ }
114
+
115
+ export default function App() {
116
+ return (
117
+ <PayConductor
118
+ publicKey="pk_test_123"
119
+ locale="pt-BR"
120
+ debug={true}
121
+ theme={{ primaryColor: '#0066ff', borderRadius: '8px' }}
122
+ onReady={() => console.log('Ready')}
123
+ onPaymentComplete={(result: PaymentResult) => console.log('Complete:', result)}
124
+ onPaymentMethodSelected={(method: PaymentMethod) => console.log('Method:', method)}
125
+ >
126
+ <CheckoutForm />
127
+ </PayConductor>
128
+ );
129
+ }
130
+ ```
131
+
132
+ ## API Reference
133
+
134
+ ### `<PayConductor />`
135
+
136
+ Provider component that initializes the payment session. **Does not render the iframe directly** — use `<PayConductorCheckoutElement>` for that.
137
+
138
+ | Prop | Type | Description |
139
+ |------|------|-------------|
140
+ | `publicKey` | `string` | Your PayConductor public key |
141
+ | `theme` | `PayConductorTheme` | Theme customization options |
142
+ | `locale` | `string` | Locale (e.g. `'pt-BR'`, `'en-US'`) |
143
+ | `paymentMethods` | `PaymentMethod[] \| "all"` | Available payment methods |
144
+ | `defaultPaymentMethod` | `PaymentMethod` | Pre-selected payment method |
145
+ | `paymentMethodsConfig` | `PaymentMethodConfig[]` | Per-method config (installments, discounts) |
146
+ | `methodsDirection` | `"vertical" \| "horizontal"` | Layout direction of payment methods |
147
+ | `showPaymentButtons` | `boolean` | Show native action buttons inside the iframe |
148
+ | `nuPayConfig` | `NuPayData` | Required when NuPay is an available method |
149
+ | `debug` | `boolean` | Enable prefixed console.log for key events |
150
+ | `onReady` | `() => void` | Called when the iframe is ready |
151
+ | `onError` | `(error: Error) => void` | Called when an error occurs |
152
+ | `onPaymentComplete` | `(result: PaymentResult) => void` | Called when payment succeeds |
153
+ | `onPaymentFailed` | `(result: PaymentResult) => void` | Called when payment fails |
154
+ | `onPaymentPending` | `(result: PaymentResult) => void` | Called when payment is pending |
155
+ | `onPaymentMethodSelected` | `(method: PaymentMethod) => void` | Called when user selects a payment method |
156
+
157
+ ### `<PayConductorCheckoutElement />`
158
+
159
+ Renders the payment iframe. Place it inside `<PayConductor>` wherever you want the iframe in your layout.
160
+
161
+ | Prop | Type | Description |
162
+ |------|------|-------------|
163
+ | `height` | `string` | Iframe height (default: `'600px'`) |
164
+
165
+ ### `usePayConductor()`
166
+
167
+ Hook that provides frame state.
168
+
169
+ ```tsx
170
+ const { isReady, error } = usePayConductor();
171
+ ```
172
+
173
+ | Property | Type | Description |
174
+ |----------|------|-------------|
175
+ | `isReady` | `boolean` | Whether the iframe is ready |
176
+ | `error` | `string \| null` | Error message, if any |
177
+
178
+ ### `usePayconductorElement()`
179
+
180
+ Hook that provides payment action methods.
181
+
182
+ ```tsx
183
+ const {
184
+ init,
185
+ confirmPayment,
186
+ validate,
187
+ reset,
188
+ getSelectedPaymentMethod,
189
+ updateConfig,
190
+ updateorderId,
191
+ update,
192
+ submit,
193
+ } = usePayconductorElement();
194
+ ```
195
+
196
+ | Method | Signature | Description |
197
+ |--------|-----------|-------------|
198
+ | `init` | `(config: PayConductorConfig) => Promise<void>` | Sends full config to the iframe |
199
+ | `confirmPayment` | `({ orderId: string }) => Promise<PaymentResult>` | Triggers payment confirmation in iframe |
200
+ | `validate` | `(data: unknown) => Promise<boolean>` | Validates current form data |
201
+ | `reset` | `() => Promise<void>` | Resets the payment form |
202
+ | `getSelectedPaymentMethod` | `() => PaymentMethod \| null` | Returns the payment method selected by user |
203
+ | `updateConfig` | `(config: Partial<PayConductorConfig>) => void` | Updates theme, locale, or paymentMethods |
204
+ | `updateorderId` | `(orderId: string) => void` | Updates the order id in the iframe |
205
+ | `update` | `(options: UpdateOptions) => void` | Updates billing details |
206
+ | `submit` | `() => Promise<SubmitResult>` | Submits the form (validate + format) |
207
+
208
+ ## TypeScript
209
+
210
+ ```ts
211
+ import type {
212
+ PaymentResult,
213
+ PaymentMethod,
214
+ PayConductorTheme,
215
+ PayConductorConfig,
216
+ PaymentConfirmData,
217
+ PixPaymentData,
218
+ CreditCardPaymentData,
219
+ BankSlipPaymentData,
220
+ NuPayPaymentData,
221
+ PicPayPaymentData,
222
+ CardPaymentData,
223
+ BillingDetails,
224
+ } from '@payconductor-sdk-web/library-react';
225
+ ```
226
+
227
+ ## Payment Flow
228
+
229
+ ```
230
+ 1. <PayConductor publicKey="pk_xxx"> mounts
231
+ └─ Registers window.PayConductor, stores iframeUrl
232
+
233
+ 2. <PayConductorCheckoutElement /> mounts
234
+ └─ Reads iframeUrl, renders the iframe
235
+
236
+ 3. iframe loads → fetches payment methods → sends Ready
237
+ SDK receives Ready → sends config (theme, locale, paymentMethods)
238
+
239
+ 4. User selects payment method
240
+ └─ onPaymentMethodSelected fires
241
+ └─ getSelectedPaymentMethod() returns the chosen method
242
+
243
+ 5. User clicks "Checkout" (your button, outside the iframe)
244
+ └─ payconductor-sdk creates Draft order → returns orderId
245
+ └─ confirmPayment({ orderId })
246
+ └─ iframe collects form data → POST /orders/:id/confirm
247
+
248
+ 6. SDK receives PaymentComplete/Failed/Pending → callbacks fire
249
+ ```
250
+
251
+ ## License
252
+
253
+ MIT
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const O=require("react/jsx-runtime"),P=require("react"),U="https://iframe.payconductor.ai/v1",F="http://localhost:5175/v1",g=3e4,$="600px";var _=(e=>(e.Init="Init",e.Config="Config",e.Update="Update",e.ConfirmPayment="ConfirmPayment",e.Validate="Validate",e.Reset="Reset",e))(_||{}),h=(e=>(e.Ready="Ready",e.Error="Error",e.PaymentComplete="PaymentComplete",e.PaymentFailed="PaymentFailed",e.PaymentPending="PaymentPending",e.ValidationError="ValidationError",e.PaymentMethodSelected="PaymentMethodSelected",e))(h||{});const z=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1")&&!window.location.search.includes("production"),v=z?F:U,b=[F,U],V=$,Y=g,s={INIT:_.Init,CONFIG:_.Config,UPDATE:_.Update,CONFIRM_PAYMENT:_.ConfirmPayment,VALIDATE:_.Validate,RESET:_.Reset,READY:h.Ready,ERROR:h.Error,PAYMENT_COMPLETE:h.PaymentComplete,PAYMENT_FAILED:h.PaymentFailed,PAYMENT_PENDING:h.PaymentPending,VALIDATION_ERROR:h.ValidationError,PAYMENT_METHOD_SELECTED:h.PaymentMethodSelected},J={INVALID_CLIENT:"InvalidClient",INVALID_TOKEN:"InvalidToken",NETWORK_ERROR:"NetworkError",IFRAME_NOT_READY:"IframeNotReady",PAYMENT_DECLINED:"PaymentDeclined",VALIDATION_ERROR:"ValidationError",TIMEOUT:"Timeout"};function G(e){const r=new URLSearchParams({publicKey:e.publicKey});return`${v}?${r.toString()}`}function H(){return crypto.randomUUID()}function K(e,r){return r.some(t=>{try{return new URL(t).origin===e}catch{return t===e}})}function S(){return new Map}function A(e,r,t,n){return new Promise((d,u)=>{if(!e||!("contentWindow"in e)){u(new Error("Iframe not defined"));return}if(!(e!=null&&e.contentWindow)){u(new Error("Iframe not ready"));return}if(!r){u(new Error("Pending requests not initialized"));return}const f=H();r.set(f,{resolve:d,reject:u}),e.contentWindow.postMessage({type:t,data:n,requestId:f},"*"),setTimeout(()=>{r!=null&&r.has(f)&&(r.delete(f),u(new Error("Request timeout")))},Y)})}function q(e,r,t){return A(e,r,s.CONFIRM_PAYMENT,{orderId:t.orderId})}function X(e,r,t){return A(e,r,s.VALIDATE,t)}function Z(e,r){return A(e,r,s.RESET)}function x(e,r,t){return A(e,r,s.CONFIG,t)}function p(e,r,t){return A(e,r,s.INIT,t)}function ee(e,r,t,n,d,u,f,T,m,I){const L=e.data,{requestId:l,type:E,data:c,error:y}=L;if(E===s.READY){if(t(!0),window.PayConductor&&window.PayConductor.frame&&(window.PayConductor.frame.isReady=!0),d==null||d(),l&&(r!=null&&r.has(l))){const{resolve:w}=r.get(l);r.delete(l),w(c)}return}if(K(e.origin,b)){if(l&&r&&r.has(l)){const{resolve:w,reject:M}=r.get(l);r.delete(l),y?M(new Error(String(y.message))):w(c);return}if(E===s.ERROR){n((y==null?void 0:y.message)||"Unknown error"),u==null||u(new Error(String(y==null?void 0:y.message)));return}if(E===s.PAYMENT_COMPLETE){c&&typeof c=="object"&&"status"in c&&(f==null||f(c));return}if(E===s.PAYMENT_FAILED){c&&typeof c=="object"&&"status"in c&&(T==null||T(c));return}if(E===s.PAYMENT_PENDING){c&&typeof c=="object"&&"status"in c&&(m==null||m(c));return}if(E===s.PAYMENT_METHOD_SELECTED){c&&typeof c=="object"&&"paymentMethod"in c&&(I==null||I(c.paymentMethod));return}}}function j(e){const[r,t]=P.useState(()=>!1),[n,d]=P.useState(()=>!1),[u,f]=P.useState(()=>null),[T,m]=P.useState(()=>""),[I,L]=P.useState(()=>null);return P.useEffect(()=>{const l=(...o)=>{e.debug&&console.log("[PayConductor]",...o)},E=G({publicKey:e.publicKey});m(E),t(!0);const c=S();let y=!1;l("init",e.publicKey),l("iframeUrl",E);const w=()=>{var R,i;const o=(i=(R=window.PayConductor)==null?void 0:R.frame)==null?void 0:i.iframe;if(o){if(o instanceof HTMLIFrameElement)return o;if(typeof o=="object"&&o!==null){const a=o;if("current"in a&&a.current instanceof HTMLIFrameElement)return a.current;if("value"in a&&a.value instanceof HTMLIFrameElement)return a.value}return o}return document.querySelector(".payconductor-element iframe")??void 0},M={get iframe(){return document.querySelector(".payconductor-element iframe")??null},set iframe(o){},iframeUrl:E,isReady:window.PayConductor&&window.PayConductor.frame?window.PayConductor.frame.isReady:!1,error:null},W={publicKey:e.publicKey,theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod},B={confirmPayment:o=>(l("→ CONFIRM_PAYMENT",{orderId:o.orderId}),q(w(),c,o)),validate:o=>(l("→ VALIDATE",o),X(w(),c,o)),reset:()=>(l("→ RESET"),Z(w(),c)),getSelectedPaymentMethod:()=>I};window.PayConductor={frame:M,config:W,api:B,selectedPaymentMethod:I},l("registered"),window.dispatchEvent(new CustomEvent("payconductor:registered",{detail:window.PayConductor}));const N=async()=>{if(!y){const o=w();if(!o){l("→ CONFIG skipped: iframe not found");return}y=!0,l("→ CONFIG",{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons}),x(o,c,{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons,nuPayConfig:e.nuPayConfig})}},k=o=>{var R;(R=o.data)!=null&&R.type&&l("←",o.data.type,o.data.data??""),ee(o,c,i=>{var a;d(i),M.isReady=i,(a=window.PayConductor)!=null&&a.frame&&(window.PayConductor.frame.isReady=i),i&&N()},i=>{var a;f(i),M.error=i,(a=window.PayConductor)!=null&&a.frame&&(window.PayConductor.frame.error=i)},()=>{var i;(i=e.onReady)==null||i.call(e)},i=>{var a;(a=e.onError)==null||a.call(e,i)},i=>{var a;(a=e.onPaymentComplete)==null||a.call(e,i)},i=>{var a;(a=e.onPaymentFailed)==null||a.call(e,i)},i=>{var a;(a=e.onPaymentPending)==null||a.call(e,i)},i=>{var a;L(i),window.PayConductor&&(window.PayConductor.selectedPaymentMethod=i),(a=e.onPaymentMethodSelected)==null||a.call(e,i)})};window.addEventListener("message",k);const Q=()=>{var R,i,a;const o=w();if(!o)return!1;try{if((((R=o.contentDocument)==null?void 0:R.readyState)??((a=(i=o.contentWindow)==null?void 0:i.document)==null?void 0:a.readyState))==="complete")return N(),!0}catch{}return!1},D=()=>{if(Q())return;const o=w();if(o){o.addEventListener("load",()=>N(),{once:!0});return}setTimeout(D,50)};D()},[]),O.jsx("div",{className:"payconductor",id:"payconductor",style:{display:"contents"},children:e.children})}function te(e){const r=P.useRef(null),[t,n]=P.useState(()=>""),[d,u]=P.useState(()=>!1);return P.useEffect(()=>{const f=m=>{m!=null&&m.frame&&(n(m.frame.iframeUrl||""),u(!0),window.PayConductor&&window.PayConductor.frame&&(window.PayConductor.frame.isReady=!0),console.log("init",{PayConductor:window.PayConductor}))},T=typeof window<"u"?window.PayConductor:null;if(T)f(T);else{const m=I=>{f(I.detail),window.removeEventListener("payconductor:registered",m)};window.addEventListener("payconductor:registered",m)}},[]),O.jsx("div",{className:"payconductor-element",style:{width:"100%"},children:d&&t?O.jsx("iframe",{allow:"payment",title:"PayConductor",ref:r,src:t,style:{width:"100%",height:e.height||V,border:"none"}}):null})}function ne(){const e=typeof window<"u"?window.PayConductor:null,r=e!=null&&e.config?{publicKey:e.config.publicKey,orderId:e.config.orderId,theme:e.config.theme,locale:e.config.locale}:{},t=e!=null&&e.frame?{iframe:e.frame.iframe,isReady:e.frame.isReady,error:e.frame.error}:{iframe:null,isReady:!1,error:null};return{...r,...t}}function C(e){var r;if((r=e==null?void 0:e.frame)!=null&&r.iframe){const t=e.frame.iframe;if(t instanceof HTMLIFrameElement)return t;if(t&&typeof t=="object"){if("current"in t){const n=t.current;if(n instanceof HTMLIFrameElement)return n}if("value"in t){const n=t.value;if(n instanceof HTMLIFrameElement)return n}}}return document.querySelector(".payconductor-element iframe")??null}function re(){const e=()=>typeof window<"u"?window.PayConductor:null,r=(t,n)=>{const d=e();if(!d)return;const u=C(d);u!=null&&u.contentWindow&&u.contentWindow.postMessage({type:t,data:n},"*")};return{init:async t=>{const n=C(e()),d=S();return p(n||void 0,d,t)},confirmPayment:async t=>{const n=C(e()),d=S();if(!t.orderId)throw new Error("Order ID is required");return q(n||void 0,d,t)},validate:t=>{const n=e();return n?n.api.validate(t):Promise.resolve(!1)},reset:()=>{const t=e();return t?t.api.reset():Promise.resolve()},getSelectedPaymentMethod:()=>{var t;return((t=e())==null?void 0:t.selectedPaymentMethod)??null},updateConfig:t=>{var d;const n=(d=e())==null?void 0:d.config;r(s.CONFIG,{publicKey:n==null?void 0:n.publicKey,orderId:n==null?void 0:n.orderId,theme:t.theme??(n==null?void 0:n.theme),locale:t.locale??(n==null?void 0:n.locale),paymentMethods:t.paymentMethods??(n==null?void 0:n.paymentMethods)})},updateorderId:t=>{var d;const n=(d=e())==null?void 0:d.config;r(s.CONFIG,{publicKey:n==null?void 0:n.publicKey,orderId:t,theme:n==null?void 0:n.theme,locale:n==null?void 0:n.locale,paymentMethods:n==null?void 0:n.paymentMethods})},update:t=>{r(s.UPDATE,t)},submit:async()=>{const t=C(e()),n=S();try{return await A(t||void 0,n,s.CONFIRM_PAYMENT,{}),{paymentMethod:void 0}}catch(d){return{error:{message:d instanceof Error?d.message:"Payment failed",code:"payment_error",type:"payment_error"}}}}}}exports.ALLOWED_ORIGINS=b;exports.ERROR_CODES=J;exports.IFRAME_BASE_URL=v;exports.IFRAME_DEFAULT_HEIGHT_VALUE=V;exports.POST_MESSAGES=s;exports.PayConductor=j;exports.PayConductorCheckoutElement=te;exports.REQUEST_TIMEOUT=Y;exports.buildIframeUrl=G;exports.default=j;exports.generateRequestId=H;exports.isValidOrigin=K;exports.usePayConductor=ne;exports.usePayconductorElement=re;
2
+ //# sourceMappingURL=index.cjs.js.map
@@ -0,0 +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/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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"}
@@ -0,0 +1,7 @@
1
+ export { default } from './payconductor/payconductor';
2
+ export { default as PayConductor } from './payconductor/payconductor';
3
+ export { default as PayConductorCheckoutElement } from './payconductor/payconductor-element';
4
+ export * from './payconductor/types';
5
+ export * from './payconductor/constants';
6
+ export * from './payconductor/utils';
7
+ export * from './payconductor/hooks';