cppay-sdk 0.0.2-beta.1 → 0.0.2-beta.10

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.
@@ -0,0 +1,108 @@
1
+ const CHAIN_ICONS = {
2
+ Ethereum: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
3
+ BSC: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png",
4
+ "bsc-testnet": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png",
5
+ Tron: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png",
6
+ Polygon: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png",
7
+ Solana: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png"
8
+ }, TOKEN_ICONS = {
9
+ USDT: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png",
10
+ USDC: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
11
+ ETH: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
12
+ BNB: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png",
13
+ tBNB: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png",
14
+ TRX: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png",
15
+ SOL: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png"
16
+ };
17
+ var BASE_URL = "http://192.168.0.162:8000", request = async (e, t, r) => {
18
+ let i = Object.assign({ timeout: 15e3 }, r), a = new AbortController(), o = setTimeout(() => a.abort(), i.timeout);
19
+ try {
20
+ let r = await fetch(new URL(e, BASE_URL), {
21
+ signal: a.signal,
22
+ ...t
23
+ });
24
+ clearTimeout(o);
25
+ let i = r.headers.get("Content-Type") ?? "";
26
+ if (i.includes("json")) return await r.json();
27
+ try {
28
+ return await r.json();
29
+ } catch {
30
+ throw Error(`URL: ${e}, Unsupport Content Type: ${i}`);
31
+ }
32
+ } catch (t) {
33
+ throw clearTimeout(o), t instanceof DOMException && t.name === "AbortError" ? Error(`URL: ${e}, Request timeout after ${i.timeout}ms`) : t;
34
+ }
35
+ }, SUCCESS_CODE = 0;
36
+ const cppayRequest = async (e, t) => {
37
+ let n = new URLSearchParams(t.params), a = await request(`${t.url}${n.size ? `?${n.toString()}` : ""}`, {
38
+ method: t.method ?? "get",
39
+ headers: {
40
+ Authorization: e,
41
+ ...t.headers
42
+ },
43
+ body: t.data ? JSON.stringify(t.data) : void 0
44
+ });
45
+ if (a.code !== SUCCESS_CODE) throw Error(`Request ${t.url} Failed. ${a.message}`);
46
+ return a.data;
47
+ };
48
+ var cppay_default = class {
49
+ apikey;
50
+ constructor(e) {
51
+ this.apikey = e;
52
+ }
53
+ async getSupportedChains() {
54
+ let n = (await cppayRequest(this.apikey, { url: "/api/payment/token" })).reduce((n, r) => {
55
+ let i = n[r.chain] ?? {
56
+ chain: r.chain,
57
+ chainId: r.chain_id,
58
+ tokens: [],
59
+ icon: CHAIN_ICONS[r.chain]
60
+ };
61
+ return i.tokens.push({
62
+ symbol: r.token_symbol,
63
+ decimals: r.token_decimals,
64
+ address: r.token_address,
65
+ receiveAddresses: r.receive_addresses,
66
+ icon: TOKEN_ICONS[r.token_symbol]
67
+ }), n[r.chain] = i, n;
68
+ }, {});
69
+ return Object.values(n);
70
+ }
71
+ async createPayment(e) {
72
+ let t = {
73
+ chain: e.paymentChain,
74
+ token: e.paymentToken,
75
+ order_no: e.orderId,
76
+ amount: e.amount
77
+ }, n = await cppayRequest(this.apikey, {
78
+ url: "/api/payment/create",
79
+ method: "post",
80
+ data: t
81
+ });
82
+ return {
83
+ orderId: e.orderId,
84
+ paymentId: n.payment_id,
85
+ paymentAmount: n.pay_amount,
86
+ paymentChain: e.paymentChain,
87
+ paymentToken: e.paymentToken
88
+ };
89
+ }
90
+ async checkPaymentStatus(e) {
91
+ let t = { payment_id: e }, n = await cppayRequest(this.apikey, {
92
+ url: "/api/payment/query",
93
+ params: t
94
+ });
95
+ return {
96
+ orderId: n.order_no,
97
+ paymentId: n.payment_id,
98
+ chain: n.chain,
99
+ token: n.token,
100
+ baseAmount: n.base_amount,
101
+ payAmount: n.pay_amount,
102
+ receiveAddress: n.receive_address,
103
+ expireAt: n.expire_at,
104
+ status: n.status
105
+ };
106
+ }
107
+ };
108
+ export { CHAIN_ICONS as n, TOKEN_ICONS as r, cppay_default as t };
@@ -0,0 +1 @@
1
+ const e={Ethereum:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BSC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,"bsc-testnet":`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,Tron:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,Polygon:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png`,Solana:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`},t={USDT:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png`,USDC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png`,ETH:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,tBNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,TRX:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,SOL:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`};var n=`http://192.168.0.162:8000`,r=async(e,t,r)=>{let i=Object.assign({timeout:15e3},r),a=new AbortController,o=setTimeout(()=>a.abort(),i.timeout);try{let r=await fetch(new URL(e,n),{signal:a.signal,...t});clearTimeout(o);let i=r.headers.get(`Content-Type`)??``;if(i.includes(`json`))return await r.json();try{return await r.json()}catch{throw Error(`URL: ${e}, Unsupport Content Type: ${i}`)}}catch(t){throw clearTimeout(o),t instanceof DOMException&&t.name===`AbortError`?Error(`URL: ${e}, Request timeout after ${i.timeout}ms`):t}},i=0;const a=async(e,t)=>{let n=new URLSearchParams(t.params),a=await r(`${t.url}${n.size?`?${n.toString()}`:``}`,{method:t.method??`get`,headers:{Authorization:e,...t.headers},body:t.data?JSON.stringify(t.data):void 0});if(a.code!==i)throw Error(`Request ${t.url} Failed. ${a.message}`);return a.data};var o=class{apikey;constructor(e){this.apikey=e}async getSupportedChains(){let n=(await a(this.apikey,{url:`/api/payment/token`})).reduce((n,r)=>{let i=n[r.chain]??{chain:r.chain,chainId:r.chain_id,tokens:[],icon:e[r.chain]};return i.tokens.push({symbol:r.token_symbol,decimals:r.token_decimals,address:r.token_address,receiveAddresses:r.receive_addresses,icon:t[r.token_symbol]}),n[r.chain]=i,n},{});return Object.values(n)}async createPayment(e){let t={chain:e.paymentChain,token:e.paymentToken,order_no:e.orderId,amount:e.amount},n=await a(this.apikey,{url:`/api/payment/create`,method:`post`,data:t});return{orderId:e.orderId,paymentId:n.payment_id,paymentAmount:n.pay_amount,paymentChain:e.paymentChain,paymentToken:e.paymentToken}}async checkPaymentStatus(e){let t={payment_id:e},n=await a(this.apikey,{url:`/api/payment/query`,params:t});return{orderId:n.order_no,paymentId:n.payment_id,chain:n.chain,token:n.token,baseAmount:n.base_amount,payAmount:n.pay_amount,receiveAddress:n.receive_address,expireAt:n.expire_at,status:n.status}}},s=o;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return t}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return s}});
@@ -0,0 +1,2 @@
1
+ ._cppay-fade-enter-active[data-v-de37a8de],._cppay-fade-leave-active[data-v-de37a8de]{transition:opacity .3s}._cppay-fade-enter-from[data-v-de37a8de],._cppay-fade-leave-to[data-v-de37a8de]{opacity:0}._cppay-fade-enter-active ._cppay-dialog[data-v-de37a8de]{animation:.3s _cppay-slideUp}
2
+ /*$vite$:1*/
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- const e={Ethereum:[`USDT`,`USDC`,`ETH`],BSC:[`USDT`,`USDC`,`BNB`],Tron:[`USDT`,`USDC`,`TRX`],Polygon:[`USDT`,`USDC`],Solana:[`USDT`,`USDC`,`SOL`]},t={Ethereum:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BSC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,Tron:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,Polygon:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png`,Solana:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`},n={USDT:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png`,USDC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png`,ETH:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,TRX:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,SOL:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`};var r=`http://192.168.0.162:8000`,i=async(e,t,n)=>{let i=Object.assign({timeout:15e3},n),a=new AbortController,o=setTimeout(()=>a.abort(),i.timeout);try{let n=await fetch(new URL(e,r),{signal:a.signal,...t});clearTimeout(o);let i=n.headers.get(`Content-Type`)??``;if(i.includes(`json`))return await n.json();try{return await n.json()}catch{throw Error(`URL: ${e}, Unsupport Content Type: ${i}`)}}catch(t){throw clearTimeout(o),t instanceof DOMException&&t.name===`AbortError`?Error(`URL: ${e}, Request timeout after ${i.timeout}ms`):t}},a=0;const o=async(e,t)=>{let n=await i(t.url,{method:t.method??`get`,headers:{Authorization:e,...t.headers},body:JSON.stringify(t.data)});if(n.code!==a)throw Error(`Request ${t.url} Failed. ${n.message}`);return n.data},s=(e=1e3)=>new Promise(t=>setTimeout(t,e));var c=class{apikey;constructor(e){this.apikey=e}async getSupportedChains(){let e=(await o(this.apikey,{url:`/api/payment/token`})).reduce((e,r)=>{let i=e[r.chain]??{chain:r.chain,tokens:[],icon:t[r.chain]};return i.tokens.push({symbol:r.token_symbol,decimals:r.token_decimals,address:r.token_address,receiveAddresses:r.receive_addresses,icon:n[r.token_symbol]}),e[r.chain]=i,e},{});return Object.values(e)}async createPayment(e){let t={chain:e.paymentChain,token:e.paymentToken,order_no:e.orderId,amount:e.amount},n=await o(this.apikey,{url:`/api/payment/create`,method:`post`,data:t});return{orderId:e.orderId,paymentId:n.payment_id,paymentAmount:n.pay_amount,paymentChain:e.paymentChain,paymentToken:e.paymentToken}}async checkPaymentStatus(e,t=1e3){let n=15;for(;n--;){let n={payment_id:e};if((await o(this.apikey,{url:`/api/payment/query`,data:n})).status===`success`)return;await s(t)}throw Error(`Check Payment Status Timeout, PaymentId: ${e}`)}},l=c;exports.CHAIN_ICONS=t,exports.CHAIN_TOKENS=e,exports.Cppay=l,exports.TOKEN_ICONS=n;
1
+ const e=require(`./cppay-DeEVB4-L.cjs`);exports.CHAIN_ICONS=e.n,exports.Cppay=e.t,exports.TOKEN_ICONS=e.r;
package/dist/index.d.ts CHANGED
@@ -1,12 +1,11 @@
1
- export declare type Chain = "Ethereum" | "BSC" | "Tron" | "Polygon" | "Solana";
1
+ export declare type Address = `0x${string}`;
2
2
 
3
- export declare const CHAIN_ICONS: Record<Chain, string>;
4
-
5
- export declare const CHAIN_TOKENS: Record<Chain, Token[]>;
3
+ export declare const CHAIN_ICONS: Record<string, string>;
6
4
 
7
5
  export declare interface ChainInfo {
8
6
  icon?: string;
9
- chain: Chain;
7
+ chain: string;
8
+ chianId: number;
10
9
  tokens: TokenInfo[];
11
10
  }
12
11
 
@@ -15,12 +14,12 @@ export declare class Cppay {
15
14
  constructor(apikey: string);
16
15
  getSupportedChains(): Promise<ChainInfo[]>;
17
16
  createPayment(params: {
18
- paymentChain: Chain;
19
- paymentToken: Token;
17
+ paymentChain: string;
18
+ paymentToken: string;
20
19
  orderId: string;
21
20
  amount: Numberic;
22
21
  }): Promise<PaymentInfo>;
23
- checkPaymentStatus(paymentId: string, interval?: number): Promise<void>;
22
+ checkPaymentStatus(paymentId: string): Promise<PaymentOrder>;
24
23
  }
25
24
 
26
25
  export declare interface CppayResponse<R> {
@@ -35,20 +34,32 @@ export declare interface PaymentInfo {
35
34
  orderId: string;
36
35
  paymentId: string;
37
36
  paymentAmount: Numberic;
38
- paymentChain: Chain;
39
- paymentToken: Token;
37
+ paymentChain: string;
38
+ paymentToken: string;
39
+ }
40
+
41
+ export declare interface PaymentOrder {
42
+ orderId: string;
43
+ paymentId: string;
44
+ chain: string;
45
+ token: string;
46
+ baseAmount: Numberic;
47
+ payAmount: Numberic;
48
+ receiveAddress: Address;
49
+ expireAt: number;
50
+ status: PaymentStatus;
40
51
  }
41
52
 
42
- export declare type Token = "USDT" | "USDC" | "ETH" | "BNB" | "TRX" | "SOL";
53
+ export declare type PaymentStatus = "pending" | "paid" | "expired" | "failed";
43
54
 
44
- export declare const TOKEN_ICONS: Record<Token, string>;
55
+ export declare const TOKEN_ICONS: Record<string, string>;
45
56
 
46
57
  export declare interface TokenInfo {
47
58
  icon?: string;
48
59
  symbol: string;
49
60
  decimals: number;
50
- address: string | "";
51
- receiveAddresses: string[];
61
+ address: Address | "";
62
+ receiveAddresses: Address[];
52
63
  }
53
64
 
54
65
  export { }
package/dist/index.js CHANGED
@@ -1,122 +1,2 @@
1
- const CHAIN_TOKENS = {
2
- Ethereum: [
3
- "USDT",
4
- "USDC",
5
- "ETH"
6
- ],
7
- BSC: [
8
- "USDT",
9
- "USDC",
10
- "BNB"
11
- ],
12
- Tron: [
13
- "USDT",
14
- "USDC",
15
- "TRX"
16
- ],
17
- Polygon: ["USDT", "USDC"],
18
- Solana: [
19
- "USDT",
20
- "USDC",
21
- "SOL"
22
- ]
23
- }, CHAIN_ICONS = {
24
- Ethereum: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
25
- BSC: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png",
26
- Tron: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png",
27
- Polygon: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png",
28
- Solana: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png"
29
- }, TOKEN_ICONS = {
30
- USDT: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png",
31
- USDC: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png",
32
- ETH: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png",
33
- BNB: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png",
34
- TRX: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png",
35
- SOL: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png"
36
- };
37
- var BASE_URL = "http://192.168.0.162:8000", request = async (e, r, i) => {
38
- let o = Object.assign({ timeout: 15e3 }, i), s = new AbortController(), c = setTimeout(() => s.abort(), o.timeout);
39
- try {
40
- let i = await fetch(new URL(e, BASE_URL), {
41
- signal: s.signal,
42
- ...r
43
- });
44
- clearTimeout(c);
45
- let o = i.headers.get("Content-Type") ?? "";
46
- if (o.includes("json")) return await i.json();
47
- try {
48
- return await i.json();
49
- } catch {
50
- throw Error(`URL: ${e}, Unsupport Content Type: ${o}`);
51
- }
52
- } catch (r) {
53
- throw clearTimeout(c), r instanceof DOMException && r.name === "AbortError" ? Error(`URL: ${e}, Request timeout after ${o.timeout}ms`) : r;
54
- }
55
- }, SUCCESS_CODE = 0;
56
- const cppayRequest = async (e, r) => {
57
- let i = await request(r.url, {
58
- method: r.method ?? "get",
59
- headers: {
60
- Authorization: e,
61
- ...r.headers
62
- },
63
- body: JSON.stringify(r.data)
64
- });
65
- if (i.code !== SUCCESS_CODE) throw Error(`Request ${r.url} Failed. ${i.message}`);
66
- return i.data;
67
- }, sleep = (e = 1e3) => new Promise((r) => setTimeout(r, e));
68
- var cppay_default = class {
69
- apikey;
70
- constructor(e) {
71
- this.apikey = e;
72
- }
73
- async getSupportedChains() {
74
- let e = (await cppayRequest(this.apikey, { url: "/api/payment/token" })).reduce((e, a) => {
75
- let o = e[a.chain] ?? {
76
- chain: a.chain,
77
- tokens: [],
78
- icon: CHAIN_ICONS[a.chain]
79
- };
80
- return o.tokens.push({
81
- symbol: a.token_symbol,
82
- decimals: a.token_decimals,
83
- address: a.token_address,
84
- receiveAddresses: a.receive_addresses,
85
- icon: TOKEN_ICONS[a.token_symbol]
86
- }), e[a.chain] = o, e;
87
- }, {});
88
- return Object.values(e);
89
- }
90
- async createPayment(e) {
91
- let r = {
92
- chain: e.paymentChain,
93
- token: e.paymentToken,
94
- order_no: e.orderId,
95
- amount: e.amount
96
- }, i = await cppayRequest(this.apikey, {
97
- url: "/api/payment/create",
98
- method: "post",
99
- data: r
100
- });
101
- return {
102
- orderId: e.orderId,
103
- paymentId: i.payment_id,
104
- paymentAmount: i.pay_amount,
105
- paymentChain: e.paymentChain,
106
- paymentToken: e.paymentToken
107
- };
108
- }
109
- async checkPaymentStatus(e, r = 1e3) {
110
- let i = 15;
111
- for (; i--;) {
112
- let i = { payment_id: e };
113
- if ((await cppayRequest(this.apikey, {
114
- url: "/api/payment/query",
115
- data: i
116
- })).status === "success") return;
117
- await sleep(r);
118
- }
119
- throw Error(`Check Payment Status Timeout, PaymentId: ${e}`);
120
- }
121
- };
122
- export { CHAIN_ICONS, CHAIN_TOKENS, cppay_default as Cppay, TOKEN_ICONS };
1
+ import { n as CHAIN_ICONS, r as TOKEN_ICONS, t as cppay_default } from "./cppay-CpR3ZBzO.js";
2
+ export { CHAIN_ICONS, cppay_default as Cppay, TOKEN_ICONS };
@@ -0,0 +1 @@
1
+ var e=`._cppay-overlay{z-index:9999;background-color:#00000080;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}._cppay-dialog{background-color:#fff;border-radius:1.5rem;width:100%;max-width:28rem;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}._cppay-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:1.5rem;display:flex}._cppay-title{color:#111827;margin:0;font-size:1.25rem;font-weight:600}._cppay-close-btn{color:#9ca3af;cursor:pointer;background:0 0;border:none;padding:.25rem;transition:color .2s}._cppay-close-btn:hover:not(:disabled){color:#4b5563}._cppay-close-btn:disabled{opacity:.5;cursor:not-allowed}._cppay-close-btn svg{width:1.5rem;height:1.5rem}._cppay-content{padding:1.5rem}._cppay-section{margin-bottom:1.5rem}._cppay-section:last-child{margin-bottom:0}._cppay-label{color:#374151;margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}._cppay-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}._cppay-select-btn{cursor:pointer;background:#fff;border:2px solid #e5e7eb;border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem;font-family:inherit;font-size:.875rem;transition:all .2s;display:flex}._cppay-select-btn:hover{border-color:#d1d5db}._cppay-select-btn._cppay-selected{background-color:#eff6ff;border-color:#2563eb}._cppay-select-btn img{border-radius:9999px;width:1.5rem;height:1.5rem}._cppay-select-btn span{font-weight:500}._cppay-price-box{background-color:#f9fafb;border-radius:1rem;padding:1rem}._cppay-price-row{justify-content:space-between;align-items:center;display:flex}._cppay-price-label{color:#4b5563;font-size:.875rem}._cppay-price-amount{text-align:right}._cppay-price-main{color:#111827;margin:0;font-size:1.25rem;font-weight:700}._cppay-price-sub{color:#6b7280;margin-top:.25rem;font-size:.875rem}._cppay-btn{cursor:pointer;border:none;border-radius:.75rem;width:100%;padding:.75rem;font-family:inherit;font-size:1rem;font-weight:500;transition:all .2s}._cppay-btn-primary{color:#fff;background-color:#2563eb}._cppay-btn-primary:hover:not(:disabled){background-color:#1d4ed8}._cppay-btn-primary:disabled{opacity:.5;cursor:not-allowed}._cppay-btn-secondary{color:#374151;background-color:#fff;border:1px solid #d1d5db}._cppay-btn-secondary:hover:not(:disabled){background-color:#f9fafb}._cppay-btn-secondary:disabled{opacity:.5;cursor:not-allowed}._cppay-qr-container{justify-content:center;margin-bottom:1.5rem;display:flex}._cppay-qr-placeholder{background-color:#f3f4f6;border-radius:1rem;justify-content:center;align-items:center;width:12rem;height:12rem;display:flex}._cppay-qr-placeholder span{color:#9ca3af;font-size:.875rem}._cppay-info-box{background-color:#f9fafb;border-radius:.75rem;margin-bottom:.75rem;padding:1rem}._cppay-info-box:last-child{margin-bottom:0}._cppay-info-label{color:#4b5563;margin-bottom:.25rem;font-size:.875rem}._cppay-info-value{color:#111827;font-size:1.25rem;font-weight:700}._cppay-address-row{align-items:center;gap:.5rem;display:flex}._cppay-address-row code{text-overflow:ellipsis;white-space:nowrap;color:#111827;background:0 0;flex:1;font-family:monospace;font-size:.75rem;overflow:hidden}._cppay-copy-btn{color:#2563eb;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.25rem;transition:color .2s;display:flex}._cppay-copy-btn:hover{color:#1d4ed8}._cppay-copy-btn svg{width:1.25rem;height:1.25rem}@keyframes _cppay-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _cppay-slideUp{0%{opacity:0;transform:translateY(1.25rem)}to{opacity:1;transform:translateY(0)}}._cppay-overlay{animation:.3s _cppay-fadeIn}._cppay-dialog{animation:.3s _cppay-slideUp}@media (max-width:640px){._cppay-dialog{margin:.5rem}._cppay-header,._cppay-content{padding:1rem}}`;function t(e){if(typeof document>`u`||document.getElementById(`_cppay-payment-dialog-style`))return;let t=document.createElement(`style`);t.id=`_cppay-payment-dialog-style`,t.textContent=e,document.head.appendChild(t)}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
@@ -0,0 +1,7 @@
1
+ var payment_dialog_default = "._cppay-overlay{z-index:9999;background-color:#00000080;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}._cppay-dialog{background-color:#fff;border-radius:1.5rem;width:100%;max-width:28rem;overflow:hidden;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}._cppay-header{border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:1.5rem;display:flex}._cppay-title{color:#111827;margin:0;font-size:1.25rem;font-weight:600}._cppay-close-btn{color:#9ca3af;cursor:pointer;background:0 0;border:none;padding:.25rem;transition:color .2s}._cppay-close-btn:hover:not(:disabled){color:#4b5563}._cppay-close-btn:disabled{opacity:.5;cursor:not-allowed}._cppay-close-btn svg{width:1.5rem;height:1.5rem}._cppay-content{padding:1.5rem}._cppay-section{margin-bottom:1.5rem}._cppay-section:last-child{margin-bottom:0}._cppay-label{color:#374151;margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}._cppay-grid{grid-template-columns:repeat(2,1fr);gap:.75rem;display:grid}._cppay-select-btn{cursor:pointer;background:#fff;border:2px solid #e5e7eb;border-radius:.75rem;align-items:center;gap:.5rem;padding:.75rem;font-family:inherit;font-size:.875rem;transition:all .2s;display:flex}._cppay-select-btn:hover{border-color:#d1d5db}._cppay-select-btn._cppay-selected{background-color:#eff6ff;border-color:#2563eb}._cppay-select-btn img{border-radius:9999px;width:1.5rem;height:1.5rem}._cppay-select-btn span{font-weight:500}._cppay-price-box{background-color:#f9fafb;border-radius:1rem;padding:1rem}._cppay-price-row{justify-content:space-between;align-items:center;display:flex}._cppay-price-label{color:#4b5563;font-size:.875rem}._cppay-price-amount{text-align:right}._cppay-price-main{color:#111827;margin:0;font-size:1.25rem;font-weight:700}._cppay-price-sub{color:#6b7280;margin-top:.25rem;font-size:.875rem}._cppay-btn{cursor:pointer;border:none;border-radius:.75rem;width:100%;padding:.75rem;font-family:inherit;font-size:1rem;font-weight:500;transition:all .2s}._cppay-btn-primary{color:#fff;background-color:#2563eb}._cppay-btn-primary:hover:not(:disabled){background-color:#1d4ed8}._cppay-btn-primary:disabled{opacity:.5;cursor:not-allowed}._cppay-btn-secondary{color:#374151;background-color:#fff;border:1px solid #d1d5db}._cppay-btn-secondary:hover:not(:disabled){background-color:#f9fafb}._cppay-btn-secondary:disabled{opacity:.5;cursor:not-allowed}._cppay-qr-container{justify-content:center;margin-bottom:1.5rem;display:flex}._cppay-qr-placeholder{background-color:#f3f4f6;border-radius:1rem;justify-content:center;align-items:center;width:12rem;height:12rem;display:flex}._cppay-qr-placeholder span{color:#9ca3af;font-size:.875rem}._cppay-info-box{background-color:#f9fafb;border-radius:.75rem;margin-bottom:.75rem;padding:1rem}._cppay-info-box:last-child{margin-bottom:0}._cppay-info-label{color:#4b5563;margin-bottom:.25rem;font-size:.875rem}._cppay-info-value{color:#111827;font-size:1.25rem;font-weight:700}._cppay-address-row{align-items:center;gap:.5rem;display:flex}._cppay-address-row code{text-overflow:ellipsis;white-space:nowrap;color:#111827;background:0 0;flex:1;font-family:monospace;font-size:.75rem;overflow:hidden}._cppay-copy-btn{color:#2563eb;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.25rem;transition:color .2s;display:flex}._cppay-copy-btn:hover{color:#1d4ed8}._cppay-copy-btn svg{width:1.25rem;height:1.25rem}@keyframes _cppay-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes _cppay-slideUp{0%{opacity:0;transform:translateY(1.25rem)}to{opacity:1;transform:translateY(0)}}._cppay-overlay{animation:.3s _cppay-fadeIn}._cppay-dialog{animation:.3s _cppay-slideUp}@media (max-width:640px){._cppay-dialog{margin:.5rem}._cppay-header,._cppay-content{padding:1rem}}";
2
+ function injectStyle(e) {
3
+ if (typeof document > "u" || document.getElementById("_cppay-payment-dialog-style")) return;
4
+ let t = document.createElement("style");
5
+ t.id = "_cppay-payment-dialog-style", t.textContent = e, document.head.appendChild(t);
6
+ }
7
+ export { payment_dialog_default as n, injectStyle as t };
package/dist/react.cjs ADDED
@@ -0,0 +1 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));const c=require(`./cppay-DeEVB4-L.cjs`),l=require(`./inject-style-Dz7JsQxo.cjs`);let u=require(`react`);u=s(u);let d=require(`react/jsx-runtime`);var f=({open:e,onClose:t,apiKey:n,orderId:r,amount:i,onSuccess:a,onError:o})=>{let s=(0,u.useMemo)(()=>new c.t(n),[n]),[l,f]=(0,u.useState)(`select`),[p,m]=(0,u.useState)(!1),[h,g]=(0,u.useState)([]),[_,v]=(0,u.useState)(``),[y,b]=(0,u.useState)(``),[x,S]=(0,u.useState)(null),C=(0,u.useMemo)(()=>h.find(e=>e.chain===_),[h,_]),w=(0,u.useMemo)(()=>C?.tokens||[],[C]),T=(0,u.useMemo)(()=>w.find(e=>e.symbol===y),[w,y]),E=(0,u.useMemo)(()=>y?(parseFloat(i)/1).toFixed(6):`0`,[i,y,1]),D=async()=>{try{m(!0);let e=await s.getSupportedChains();g(e),e.length>0&&v(e[0].chain)}catch(e){o?.(e)}finally{m(!1)}},O=async()=>{if(!(!_||!y))try{m(!0);let e=await s.createPayment({paymentChain:_,paymentToken:y,orderId:r,amount:E});S({paymentId:e.paymentId,paymentAmount:e.paymentAmount,receiveAddress:T?.receiveAddresses[0]||``}),f(`payment`)}catch(e){o?.(e)}finally{m(!1)}},k=async()=>{if(x)try{m(!0),await s.checkPaymentStatus(x.paymentId),a?.(x.paymentId),j()}catch(e){o?.(e)}finally{m(!1)}},A=async()=>{x?.receiveAddress&&await navigator.clipboard.writeText(x.receiveAddress)},j=()=>{t(),setTimeout(()=>{f(`select`),S(null)},300)};return(0,u.useEffect)(()=>{e&&h.length===0&&D()},[e]),(0,u.useEffect)(()=>{w.length>0&&b(w[0].symbol)},[w]),e?(0,d.jsx)(`div`,{className:`_cppay-overlay`,onClick:e=>e.target===e.currentTarget&&j(),children:(0,d.jsxs)(`div`,{className:`_cppay-dialog`,children:[(0,d.jsxs)(`div`,{className:`_cppay-header`,children:[(0,d.jsx)(`h2`,{className:`_cppay-title`,children:l===`select`?`选择支付方式`:`完成支付`}),(0,d.jsx)(`button`,{onClick:j,disabled:p,className:`_cppay-close-btn`,children:(0,d.jsx)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,d.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M6 18L18 6M6 6l12 12`})})})]}),(0,d.jsx)(`div`,{className:`_cppay-content`,children:l===`select`?(0,d.jsxs)(`div`,{children:[(0,d.jsxs)(`div`,{className:`_cppay-section`,children:[(0,d.jsx)(`label`,{className:`_cppay-label`,children:`支付网络`}),(0,d.jsx)(`div`,{className:`_cppay-grid`,children:h.map(e=>(0,d.jsxs)(`button`,{onClick:()=>v(e.chain),className:`_cppay-select-btn ${_===e.chain?`_cppay-selected`:``}`,children:[e.icon&&(0,d.jsx)(`img`,{src:e.icon,alt:e.chain}),(0,d.jsx)(`span`,{children:e.chain})]},e.chain))})]}),(0,d.jsxs)(`div`,{className:`_cppay-section`,children:[(0,d.jsx)(`label`,{className:`_cppay-label`,children:`支付代币`}),(0,d.jsx)(`div`,{className:`_cppay-grid`,children:w.map(e=>(0,d.jsxs)(`button`,{onClick:()=>b(e.symbol),className:`_cppay-select-btn ${y===e.symbol?`_cppay-selected`:``}`,children:[e.icon&&(0,d.jsx)(`img`,{src:e.icon,alt:e.symbol}),(0,d.jsx)(`span`,{children:e.symbol})]},e.symbol))})]}),(0,d.jsx)(`div`,{className:`_cppay-section`,children:(0,d.jsx)(`div`,{className:`_cppay-price-box`,children:(0,d.jsxs)(`div`,{className:`_cppay-price-row`,children:[(0,d.jsx)(`span`,{className:`_cppay-price-label`,children:`支付金额`}),(0,d.jsxs)(`div`,{className:`_cppay-price-amount`,children:[(0,d.jsxs)(`div`,{className:`_cppay-price-main`,children:[E,` `,y]}),(0,d.jsxs)(`div`,{className:`_cppay-price-sub`,children:[`≈ $`,i]})]})]})})}),(0,d.jsx)(`div`,{className:`_cppay-section`,children:(0,d.jsx)(`button`,{onClick:O,disabled:!_||!y||p,className:`_cppay-btn _cppay-btn-primary`,children:p?`处理中...`:`继续支付`})})]}):x&&(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`div`,{className:`_cppay-qr-container`,children:(0,d.jsx)(`div`,{className:`_cppay-qr-placeholder`,children:(0,d.jsx)(`span`,{children:`扫码支付`})})}),(0,d.jsxs)(`div`,{className:`_cppay-section`,children:[(0,d.jsxs)(`div`,{className:`_cppay-info-box`,children:[(0,d.jsx)(`div`,{className:`_cppay-info-label`,children:`支付金额`}),(0,d.jsxs)(`div`,{className:`_cppay-info-value`,children:[x.paymentAmount,` `,y]})]}),(0,d.jsxs)(`div`,{className:`_cppay-info-box`,children:[(0,d.jsx)(`div`,{className:`_cppay-info-label`,children:`支付地址`}),(0,d.jsxs)(`div`,{className:`_cppay-address-row`,children:[(0,d.jsx)(`code`,{children:x.receiveAddress}),(0,d.jsx)(`button`,{onClick:A,className:`_cppay-copy-btn`,title:`复制地址`,children:(0,d.jsx)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`,children:(0,d.jsx)(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:2,d:`M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z`})})})]})]})]}),(0,d.jsx)(`div`,{className:`_cppay-section`,children:(0,d.jsx)(`button`,{onClick:k,disabled:p,className:`_cppay-btn _cppay-btn-primary`,children:p?`检查支付状态...`:`我已完成支付`})}),(0,d.jsx)(`div`,{className:`_cppay-section`,children:(0,d.jsx)(`button`,{onClick:()=>f(`select`),disabled:p,className:`_cppay-btn _cppay-btn-secondary`,children:`更改支付方式`})})]})})]})}):null},p=u.default.memo(f);l.t(l.n),exports.PaymentDialog=p,exports.t=s;
@@ -0,0 +1,15 @@
1
+ import { default as default_2 } from 'react';
2
+
3
+ export declare const PaymentDialog: default_2.NamedExoticComponent<PaymentDialogProps>;
4
+
5
+ declare interface PaymentDialogProps {
6
+ open: boolean;
7
+ onClose: () => void;
8
+ apiKey: string;
9
+ orderId: string;
10
+ amount: string;
11
+ onSuccess?: (paymentId: string) => void;
12
+ onError?: (error: Error) => void;
13
+ }
14
+
15
+ export { }
package/dist/react.js ADDED
@@ -0,0 +1,229 @@
1
+ import { t as cppay_default } from "./cppay-CpR3ZBzO.js";
2
+ import { n as payment_dialog_default, t as injectStyle } from "./inject-style-qX_0AjjE.js";
3
+ import React, { useEffect, useMemo, useState } from "react";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ var PaymentDialog_default = React.memo(({ open: o, onClose: s, apiKey: c, orderId: l, amount: u, onSuccess: d, onError: f }) => {
6
+ let p = useMemo(() => new cppay_default(c), [c]), [m, h] = useState("select"), [g, _] = useState(!1), [v, y] = useState([]), [b, x] = useState(""), [S, C] = useState(""), [w, T] = useState(null), E = useMemo(() => v.find((t) => t.chain === b), [v, b]), D = useMemo(() => E?.tokens || [], [E]), O = useMemo(() => D.find((t) => t.symbol === S), [D, S]), k = useMemo(() => S ? (parseFloat(u) / 1).toFixed(6) : "0", [
7
+ u,
8
+ S,
9
+ 1
10
+ ]), A = async () => {
11
+ try {
12
+ _(!0);
13
+ let t = await p.getSupportedChains();
14
+ y(t), t.length > 0 && x(t[0].chain);
15
+ } catch (t) {
16
+ f?.(t);
17
+ } finally {
18
+ _(!1);
19
+ }
20
+ }, j = async () => {
21
+ if (!(!b || !S)) try {
22
+ _(!0);
23
+ let t = await p.createPayment({
24
+ paymentChain: b,
25
+ paymentToken: S,
26
+ orderId: l,
27
+ amount: k
28
+ });
29
+ T({
30
+ paymentId: t.paymentId,
31
+ paymentAmount: t.paymentAmount,
32
+ receiveAddress: O?.receiveAddresses[0] || ""
33
+ }), h("payment");
34
+ } catch (t) {
35
+ f?.(t);
36
+ } finally {
37
+ _(!1);
38
+ }
39
+ }, M = async () => {
40
+ if (w) try {
41
+ _(!0), await p.checkPaymentStatus(w.paymentId), d?.(w.paymentId), P();
42
+ } catch (t) {
43
+ f?.(t);
44
+ } finally {
45
+ _(!1);
46
+ }
47
+ }, N = async () => {
48
+ w?.receiveAddress && await navigator.clipboard.writeText(w.receiveAddress);
49
+ }, P = () => {
50
+ s(), setTimeout(() => {
51
+ h("select"), T(null);
52
+ }, 300);
53
+ };
54
+ return useEffect(() => {
55
+ o && v.length === 0 && A();
56
+ }, [o]), useEffect(() => {
57
+ D.length > 0 && C(D[0].symbol);
58
+ }, [D]), o ? /* @__PURE__ */ jsx("div", {
59
+ className: "_cppay-overlay",
60
+ onClick: (t) => t.target === t.currentTarget && P(),
61
+ children: /* @__PURE__ */ jsxs("div", {
62
+ className: "_cppay-dialog",
63
+ children: [/* @__PURE__ */ jsxs("div", {
64
+ className: "_cppay-header",
65
+ children: [/* @__PURE__ */ jsx("h2", {
66
+ className: "_cppay-title",
67
+ children: m === "select" ? "选择支付方式" : "完成支付"
68
+ }), /* @__PURE__ */ jsx("button", {
69
+ onClick: P,
70
+ disabled: g,
71
+ className: "_cppay-close-btn",
72
+ children: /* @__PURE__ */ jsx("svg", {
73
+ fill: "none",
74
+ stroke: "currentColor",
75
+ viewBox: "0 0 24 24",
76
+ children: /* @__PURE__ */ jsx("path", {
77
+ strokeLinecap: "round",
78
+ strokeLinejoin: "round",
79
+ strokeWidth: 2,
80
+ d: "M6 18L18 6M6 6l12 12"
81
+ })
82
+ })
83
+ })]
84
+ }), /* @__PURE__ */ jsx("div", {
85
+ className: "_cppay-content",
86
+ children: m === "select" ? /* @__PURE__ */ jsxs("div", { children: [
87
+ /* @__PURE__ */ jsxs("div", {
88
+ className: "_cppay-section",
89
+ children: [/* @__PURE__ */ jsx("label", {
90
+ className: "_cppay-label",
91
+ children: "支付网络"
92
+ }), /* @__PURE__ */ jsx("div", {
93
+ className: "_cppay-grid",
94
+ children: v.map((t) => /* @__PURE__ */ jsxs("button", {
95
+ onClick: () => x(t.chain),
96
+ className: `_cppay-select-btn ${b === t.chain ? "_cppay-selected" : ""}`,
97
+ children: [t.icon && /* @__PURE__ */ jsx("img", {
98
+ src: t.icon,
99
+ alt: t.chain
100
+ }), /* @__PURE__ */ jsx("span", { children: t.chain })]
101
+ }, t.chain))
102
+ })]
103
+ }),
104
+ /* @__PURE__ */ jsxs("div", {
105
+ className: "_cppay-section",
106
+ children: [/* @__PURE__ */ jsx("label", {
107
+ className: "_cppay-label",
108
+ children: "支付代币"
109
+ }), /* @__PURE__ */ jsx("div", {
110
+ className: "_cppay-grid",
111
+ children: D.map((t) => /* @__PURE__ */ jsxs("button", {
112
+ onClick: () => C(t.symbol),
113
+ className: `_cppay-select-btn ${S === t.symbol ? "_cppay-selected" : ""}`,
114
+ children: [t.icon && /* @__PURE__ */ jsx("img", {
115
+ src: t.icon,
116
+ alt: t.symbol
117
+ }), /* @__PURE__ */ jsx("span", { children: t.symbol })]
118
+ }, t.symbol))
119
+ })]
120
+ }),
121
+ /* @__PURE__ */ jsx("div", {
122
+ className: "_cppay-section",
123
+ children: /* @__PURE__ */ jsx("div", {
124
+ className: "_cppay-price-box",
125
+ children: /* @__PURE__ */ jsxs("div", {
126
+ className: "_cppay-price-row",
127
+ children: [/* @__PURE__ */ jsx("span", {
128
+ className: "_cppay-price-label",
129
+ children: "支付金额"
130
+ }), /* @__PURE__ */ jsxs("div", {
131
+ className: "_cppay-price-amount",
132
+ children: [/* @__PURE__ */ jsxs("div", {
133
+ className: "_cppay-price-main",
134
+ children: [
135
+ k,
136
+ " ",
137
+ S
138
+ ]
139
+ }), /* @__PURE__ */ jsxs("div", {
140
+ className: "_cppay-price-sub",
141
+ children: ["≈ $", u]
142
+ })]
143
+ })]
144
+ })
145
+ })
146
+ }),
147
+ /* @__PURE__ */ jsx("div", {
148
+ className: "_cppay-section",
149
+ children: /* @__PURE__ */ jsx("button", {
150
+ onClick: j,
151
+ disabled: !b || !S || g,
152
+ className: "_cppay-btn _cppay-btn-primary",
153
+ children: g ? "处理中..." : "继续支付"
154
+ })
155
+ })
156
+ ] }) : w && /* @__PURE__ */ jsxs("div", { children: [
157
+ /* @__PURE__ */ jsx("div", {
158
+ className: "_cppay-qr-container",
159
+ children: /* @__PURE__ */ jsx("div", {
160
+ className: "_cppay-qr-placeholder",
161
+ children: /* @__PURE__ */ jsx("span", { children: "扫码支付" })
162
+ })
163
+ }),
164
+ /* @__PURE__ */ jsxs("div", {
165
+ className: "_cppay-section",
166
+ children: [/* @__PURE__ */ jsxs("div", {
167
+ className: "_cppay-info-box",
168
+ children: [/* @__PURE__ */ jsx("div", {
169
+ className: "_cppay-info-label",
170
+ children: "支付金额"
171
+ }), /* @__PURE__ */ jsxs("div", {
172
+ className: "_cppay-info-value",
173
+ children: [
174
+ w.paymentAmount,
175
+ " ",
176
+ S
177
+ ]
178
+ })]
179
+ }), /* @__PURE__ */ jsxs("div", {
180
+ className: "_cppay-info-box",
181
+ children: [/* @__PURE__ */ jsx("div", {
182
+ className: "_cppay-info-label",
183
+ children: "支付地址"
184
+ }), /* @__PURE__ */ jsxs("div", {
185
+ className: "_cppay-address-row",
186
+ children: [/* @__PURE__ */ jsx("code", { children: w.receiveAddress }), /* @__PURE__ */ jsx("button", {
187
+ onClick: N,
188
+ className: "_cppay-copy-btn",
189
+ title: "复制地址",
190
+ children: /* @__PURE__ */ jsx("svg", {
191
+ fill: "none",
192
+ stroke: "currentColor",
193
+ viewBox: "0 0 24 24",
194
+ children: /* @__PURE__ */ jsx("path", {
195
+ strokeLinecap: "round",
196
+ strokeLinejoin: "round",
197
+ strokeWidth: 2,
198
+ d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
199
+ })
200
+ })
201
+ })]
202
+ })]
203
+ })]
204
+ }),
205
+ /* @__PURE__ */ jsx("div", {
206
+ className: "_cppay-section",
207
+ children: /* @__PURE__ */ jsx("button", {
208
+ onClick: M,
209
+ disabled: g,
210
+ className: "_cppay-btn _cppay-btn-primary",
211
+ children: g ? "检查支付状态..." : "我已完成支付"
212
+ })
213
+ }),
214
+ /* @__PURE__ */ jsx("div", {
215
+ className: "_cppay-section",
216
+ children: /* @__PURE__ */ jsx("button", {
217
+ onClick: () => h("select"),
218
+ disabled: g,
219
+ className: "_cppay-btn _cppay-btn-secondary",
220
+ children: "更改支付方式"
221
+ })
222
+ })
223
+ ] })
224
+ })]
225
+ })
226
+ }) : null;
227
+ });
228
+ injectStyle(payment_dialog_default);
229
+ export { PaymentDialog_default as PaymentDialog };
package/dist/vue.cjs ADDED
@@ -0,0 +1 @@
1
+ const e=require(`./cppay-DeEVB4-L.cjs`),t=require(`./inject-style-Dz7JsQxo.cjs`),n=require(`./react.cjs`);let r=require(`vue`);var i={class:`_cppay-dialog`},a={class:`_cppay-header`},o={class:`_cppay-title`},s=[`disabled`],c={class:`_cppay-content`},l={key:0},u={class:`_cppay-section`},d={class:`_cppay-grid`},f=[`onClick`],p=[`src`,`alt`],m={class:`_cppay-section`},h={class:`_cppay-grid`},g=[`onClick`],_=[`src`,`alt`],v={class:`_cppay-section`},y={class:`_cppay-price-box`},b={class:`_cppay-price-row`},x={class:`_cppay-price-amount`},S={class:`_cppay-price-main`},C={class:`_cppay-price-sub`},w={class:`_cppay-section`},T=[`disabled`],E={key:1},D={class:`_cppay-section`},O={class:`_cppay-info-box`},k={class:`_cppay-info-value`},A={class:`_cppay-info-box`},j={class:`_cppay-address-row`},M={class:`_cppay-section`},ee=[`disabled`],N={class:`_cppay-section`},P=[`disabled`],F=(0,r.defineComponent)({__name:`PaymentDialog`,props:{modelValue:{type:Boolean},apiKey:{},orderId:{},amount:{}},emits:[`update:modelValue`,`success`,`error`],setup(t,{emit:n}){let F=t,I=n,L=new e.t(F.apiKey),R=(0,r.ref)(`select`),z=(0,r.ref)(!1),B=(0,r.ref)([]),V=(0,r.ref)(``),H=(0,r.ref)(``),U=(0,r.ref)(null),W=(0,r.computed)(()=>B.value.find(e=>e.chain===V.value)),G=(0,r.computed)(()=>W.value?.tokens||[]),K=(0,r.computed)(()=>G.value.find(e=>e.symbol===H.value)),q=(0,r.ref)(1),J=(0,r.computed)(()=>H.value?(parseFloat(F.amount)/q.value).toFixed(6):`0`),Y=()=>{I(`update:modelValue`,!1),setTimeout(()=>{R.value=`select`,U.value=null},300)},X=async()=>{try{z.value=!0,B.value=await L.getSupportedChains(),B.value.length>0&&(V.value=B.value[0].chain)}catch(e){I(`error`,e)}finally{z.value=!1}},Z=async()=>{if(!(!V.value||!H.value))try{z.value=!0;let e=await L.createPayment({paymentChain:V.value,paymentToken:H.value,orderId:F.orderId,amount:J.value});U.value={paymentId:e.paymentId,paymentAmount:e.paymentAmount,receiveAddress:K.value?.receiveAddresses[0]||``},R.value=`payment`}catch(e){I(`error`,e)}finally{z.value=!1}},Q=async()=>{if(U.value)try{z.value=!0,await L.checkPaymentStatus(U.value.paymentId),I(`success`,U.value.paymentId),Y()}catch(e){I(`error`,e)}finally{z.value=!1}},$=async()=>{U.value?.receiveAddress&&await navigator.clipboard.writeText(U.value.receiveAddress)};return(0,r.watch)(()=>F.modelValue,e=>{e&&B.value.length===0&&X()}),(0,r.watch)(V,()=>{G.value.length>0&&(H.value=G.value[0].symbol)}),(e,n)=>((0,r.openBlock)(),(0,r.createBlock)(r.Teleport,{to:`body`},[(0,r.createVNode)(r.Transition,{name:`_cppay-fade`},{default:(0,r.withCtx)(()=>[t.modelValue?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:0,class:`_cppay-overlay`,onClick:(0,r.withModifiers)(Y,[`self`])},[(0,r.createElementVNode)(`div`,i,[(0,r.createElementVNode)(`div`,a,[(0,r.createElementVNode)(`h2`,o,(0,r.toDisplayString)(R.value===`select`?`选择支付方式`:`完成支付`),1),(0,r.createElementVNode)(`button`,{onClick:Y,class:`_cppay-close-btn`,disabled:z.value},[...n[1]||=[(0,r.createElementVNode)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[(0,r.createElementVNode)(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M6 18L18 6M6 6l12 12`})],-1)]],8,s)]),(0,r.createElementVNode)(`div`,c,[R.value===`select`?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,l,[(0,r.createElementVNode)(`div`,u,[n[2]||=(0,r.createElementVNode)(`label`,{class:`_cppay-label`},`支付网络`,-1),(0,r.createElementVNode)(`div`,d,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(B.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e.chain,onClick:t=>V.value=e.chain,class:(0,r.normalizeClass)([`_cppay-select-btn`,V.value===e.chain?`_cppay-selected`:``])},[e.icon?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.chain},null,8,p)):(0,r.createCommentVNode)(``,!0),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.chain),1)],10,f))),128))])]),(0,r.createElementVNode)(`div`,m,[n[3]||=(0,r.createElementVNode)(`label`,{class:`_cppay-label`},`支付代币`,-1),(0,r.createElementVNode)(`div`,h,[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(G.value,e=>((0,r.openBlock)(),(0,r.createElementBlock)(`button`,{key:e.symbol,onClick:t=>H.value=e.symbol,class:(0,r.normalizeClass)([`_cppay-select-btn`,H.value===e.symbol?`_cppay-selected`:``])},[e.icon?((0,r.openBlock)(),(0,r.createElementBlock)(`img`,{key:0,src:e.icon,alt:e.symbol},null,8,_)):(0,r.createCommentVNode)(``,!0),(0,r.createElementVNode)(`span`,null,(0,r.toDisplayString)(e.symbol),1)],10,g))),128))])]),(0,r.createElementVNode)(`div`,v,[(0,r.createElementVNode)(`div`,y,[(0,r.createElementVNode)(`div`,b,[n[4]||=(0,r.createElementVNode)(`span`,{class:`_cppay-price-label`},`支付金额`,-1),(0,r.createElementVNode)(`div`,x,[(0,r.createElementVNode)(`div`,S,(0,r.toDisplayString)(J.value)+` `+(0,r.toDisplayString)(H.value),1),(0,r.createElementVNode)(`div`,C,`≈ $`+(0,r.toDisplayString)(t.amount),1)])])])]),(0,r.createElementVNode)(`div`,w,[(0,r.createElementVNode)(`button`,{onClick:Z,disabled:!V.value||!H.value||z.value,class:`_cppay-btn _cppay-btn-primary`},(0,r.toDisplayString)(z.value?`处理中...`:`继续支付`),9,T)])])):R.value===`payment`&&U.value?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,E,[n[8]||=(0,r.createElementVNode)(`div`,{class:`_cppay-qr-container`},[(0,r.createElementVNode)(`div`,{class:`_cppay-qr-placeholder`},[(0,r.createElementVNode)(`span`,null,`扫码支付`)])],-1),(0,r.createElementVNode)(`div`,D,[(0,r.createElementVNode)(`div`,O,[n[5]||=(0,r.createElementVNode)(`div`,{class:`_cppay-info-label`},`支付金额`,-1),(0,r.createElementVNode)(`div`,k,(0,r.toDisplayString)(U.value.paymentAmount)+` `+(0,r.toDisplayString)(H.value),1)]),(0,r.createElementVNode)(`div`,A,[n[7]||=(0,r.createElementVNode)(`div`,{class:`_cppay-info-label`},`支付地址`,-1),(0,r.createElementVNode)(`div`,j,[(0,r.createElementVNode)(`code`,null,(0,r.toDisplayString)(U.value.receiveAddress),1),(0,r.createElementVNode)(`button`,{onClick:$,class:`_cppay-copy-btn`,title:`复制地址`},[...n[6]||=[(0,r.createElementVNode)(`svg`,{fill:`none`,stroke:`currentColor`,viewBox:`0 0 24 24`},[(0,r.createElementVNode)(`path`,{"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z`})],-1)]])])])]),(0,r.createElementVNode)(`div`,M,[(0,r.createElementVNode)(`button`,{onClick:Q,disabled:z.value,class:`_cppay-btn _cppay-btn-primary`},(0,r.toDisplayString)(z.value?`检查支付状态...`:`我已完成支付`),9,ee)]),(0,r.createElementVNode)(`div`,N,[(0,r.createElementVNode)(`button`,{onClick:n[0]||=e=>R.value=`select`,disabled:z.value,class:`_cppay-btn _cppay-btn-secondary`},` 更改支付方式 `,8,P)])])):(0,r.createCommentVNode)(``,!0)])])])):(0,r.createCommentVNode)(``,!0)]),_:1})]))}}),I=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n},L=I(F,[[`__scopeId`,`data-v-de37a8de`]]);t.t(t.n),exports.PaymentDialog=L;
package/dist/vue.d.ts ADDED
@@ -0,0 +1,23 @@
1
+ import { ComponentOptionsMixin } from 'vue';
2
+ import { ComponentProvideOptions } from 'vue';
3
+ import { DefineComponent } from 'vue';
4
+ import { PublicProps } from 'vue';
5
+
6
+ export declare const PaymentDialog: DefineComponent<Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
7
+ error: (error: Error) => any;
8
+ "update:modelValue": (value: boolean) => any;
9
+ success: (paymentId: string) => any;
10
+ }, string, PublicProps, Readonly<Props> & Readonly<{
11
+ onError?: ((error: Error) => any) | undefined;
12
+ "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
13
+ onSuccess?: ((paymentId: string) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
15
+
16
+ declare interface Props {
17
+ modelValue: boolean;
18
+ apiKey: string;
19
+ orderId: string;
20
+ amount: string;
21
+ }
22
+
23
+ export { }
package/dist/vue.js ADDED
@@ -0,0 +1,143 @@
1
+ import { t as cppay_default } from "./cppay-CpR3ZBzO.js";
2
+ import { n as payment_dialog_default, t as injectStyle } from "./inject-style-qX_0AjjE.js";
3
+ import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderList, toDisplayString, watch, withCtx, withModifiers } from "vue";
4
+ var _hoisted_1 = { class: "_cppay-dialog" }, _hoisted_2 = { class: "_cppay-header" }, _hoisted_3 = { class: "_cppay-title" }, _hoisted_4 = ["disabled"], _hoisted_5 = { class: "_cppay-content" }, _hoisted_6 = { key: 0 }, _hoisted_7 = { class: "_cppay-section" }, _hoisted_8 = { class: "_cppay-grid" }, _hoisted_9 = ["onClick"], _hoisted_10 = ["src", "alt"], _hoisted_11 = { class: "_cppay-section" }, _hoisted_12 = { class: "_cppay-grid" }, _hoisted_13 = ["onClick"], _hoisted_14 = ["src", "alt"], _hoisted_15 = { class: "_cppay-section" }, _hoisted_16 = { class: "_cppay-price-box" }, _hoisted_17 = { class: "_cppay-price-row" }, _hoisted_18 = { class: "_cppay-price-amount" }, _hoisted_19 = { class: "_cppay-price-main" }, _hoisted_20 = { class: "_cppay-price-sub" }, _hoisted_21 = { class: "_cppay-section" }, _hoisted_22 = ["disabled"], _hoisted_23 = { key: 1 }, _hoisted_24 = { class: "_cppay-section" }, _hoisted_25 = { class: "_cppay-info-box" }, _hoisted_26 = { class: "_cppay-info-value" }, _hoisted_27 = { class: "_cppay-info-box" }, _hoisted_28 = { class: "_cppay-address-row" }, _hoisted_29 = { class: "_cppay-section" }, _hoisted_30 = ["disabled"], _hoisted_31 = { class: "_cppay-section" }, _hoisted_32 = ["disabled"], PaymentDialog_default = /* @__PURE__ */ ((r, M) => {
5
+ let N = r.__vccOpts || r;
6
+ for (let [r, P] of M) N[r] = P;
7
+ return N;
8
+ })(/* @__PURE__ */ defineComponent({
9
+ __name: "PaymentDialog",
10
+ props: {
11
+ modelValue: { type: Boolean },
12
+ apiKey: {},
13
+ orderId: {},
14
+ amount: {}
15
+ },
16
+ emits: [
17
+ "update:modelValue",
18
+ "success",
19
+ "error"
20
+ ],
21
+ setup(M, { emit: N }) {
22
+ let F = M, I = N, L = new cppay_default(F.apiKey), R = ref("select"), z = ref(!1), B = ref([]), V = ref(""), H = ref(""), U = ref(null), W = computed(() => B.value.find((r) => r.chain === V.value)), G = computed(() => W.value?.tokens || []), K = computed(() => G.value.find((r) => r.symbol === H.value)), q = ref(1), J = computed(() => H.value ? (parseFloat(F.amount) / q.value).toFixed(6) : "0"), Y = () => {
23
+ I("update:modelValue", !1), setTimeout(() => {
24
+ R.value = "select", U.value = null;
25
+ }, 300);
26
+ }, X = async () => {
27
+ try {
28
+ z.value = !0, B.value = await L.getSupportedChains(), B.value.length > 0 && (V.value = B.value[0].chain);
29
+ } catch (r) {
30
+ I("error", r);
31
+ } finally {
32
+ z.value = !1;
33
+ }
34
+ }, Z = async () => {
35
+ if (!(!V.value || !H.value)) try {
36
+ z.value = !0;
37
+ let r = await L.createPayment({
38
+ paymentChain: V.value,
39
+ paymentToken: H.value,
40
+ orderId: F.orderId,
41
+ amount: J.value
42
+ });
43
+ U.value = {
44
+ paymentId: r.paymentId,
45
+ paymentAmount: r.paymentAmount,
46
+ receiveAddress: K.value?.receiveAddresses[0] || ""
47
+ }, R.value = "payment";
48
+ } catch (r) {
49
+ I("error", r);
50
+ } finally {
51
+ z.value = !1;
52
+ }
53
+ }, Q = async () => {
54
+ if (U.value) try {
55
+ z.value = !0, await L.checkPaymentStatus(U.value.paymentId), I("success", U.value.paymentId), Y();
56
+ } catch (r) {
57
+ I("error", r);
58
+ } finally {
59
+ z.value = !1;
60
+ }
61
+ }, $ = async () => {
62
+ U.value?.receiveAddress && await navigator.clipboard.writeText(U.value.receiveAddress);
63
+ };
64
+ return watch(() => F.modelValue, (r) => {
65
+ r && B.value.length === 0 && X();
66
+ }), watch(V, () => {
67
+ G.value.length > 0 && (H.value = G.value[0].symbol);
68
+ }), (r, N) => (openBlock(), createBlock(Teleport, { to: "body" }, [createVNode(Transition, { name: "_cppay-fade" }, {
69
+ default: withCtx(() => [M.modelValue ? (openBlock(), createElementBlock("div", {
70
+ key: 0,
71
+ class: "_cppay-overlay",
72
+ onClick: withModifiers(Y, ["self"])
73
+ }, [createElementVNode("div", _hoisted_1, [createElementVNode("div", _hoisted_2, [createElementVNode("h2", _hoisted_3, toDisplayString(R.value === "select" ? "选择支付方式" : "完成支付"), 1), createElementVNode("button", {
74
+ onClick: Y,
75
+ class: "_cppay-close-btn",
76
+ disabled: z.value
77
+ }, [...N[1] ||= [createElementVNode("svg", {
78
+ fill: "none",
79
+ stroke: "currentColor",
80
+ viewBox: "0 0 24 24"
81
+ }, [createElementVNode("path", {
82
+ "stroke-linecap": "round",
83
+ "stroke-linejoin": "round",
84
+ "stroke-width": "2",
85
+ d: "M6 18L18 6M6 6l12 12"
86
+ })], -1)]], 8, _hoisted_4)]), createElementVNode("div", _hoisted_5, [R.value === "select" ? (openBlock(), createElementBlock("div", _hoisted_6, [
87
+ createElementVNode("div", _hoisted_7, [N[2] ||= createElementVNode("label", { class: "_cppay-label" }, "支付网络", -1), createElementVNode("div", _hoisted_8, [(openBlock(!0), createElementBlock(Fragment, null, renderList(B.value, (r) => (openBlock(), createElementBlock("button", {
88
+ key: r.chain,
89
+ onClick: (M) => V.value = r.chain,
90
+ class: normalizeClass(["_cppay-select-btn", V.value === r.chain ? "_cppay-selected" : ""])
91
+ }, [r.icon ? (openBlock(), createElementBlock("img", {
92
+ key: 0,
93
+ src: r.icon,
94
+ alt: r.chain
95
+ }, null, 8, _hoisted_10)) : createCommentVNode("", !0), createElementVNode("span", null, toDisplayString(r.chain), 1)], 10, _hoisted_9))), 128))])]),
96
+ createElementVNode("div", _hoisted_11, [N[3] ||= createElementVNode("label", { class: "_cppay-label" }, "支付代币", -1), createElementVNode("div", _hoisted_12, [(openBlock(!0), createElementBlock(Fragment, null, renderList(G.value, (r) => (openBlock(), createElementBlock("button", {
97
+ key: r.symbol,
98
+ onClick: (M) => H.value = r.symbol,
99
+ class: normalizeClass(["_cppay-select-btn", H.value === r.symbol ? "_cppay-selected" : ""])
100
+ }, [r.icon ? (openBlock(), createElementBlock("img", {
101
+ key: 0,
102
+ src: r.icon,
103
+ alt: r.symbol
104
+ }, null, 8, _hoisted_14)) : createCommentVNode("", !0), createElementVNode("span", null, toDisplayString(r.symbol), 1)], 10, _hoisted_13))), 128))])]),
105
+ createElementVNode("div", _hoisted_15, [createElementVNode("div", _hoisted_16, [createElementVNode("div", _hoisted_17, [N[4] ||= createElementVNode("span", { class: "_cppay-price-label" }, "支付金额", -1), createElementVNode("div", _hoisted_18, [createElementVNode("div", _hoisted_19, toDisplayString(J.value) + " " + toDisplayString(H.value), 1), createElementVNode("div", _hoisted_20, "≈ $" + toDisplayString(M.amount), 1)])])])]),
106
+ createElementVNode("div", _hoisted_21, [createElementVNode("button", {
107
+ onClick: Z,
108
+ disabled: !V.value || !H.value || z.value,
109
+ class: "_cppay-btn _cppay-btn-primary"
110
+ }, toDisplayString(z.value ? "处理中..." : "继续支付"), 9, _hoisted_22)])
111
+ ])) : R.value === "payment" && U.value ? (openBlock(), createElementBlock("div", _hoisted_23, [
112
+ N[8] ||= createElementVNode("div", { class: "_cppay-qr-container" }, [createElementVNode("div", { class: "_cppay-qr-placeholder" }, [createElementVNode("span", null, "扫码支付")])], -1),
113
+ createElementVNode("div", _hoisted_24, [createElementVNode("div", _hoisted_25, [N[5] ||= createElementVNode("div", { class: "_cppay-info-label" }, "支付金额", -1), createElementVNode("div", _hoisted_26, toDisplayString(U.value.paymentAmount) + " " + toDisplayString(H.value), 1)]), createElementVNode("div", _hoisted_27, [N[7] ||= createElementVNode("div", { class: "_cppay-info-label" }, "支付地址", -1), createElementVNode("div", _hoisted_28, [createElementVNode("code", null, toDisplayString(U.value.receiveAddress), 1), createElementVNode("button", {
114
+ onClick: $,
115
+ class: "_cppay-copy-btn",
116
+ title: "复制地址"
117
+ }, [...N[6] ||= [createElementVNode("svg", {
118
+ fill: "none",
119
+ stroke: "currentColor",
120
+ viewBox: "0 0 24 24"
121
+ }, [createElementVNode("path", {
122
+ "stroke-linecap": "round",
123
+ "stroke-linejoin": "round",
124
+ "stroke-width": "2",
125
+ d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
126
+ })], -1)]])])])]),
127
+ createElementVNode("div", _hoisted_29, [createElementVNode("button", {
128
+ onClick: Q,
129
+ disabled: z.value,
130
+ class: "_cppay-btn _cppay-btn-primary"
131
+ }, toDisplayString(z.value ? "检查支付状态..." : "我已完成支付"), 9, _hoisted_30)]),
132
+ createElementVNode("div", _hoisted_31, [createElementVNode("button", {
133
+ onClick: N[0] ||= (r) => R.value = "select",
134
+ disabled: z.value,
135
+ class: "_cppay-btn _cppay-btn-secondary"
136
+ }, " 更改支付方式 ", 8, _hoisted_32)])
137
+ ])) : createCommentVNode("", !0)])])])) : createCommentVNode("", !0)]),
138
+ _: 1
139
+ })]));
140
+ }
141
+ }), [["__scopeId", "data-v-de37a8de"]]);
142
+ injectStyle(payment_dialog_default);
143
+ export { PaymentDialog_default as PaymentDialog };
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "cppay-sdk",
3
- "version": "0.0.2-beta.1",
3
+ "version": "0.0.2-beta.10",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",
7
- "build": "vite build",
7
+ "build": "rm -rf dist && vite build",
8
8
  "test": "vitest",
9
9
  "preview": "vite preview"
10
10
  },
