miniwallet 0.1.14 → 0.1.16

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.
Files changed (2) hide show
  1. package/dist/miniwallet.js +103 -79
  2. package/package.json +1 -1
@@ -70,18 +70,18 @@ var d = [
70
70
  //#endregion
71
71
  //#region src/MiniWalletProvider.tsx
72
72
  function m({ children: e, chains: n = [] }) {
73
- let [s, l] = a(""), [m, h] = a(""), [g, _] = a(0), [v, y] = a(""), [b] = a(null), [x, S] = a({}), C = i(() => n.length > 0 ? n : p, [n]), w = i(() => x[m] ?? null, [x, m]), T = i(() => d.find((e) => e.id === m), [m]), E = i(() => !!s, [s]), D = i(() => C.find((e) => e.id === g) || null, [C, g]), O = i(() => !D || !v || !D?.decimals ? "0" : Number(u(v, D.decimals)).toFixed(3), [v, D]), k = t(async (e) => {
74
- let { id: t } = e, n = x[t];
73
+ let [s, l] = a(""), [m, h] = a(""), [g, _] = a(0), [v, y] = a(""), [b, x] = a(null), [S, C] = a({}), w = i(() => n.length > 0 ? n : p, [n]), T = i(() => S[m] ?? null, [S, m]), E = i(() => d.find((e) => e.id === m), [m]), D = i(() => !!s, [s]), O = i(() => w.find((e) => e.id === g) || null, [w, g]), k = i(() => !O || !v || !O?.decimals ? "0" : Number(u(v, O.decimals)).toFixed(3), [v, O]), A = t(async (e) => {
74
+ let { id: t } = e, n = S[t];
75
75
  if (!n) {
76
76
  alert("请安装钱包");
77
77
  return;
78
78
  }
79
79
  try {
80
- console.log("provider: ", n);
81
- let e = await n.request({ method: "eth_requestAccounts" });
82
- console.log("accounts: ", e), console.log("provider.chainId: ", n.chainId);
83
- let r = parseInt(String(n.chainId ?? "0x0"), 16);
84
- l(e[0]), h(t), _(r), localStorage.setItem("miniwallet:lastWalletId", t);
80
+ x(e), console.log("provider: ", n);
81
+ let r = await n.request({ method: "eth_requestAccounts" });
82
+ console.log("accounts: ", r), console.log("provider.chainId: ", n.chainId);
83
+ let i = parseInt(String(n.chainId ?? "0x0"), 16);
84
+ l(r[0]), h(t), _(i), localStorage.setItem("miniwallet:lastWalletId", t);
85
85
  } catch (e) {
86
86
  console.log("error: ", e);
87
87
  let t = e, n = t?.code ?? "", r = t?.message ?? "";
@@ -90,14 +90,16 @@ function m({ children: e, chains: n = [] }) {
90
90
  return;
91
91
  }
92
92
  alert(`Connect failed${n && `\n${n}`}${r && `\n${r}`}`);
93
+ } finally {
94
+ x(null);
93
95
  }
94
- }, [x]), A = t(async () => {
96
+ }, [S]), j = t(async () => {
95
97
  try {
96
- if (!w || !m) {
98
+ if (!T || !m) {
97
99
  alert("请安装钱包");
98
100
  return;
99
101
  }
100
- m !== "okx" && await w.request({
102
+ m !== "okx" && await T.request({
101
103
  method: "wallet_revokePermissions",
102
104
  params: [{ eth_accounts: {} }]
103
105
  });
@@ -106,13 +108,13 @@ function m({ children: e, chains: n = [] }) {
106
108
  } finally {
107
109
  l(""), h(""), _(0), localStorage.removeItem("miniwallet:lastWalletId");
108
110
  }
109
- }, [w, m]), j = t(async (e) => {
110
- if (!w) {
111
+ }, [T, m]), M = t(async (e) => {
112
+ if (!T) {
111
113
  alert("钱包不存在");
112
114
  return;
113
115
  }
114
116
  try {
115
- await w.request({
117
+ await T.request({
116
118
  method: "wallet_switchEthereumChain",
117
119
  params: [{ chainId: `0x${e.id.toString(16)}` }]
118
120
  }), _(e.id);
@@ -121,10 +123,10 @@ function m({ children: e, chains: n = [] }) {
121
123
  let t = e, n = t?.code ?? "", r = t?.message ?? "";
122
124
  alert(`Switch failed${n && `\n${n}`}${r && `\n${r}`}`);
123
125
  }
124
- }, [w]), M = t(async () => {
126
+ }, [T]), N = t(async () => {
125
127
  try {
126
- if (!s || !w) return;
127
- let e = await w.request({
128
+ if (!s || !T) return;
129
+ let e = await T.request({
128
130
  method: "eth_getBalance",
129
131
  params: [s, "latest"]
130
132
  });
@@ -132,60 +134,60 @@ function m({ children: e, chains: n = [] }) {
132
134
  } catch (e) {
133
135
  console.error("getBalance error: ", e);
134
136
  }
135
- }, [s, w]), N = i(() => ({
137
+ }, [s, T]), P = i(() => ({
136
138
  account: s,
137
- balance: O,
138
- isConnected: E,
139
+ balance: k,
140
+ isConnected: D,
139
141
  connectingWallet: b,
140
- selectedChain: D,
141
- wallet: T,
142
- chains: C,
143
- connect: k,
144
- switchChain: j,
145
- disconnect: A
142
+ selectedChain: O,
143
+ wallet: E,
144
+ chains: w,
145
+ connect: A,
146
+ switchChain: M,
147
+ disconnect: j
146
148
  }), [
147
149
  s,
150
+ k,
151
+ D,
152
+ b,
148
153
  O,
149
154
  E,
150
- b,
151
- D,
152
- T,
153
- C,
154
- k,
155
- j,
156
- A
155
+ w,
156
+ A,
157
+ M,
158
+ j
157
159
  ]);
158
160
  return r(() => {
159
161
  let e = ((e) => {
160
162
  let { info: t, provider: n } = e.detail ?? {}, r = f[t?.rdns];
161
- !r || !n?.request || S((e) => e[r] === n ? e : {
163
+ !r || !n?.request || C((e) => e[r] === n ? e : {
162
164
  ...e,
163
165
  [r]: n
164
166
  });
165
167
  });
166
168
  return window.addEventListener("eip6963:announceProvider", e), window.dispatchEvent(new Event("eip6963:requestProvider")), () => {
167
- window.removeEventListener("eip6963:announceProvider", e), S({});
169
+ window.removeEventListener("eip6963:announceProvider", e), C({});
168
170
  };
169
171
  }, []), r(() => {
170
- g && M();
171
- }, [M, g]), r(() => {
172
- if (!E || !w?.on) return;
172
+ g && N();
173
+ }, [N, g]), r(() => {
174
+ if (!D || !T?.on) return;
173
175
  let e = (e) => {
174
176
  console.log("ChainChanged chainId: ", e), _(parseInt(e, 16));
175
177
  }, t = (e) => {
176
178
  console.log("AccountsChanged accounts: ", e), l(e[0] ?? "");
177
179
  };
178
- return console.log("Listen chainChanged and accountsChanged"), w.on("chainChanged", e), w.on("accountsChanged", t), () => {
179
- console.log("RemoveListener chainChanged and accountsChanged"), w.removeListener("chainChanged", e), w.removeListener("accountsChanged", t);
180
+ return console.log("Listen chainChanged and accountsChanged"), T.on("chainChanged", e), T.on("accountsChanged", t), () => {
181
+ console.log("RemoveListener chainChanged and accountsChanged"), T.removeListener("chainChanged", e), T.removeListener("accountsChanged", t);
180
182
  };
181
- }, [E, w]), r(() => {
183
+ }, [D, T]), r(() => {
182
184
  if (!s) return;
183
- let e = setInterval(M, 1e4);
185
+ let e = setInterval(N, 1e4);
184
186
  return () => clearInterval(e);
185
- }, [s, M]), r(() => {
187
+ }, [s, N]), r(() => {
186
188
  let e = localStorage.getItem("miniwallet:lastWalletId");
187
189
  if (!e) return;
188
- let t = x[e];
190
+ let t = S[e];
189
191
  if (!t) return;
190
192
  let n = !1;
191
193
  return (async () => {
@@ -200,8 +202,8 @@ function m({ children: e, chains: n = [] }) {
200
202
  })(), () => {
201
203
  n = !0;
202
204
  };
203
- }, [x]), /* @__PURE__ */ o(c.Provider, {
204
- value: N,
205
+ }, [S]), /* @__PURE__ */ o(c.Provider, {
206
+ value: P,
205
207
  children: e
206
208
  });
207
209
  }
@@ -218,29 +220,29 @@ var g = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOC
218
220
  //#endregion
219
221
  //#region src/MiniWalletButton.tsx
220
222
  function _({ label: e = "Connect Wallet" }) {
221
- let { account: n, balance: c, isConnected: l, selectedChain: u, wallet: f, switchChain: p, chains: m, connect: _, disconnect: v } = h(), [y, b] = a(!1), [x, S] = a(!1), [C, w] = a("复制地址"), T = i(() => n ? `${n.slice(0, 6)}...${n.slice(-4)}` : "", [n]), E = t(() => {
222
- b(!0);
223
- }, []), D = t(() => {
224
- b(!1);
225
- }, []), O = t(async () => {
223
+ let { account: n, balance: c, isConnected: l, connectingWallet: u, selectedChain: f, wallet: p, switchChain: m, chains: _, connect: v, disconnect: y } = h(), [b, x] = a(!1), [S, C] = a(!1), [w, T] = a(!1), [E, D] = a("复制地址"), O = i(() => n ? `${n.slice(0, 6)}...${n.slice(-4)}` : "", [n]), k = t(() => {
224
+ x(!0);
225
+ }, []), A = t(() => {
226
+ x(!1);
227
+ }, []), j = t(async () => {
226
228
  try {
227
- await navigator.clipboard.writeText(n), w("已复制!"), setTimeout(() => {
228
- w("复制地址");
229
+ await navigator.clipboard.writeText(n), D("已复制!"), setTimeout(() => {
230
+ D("复制地址");
229
231
  }, 1e3);
230
232
  } catch (e) {
231
233
  console.error("copy", e);
232
234
  }
233
235
  }, [n]);
234
236
  return r(() => {
235
- l && b(!1);
237
+ l && x(!1);
236
238
  }, [l]), l ? /* @__PURE__ */ s("section", {
237
239
  className: "inline-flex items-center justify-center text-center",
238
240
  children: [
239
241
  /* @__PURE__ */ o("select", {
240
- value: u?.id,
241
- onChange: (e) => p(m.find((t) => t.id === Number(e.target.value))),
242
+ value: f?.id,
243
+ onChange: (e) => m(_.find((t) => t.id === Number(e.target.value))),
242
244
  className: "bg-transparent1 mr-4 cursor-pointer rounded-sm border-none p-1 text-gray-600 outline-none hover:bg-gray-100",
243
- children: m.map((e) => /* @__PURE__ */ o("option", {
245
+ children: _.map((e) => /* @__PURE__ */ o("option", {
244
246
  value: e.id,
245
247
  children: e.name
246
248
  }, e.id))
@@ -249,18 +251,18 @@ function _({ label: e = "Connect Wallet" }) {
249
251
  className: "flex items-center justify-center rounded-2xl bg-white pr-3 shadow-lg inset-ring-1 shadow-gray-200 inset-ring-gray-100",
250
252
  children: [/* @__PURE__ */ s("div", {
251
253
  onClick: () => {
252
- S(!0);
254
+ T(!0);
253
255
  },
254
256
  className: "flex cursor-pointer items-center justify-center space-x-2 rounded-l-2xl py-2.5 pr-1 pl-3 hover:bg-gray-50",
255
257
  children: [
256
- f && /* @__PURE__ */ o("img", {
257
- src: f.icon,
258
- alt: f.name,
258
+ p && /* @__PURE__ */ o("img", {
259
+ src: p.icon,
260
+ alt: p.name,
259
261
  className: "h-6 w-6"
260
262
  }),
261
263
  /* @__PURE__ */ o("div", {
262
264
  className: "mr-1",
263
- children: T
265
+ children: O
264
266
  }),
265
267
  /* @__PURE__ */ s("span", {
266
268
  className: "text-sm text-gray-400",
@@ -268,14 +270,14 @@ function _({ label: e = "Connect Wallet" }) {
268
270
  "(",
269
271
  c,
270
272
  " ",
271
- u?.symbol ?? "",
273
+ f?.symbol ?? "",
272
274
  ")"
273
275
  ]
274
276
  })
275
277
  ]
276
278
  }), /* @__PURE__ */ o("button", {
277
279
  className: "ml-1 h-6 w-6 cursor-pointer rounded-full",
278
- onClick: v,
280
+ onClick: y,
279
281
  children: /* @__PURE__ */ o("img", {
280
282
  src: g,
281
283
  alt: "disconnect",
@@ -283,7 +285,7 @@ function _({ label: e = "Connect Wallet" }) {
283
285
  })
284
286
  })]
285
287
  }),
286
- x && /* @__PURE__ */ o("div", {
288
+ w && /* @__PURE__ */ o("div", {
287
289
  className: "z-index-10 fixed top-0 right-0 bottom-0 left-0 bg-[rgba(0,0,0,0.5)]",
288
290
  children: /* @__PURE__ */ s("div", {
289
291
  className: "absolute top-1/2 left-1/2 flex h-auto w-[380px] -translate-x-1/2 -translate-y-1/2 flex-col items-center gap-3 rounded-3xl bg-white p-10 pt-5 text-center",
@@ -293,7 +295,7 @@ function _({ label: e = "Connect Wallet" }) {
293
295
  children: /* @__PURE__ */ o("button", {
294
296
  className: "mr-[-20px] cursor-pointer rounded-full p-1 hover:bg-gray-100",
295
297
  onClick: () => {
296
- S(!1);
298
+ T(!1);
297
299
  },
298
300
  children: /* @__PURE__ */ s("svg", {
299
301
  xmlns: "http://www.w3.org/2000/svg",
@@ -306,21 +308,21 @@ function _({ label: e = "Connect Wallet" }) {
306
308
  })
307
309
  })
308
310
  }),
309
- f && /* @__PURE__ */ o("img", {
310
- src: f.icon,
311
- alt: f.name,
311
+ p && /* @__PURE__ */ o("img", {
312
+ src: p.icon,
313
+ alt: p.name,
312
314
  className: "h-16 w-16"
313
315
  }),
314
- /* @__PURE__ */ o("p", { children: T }),
316
+ /* @__PURE__ */ o("p", { children: O }),
315
317
  /* @__PURE__ */ s("div", {
316
318
  className: "mt-2 w-full space-x-10",
317
319
  children: [/* @__PURE__ */ o("button", {
318
- onClick: O,
320
+ onClick: j,
319
321
  className: "w-[112px] cursor-pointer rounded-xl bg-gray-700 py-2 text-white shadow-md shadow-gray-500/50 outline-none",
320
- children: C
322
+ children: E
321
323
  }), /* @__PURE__ */ o("button", {
322
324
  type: "button",
323
- onClick: v,
325
+ onClick: y,
324
326
  className: "w-[112px] cursor-pointer rounded-xl bg-red-400 py-2 text-white shadow-md shadow-red-500/50 outline-none",
325
327
  children: "断开连接"
326
328
  })]
@@ -331,10 +333,10 @@ function _({ label: e = "Connect Wallet" }) {
331
333
  ]
332
334
  }) : /* @__PURE__ */ s("div", { children: [/* @__PURE__ */ o("button", {
333
335
  type: "button",
334
- onClick: E,
336
+ onClick: k,
335
337
  className: "cursor-pointer rounded-xl bg-blue-500 px-4 py-2 text-white shadow-lg shadow-blue-500/50",
336
338
  children: e
337
- }), y && /* @__PURE__ */ o("div", {
339
+ }), b && /* @__PURE__ */ o("div", {
338
340
  className: "z-index-10 fixed top-0 right-0 bottom-0 left-0 bg-[rgba(0,0,0,0.5)]",
339
341
  children: /* @__PURE__ */ s("div", {
340
342
  className: "absolute top-1/2 left-1/2 flex h-auto w-[380px] -translate-x-1/2 -translate-y-1/2 flex-col gap-3 rounded-3xl bg-white p-6",
@@ -347,7 +349,9 @@ function _({ label: e = "Connect Wallet" }) {
347
349
  type: "button",
348
350
  "aria-label": "Close",
349
351
  className: "cursor-pointer rounded-full p-1 hover:bg-gray-100",
350
- onClick: D,
352
+ onClick: () => {
353
+ C(!1), A();
354
+ },
351
355
  children: /* @__PURE__ */ s("svg", {
352
356
  xmlns: "http://www.w3.org/2000/svg",
353
357
  viewBox: "0 0 24 24",
@@ -358,11 +362,31 @@ function _({ label: e = "Connect Wallet" }) {
358
362
  children: [/* @__PURE__ */ o("path", { d: "M18 6 6 18" }), /* @__PURE__ */ o("path", { d: "m6 6 12 12" })]
359
363
  })
360
364
  })]
361
- }), /* @__PURE__ */ o("div", {
365
+ }), /* @__PURE__ */ s("div", {
362
366
  className: "relative w-full space-y-4",
363
- children: d.map((e) => /* @__PURE__ */ s("button", {
367
+ children: [S && u && /* @__PURE__ */ s("div", {
368
+ className: "absolute inset-0 mb-0 flex flex-col items-center justify-center rounded-xl bg-[rgba(255,255,255,0.9)] text-black",
369
+ children: [
370
+ /* @__PURE__ */ s("div", { children: [
371
+ "正在连接",
372
+ u.name,
373
+ "..."
374
+ ] }),
375
+ /* @__PURE__ */ o("div", {
376
+ className: "my-1.5 text-xs",
377
+ children: "请在扩展中确认连接"
378
+ }),
379
+ /* @__PURE__ */ o("img", {
380
+ src: "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1783646544006'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='78324'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='32'%20height='32'%3e%3cpath%20d='M512%20907c-24.852%200-45-20.148-45-45s20.148-45%2045-45c168.446%200%20305-136.554%20305-305S680.446%20207%20512%20207%20207%20343.554%20207%20512c0%2024.852-20.148%2045-45%2045S117%20536.852%20117%20512c0-218.152%20176.848-395%20395-395S907%20293.848%20907%20512%20730.152%20907%20512%20907z'%20fill='%23444444'%20p-id='78325'%3e%3c/path%3e%3c/svg%3e",
381
+ alt: "spin",
382
+ className: "h-8 w-8 animate-[spin_2s_linear_infinite]"
383
+ })
384
+ ]
385
+ }), d.map((e) => /* @__PURE__ */ s("button", {
364
386
  type: "button",
365
- onClick: () => _(e),
387
+ onClick: () => {
388
+ C(!0), v(e);
389
+ },
366
390
  className: "flex w-full cursor-pointer items-center gap-2 rounded-xl border border-gray-300 px-4 py-2 hover:bg-gray-100",
367
391
  children: [/* @__PURE__ */ o("img", {
368
392
  src: e.icon,
@@ -379,7 +403,7 @@ function _({ label: e = "Connect Wallet" }) {
379
403
  ]
380
404
  })]
381
405
  })]
382
- }, e.id))
406
+ }, e.id))]
383
407
  })]
384
408
  })
385
409
  })] });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "miniwallet",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "React wallet connect button with multi-wallet support via EIP-6963",
5
5
  "type": "module",
6
6
  "main": "./dist/miniwallet.js",