@payconductor-sdk-web/library-react 1.0.4 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const L=require("react/jsx-runtime"),m=require("react"),D="https://iframe.payconductor.ai/v1",U="http://localhost:5175",B=3e4,W="600px";var I=(e=>(e.Init="Init",e.Config="Config",e.Update="Update",e.ConfirmPayment="ConfirmPayment",e.Validate="Validate",e.Reset="Reset",e))(I||{}),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 Q=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),O=Q?U:D,b=[U,D],v=W,F=B,s={INIT:I.Init,CONFIG:I.Config,UPDATE:I.Update,CONFIRM_PAYMENT:I.ConfirmPayment,VALIDATE:I.Validate,RESET:I.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},$={INVALID_CLIENT:"InvalidClient",INVALID_TOKEN:"InvalidToken",NETWORK_ERROR:"NetworkError",IFRAME_NOT_READY:"IframeNotReady",PAYMENT_DECLINED:"PaymentDeclined",VALIDATION_ERROR:"ValidationError",TIMEOUT:"Timeout"};function k(e){const n=new URLSearchParams({publicKey:e.publicKey});return`${O}?${n.toString()}`}function K(){return crypto.randomUUID()}function V(e,n){return n.includes(e)}function S(){return new Map}function T(e,n,o,t){return new Promise((i,f)=>{if(!e||!("contentWindow"in e)){f(new Error("Iframe not defined"));return}if(!(e!=null&&e.contentWindow)){f(new Error("Iframe not ready"));return}if(!n){f(new Error("Pending requests not initialized"));return}const l=K();n.set(l,{resolve:i,reject:f}),e.contentWindow.postMessage({type:o,data:t,requestId:l},"*"),setTimeout(()=>{n!=null&&n.has(l)&&(n.delete(l),f(new Error("Request timeout")))},F)})}function g(e,n,o){return T(e,n,s.CONFIRM_PAYMENT,{intentToken:o.intentToken})}function J(e,n,o){return T(e,n,s.VALIDATE,o)}function X(e,n){return T(e,n,s.RESET)}function Z(e,n,o){return T(e,n,s.CONFIG,o)}function x(e,n,o){return T(e,n,s.INIT,o)}function p(e,n,o,t,i,f,l,C,R,E){if(!V(e.origin,b))return;const N=e.data,{requestId:w,type:P,data:u,error:y}=N;if(w&&(n!=null&&n.has(w))){const{resolve:d,reject:M}=n.get(w);n.delete(w),y?M(new Error(String(y.message))):d(u);return}if(P===s.READY){o(!0),i==null||i();return}if(P===s.ERROR){t((y==null?void 0:y.message)||"Unknown error"),f==null||f(new Error(String(y==null?void 0:y.message)));return}if(P===s.PAYMENT_COMPLETE){u&&typeof u=="object"&&"status"in u&&(l==null||l(u));return}if(P===s.PAYMENT_FAILED){u&&typeof u=="object"&&"status"in u&&(C==null||C(u));return}if(P===s.PAYMENT_PENDING){u&&typeof u=="object"&&"status"in u&&(R==null||R(u));return}if(P===s.PAYMENT_METHOD_SELECTED){u&&typeof u=="object"&&"paymentMethod"in u&&(E==null||E(u.paymentMethod));return}}function Y(e){const[n,o]=m.useState(()=>!1),[t,i]=m.useState(()=>!1),[f,l]=m.useState(()=>null),[C,R]=m.useState(()=>""),[E,N]=m.useState(()=>null),[w,P]=m.useState(()=>null),[u,y]=m.useState(()=>!1);return m.useEffect(()=>{const d=(...r)=>{e.debug&&console.log("[PayConductor]",...r)};d("SDK initializing",{publicKey:e.publicKey});const M=k({publicKey:e.publicKey});R(M),o(!0),N(S()),d("iframeUrl built:",M),d("pendingMap created");const _=()=>{var a,c;const r=(c=(a=window.PayConductor)==null?void 0:a.frame)==null?void 0:c.iframe;if(r){if(r instanceof HTMLIFrameElement)return r;if(typeof r=="object"&&r!==null){if("current"in r)return r.current??void 0;if("value"in r)return r.value??void 0}return r}},G={iframe:null,iframeUrl:M,get isReady(){return t},get error(){return f}},H={publicKey:e.publicKey,theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod},z={confirmPayment:r=>(d("confirmPayment called",{intentToken:r.intentToken}),g(_(),E,r)),validate:r=>(d("validate called",r),J(_(),E,r)),reset:()=>(d("reset called"),X(_(),E)),getSelectedPaymentMethod:()=>w};window.PayConductor={frame:G,config:H,api:z,selectedPaymentMethod:w},d("window.PayConductor registered");const q=async()=>{if(!u){const r=_();if(!r){d("sendConfigToIframe: iframe not found, skipping");return}y(!0),d("sendConfig →",{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons}),Z(r,E,{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons,nuPayConfig:e.nuPayConfig})}},j=r=>{p(r,E,a=>{i(a),a&&(d("iframe Ready — sending config"),q())},a=>{l(a),d("iframe Error:",a)},()=>{var a;d("onReady fired"),(a=e.onReady)==null||a.call(e)},a=>{var c;d("onError fired:",a),(c=e.onError)==null||c.call(e,a)},a=>{var c;d("PaymentComplete:",a),(c=e.onPaymentComplete)==null||c.call(e,a)},a=>{var c;d("PaymentFailed:",a),(c=e.onPaymentFailed)==null||c.call(e,a)},a=>{var c;d("PaymentPending:",a),(c=e.onPaymentPending)==null||c.call(e,a)},a=>{var c;d("PaymentMethodSelected:",a),P(a),window.PayConductor&&(window.PayConductor.selectedPaymentMethod=a),(c=e.onPaymentMethodSelected)==null||c.call(e,a)})};window.addEventListener("message",j),d("SDK initialized — waiting for PayConductorCheckoutElement")},[]),L.jsx("div",{className:"payconductor",id:"payconductor",style:{display:"contents"},children:e.children})}function ee(e){const n=m.useRef(null),[o,t]=m.useState(()=>""),[i,f]=m.useState(()=>!1);return m.useEffect(()=>{const l=typeof window<"u"?window.PayConductor:null;l||console.warn("[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>"),l!=null&&l.frame&&(t(l.frame.iframeUrl||""),l.frame.iframe=n.current,console.log("[PayConductorCheckoutElement] iframe registered, src:",o)),f(!0)},[]),L.jsx("div",{className:"payconductor-element",style:{width:"100%"},children:i&&o?L.jsx("iframe",{allow:"payment",title:"PayConductor",ref:n,src:o,style:{width:"100%",height:e.height||v,border:"none"}}):null})}function te(){const e=typeof window<"u"?window.PayConductor:null,n=e!=null&&e.config?{publicKey:e.config.publicKey,intentToken:e.config.intentToken,theme:e.config.theme,locale:e.config.locale}:{},o=e!=null&&e.frame?{iframe:e.frame.iframe,isReady:e.frame.isReady,error:e.frame.error}:{iframe:null,isReady:!1,error:null};return{...n,...o}}function A(e){var o;if(!((o=e==null?void 0:e.frame)!=null&&o.iframe))return null;const n=e.frame.iframe;if(n instanceof HTMLIFrameElement)return n;if(n&&typeof n=="object"&&"value"in n){const t=n.value;if(t instanceof HTMLIFrameElement)return t}return null}function ne(){const e=typeof window<"u"?window.PayConductor:null,n=(o,t)=>{if(!e)return;const i=A(e);i!=null&&i.contentWindow&&i.contentWindow.postMessage({type:o,data:t},"*")};return e?{init:async o=>{const t=A(e),i=S();return x(t||void 0,i,o)},confirmPayment:async o=>{const t=A(e),i=S();if(!o.intentToken)throw new Error("Intent token is required");return g(t||void 0,i,o)},validate:e.api.validate,reset:e.api.reset,getSelectedPaymentMethod:()=>(e==null?void 0:e.selectedPaymentMethod)??null,updateConfig:o=>{const t=e.config;n(s.CONFIG,{publicKey:t==null?void 0:t.publicKey,intentToken:t==null?void 0:t.intentToken,theme:o.theme??(t==null?void 0:t.theme),locale:o.locale??(t==null?void 0:t.locale),paymentMethods:o.paymentMethods??(t==null?void 0:t.paymentMethods)})},updateIntentToken:o=>{const t=e.config;n(s.CONFIG,{publicKey:t==null?void 0:t.publicKey,intentToken:o,theme:t==null?void 0:t.theme,locale:t==null?void 0:t.locale,paymentMethods:t==null?void 0:t.paymentMethods})},update:o=>{n(s.UPDATE,o)},submit:async()=>{const o=A(e),t=S();try{return await T(o||void 0,t,s.CONFIRM_PAYMENT,{}),{paymentMethod:void 0}}catch(i){return{error:{message:i instanceof Error?i.message:"Payment failed",code:"payment_error",type:"payment_error"}}}}}:{init:async()=>{throw new Error("PayConductor not initialized")},confirmPayment:async()=>{throw new Error("PayConductor not initialized")},validate:async()=>{throw new Error("PayConductor not initialized")},reset:async()=>{throw new Error("PayConductor not initialized")},getSelectedPaymentMethod:()=>null,updateConfig:()=>{throw new Error("PayConductor not initialized")},updateIntentToken:()=>{throw new Error("PayConductor not initialized")},update:()=>{throw new Error("PayConductor not initialized")},submit:async()=>{throw new Error("PayConductor not initialized")}}}exports.ALLOWED_ORIGINS=b;exports.ERROR_CODES=$;exports.IFRAME_BASE_URL=O;exports.IFRAME_DEFAULT_HEIGHT_VALUE=v;exports.POST_MESSAGES=s;exports.PayConductor=Y;exports.PayConductorCheckoutElement=ee;exports.REQUEST_TIMEOUT=F;exports.buildIframeUrl=k;exports.default=Y;exports.generateRequestId=K;exports.isValidOrigin=V;exports.usePayConductor=te;exports.usePayconductorElement=ne;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const D=require("react/jsx-runtime"),m=require("react"),L="https://iframe.payconductor.ai/v1",O="http://localhost:5175",B=3e4,W="600px";var w=(e=>(e.Init="Init",e.Config="Config",e.Update="Update",e.ConfirmPayment="ConfirmPayment",e.Validate="Validate",e.Reset="Reset",e))(w||{}),I=(e=>(e.Ready="Ready",e.Error="Error",e.PaymentComplete="PaymentComplete",e.PaymentFailed="PaymentFailed",e.PaymentPending="PaymentPending",e.ValidationError="ValidationError",e.PaymentMethodSelected="PaymentMethodSelected",e))(I||{});const Q=typeof window<"u"&&(window.location.hostname==="localhost"||window.location.hostname==="127.0.0.1"),U=Q?O:L,b=[O,L],v=W,F=B,s={INIT:w.Init,CONFIG:w.Config,UPDATE:w.Update,CONFIRM_PAYMENT:w.ConfirmPayment,VALIDATE:w.Validate,RESET:w.Reset,READY:I.Ready,ERROR:I.Error,PAYMENT_COMPLETE:I.PaymentComplete,PAYMENT_FAILED:I.PaymentFailed,PAYMENT_PENDING:I.PaymentPending,VALIDATION_ERROR:I.ValidationError,PAYMENT_METHOD_SELECTED:I.PaymentMethodSelected},$={INVALID_CLIENT:"InvalidClient",INVALID_TOKEN:"InvalidToken",NETWORK_ERROR:"NetworkError",IFRAME_NOT_READY:"IframeNotReady",PAYMENT_DECLINED:"PaymentDeclined",VALIDATION_ERROR:"ValidationError",TIMEOUT:"Timeout"};function K(e){const n=new URLSearchParams({publicKey:e.publicKey});return`${U}?${n.toString()}`}function V(){return crypto.randomUUID()}function g(e,n){return n.includes(e)}function S(){return new Map}function R(e,n,r,t){return new Promise((i,f)=>{if(!e||!("contentWindow"in e)){f(new Error("Iframe not defined"));return}if(!(e!=null&&e.contentWindow)){f(new Error("Iframe not ready"));return}if(!n){f(new Error("Pending requests not initialized"));return}const l=V();n.set(l,{resolve:i,reject:f}),e.contentWindow.postMessage({type:r,data:t,requestId:l},"*"),setTimeout(()=>{n!=null&&n.has(l)&&(n.delete(l),f(new Error("Request timeout")))},F)})}function Y(e,n,r){return R(e,n,s.CONFIRM_PAYMENT,{orderId:r.orderId})}function J(e,n,r){return R(e,n,s.VALIDATE,r)}function X(e,n){return R(e,n,s.RESET)}function Z(e,n,r){return R(e,n,s.CONFIG,r)}function x(e,n,r){return R(e,n,s.INIT,r)}function p(e,n,r,t,i,f,l,C,T,E){if(!g(e.origin,b))return;const N=e.data,{requestId:h,type:P,data:u,error:y}=N;if(h&&(n!=null&&n.has(h))){const{resolve:d,reject:M}=n.get(h);n.delete(h),y?M(new Error(String(y.message))):d(u);return}if(P===s.READY){r(!0),i==null||i();return}if(P===s.ERROR){t((y==null?void 0:y.message)||"Unknown error"),f==null||f(new Error(String(y==null?void 0:y.message)));return}if(P===s.PAYMENT_COMPLETE){u&&typeof u=="object"&&"status"in u&&(l==null||l(u));return}if(P===s.PAYMENT_FAILED){u&&typeof u=="object"&&"status"in u&&(C==null||C(u));return}if(P===s.PAYMENT_PENDING){u&&typeof u=="object"&&"status"in u&&(T==null||T(u));return}if(P===s.PAYMENT_METHOD_SELECTED){u&&typeof u=="object"&&"paymentMethod"in u&&(E==null||E(u.paymentMethod));return}}function G(e){const[n,r]=m.useState(()=>!1),[t,i]=m.useState(()=>!1),[f,l]=m.useState(()=>null),[C,T]=m.useState(()=>""),[E,N]=m.useState(()=>null),[h,P]=m.useState(()=>null),[u,y]=m.useState(()=>!1);return m.useEffect(()=>{const d=(...a)=>{e.debug&&console.log("[PayConductor]",...a)};d("SDK initializing",{publicKey:e.publicKey});const M=K({publicKey:e.publicKey});T(M),r(!0),N(S()),d("iframeUrl built:",M),d("pendingMap created");const _=()=>{var o,c;const a=(c=(o=window.PayConductor)==null?void 0:o.frame)==null?void 0:c.iframe;if(a){if(a instanceof HTMLIFrameElement)return a;if(typeof a=="object"&&a!==null){if("current"in a)return a.current??void 0;if("value"in a)return a.value??void 0}return a}},H={iframe:null,iframeUrl:M,get isReady(){return t},get error(){return f}},z={publicKey:e.publicKey,theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod},k={confirmPayment:a=>(d("confirmPayment called",{orderId:a.orderId}),Y(_(),E,a)),validate:a=>(d("validate called",a),J(_(),E,a)),reset:()=>(d("reset called"),X(_(),E)),getSelectedPaymentMethod:()=>h};window.PayConductor={frame:H,config:z,api:k,selectedPaymentMethod:h},d("window.PayConductor registered");const q=async()=>{if(!u){const a=_();if(!a){d("sendConfigToIframe: iframe not found, skipping");return}y(!0),d("sendConfig →",{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons}),Z(a,E,{theme:e.theme,locale:e.locale,paymentMethods:e.paymentMethods,defaultPaymentMethod:e.defaultPaymentMethod,showPaymentButtons:e.showPaymentButtons,nuPayConfig:e.nuPayConfig})}},j=a=>{p(a,E,o=>{i(o),o&&(d("iframe Ready — sending config"),q())},o=>{l(o),d("iframe Error:",o)},()=>{var o;d("onReady fired"),(o=e.onReady)==null||o.call(e)},o=>{var c;d("onError fired:",o),(c=e.onError)==null||c.call(e,o)},o=>{var c;d("PaymentComplete:",o),(c=e.onPaymentComplete)==null||c.call(e,o)},o=>{var c;d("PaymentFailed:",o),(c=e.onPaymentFailed)==null||c.call(e,o)},o=>{var c;d("PaymentPending:",o),(c=e.onPaymentPending)==null||c.call(e,o)},o=>{var c;d("PaymentMethodSelected:",o),P(o),window.PayConductor&&(window.PayConductor.selectedPaymentMethod=o),(c=e.onPaymentMethodSelected)==null||c.call(e,o)})};window.addEventListener("message",j),d("SDK initialized — waiting for PayConductorCheckoutElement")},[]),D.jsx("div",{className:"payconductor",id:"payconductor",style:{display:"contents"},children:e.children})}function ee(e){const n=m.useRef(null),[r,t]=m.useState(()=>""),[i,f]=m.useState(()=>!1);return m.useEffect(()=>{const l=typeof window<"u"?window.PayConductor:null;l||console.warn("[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>"),l!=null&&l.frame&&(t(l.frame.iframeUrl||""),l.frame.iframe=n.current,console.log("[PayConductorCheckoutElement] iframe registered, src:",r)),f(!0)},[]),D.jsx("div",{className:"payconductor-element",style:{width:"100%"},children:i&&r?D.jsx("iframe",{allow:"payment",title:"PayConductor",ref:n,src:r,style:{width:"100%",height:e.height||v,border:"none"}}):null})}function te(){const e=typeof window<"u"?window.PayConductor:null,n=e!=null&&e.config?{publicKey:e.config.publicKey,orderId:e.config.orderId,theme:e.config.theme,locale:e.config.locale}:{},r=e!=null&&e.frame?{iframe:e.frame.iframe,isReady:e.frame.isReady,error:e.frame.error}:{iframe:null,isReady:!1,error:null};return{...n,...r}}function A(e){var r;if(!((r=e==null?void 0:e.frame)!=null&&r.iframe))return null;const n=e.frame.iframe;if(n instanceof HTMLIFrameElement)return n;if(n&&typeof n=="object"&&"value"in n){const t=n.value;if(t instanceof HTMLIFrameElement)return t}return null}function ne(){const e=typeof window<"u"?window.PayConductor:null,n=(r,t)=>{if(!e)return;const i=A(e);i!=null&&i.contentWindow&&i.contentWindow.postMessage({type:r,data:t},"*")};return e?{init:async r=>{const t=A(e),i=S();return x(t||void 0,i,r)},confirmPayment:async r=>{const t=A(e),i=S();if(!r.orderId)throw new Error("Order ID is required");return Y(t||void 0,i,r)},validate:e.api.validate,reset:e.api.reset,getSelectedPaymentMethod:()=>(e==null?void 0:e.selectedPaymentMethod)??null,updateConfig:r=>{const t=e.config;n(s.CONFIG,{publicKey:t==null?void 0:t.publicKey,orderId:t==null?void 0:t.orderId,theme:r.theme??(t==null?void 0:t.theme),locale:r.locale??(t==null?void 0:t.locale),paymentMethods:r.paymentMethods??(t==null?void 0:t.paymentMethods)})},updateorderId:r=>{const t=e.config;n(s.CONFIG,{publicKey:t==null?void 0:t.publicKey,orderId:r,theme:t==null?void 0:t.theme,locale:t==null?void 0:t.locale,paymentMethods:t==null?void 0:t.paymentMethods})},update:r=>{n(s.UPDATE,r)},submit:async()=>{const r=A(e),t=S();try{return await R(r||void 0,t,s.CONFIRM_PAYMENT,{}),{paymentMethod:void 0}}catch(i){return{error:{message:i instanceof Error?i.message:"Payment failed",code:"payment_error",type:"payment_error"}}}}}:{init:async()=>{throw new Error("PayConductor not initialized")},confirmPayment:async()=>{throw new Error("PayConductor not initialized")},validate:async()=>{throw new Error("PayConductor not initialized")},reset:async()=>{throw new Error("PayConductor not initialized")},getSelectedPaymentMethod:()=>null,updateConfig:()=>{throw new Error("PayConductor not initialized")},updateorderId:()=>{throw new Error("PayConductor not initialized")},update:()=>{throw new Error("PayConductor not initialized")},submit:async()=>{throw new Error("PayConductor not initialized")}}}exports.ALLOWED_ORIGINS=b;exports.ERROR_CODES=$;exports.IFRAME_BASE_URL=U;exports.IFRAME_DEFAULT_HEIGHT_VALUE=v;exports.POST_MESSAGES=s;exports.PayConductor=G;exports.PayConductorCheckoutElement=ee;exports.REQUEST_TIMEOUT=F;exports.buildIframeUrl=K;exports.default=G;exports.generateRequestId=V;exports.isValidOrigin=g;exports.usePayConductor=te;exports.usePayconductorElement=ne;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n intentToken?: 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 paymentIntentId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n intentToken: options.intentToken\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"intentToken\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { intentToken: string }) => {\n log(\"confirmPayment called\", {\n intentToken: options.intentToken,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n intentToken: ctx.config.intentToken,\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 intentToken: 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 updateIntentToken: (intentToken: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateIntentToken: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.intentToken) {\n throw new Error(\"Intent token is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n intentToken: currentConfig?.intentToken,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateIntentToken: (intentToken: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n intentToken: intentToken,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","intentToken"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n orderId: options.orderId\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"confirmPayment called\", {\n orderId: options.orderId,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n isReady: ctx.frame.isReady,\n error: ctx.frame.error\n } : {\n iframe: null,\n isReady: false,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { confirmPayment, createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateorderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateorderId: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateorderId: (orderId: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","orderId"],"mappings":"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"}
package/dist/index.es.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import { jsx as L } from "react/jsx-runtime";
2
- import { useState as E, useEffect as S, useRef as Y } from "react";
3
- const U = "https://iframe.payconductor.ai/v1", b = "http://localhost:5175", g = 3e4, z = "600px";
4
- var T = /* @__PURE__ */ ((e) => (e.Init = "Init", e.Config = "Config", e.Update = "Update", e.ConfirmPayment = "ConfirmPayment", e.Validate = "Validate", e.Reset = "Reset", e))(T || {}), h = /* @__PURE__ */ ((e) => (e.Ready = "Ready", e.Error = "Error", e.PaymentComplete = "PaymentComplete", e.PaymentFailed = "PaymentFailed", e.PaymentPending = "PaymentPending", e.ValidationError = "ValidationError", e.PaymentMethodSelected = "PaymentMethodSelected", e))(h || {});
5
- const G = typeof window < "u" && (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1"), H = G ? b : U, q = [b, U], B = z, W = g, f = {
6
- INIT: T.Init,
7
- CONFIG: T.Config,
8
- UPDATE: T.Update,
9
- CONFIRM_PAYMENT: T.ConfirmPayment,
10
- VALIDATE: T.Validate,
11
- RESET: T.Reset,
2
+ import { useState as E, useEffect as S, useRef as g } from "react";
3
+ const U = "https://iframe.payconductor.ai/v1", b = "http://localhost:5175", z = 3e4, G = "600px";
4
+ var I = /* @__PURE__ */ ((e) => (e.Init = "Init", e.Config = "Config", e.Update = "Update", e.ConfirmPayment = "ConfirmPayment", e.Validate = "Validate", e.Reset = "Reset", e))(I || {}), h = /* @__PURE__ */ ((e) => (e.Ready = "Ready", e.Error = "Error", e.PaymentComplete = "PaymentComplete", e.PaymentFailed = "PaymentFailed", e.PaymentPending = "PaymentPending", e.ValidationError = "ValidationError", e.PaymentMethodSelected = "PaymentMethodSelected", e))(h || {});
5
+ const H = typeof window < "u" && (window.location.hostname === "localhost" || window.location.hostname === "127.0.0.1"), k = H ? b : U, q = [b, U], B = G, W = z, f = {
6
+ INIT: I.Init,
7
+ CONFIG: I.Config,
8
+ UPDATE: I.Update,
9
+ CONFIRM_PAYMENT: I.ConfirmPayment,
10
+ VALIDATE: I.Validate,
11
+ RESET: I.Reset,
12
12
  READY: h.Ready,
13
13
  ERROR: h.Error,
14
14
  PAYMENT_COMPLETE: h.PaymentComplete,
@@ -29,7 +29,7 @@ function j(e) {
29
29
  const n = new URLSearchParams({
30
30
  publicKey: e.publicKey
31
31
  });
32
- return `${H}?${n.toString()}`;
32
+ return `${k}?${n.toString()}`;
33
33
  }
34
34
  function Q() {
35
35
  return crypto.randomUUID();
@@ -40,7 +40,7 @@ function $(e, n) {
40
40
  function N() {
41
41
  return /* @__PURE__ */ new Map();
42
42
  }
43
- function I(e, n, o, t) {
43
+ function R(e, n, o, t) {
44
44
  return new Promise((i, m) => {
45
45
  if (!e || !("contentWindow" in e)) {
46
46
  m(new Error("Iframe not defined"));
@@ -68,23 +68,23 @@ function I(e, n, o, t) {
68
68
  });
69
69
  }
70
70
  function v(e, n, o) {
71
- return I(e, n, f.CONFIRM_PAYMENT, {
72
- intentToken: o.intentToken
71
+ return R(e, n, f.CONFIRM_PAYMENT, {
72
+ orderId: o.orderId
73
73
  });
74
74
  }
75
75
  function J(e, n, o) {
76
- return I(e, n, f.VALIDATE, o);
76
+ return R(e, n, f.VALIDATE, o);
77
77
  }
78
78
  function X(e, n) {
79
- return I(e, n, f.RESET);
79
+ return R(e, n, f.RESET);
80
80
  }
81
81
  function Z(e, n, o) {
82
- return I(e, n, f.CONFIG, o);
82
+ return R(e, n, f.CONFIG, o);
83
83
  }
84
84
  function x(e, n, o) {
85
- return I(e, n, f.INIT, o);
85
+ return R(e, n, f.INIT, o);
86
86
  }
87
- function p(e, n, o, t, i, m, c, C, R, y) {
87
+ function p(e, n, o, t, i, m, c, C, T, y) {
88
88
  if (!$(e.origin, q))
89
89
  return;
90
90
  const D = e.data, {
@@ -118,7 +118,7 @@ function p(e, n, o, t, i, m, c, C, R, y) {
118
118
  return;
119
119
  }
120
120
  if (P === f.PAYMENT_PENDING) {
121
- l && typeof l == "object" && "status" in l && (R == null || R(l));
121
+ l && typeof l == "object" && "status" in l && (T == null || T(l));
122
122
  return;
123
123
  }
124
124
  if (P === f.PAYMENT_METHOD_SELECTED) {
@@ -131,7 +131,7 @@ function oe(e) {
131
131
  () => !1
132
132
  ), [t, i] = E(
133
133
  () => !1
134
- ), [m, c] = E(() => null), [C, R] = E(
134
+ ), [m, c] = E(() => null), [C, T] = E(
135
135
  () => ""
136
136
  ), [y, D] = E(
137
137
  () => null
@@ -146,7 +146,7 @@ function oe(e) {
146
146
  const M = j({
147
147
  publicKey: e.publicKey
148
148
  });
149
- R(M), o(!0), D(N()), d("iframeUrl built:", M), d("pendingMap created");
149
+ T(M), o(!0), D(N()), d("iframeUrl built:", M), d("pendingMap created");
150
150
  const A = () => {
151
151
  var r, u;
152
152
  const a = (u = (r = window.PayConductor) == null ? void 0 : r.frame) == null ? void 0 : u.iframe;
@@ -173,9 +173,9 @@ function oe(e) {
173
173
  locale: e.locale,
174
174
  paymentMethods: e.paymentMethods,
175
175
  defaultPaymentMethod: e.defaultPaymentMethod
176
- }, k = {
176
+ }, K = {
177
177
  confirmPayment: (a) => (d("confirmPayment called", {
178
- intentToken: a.intentToken
178
+ orderId: a.orderId
179
179
  }), v(A(), y, a)),
180
180
  validate: (a) => (d("validate called", a), J(A(), y, a)),
181
181
  reset: () => (d("reset called"), X(A(), y)),
@@ -184,10 +184,10 @@ function oe(e) {
184
184
  window.PayConductor = {
185
185
  frame: O,
186
186
  config: F,
187
- api: k,
187
+ api: K,
188
188
  selectedPaymentMethod: w
189
189
  }, d("window.PayConductor registered");
190
- const K = async () => {
190
+ const V = async () => {
191
191
  if (!l) {
192
192
  const a = A();
193
193
  if (!a) {
@@ -209,12 +209,12 @@ function oe(e) {
209
209
  nuPayConfig: e.nuPayConfig
210
210
  });
211
211
  }
212
- }, V = (a) => {
212
+ }, Y = (a) => {
213
213
  p(
214
214
  a,
215
215
  y,
216
216
  (r) => {
217
- i(r), r && (d("iframe Ready — sending config"), K());
217
+ i(r), r && (d("iframe Ready — sending config"), V());
218
218
  },
219
219
  (r) => {
220
220
  c(r), d("iframe Error:", r);
@@ -245,7 +245,7 @@ function oe(e) {
245
245
  }
246
246
  );
247
247
  };
248
- window.addEventListener("message", V), d("SDK initialized — waiting for PayConductorCheckoutElement");
248
+ window.addEventListener("message", Y), d("SDK initialized — waiting for PayConductorCheckoutElement");
249
249
  }, []), /* @__PURE__ */ L(
250
250
  "div",
251
251
  {
@@ -259,7 +259,7 @@ function oe(e) {
259
259
  );
260
260
  }
261
261
  function re(e) {
262
- const n = Y(null), [o, t] = E(() => ""), [i, m] = E(() => !1);
262
+ const n = g(null), [o, t] = E(() => ""), [i, m] = E(() => !1);
263
263
  return S(() => {
264
264
  const c = typeof window < "u" ? window.PayConductor : null;
265
265
  c || console.warn(
@@ -295,7 +295,7 @@ function re(e) {
295
295
  function ae() {
296
296
  const e = typeof window < "u" ? window.PayConductor : null, n = e != null && e.config ? {
297
297
  publicKey: e.config.publicKey,
298
- intentToken: e.config.intentToken,
298
+ orderId: e.config.orderId,
299
299
  theme: e.config.theme,
300
300
  locale: e.config.locale
301
301
  } : {}, o = e != null && e.frame ? {
@@ -341,8 +341,8 @@ function ie() {
341
341
  },
342
342
  confirmPayment: async (o) => {
343
343
  const t = _(e), i = N();
344
- if (!o.intentToken)
345
- throw new Error("Intent token is required");
344
+ if (!o.orderId)
345
+ throw new Error("Order ID is required");
346
346
  return v(t || void 0, i, o);
347
347
  },
348
348
  validate: e.api.validate,
@@ -352,17 +352,17 @@ function ie() {
352
352
  const t = e.config;
353
353
  n(f.CONFIG, {
354
354
  publicKey: t == null ? void 0 : t.publicKey,
355
- intentToken: t == null ? void 0 : t.intentToken,
355
+ orderId: t == null ? void 0 : t.orderId,
356
356
  theme: o.theme ?? (t == null ? void 0 : t.theme),
357
357
  locale: o.locale ?? (t == null ? void 0 : t.locale),
358
358
  paymentMethods: o.paymentMethods ?? (t == null ? void 0 : t.paymentMethods)
359
359
  });
360
360
  },
361
- updateIntentToken: (o) => {
361
+ updateorderId: (o) => {
362
362
  const t = e.config;
363
363
  n(f.CONFIG, {
364
364
  publicKey: t == null ? void 0 : t.publicKey,
365
- intentToken: o,
365
+ orderId: o,
366
366
  theme: t == null ? void 0 : t.theme,
367
367
  locale: t == null ? void 0 : t.locale,
368
368
  paymentMethods: t == null ? void 0 : t.paymentMethods
@@ -374,7 +374,7 @@ function ie() {
374
374
  submit: async () => {
375
375
  const o = _(e), t = N();
376
376
  try {
377
- return await I(o || void 0, t, f.CONFIRM_PAYMENT, {}), {
377
+ return await R(o || void 0, t, f.CONFIRM_PAYMENT, {}), {
378
378
  paymentMethod: void 0
379
379
  };
380
380
  } catch (i) {
@@ -404,7 +404,7 @@ function ie() {
404
404
  updateConfig: () => {
405
405
  throw new Error("PayConductor not initialized");
406
406
  },
407
- updateIntentToken: () => {
407
+ updateorderId: () => {
408
408
  throw new Error("PayConductor not initialized");
409
409
  },
410
410
  update: () => {
@@ -418,7 +418,7 @@ function ie() {
418
418
  export {
419
419
  q as ALLOWED_ORIGINS,
420
420
  ne as ERROR_CODES,
421
- H as IFRAME_BASE_URL,
421
+ k as IFRAME_BASE_URL,
422
422
  B as IFRAME_DEFAULT_HEIGHT_VALUE,
423
423
  f as POST_MESSAGES,
424
424
  oe as PayConductor,
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n intentToken?: 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 paymentIntentId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n intentToken: options.intentToken\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"intentToken\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { intentToken: string }) => {\n log(\"confirmPayment called\", {\n intentToken: options.intentToken,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n intentToken: ctx.config.intentToken,\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 intentToken: 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 updateIntentToken: (intentToken: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateIntentToken: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.intentToken) {\n throw new Error(\"Intent token is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n intentToken: currentConfig?.intentToken,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateIntentToken: (intentToken: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n intentToken: intentToken,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","intentToken"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../src/payconductor/iframe/constants.ts","../src/payconductor/iframe/types.ts","../src/payconductor/constants.ts","../src/payconductor/utils.ts","../src/payconductor/internal.ts","../src/payconductor/payconductor.tsx","../src/payconductor/payconductor-element.tsx","../src/payconductor/hooks/use-payconductor.ts","../src/payconductor/hooks/use-element.ts"],"sourcesContent":["// PayConductor Shared Constants\n// Served statically at iframe.payconductor.ai/constants.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport const APP_BASE_URL_PROD = \"https://app.payconductor.ai\";\nexport const API_BASE_URL_PROD = \"https://app.payconductor.ai/api/v1\";\nexport const IFRAME_BASE_URL_PROD = \"https://iframe.payconductor.ai/v1\";\nexport const IFRAME_BASE_URL_DEV = \"http://localhost:5175\";\nexport const APP_BASE_URL_DEV = \"http://localhost:3000\";\nexport const DEFAULT_LOCALE = \"pt-BR\";\nexport const REQUEST_TIMEOUT_MS = 30000;\nexport const IFRAME_DEFAULT_HEIGHT = \"600px\"","// PayConductor Shared Types\n// Served statically at iframe.payconductor.ai/types.ts\n// Used by the iFrame (imported directly) and the SDK Web (synced with: bun sync)\n\nexport enum PaymentMethod {\n Pix = \"Pix\",\n CreditCard = \"CreditCard\",\n DebitCard = \"DebitCard\",\n BankSlip = \"BankSlip\",\n Crypto = \"Crypto\",\n ApplePay = \"ApplePay\",\n NuPay = \"NuPay\",\n PicPay = \"PicPay\",\n AmazonPay = \"AmazonPay\",\n SepaDebit = \"SepaDebit\",\n GooglePay = \"GooglePay\",\n}\nexport enum PaymentMethodLayout {\n Grid = \"grid\",\n Vertical = \"vertical\",\n Horizontal = \"horizontal\",\n}\nexport enum PaymentStatus {\n Succeeded = \"succeeded\",\n Pending = \"pending\",\n Failed = \"failed\",\n}\nexport enum DeviceType {\n Android = \"android\",\n IOS = \"ios\",\n Web = \"web\",\n}\nexport enum InputStyleKey {\n Padding = \"padding\",\n Radius = \"radius\",\n Color = \"color\",\n Background = \"background\",\n Shadow = \"shadow\",\n}\nexport enum OutgoingMessage {\n Init = \"Init\",\n Config = \"Config\",\n Update = \"Update\",\n ConfirmPayment = \"ConfirmPayment\",\n Validate = \"Validate\",\n Reset = \"Reset\",\n}\nexport enum IncomingMessage {\n Ready = \"Ready\",\n Error = \"Error\",\n PaymentComplete = \"PaymentComplete\",\n PaymentFailed = \"PaymentFailed\",\n PaymentPending = \"PaymentPending\",\n ValidationError = \"ValidationError\",\n PaymentMethodSelected = \"PaymentMethodSelected\",\n}\nexport enum ErrorCode {\n InvalidClient = \"InvalidClient\",\n InvalidToken = \"InvalidToken\",\n NetworkError = \"NetworkError\",\n IframeNotReady = \"IframeNotReady\",\n PaymentDeclined = \"PaymentDeclined\",\n ValidationError = \"ValidationError\",\n Timeout = \"Timeout\",\n}\nexport type InputStyleConfig = {\n padding?: string;\n radius?: string;\n color?: string;\n background?: string;\n shadow?: string;\n};\nexport type PaymentMethodsConfig = {\n layout?: PaymentMethodLayout;\n gap?: string;\n inputStyle?: InputStyleConfig;\n};\nexport type PaymentMethodConfig = {\n method: PaymentMethod;\n discount?: number;\n showBrands?: boolean;\n installments?: {\n count: number;\n amount: number;\n }[];\n};\nexport type PaymentMethodsResponse = {\n methods: PaymentMethod[];\n config: PaymentMethodsConfig;\n};\nexport type PayConductorTheme = {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n surfaceColor?: string;\n textColor?: string;\n textSecondaryColor?: string;\n errorColor?: string;\n successColor?: string;\n warningColor?: string;\n borderColor?: string;\n disabledColor?: string;\n fontFamily?: string;\n fontSize?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n fontWeight?: {\n normal?: number;\n medium?: number;\n bold?: number;\n };\n lineHeight?: string;\n spacing?: {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n };\n borderRadius?: string;\n borderWidth?: string;\n boxShadow?: string;\n boxShadowHover?: string;\n inputBackground?: string;\n inputBorderColor?: string;\n inputBorderRadius?: string;\n inputHeight?: string;\n inputPadding?: string;\n buttonHeight?: string;\n buttonPadding?: string;\n buttonBorderRadius?: string;\n transitionDuration?: string;\n transitionTimingFunction?: string;\n};\nexport const defaultTheme: PayConductorTheme = {\n primaryColor: \"#0066ff\",\n secondaryColor: \"#5a6b7c\",\n backgroundColor: \"transparent\",\n surfaceColor: \"#f8fafc\",\n textColor: \"#0f172a\",\n textSecondaryColor: \"#64748b\",\n errorColor: \"#ef4444\",\n successColor: \"#22c55e\",\n warningColor: \"#f59e0b\",\n borderColor: \"#e2e8f0\",\n disabledColor: \"#cbd5e1\",\n fontFamily: '\"Poppins\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif',\n fontSize: {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.125rem\",\n xl: \"1.25rem\"\n },\n fontWeight: {\n normal: 400,\n medium: 500,\n bold: 600\n },\n lineHeight: \"1.5\",\n spacing: {\n xs: \"4px\",\n sm: \"8px\",\n md: \"16px\",\n lg: \"24px\",\n xl: \"32px\"\n },\n borderRadius: \"8px\",\n borderWidth: \"1px\",\n boxShadow: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\",\n boxShadowHover: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\",\n inputBackground: \"#ffffff\",\n inputBorderColor: \"#cbd5e1\",\n inputBorderRadius: \"8px\",\n inputHeight: \"44px\",\n inputPadding: \"12px 16px\",\n buttonHeight: \"48px\",\n buttonPadding: \"16px 24px\",\n buttonBorderRadius: \"8px\",\n transitionDuration: \"0.2s\",\n transitionTimingFunction: \"ease\"\n};\nexport type PayConductorConfig = {\n publicKey: string;\n orderId?: string;\n theme?: PayConductorTheme;\n locale?: string;\n paymentMethods?: PaymentMethod[] | \"all\";\n defaultPaymentMethod?: PaymentMethod;\n paymentMethodsConfig?: PaymentMethodConfig[];\n methodsDirection?: \"vertical\" | \"horizontal\";\n showPaymentButtons?: boolean;\n /** Required when NuPay is an available payment method */\n nuPayConfig?: NuPayData;\n};\nexport type BillingDetails = {\n name: string;\n email?: string;\n phone?: string;\n address?: {\n line1: string;\n line2?: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n };\n};\nexport type CardData = {\n number: string;\n expMonth: string;\n expYear: string;\n cvc: string;\n};\nexport type CreatePaymentMethodOptions = {\n billingDetails: BillingDetails;\n card?: CardData;\n};\nexport type PaymentMethodResult = {\n id: string;\n type: PaymentMethod;\n card?: {\n brand: string;\n last4: string;\n expMonth: number;\n expYear: number;\n };\n billingDetails?: BillingDetails;\n};\nexport type PaymentResult = {\n orderId: string;\n status: PaymentStatus;\n amount: number;\n currency: string;\n message?: string;\n};\nexport interface MessagePayload {\n type: OutgoingMessage | IncomingMessage;\n data?: unknown;\n requestId?: string;\n error?: {\n code: string;\n message: string;\n field?: string;\n };\n}\nexport type CardTokenData = {\n token: string;\n firstSixCardNumber?: string;\n};\nexport type CardFullData = {\n number: string;\n holderName: string;\n cvv: string;\n expiration: {\n month: number;\n year: number;\n };\n};\nexport type CardPaymentData = CardTokenData | CardFullData;\nexport type PixPaymentData = {\n paymentMethod: PaymentMethod.Pix;\n expirationInSeconds?: number;\n};\nexport type CreditCardPaymentData = {\n paymentMethod: PaymentMethod.CreditCard;\n card: CardPaymentData;\n installments: number;\n softDescriptor?: string;\n};\nexport type BankSlipPaymentData = {\n paymentMethod: PaymentMethod.BankSlip;\n expirationInDays?: number;\n};\nexport type NuPayData = {\n cancelUrl: string;\n merchantName: string;\n returnUrl: string;\n storeName?: string;\n};\nexport type NuPayPaymentData = {\n paymentMethod: PaymentMethod.NuPay;\n nuPay: NuPayData;\n};\nexport type PicPayPaymentData = {\n paymentMethod: PaymentMethod.PicPay;\n};\nexport type PaymentConfirmData = PixPaymentData | CreditCardPaymentData | BankSlipPaymentData | NuPayPaymentData | PicPayPaymentData","import { IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD, IFRAME_DEFAULT_HEIGHT, REQUEST_TIMEOUT_MS } from \"./iframe/constants\";\nimport { IncomingMessage, OutgoingMessage } from \"./iframe/types\";\nconst isDev = typeof window !== \"undefined\" && (window.location.hostname === \"localhost\" || window.location.hostname === \"127.0.0.1\");\nexport const IFRAME_BASE_URL = isDev ? IFRAME_BASE_URL_DEV : IFRAME_BASE_URL_PROD;\nexport const ALLOWED_ORIGINS = [IFRAME_BASE_URL_DEV, IFRAME_BASE_URL_PROD];\nexport const IFRAME_DEFAULT_HEIGHT_VALUE = IFRAME_DEFAULT_HEIGHT;\nexport const REQUEST_TIMEOUT = REQUEST_TIMEOUT_MS;\nexport const POST_MESSAGES = {\n INIT: OutgoingMessage.Init,\n CONFIG: OutgoingMessage.Config,\n UPDATE: OutgoingMessage.Update,\n CONFIRM_PAYMENT: OutgoingMessage.ConfirmPayment,\n VALIDATE: OutgoingMessage.Validate,\n RESET: OutgoingMessage.Reset,\n READY: IncomingMessage.Ready,\n ERROR: IncomingMessage.Error,\n PAYMENT_COMPLETE: IncomingMessage.PaymentComplete,\n PAYMENT_FAILED: IncomingMessage.PaymentFailed,\n PAYMENT_PENDING: IncomingMessage.PaymentPending,\n VALIDATION_ERROR: IncomingMessage.ValidationError,\n PAYMENT_METHOD_SELECTED: IncomingMessage.PaymentMethodSelected\n} as const;\nexport const ERROR_CODES = {\n INVALID_CLIENT: \"InvalidClient\",\n INVALID_TOKEN: \"InvalidToken\",\n NETWORK_ERROR: \"NetworkError\",\n IFRAME_NOT_READY: \"IframeNotReady\",\n PAYMENT_DECLINED: \"PaymentDeclined\",\n VALIDATION_ERROR: \"ValidationError\",\n TIMEOUT: \"Timeout\"\n} as const","import { IFRAME_BASE_URL } from \"./constants\";\nimport type { PayConductorConfig } from \"./iframe/types\";\nexport function buildIframeUrl(config: PayConductorConfig): string {\n const params = new URLSearchParams({\n publicKey: config.publicKey\n });\n return `${IFRAME_BASE_URL}?${params.toString()}`;\n}\nexport function generateRequestId(): string {\n return crypto.randomUUID();\n}\nexport function isValidOrigin(origin: string, allowedOrigins: string[]): boolean {\n return allowedOrigins.includes(origin);\n}","import { ALLOWED_ORIGINS, POST_MESSAGES, REQUEST_TIMEOUT } from \"./constants\";\nimport { IncomingMessage, OutgoingMessage, PayConductorConfig, PaymentMethod, PaymentResult } from \"./iframe/types\";\nimport type { ConfirmPaymentOptions, PendingRequest } from \"./types\";\nimport { generateRequestId, isValidOrigin } from \"./utils\";\nexport function createPendingRequestsMap(): Map<string, PendingRequest> {\n return new Map<string, PendingRequest>();\n}\nexport function sendMessageToIframe(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, type: OutgoingMessage | IncomingMessage, data?: unknown): Promise<unknown> {\n return new Promise((resolve, reject) => {\n if (!iframe || !(\"contentWindow\" in iframe)) {\n reject(new Error(\"Iframe not defined\"));\n return;\n }\n if (!iframe?.contentWindow) {\n reject(new Error(\"Iframe not ready\"));\n return;\n }\n if (!pendingMap) {\n reject(new Error(\"Pending requests not initialized\"));\n return;\n }\n const requestId = generateRequestId();\n pendingMap.set(requestId, {\n resolve,\n reject\n });\n iframe.contentWindow.postMessage({\n type,\n data,\n requestId\n }, \"*\");\n setTimeout(() => {\n if (pendingMap?.has(requestId)) {\n pendingMap.delete(requestId);\n reject(new Error(\"Request timeout\"));\n }\n }, REQUEST_TIMEOUT);\n });\n}\nexport function confirmPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, options: ConfirmPaymentOptions): Promise<PaymentResult> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {\n orderId: options.orderId\n }) as Promise<PaymentResult>;\n}\nexport function validatePayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, data: unknown): Promise<boolean> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.VALIDATE, data) as Promise<boolean>;\n}\nexport function resetPayment(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.RESET) as Promise<void>;\n}\nexport function sendConfig(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\" | \"defaultPaymentMethod\" | \"showPaymentButtons\" | \"nuPayConfig\">): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.CONFIG, config) as Promise<void>;\n}\nexport function sendInit(iframe: HTMLIFrameElement | Element | undefined, pendingMap: Map<string, PendingRequest> | null, config: PayConductorConfig): Promise<void> {\n return sendMessageToIframe(iframe, pendingMap, POST_MESSAGES.INIT, config) as Promise<void>;\n}\ntype MessagePayload = {\n requestId?: string;\n type?: string;\n data?: PaymentResult | {\n paymentMethod: PaymentMethod;\n };\n error?: {\n message?: string;\n };\n};\nexport function handleMessageEvent(event: MessageEvent, pendingMap: Map<string, PendingRequest> | null, setIsReady: (value: boolean) => void, setError: (value: string | null) => void, onReady?: () => void, onError?: (error: Error) => void, onPaymentComplete?: (data: PaymentResult) => void, onPaymentFailed?: (data: PaymentResult) => void, onPaymentPending?: (data: PaymentResult) => void, onPaymentMethodSelected?: (method: PaymentMethod) => void) {\n if (!isValidOrigin(event.origin, ALLOWED_ORIGINS)) {\n return;\n }\n const payload: MessagePayload = event.data;\n const {\n requestId,\n type,\n data,\n error\n } = payload;\n if (requestId && pendingMap?.has(requestId)) {\n const {\n resolve,\n reject\n } = pendingMap.get(requestId)!;\n pendingMap.delete(requestId);\n if (error) {\n reject(new Error(String(error.message)));\n } else {\n resolve(data);\n }\n return;\n }\n if (type === POST_MESSAGES.READY) {\n setIsReady(true);\n onReady?.();\n return;\n }\n if (type === POST_MESSAGES.ERROR) {\n setError(error?.message || \"Unknown error\");\n onError?.(new Error(String(error?.message)));\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_COMPLETE) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentComplete?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_FAILED) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentFailed?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_PENDING) {\n if (data && typeof data === \"object\" && \"status\" in data) {\n onPaymentPending?.(data);\n }\n return;\n }\n if (type === POST_MESSAGES.PAYMENT_METHOD_SELECTED) {\n if (data && typeof data === \"object\" && \"paymentMethod\" in data) {\n onPaymentMethodSelected?.(data.paymentMethod);\n }\n return;\n }\n}","\"use client\";\nimport * as React from \"react\";\nimport { useState, useEffect } from \"react\";\n\nexport interface PayConductorEmbedProps\n extends Omit<PayConductorConfig, \"orderId\"> {\n children?: any;\n showActionButtons?: boolean;\n debug?: boolean;\n onReady?: () => void;\n onError?: (error: Error) => void;\n onPaymentComplete?: (result: PaymentResult) => void;\n onPaymentFailed?: (result: PaymentResult) => void;\n onPaymentPending?: (result: PaymentResult) => void;\n onPaymentMethodSelected?: (method: PaymentMethod) => void;\n}\n\nimport type {\n PayConductorConfig,\n PaymentMethod,\n PaymentResult,\n} from \"./iframe/types\";\nimport {\n confirmPayment,\n createPendingRequestsMap,\n handleMessageEvent,\n resetPayment,\n sendConfig,\n validatePayment,\n} from \"./internal\";\nimport type {\n PayConductorApi,\n PayConductorFrame,\n PayConductorState,\n PendingRequest,\n} from \"./types\";\nimport { buildIframeUrl } from \"./utils\";\n\nfunction PayConductor(props: PayConductorEmbedProps) {\n const [isLoaded, setIsLoaded] = useState<PayConductorState[\"isLoaded\"]>(\n () => false\n );\n\n const [isReady, setIsReady] = useState<PayConductorState[\"isReady\"]>(\n () => false\n );\n\n const [error, setError] = useState<PayConductorState[\"error\"]>(() => null);\n\n const [iframeUrl, setIframeUrl] = useState<PayConductorState[\"iframeUrl\"]>(\n () => \"\"\n );\n\n const [pendingMap, setPendingMap] = useState<PayConductorState[\"pendingMap\"]>(\n () => null\n );\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<\n PayConductorState[\"selectedPaymentMethod\"]\n >(() => null);\n\n const [configSent, setConfigSent] = useState(() => false);\n\n useEffect(() => {\n const log = (...args: any[]) => {\n if (props.debug) {\n console.log(\"[PayConductor]\", ...args);\n }\n };\n log(\"SDK initializing\", {\n publicKey: props.publicKey,\n });\n const iframeUrl = buildIframeUrl({\n publicKey: props.publicKey,\n });\n setIframeUrl(iframeUrl);\n setIsLoaded(true);\n setPendingMap(createPendingRequestsMap());\n log(\"iframeUrl built:\", iframeUrl);\n log(\"pendingMap created\");\n const getIframe = (): HTMLIFrameElement | undefined => {\n const ref = window.PayConductor?.frame?.iframe;\n if (!ref) return undefined;\n if (ref instanceof HTMLIFrameElement) return ref;\n if (typeof ref === \"object\" && ref !== null) {\n if (\"current\" in ref) return (ref as any).current ?? undefined;\n if (\"value\" in ref) return (ref as any).value ?? undefined;\n }\n return ref as HTMLIFrameElement;\n };\n const frame: PayConductorFrame = {\n iframe: null,\n iframeUrl,\n get isReady() {\n return isReady;\n },\n get error() {\n return error;\n },\n };\n const config: PayConductorConfig = {\n publicKey: props.publicKey,\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n };\n const api: PayConductorApi = {\n confirmPayment: (options: { orderId: string }) => {\n log(\"confirmPayment called\", {\n orderId: options.orderId,\n });\n return confirmPayment(getIframe(), pendingMap, options);\n },\n validate: (data: unknown) => {\n log(\"validate called\", data);\n return validatePayment(getIframe(), pendingMap, data);\n },\n reset: () => {\n log(\"reset called\");\n return resetPayment(getIframe(), pendingMap);\n },\n getSelectedPaymentMethod: () => selectedPaymentMethod,\n };\n window.PayConductor = {\n frame,\n config,\n api,\n selectedPaymentMethod: selectedPaymentMethod,\n };\n log(\"window.PayConductor registered\");\n const sendConfigToIframe = async () => {\n if (!configSent) {\n const iframe = getIframe();\n if (!iframe) {\n log(\"sendConfigToIframe: iframe not found, skipping\");\n return;\n }\n setConfigSent(true);\n log(\"sendConfig →\", {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n });\n sendConfig(iframe, pendingMap, {\n theme: props.theme,\n locale: props.locale,\n paymentMethods: props.paymentMethods,\n defaultPaymentMethod: props.defaultPaymentMethod,\n showPaymentButtons: props.showPaymentButtons,\n nuPayConfig: props.nuPayConfig,\n });\n }\n };\n const eventHandler = (event: MessageEvent) => {\n handleMessageEvent(\n event,\n pendingMap,\n (val) => {\n setIsReady(val);\n if (val) {\n log(\"iframe Ready — sending config\");\n sendConfigToIframe();\n }\n },\n (val) => {\n setError(val);\n log(\"iframe Error:\", val);\n },\n () => {\n log(\"onReady fired\");\n props.onReady?.();\n },\n (err) => {\n log(\"onError fired:\", err);\n props.onError?.(err);\n },\n (data) => {\n log(\"PaymentComplete:\", data);\n props.onPaymentComplete?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentFailed:\", data);\n props.onPaymentFailed?.(data as PaymentResult);\n },\n (data) => {\n log(\"PaymentPending:\", data);\n props.onPaymentPending?.(data as PaymentResult);\n },\n (method) => {\n log(\"PaymentMethodSelected:\", method);\n setSelectedPaymentMethod(method);\n if (window.PayConductor) {\n window.PayConductor.selectedPaymentMethod = method;\n }\n props.onPaymentMethodSelected?.(method);\n }\n );\n };\n window.addEventListener(\"message\", eventHandler);\n log(\"SDK initialized — waiting for PayConductorCheckoutElement\");\n }, []);\n\n return (\n <div\n className=\"payconductor\"\n id=\"payconductor\"\n style={{\n display: \"contents\",\n }}\n >\n {props.children}\n </div>\n );\n}\n\nexport default PayConductor;\n","\"use client\";\nimport * as React from \"react\";\nimport { useState, useRef, useEffect } from \"react\";\n\nexport interface PayConductorCheckoutElementProps {\n height?: string;\n}\n\nimport { IFRAME_DEFAULT_HEIGHT_VALUE } from \"./constants\";\n\nfunction PayConductorCheckoutElement(props: PayConductorCheckoutElementProps) {\n const iframeRef = useRef<any>(null);\n const [iframeUrl, setIframeUrl] = useState(() => \"\");\n\n const [isLoaded, setIsLoaded] = useState(() => false);\n\n useEffect(() => {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n if (!ctx) {\n console.warn(\n \"[PayConductorCheckoutElement] window.PayConductor not found — ensure <PayConductor> is mounted before <PayConductorCheckoutElement>\"\n );\n }\n if (ctx?.frame) {\n setIframeUrl(ctx.frame.iframeUrl || \"\");\n ctx.frame.iframe = iframeRef.current;\n console.log(\n \"[PayConductorCheckoutElement] iframe registered, src:\",\n iframeUrl\n );\n }\n setIsLoaded(true);\n }, []);\n\n return (\n <div\n className=\"payconductor-element\"\n style={{\n width: \"100%\",\n }}\n >\n {isLoaded && iframeUrl ? (\n <iframe\n allow=\"payment\"\n title=\"PayConductor\"\n ref={iframeRef}\n src={iframeUrl}\n style={{\n width: \"100%\",\n height: props.height || IFRAME_DEFAULT_HEIGHT_VALUE,\n border: \"none\",\n }}\n />\n ) : null}\n </div>\n );\n}\n\nexport default PayConductorCheckoutElement;\n","import type { PayConductorConfig } from \"../iframe/types\";\nimport type { PayConductorFrame } from \"../types\";\ntype UsePayConductorReturn = PayConductorFrame & Partial<PayConductorConfig>;\nexport function usePayConductor(): UsePayConductorReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const config = ctx?.config ? {\n publicKey: ctx.config.publicKey,\n orderId: ctx.config.orderId,\n theme: ctx.config.theme,\n locale: ctx.config.locale\n } : {};\n const frame = ctx?.frame ? {\n iframe: ctx.frame.iframe,\n isReady: ctx.frame.isReady,\n error: ctx.frame.error\n } : {\n iframe: null,\n isReady: false,\n error: null\n };\n return {\n ...config,\n ...frame\n };\n}","import { POST_MESSAGES } from \"../constants\";\nimport type { BillingDetails, PayConductorConfig, PaymentMethod, PaymentResult } from \"../iframe/types\";\nimport { confirmPayment, createPendingRequestsMap, sendInit, sendMessageToIframe } from \"../internal\";\nexport type SubmitResult = {\n error?: {\n message: string;\n code?: string;\n type?: \"validation_error\" | \"payment_error\";\n };\n paymentMethod?: PaymentMethod;\n};\nexport type ConfirmPaymentOptions = {\n orderId: string;\n returnUrl?: string;\n};\nexport type UpdateOptions = {\n billingDetails?: Partial<BillingDetails>;\n address?: Partial<BillingDetails[\"address\"]>;\n};\nexport interface UsePayconductorElementReturn {\n init: (config: PayConductorConfig) => Promise<void>;\n confirmPayment: (options: ConfirmPaymentOptions) => Promise<PaymentResult>;\n validate: (data: unknown) => Promise<boolean>;\n reset: () => Promise<void>;\n getSelectedPaymentMethod: () => PaymentMethod | null;\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => void;\n updateorderId: (orderId: string) => void;\n update: (options: UpdateOptions) => void;\n submit: () => Promise<SubmitResult>;\n}\nfunction getIframeFromContext(ctx: typeof window.PayConductor): HTMLIFrameElement | null {\n if (!ctx?.frame?.iframe) return null;\n const iframeRef = ctx.frame.iframe;\n if (iframeRef instanceof HTMLIFrameElement) {\n return iframeRef;\n }\n if (iframeRef && typeof iframeRef === \"object\" && \"value\" in iframeRef) {\n const value = iframeRef.value;\n if (value instanceof HTMLIFrameElement) {\n return value;\n }\n }\n return null;\n}\nexport function usePayconductorElement(): UsePayconductorElementReturn {\n const ctx = typeof window !== \"undefined\" ? window.PayConductor : null;\n const sendToIframe = (type: string, data?: unknown) => {\n if (!ctx) return;\n const iframe = getIframeFromContext(ctx);\n if (iframe?.contentWindow) {\n iframe.contentWindow.postMessage({\n type,\n data\n }, \"*\");\n }\n };\n if (!ctx) {\n return {\n init: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n confirmPayment: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n validate: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n reset: async () => {\n throw new Error(\"PayConductor not initialized\");\n },\n getSelectedPaymentMethod: () => null,\n updateConfig: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n updateorderId: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n update: () => {\n throw new Error(\"PayConductor not initialized\");\n },\n submit: async () => {\n throw new Error(\"PayConductor not initialized\");\n }\n };\n }\n return {\n init: async (config: PayConductorConfig): Promise<void> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n return sendInit(iframe || undefined, pendingMap, config);\n },\n confirmPayment: async (options: ConfirmPaymentOptions): Promise<PaymentResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n if (!options.orderId) {\n throw new Error(\"Order ID is required\");\n }\n return confirmPayment(iframe || undefined, pendingMap, options);\n },\n validate: ctx.api.validate,\n reset: ctx.api.reset,\n getSelectedPaymentMethod: (): PaymentMethod | null => {\n return ctx?.selectedPaymentMethod ?? null;\n },\n updateConfig: (config: Partial<Pick<PayConductorConfig, \"theme\" | \"locale\" | \"paymentMethods\">>) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: currentConfig?.orderId,\n theme: config.theme ?? currentConfig?.theme,\n locale: config.locale ?? currentConfig?.locale,\n paymentMethods: config.paymentMethods ?? currentConfig?.paymentMethods\n });\n },\n updateorderId: (orderId: string) => {\n const currentConfig = ctx.config;\n sendToIframe(POST_MESSAGES.CONFIG, {\n publicKey: currentConfig?.publicKey,\n orderId: orderId,\n theme: currentConfig?.theme,\n locale: currentConfig?.locale,\n paymentMethods: currentConfig?.paymentMethods\n });\n },\n update: (options: UpdateOptions) => {\n sendToIframe(POST_MESSAGES.UPDATE, options);\n },\n submit: async (): Promise<SubmitResult> => {\n const iframe = getIframeFromContext(ctx);\n const pendingMap = createPendingRequestsMap();\n try {\n await sendMessageToIframe(iframe || undefined, pendingMap, POST_MESSAGES.CONFIRM_PAYMENT, {});\n return {\n paymentMethod: undefined\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Payment failed\";\n return {\n error: {\n message,\n code: \"payment_error\",\n type: \"payment_error\"\n }\n };\n }\n }\n };\n}"],"names":["IFRAME_BASE_URL_PROD","IFRAME_BASE_URL_DEV","REQUEST_TIMEOUT_MS","IFRAME_DEFAULT_HEIGHT","OutgoingMessage","IncomingMessage","isDev","IFRAME_BASE_URL","ALLOWED_ORIGINS","IFRAME_DEFAULT_HEIGHT_VALUE","REQUEST_TIMEOUT","POST_MESSAGES","ERROR_CODES","buildIframeUrl","config","params","generateRequestId","isValidOrigin","origin","allowedOrigins","createPendingRequestsMap","sendMessageToIframe","iframe","pendingMap","type","data","resolve","reject","requestId","confirmPayment","options","validatePayment","resetPayment","sendConfig","sendInit","handleMessageEvent","event","setIsReady","setError","onReady","onError","onPaymentComplete","onPaymentFailed","onPaymentPending","onPaymentMethodSelected","payload","error","PayConductor","props","isLoaded","setIsLoaded","useState","isReady","iframeUrl","setIframeUrl","setPendingMap","selectedPaymentMethod","setSelectedPaymentMethod","configSent","setConfigSent","useEffect","log","args","getIframe","ref","_b","_a","frame","api","sendConfigToIframe","eventHandler","val","err","method","jsx","PayConductorCheckoutElement","iframeRef","useRef","ctx","usePayConductor","getIframeFromContext","value","usePayconductorElement","sendToIframe","currentConfig","orderId"],"mappings":"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"}
@@ -9,7 +9,7 @@ export type SubmitResult = {
9
9
  paymentMethod?: PaymentMethod;
10
10
  };
11
11
  export type ConfirmPaymentOptions = {
12
- intentToken: string;
12
+ orderId: string;
13
13
  returnUrl?: string;
14
14
  };
15
15
  export type UpdateOptions = {
@@ -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
- updateIntentToken: (intentToken: string) => void;
26
+ updateorderId: (orderId: string) => void;
27
27
  update: (options: UpdateOptions) => void;
28
28
  submit: () => Promise<SubmitResult>;
29
29
  }
@@ -135,7 +135,7 @@ export type PayConductorTheme = {
135
135
  export declare const defaultTheme: PayConductorTheme;
136
136
  export type PayConductorConfig = {
137
137
  publicKey: string;
138
- intentToken?: string;
138
+ orderId?: string;
139
139
  theme?: PayConductorTheme;
140
140
  locale?: string;
141
141
  paymentMethods?: PaymentMethod[] | "all";
@@ -181,7 +181,7 @@ export type PaymentMethodResult = {
181
181
  billingDetails?: BillingDetails;
182
182
  };
183
183
  export type PaymentResult = {
184
- paymentIntentId: string;
184
+ orderId: string;
185
185
  status: PaymentStatus;
186
186
  amount: number;
187
187
  currency: string;
@@ -1,5 +1,5 @@
1
1
  import { PayConductorConfig, PaymentMethod, PaymentResult } from './iframe/types';
2
- export interface PayConductorEmbedProps extends Omit<PayConductorConfig, "intentToken"> {
2
+ export interface PayConductorEmbedProps extends Omit<PayConductorConfig, "orderId"> {
3
3
  children?: any;
4
4
  showActionButtons?: boolean;
5
5
  debug?: boolean;
@@ -1,8 +1,8 @@
1
1
  import { PayConductorConfig, PaymentMethod, PaymentResult } from './iframe/types';
2
2
 
3
- export type { CardTokenData, CardFullData, CardPaymentData, PixPaymentData, CreditCardPaymentData, BankSlipPaymentData, NuPayData, NuPayPaymentData, PicPayPaymentData, PaymentConfirmData } from './iframe/types';
3
+ export type * from './iframe/types';
4
4
  export type ConfirmPaymentOptions = {
5
- intentToken: string;
5
+ orderId: string;
6
6
  returnUrl?: string;
7
7
  };
8
8
  export type SubmitResult = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payconductor-sdk-web/library-react",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "React SDK for PayConductor",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",