@@ -12,15 +12,55 @@
12
12
  "dist",
13
13
  "README.md"
14
14
  ],
15
- "main": "./dist/index.js",
15
+ "main": "./dist/index.cjs",
16
16
  "module": "./dist/index.js",
17
17
  "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/index.js",
21
+ "require": "./dist/index.cjs",
22
+ "types": "./dist/index.d.ts"
23
+ },
24
+ "./vue": {
25
+ "import": "./dist/vue.js",
26
+ "require": "./dist/vue.cjs",
27
+ "types": "./dist/vue.d.ts"
28
+ },
29
+ "./react": {
30
+ "import": "./dist/react.js",
31
+ "require": "./dist/react.cjs",
32
+ "types": "./dist/react.d.ts"
33
+ }
34
+ },
35
+ "peerDependencies": {
36
+ "vue": "^3.0.0",
37
+ "react": ">=16.8.0",
38
+ "react-dom": ">=16.8.0"
39
+ },
40
+ "peerDependenciesMeta": {
41
+ "vue": {
42
+ "optional": true
43
+ },
44
+ "react": {
45
+ "optional": true
46
+ },
47
+ "react-dom": {
48
+ "optional": true
49
+ }
50
+ },
18
51
  "devDependencies": {
19
52
  "@types/node": "^25.0.8",
53
+ "@types/react": "^19",
54
+ "@types/react-dom": "^19",
55
+ "@vitejs/plugin-react": "^5.1.2",
56
+ "@vitejs/plugin-vue": "^6.0.3",
57
+ "react": "^19.2.3",
58
+ "react-dom": "^19.2.3",
20
59
  "typescript": "~5.9.3",
21
60
  "vite": "npm:rolldown-vite@7.2.5",
22
61
  "vite-plugin-dts": "^4.5.4",
23
- "vitest": "^4.0.17"
62
+ "vitest": "^4.0.17",
63
+ "vue": "^3.5.26"
24
64
  },
25
65
  "resolutions": {
26
66
  "vite": "npm:rolldown-vite@7.2.5"