@matchain/matchid-sdk-react 0.1.46 → 0.1.48-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icon/index.d.mts +4 -2
- package/dist/assets/icon/index.d.ts +4 -2
- package/dist/assets/icon/index.js +27 -0
- package/dist/assets/icon/index.js.map +1 -1
- package/dist/assets/icon/index.mjs +3 -1
- package/dist/{chunk-DPXMCLYK.mjs → chunk-A5D3NKTK.mjs} +29 -3
- package/dist/chunk-A5D3NKTK.mjs.map +1 -0
- package/dist/chunk-FFTS42UP.mjs +112 -0
- package/dist/chunk-FFTS42UP.mjs.map +1 -0
- package/dist/chunk-HBOS3RBL.mjs +19 -0
- package/dist/chunk-HBOS3RBL.mjs.map +1 -0
- package/dist/{chunk-TOUC33US.mjs → chunk-OBHKOOCD.mjs} +142 -4618
- package/dist/chunk-OBHKOOCD.mjs.map +1 -0
- package/dist/chunk-OXTHXA3J.mjs +185 -0
- package/dist/chunk-OXTHXA3J.mjs.map +1 -0
- package/dist/{chunk-SQIJR7RA.mjs → chunk-UA6XHZHX.mjs} +2 -14
- package/dist/chunk-UA6XHZHX.mjs.map +1 -0
- package/dist/chunk-YRJZXWBW.mjs +4248 -0
- package/dist/chunk-YRJZXWBW.mjs.map +1 -0
- package/dist/components/index.d.mts +3 -3
- package/dist/components/index.d.ts +3 -3
- package/dist/components/index.js +387 -812
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +12 -12
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +364 -239
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +12 -6
- package/dist/hooks/index.d.mts +2 -2
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +398 -498
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +6 -4
- package/dist/index-BLcEwhPI.d.mts +122 -0
- package/dist/{index-DVlCrOjr.d.ts → index-C0QPml_k.d.ts} +5 -33
- package/dist/{index-B0VpxAI2.d.mts → index-CQToKVAQ.d.mts} +5 -33
- package/dist/index-CbJKurxU.d.ts +26 -0
- package/dist/{index-DR2JTaoi.d.mts → index-CiRN11YD.d.mts} +10 -2
- package/dist/{index-CFWR1boZ.d.ts → index-CiwqFA66.d.ts} +2 -24
- package/dist/{index-CTSg5TRS.d.ts → index-D05U8UxY.d.ts} +10 -2
- package/dist/index-D9iJVzyV.d.ts +122 -0
- package/dist/index-DcixbsMC.d.mts +26 -0
- package/dist/index-DuO7iVGF.d.ts +57 -0
- package/dist/{index-D2pNP7Bz.d.mts → index-fHiAdQp6.d.mts} +2 -24
- package/dist/index-raxyfmqr.d.mts +57 -0
- package/dist/index.css +106 -1
- package/dist/index.d.mts +8 -6
- package/dist/index.d.ts +8 -6
- package/dist/index.js +2346 -2449
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -6
- package/dist/types/index.d.mts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.mjs +2 -1
- package/dist/{types-CRumDe2M.d.mts → types-yhXvLAPt.d.mts} +116 -1
- package/dist/{types-CRumDe2M.d.ts → types-yhXvLAPt.d.ts} +116 -1
- package/dist/ui/index.d.mts +6 -0
- package/dist/ui/index.d.ts +6 -0
- package/dist/ui/index.js +724 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/index.mjs +35 -0
- package/dist/ui/index.mjs.map +1 -0
- package/example/src/App.tsx +7 -0
- package/example/src/config/chains/matchMain.ts +2 -3
- package/example/src/pages/UI/components/AlphaAvatar.tsx +11 -0
- package/example/src/pages/UI/components/Radio.tsx +15 -0
- package/example/src/pages/UI/components/Switch.tsx +13 -0
- package/example/src/pages/UI/index.tsx +11 -0
- package/example/src/pages/User/components/BindListModal.tsx +1 -1
- package/example/src/pages/User/components/PohListModal.tsx +1 -1
- package/example/src/pages/User/index.tsx +1 -13
- package/example/src/pages/Wallet/components/AssetListModal.tsx +15 -0
- package/example/src/pages/Wallet/components/ChainListModal.tsx +11 -0
- package/example/src/pages/Wallet/components/ImportTokenListModal.tsx +15 -0
- package/example/src/pages/Wallet/components/WalletChainListModal.tsx +11 -0
- package/example/src/pages/{Wallet.tsx → Wallet/index.tsx} +31 -1
- package/package.json +5 -1
- package/dist/chunk-A3XSTHEE.mjs +0 -93
- package/dist/chunk-A3XSTHEE.mjs.map +0 -1
- package/dist/chunk-DPXMCLYK.mjs.map +0 -1
- package/dist/chunk-SQIJR7RA.mjs.map +0 -1
- package/dist/chunk-TOUC33US.mjs.map +0 -1
- package/dist/index-CWYElOA2.d.mts +0 -65
- package/dist/index-CoTirILQ.d.ts +0 -65
- /package/example/src/{pages/User/components → components}/QueryDisplay.tsx +0 -0
package/dist/components/index.js
CHANGED
|
@@ -42,7 +42,6 @@ __export(components_exports, {
|
|
|
42
42
|
Modal: () => Modal,
|
|
43
43
|
ModalWithHeader: () => ModalWithHeader,
|
|
44
44
|
Overlay: () => Overlay,
|
|
45
|
-
PasswordModal: () => PasswordModal,
|
|
46
45
|
Popover: () => Popover,
|
|
47
46
|
SOLModal: () => SOLModal,
|
|
48
47
|
TONModal: () => TONModal,
|
|
@@ -53,7 +52,7 @@ __export(components_exports, {
|
|
|
53
52
|
module.exports = __toCommonJS(components_exports);
|
|
54
53
|
|
|
55
54
|
// src/components/EmailModal/index.tsx
|
|
56
|
-
var
|
|
55
|
+
var import_react15 = require("react");
|
|
57
56
|
|
|
58
57
|
// src/assets/icon/ArrowLeftIcon.tsx
|
|
59
58
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -355,21 +354,6 @@ function CheckRoundIcon({
|
|
|
355
354
|
|
|
356
355
|
// src/assets/icon/PasswordRoundIcon.tsx
|
|
357
356
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
358
|
-
function PasswordRoundIcon() {
|
|
359
|
-
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("svg", { width: "40", height: "40", viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
360
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("rect", { x: "0.5", y: "0.5", width: "39", height: "39", rx: "7.5", fill: "white" }),
|
|
361
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("rect", { x: "0.5", y: "0.5", width: "39", height: "39", rx: "7.5", stroke: "black" }),
|
|
362
|
-
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
363
|
-
"path",
|
|
364
|
-
{
|
|
365
|
-
fillRule: "evenodd",
|
|
366
|
-
clipRule: "evenodd",
|
|
367
|
-
d: "M19.7673 16.1137C19.962 13.9479 21.7831 12.25 24 12.25C26.3472 12.25 28.25 14.1528 28.25 16.5C28.25 18.8472 26.3472 20.75 24 20.75C23.488 20.75 22.9987 20.6598 22.5461 20.495C21.9175 20.2662 21.1115 20.3279 20.5486 20.8908L19.2626 22.1768C19.2157 22.2237 19.1521 22.25 19.0858 22.25H18C17.3096 22.25 16.75 22.8096 16.75 23.5V24.25H15.5C14.8096 24.25 14.25 24.8096 14.25 25.5V26.5C14.25 26.6381 14.1381 26.75 14 26.75H12C11.8619 26.75 11.75 26.6381 11.75 26.5V23.9538C11.75 23.8817 11.7811 23.8131 11.8354 23.7656L19.1524 17.3632C19.5404 17.0238 19.7275 16.556 19.7673 16.1137ZM24 10.75C20.9997 10.75 18.5369 13.0473 18.2733 15.9794C18.2614 16.1115 18.2107 16.1941 18.1646 16.2344L10.8476 22.6368C10.4678 22.9691 10.25 23.4491 10.25 23.9538V26.5C10.25 27.4665 11.0335 28.25 12 28.25H14C14.9665 28.25 15.75 27.4665 15.75 26.5V25.75H17C17.6904 25.75 18.25 25.1904 18.25 24.5V23.75H19.0858C19.5499 23.75 19.995 23.5656 20.3232 23.2374L21.6092 21.9514C21.6738 21.8868 21.8277 21.8298 22.033 21.9045C22.6476 22.1283 23.3104 22.25 24 22.25C27.1756 22.25 29.75 19.6756 29.75 16.5C29.75 13.3244 27.1756 10.75 24 10.75ZM25 16.5C25.5523 16.5 26 16.0523 26 15.5C26 14.9477 25.5523 14.5 25 14.5C24.4477 14.5 24 14.9477 24 15.5C24 16.0523 24.4477 16.5 25 16.5Z",
|
|
368
|
-
fill: "black"
|
|
369
|
-
}
|
|
370
|
-
)
|
|
371
|
-
] });
|
|
372
|
-
}
|
|
373
357
|
|
|
374
358
|
// src/assets/icon/CloseEyeIcon.tsx
|
|
375
359
|
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
@@ -1109,6 +1093,9 @@ function TonLightIcon2({ size = 40, ...props }) {
|
|
|
1109
1093
|
);
|
|
1110
1094
|
}
|
|
1111
1095
|
|
|
1096
|
+
// src/assets/icon/ErrorRoundIcon.tsx
|
|
1097
|
+
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
1098
|
+
|
|
1112
1099
|
// src/hooks/useLayout.tsx
|
|
1113
1100
|
var import_react = require("react");
|
|
1114
1101
|
function useDownMd() {
|
|
@@ -1125,9 +1112,9 @@ function useDownMd() {
|
|
|
1125
1112
|
return isBelowMd;
|
|
1126
1113
|
}
|
|
1127
1114
|
|
|
1128
|
-
// src/
|
|
1115
|
+
// src/ui/Overlay/index.tsx
|
|
1129
1116
|
var import_react2 = require("react");
|
|
1130
|
-
var
|
|
1117
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
1131
1118
|
function Overlay({
|
|
1132
1119
|
isOpen = false,
|
|
1133
1120
|
children,
|
|
@@ -1143,7 +1130,7 @@ function Overlay({
|
|
|
1143
1130
|
document.body.style.overflow = "";
|
|
1144
1131
|
};
|
|
1145
1132
|
}, [isOpen]);
|
|
1146
|
-
return isOpen ? /* @__PURE__ */ (0,
|
|
1133
|
+
return isOpen ? /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
|
|
1147
1134
|
"div",
|
|
1148
1135
|
{
|
|
1149
1136
|
className: "matchid-overlay",
|
|
@@ -1152,11 +1139,11 @@ function Overlay({
|
|
|
1152
1139
|
},
|
|
1153
1140
|
children
|
|
1154
1141
|
}
|
|
1155
|
-
) : /* @__PURE__ */ (0,
|
|
1142
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(import_jsx_runtime45.Fragment, {});
|
|
1156
1143
|
}
|
|
1157
1144
|
|
|
1158
|
-
// src/
|
|
1159
|
-
var
|
|
1145
|
+
// src/ui/Modal/index.tsx
|
|
1146
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
1160
1147
|
function Modal({
|
|
1161
1148
|
children,
|
|
1162
1149
|
isOpen,
|
|
@@ -1164,10 +1151,10 @@ function Modal({
|
|
|
1164
1151
|
zIndex = 100,
|
|
1165
1152
|
className = ""
|
|
1166
1153
|
}) {
|
|
1167
|
-
return /* @__PURE__ */ (0,
|
|
1154
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(Overlay, { isOpen, zIndex, children: /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: `matchid-modal ${className}`, style: {
|
|
1168
1155
|
width
|
|
1169
1156
|
}, children: [
|
|
1170
|
-
/* @__PURE__ */ (0,
|
|
1157
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1171
1158
|
children
|
|
1172
1159
|
] }) });
|
|
1173
1160
|
}
|
|
@@ -1181,13 +1168,13 @@ function ModalWithHeader({
|
|
|
1181
1168
|
...props
|
|
1182
1169
|
}) {
|
|
1183
1170
|
const isDownMd = useDownMd();
|
|
1184
|
-
return /* @__PURE__ */ (0,
|
|
1185
|
-
/* @__PURE__ */ (0,
|
|
1186
|
-
/* @__PURE__ */ (0,
|
|
1187
|
-
onBack && /* @__PURE__ */ (0,
|
|
1188
|
-
/* @__PURE__ */ (0,
|
|
1171
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(Modal, { ...props, children: [
|
|
1172
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: `matchid-modal-header ${showBorder ? "matchid-modal-header-border" : ""}`, children: [
|
|
1173
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: "matchid-modal-header-content", children: [
|
|
1174
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(ArrowLeftIcon, { height: isDownMd ? 20 : 25, width: isDownMd ? 20 : 24, className: "matchid-modal-header-back", onClick: onBack }),
|
|
1175
|
+
/* @__PURE__ */ (0, import_jsx_runtime46.jsx)("span", { className: "matchid-modal-header-title", children: title })
|
|
1189
1176
|
] }),
|
|
1190
|
-
onClose && /* @__PURE__ */ (0,
|
|
1177
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30, className: "matchid-modal-header-close", onClick: onClose })
|
|
1191
1178
|
] }),
|
|
1192
1179
|
children
|
|
1193
1180
|
] });
|
|
@@ -1221,8 +1208,8 @@ function getAppClientId() {
|
|
|
1221
1208
|
return "react-sdk-" + getVersion();
|
|
1222
1209
|
}
|
|
1223
1210
|
|
|
1224
|
-
// src/
|
|
1225
|
-
var
|
|
1211
|
+
// src/ui/Button/index.tsx
|
|
1212
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
1226
1213
|
function Button({
|
|
1227
1214
|
size = "df",
|
|
1228
1215
|
disabled = false,
|
|
@@ -1241,7 +1228,7 @@ function Button({
|
|
|
1241
1228
|
onClick && onClick();
|
|
1242
1229
|
}
|
|
1243
1230
|
};
|
|
1244
|
-
return /* @__PURE__ */ (0,
|
|
1231
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
1245
1232
|
"button",
|
|
1246
1233
|
{
|
|
1247
1234
|
type,
|
|
@@ -1251,14 +1238,14 @@ function Button({
|
|
|
1251
1238
|
...style
|
|
1252
1239
|
},
|
|
1253
1240
|
onClick: onAction,
|
|
1254
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
1241
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(LoadingIcon_default, { className: "matchid-btn-loading-icon", color: "var(--matchid-btn-loading-color)" }) : children
|
|
1255
1242
|
}
|
|
1256
1243
|
);
|
|
1257
1244
|
}
|
|
1258
1245
|
|
|
1259
|
-
// src/
|
|
1246
|
+
// src/ui/Input/index.tsx
|
|
1260
1247
|
var import_react3 = require("react");
|
|
1261
|
-
var
|
|
1248
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
1262
1249
|
function Input({
|
|
1263
1250
|
onChange,
|
|
1264
1251
|
type,
|
|
@@ -1268,17 +1255,17 @@ function Input({
|
|
|
1268
1255
|
}) {
|
|
1269
1256
|
const [inputType, setInputType] = (0, import_react3.useState)(type);
|
|
1270
1257
|
const isDownMd = useDownMd();
|
|
1271
|
-
return /* @__PURE__ */ (0,
|
|
1258
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)(
|
|
1272
1259
|
"div",
|
|
1273
1260
|
{
|
|
1274
1261
|
className: `matchid-input-box ${props.value && props.value.length > 0 ? "matchid-input-has-content" : ""} ${className}`,
|
|
1275
1262
|
children: [
|
|
1276
|
-
/* @__PURE__ */ (0,
|
|
1277
|
-
props.value && props.value.length > 0 && /* @__PURE__ */ (0,
|
|
1263
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsx)("input", { type: inputType, onChange, ...props, className: "matchid-input-field" }),
|
|
1264
|
+
props.value && props.value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "matchid-input-delete-icon", onClick: (e) => {
|
|
1278
1265
|
if (onChange) {
|
|
1279
1266
|
onChange({ target: { value: "" } });
|
|
1280
1267
|
}
|
|
1281
|
-
}, children: /* @__PURE__ */ (0,
|
|
1268
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(
|
|
1282
1269
|
DeleteRoundIcon,
|
|
1283
1270
|
{
|
|
1284
1271
|
height: isDownMd ? 16 : 21,
|
|
@@ -1286,17 +1273,17 @@ function Input({
|
|
|
1286
1273
|
color: "var(--matchid-input-delete-icon-color)"
|
|
1287
1274
|
}
|
|
1288
1275
|
) }),
|
|
1289
|
-
type === "password" && /* @__PURE__ */ (0,
|
|
1276
|
+
type === "password" && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "matchid-input-eye-icon", onClick: () => {
|
|
1290
1277
|
setInputType(inputType === "password" ? "text" : "password");
|
|
1291
|
-
}, children: inputType === "password" ? /* @__PURE__ */ (0,
|
|
1278
|
+
}, children: inputType === "password" ? /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(CloseEyeIcon, { size: isDownMd ? 16 : 20 }) : /* @__PURE__ */ (0, import_jsx_runtime48.jsx)(OpenEyeIcon, { size: isDownMd ? 16 : 20 }) }),
|
|
1292
1279
|
after
|
|
1293
1280
|
]
|
|
1294
1281
|
}
|
|
1295
1282
|
);
|
|
1296
1283
|
}
|
|
1297
1284
|
|
|
1298
|
-
// src/
|
|
1299
|
-
var
|
|
1285
|
+
// src/ui/Field/index.tsx
|
|
1286
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
1300
1287
|
function Field({
|
|
1301
1288
|
label,
|
|
1302
1289
|
children,
|
|
@@ -1304,19 +1291,19 @@ function Field({
|
|
|
1304
1291
|
required,
|
|
1305
1292
|
className = ""
|
|
1306
1293
|
}) {
|
|
1307
|
-
return /* @__PURE__ */ (0,
|
|
1308
|
-
/* @__PURE__ */ (0,
|
|
1309
|
-
required && /* @__PURE__ */ (0,
|
|
1294
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: `matchid-field-box ${className}`, children: [
|
|
1295
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "matchid-field-label", children: [
|
|
1296
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "matchid-field-required", children: "*" }),
|
|
1310
1297
|
label
|
|
1311
1298
|
] }),
|
|
1312
1299
|
children,
|
|
1313
|
-
error && /* @__PURE__ */ (0,
|
|
1300
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "matchid-field-error", children: error })
|
|
1314
1301
|
] });
|
|
1315
1302
|
}
|
|
1316
1303
|
|
|
1317
1304
|
// src/components/EmailModal/StepEmail.tsx
|
|
1318
1305
|
var import_react_intl = require("react-intl");
|
|
1319
|
-
var
|
|
1306
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
1320
1307
|
function StepEmail(props) {
|
|
1321
1308
|
const intl = (0, import_react_intl.useIntl)();
|
|
1322
1309
|
const [emailVal, setEmailVal] = (0, import_react4.useState)("");
|
|
@@ -1331,10 +1318,10 @@ function StepEmail(props) {
|
|
|
1331
1318
|
const onContinue = async () => {
|
|
1332
1319
|
props.onContinue(emailVal);
|
|
1333
1320
|
};
|
|
1334
|
-
return /* @__PURE__ */ (0,
|
|
1335
|
-
/* @__PURE__ */ (0,
|
|
1321
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-email-email-box", children: [
|
|
1322
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Field, { label: intl.formatMessage({
|
|
1336
1323
|
id: "emailAddress"
|
|
1337
|
-
}), children: /* @__PURE__ */ (0,
|
|
1324
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1338
1325
|
Input,
|
|
1339
1326
|
{
|
|
1340
1327
|
placeholder: intl.formatMessage({
|
|
@@ -1344,57 +1331,15 @@ function StepEmail(props) {
|
|
|
1344
1331
|
value: emailVal
|
|
1345
1332
|
}
|
|
1346
1333
|
) }),
|
|
1347
|
-
/* @__PURE__ */ (0,
|
|
1334
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Button, { disabled: !canContinue, style: {
|
|
1348
1335
|
marginTop: "64px"
|
|
1349
|
-
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
1336
|
+
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl.FormattedMessage, { id: "continue" }) })
|
|
1350
1337
|
] });
|
|
1351
1338
|
}
|
|
1352
1339
|
|
|
1353
1340
|
// src/store/useLocalStore.ts
|
|
1354
1341
|
var import_zustand = require("zustand");
|
|
1355
1342
|
var import_middleware = require("zustand/middleware");
|
|
1356
|
-
var persistedState = (0, import_middleware.persist)(
|
|
1357
|
-
(set) => ({
|
|
1358
|
-
appid: "",
|
|
1359
|
-
token: "",
|
|
1360
|
-
did: "",
|
|
1361
|
-
mid: "",
|
|
1362
|
-
overview: null,
|
|
1363
|
-
theme: "light",
|
|
1364
|
-
setOverview: (overview) => set({
|
|
1365
|
-
overview,
|
|
1366
|
-
address: overview.address,
|
|
1367
|
-
did: overview.did,
|
|
1368
|
-
mid: overview.mid
|
|
1369
|
-
}),
|
|
1370
|
-
endpoints: {
|
|
1371
|
-
back: "https://api.matchid.ai/",
|
|
1372
|
-
auth: "https://auth.matchid.ai/"
|
|
1373
|
-
},
|
|
1374
|
-
setDid: (did) => set({ did }),
|
|
1375
|
-
setToken: (token) => set({ token }),
|
|
1376
|
-
setAppid: (appid) => set({ appid }),
|
|
1377
|
-
setMid: (mid) => set({ mid }),
|
|
1378
|
-
logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
|
|
1379
|
-
setTheme: (theme) => set({ theme }),
|
|
1380
|
-
setEndpoints: (endpoints) => set({ endpoints }),
|
|
1381
|
-
address: "",
|
|
1382
|
-
setAddress: (address) => set({ address }),
|
|
1383
|
-
locale: "en",
|
|
1384
|
-
setLocale: (locale) => set({ locale }),
|
|
1385
|
-
wallet: {
|
|
1386
|
-
type: "UserPasscode"
|
|
1387
|
-
},
|
|
1388
|
-
setWallet: (wallet) => set({ wallet })
|
|
1389
|
-
}),
|
|
1390
|
-
{ name: "match-local" }
|
|
1391
|
-
);
|
|
1392
|
-
var useLocalStore = (0, import_zustand.create)((0, import_middleware.devtools)(persistedState));
|
|
1393
|
-
var localStore = useLocalStore;
|
|
1394
|
-
var useLocalStore_default = useLocalStore;
|
|
1395
|
-
|
|
1396
|
-
// src/hooks/useUserInfo.tsx
|
|
1397
|
-
var import_react16 = require("react");
|
|
1398
1343
|
|
|
1399
1344
|
// src/api/request.ts
|
|
1400
1345
|
var import_axios = __toESM(require("axios"));
|
|
@@ -1654,14 +1599,61 @@ var getAppConfigApi = () => {
|
|
|
1654
1599
|
});
|
|
1655
1600
|
};
|
|
1656
1601
|
|
|
1657
|
-
// src/
|
|
1658
|
-
var
|
|
1602
|
+
// src/store/useLocalStore.ts
|
|
1603
|
+
var persistedState = (0, import_middleware.persist)(
|
|
1604
|
+
(set) => ({
|
|
1605
|
+
appid: "",
|
|
1606
|
+
token: "",
|
|
1607
|
+
did: "",
|
|
1608
|
+
mid: "",
|
|
1609
|
+
overview: null,
|
|
1610
|
+
theme: "light",
|
|
1611
|
+
setOverview: (overview) => set({
|
|
1612
|
+
overview,
|
|
1613
|
+
address: overview.address,
|
|
1614
|
+
did: overview.did,
|
|
1615
|
+
mid: overview.mid
|
|
1616
|
+
}),
|
|
1617
|
+
refreshOverview: async () => {
|
|
1618
|
+
const res = await getOverviewInfoApi();
|
|
1619
|
+
if (res.data) {
|
|
1620
|
+
set({ overview: res.data });
|
|
1621
|
+
set({ address: res.data.address });
|
|
1622
|
+
set({ did: res.data.did });
|
|
1623
|
+
set({ mid: res.data.mid });
|
|
1624
|
+
}
|
|
1625
|
+
},
|
|
1626
|
+
endpoints: {
|
|
1627
|
+
back: "https://api.matchid.ai/",
|
|
1628
|
+
auth: "https://auth.matchid.ai/"
|
|
1629
|
+
},
|
|
1630
|
+
setDid: (did) => set({ did }),
|
|
1631
|
+
setToken: (token) => set({ token }),
|
|
1632
|
+
setAppid: (appid) => set({ appid }),
|
|
1633
|
+
setMid: (mid) => set({ mid }),
|
|
1634
|
+
logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
|
|
1635
|
+
setTheme: (theme) => set({ theme }),
|
|
1636
|
+
setEndpoints: (endpoints) => set({ endpoints }),
|
|
1637
|
+
address: "",
|
|
1638
|
+
setAddress: (address) => set({ address }),
|
|
1639
|
+
locale: "en",
|
|
1640
|
+
setLocale: (locale) => set({ locale }),
|
|
1641
|
+
wallet: {
|
|
1642
|
+
type: "UserPasscode"
|
|
1643
|
+
},
|
|
1644
|
+
setWallet: (wallet) => set({ wallet })
|
|
1645
|
+
}),
|
|
1646
|
+
{ name: "match-local" }
|
|
1647
|
+
);
|
|
1648
|
+
var useLocalStore = (0, import_zustand.create)((0, import_middleware.devtools)(persistedState));
|
|
1649
|
+
var localStore = useLocalStore;
|
|
1650
|
+
var useLocalStore_default = useLocalStore;
|
|
1659
1651
|
|
|
1660
|
-
// src/
|
|
1661
|
-
var
|
|
1652
|
+
// src/hooks/useUserInfo.tsx
|
|
1653
|
+
var import_react13 = require("react");
|
|
1662
1654
|
|
|
1663
|
-
// src/
|
|
1664
|
-
var
|
|
1655
|
+
// src/MatchContext.tsx
|
|
1656
|
+
var import_react12 = require("react");
|
|
1665
1657
|
|
|
1666
1658
|
// src/hooks/useMatchEvents.ts
|
|
1667
1659
|
var import_react5 = require("react");
|
|
@@ -1701,18 +1693,8 @@ var import_viem = require("viem");
|
|
|
1701
1693
|
var import_zustand2 = require("zustand");
|
|
1702
1694
|
var useStore = (0, import_zustand2.create)((set) => ({
|
|
1703
1695
|
walletReady: false,
|
|
1704
|
-
setWalletReady: (inited) => set({ walletReady: inited })
|
|
1705
|
-
recoveryModal: {
|
|
1706
|
-
open: false,
|
|
1707
|
-
success: async () => {
|
|
1708
|
-
},
|
|
1709
|
-
close: async () => {
|
|
1710
|
-
}
|
|
1711
|
-
},
|
|
1712
|
-
setRecoveryModal: (params) => set({ recoveryModal: params }),
|
|
1713
|
-
closeRecoveryModal: () => set({ recoveryModal: { open: false } })
|
|
1696
|
+
setWalletReady: (inited) => set({ walletReady: inited })
|
|
1714
1697
|
}));
|
|
1715
|
-
var useStore_default = useStore;
|
|
1716
1698
|
|
|
1717
1699
|
// src/hooks/useWallet.tsx
|
|
1718
1700
|
var import_accounts = require("viem/accounts");
|
|
@@ -1724,39 +1706,39 @@ var import_viem3 = require("viem");
|
|
|
1724
1706
|
var import_zustand3 = require("zustand");
|
|
1725
1707
|
|
|
1726
1708
|
// src/hooks/useConfig.tsx
|
|
1727
|
-
var
|
|
1709
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
1728
1710
|
var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
1729
1711
|
var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
|
|
1730
1712
|
function useWalletConfig() {
|
|
1731
1713
|
const isDownMd = useDownMd();
|
|
1732
1714
|
const walletMap = {
|
|
1733
1715
|
evm: {
|
|
1734
|
-
icon: /* @__PURE__ */ (0,
|
|
1735
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
1716
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1717
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1736
1718
|
name: "EVM",
|
|
1737
1719
|
method: "evm"
|
|
1738
1720
|
},
|
|
1739
1721
|
sol: {
|
|
1740
|
-
icon: /* @__PURE__ */ (0,
|
|
1741
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
1722
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1723
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1742
1724
|
name: "SOL",
|
|
1743
1725
|
method: "sol"
|
|
1744
1726
|
},
|
|
1745
1727
|
btc: {
|
|
1746
|
-
icon: /* @__PURE__ */ (0,
|
|
1747
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
1728
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1729
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1748
1730
|
name: "BTC",
|
|
1749
1731
|
method: "btc"
|
|
1750
1732
|
},
|
|
1751
1733
|
tron: {
|
|
1752
|
-
icon: /* @__PURE__ */ (0,
|
|
1753
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
1734
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
1735
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1754
1736
|
name: "TRON",
|
|
1755
1737
|
method: "tron"
|
|
1756
1738
|
},
|
|
1757
1739
|
ton: {
|
|
1758
|
-
icon: /* @__PURE__ */ (0,
|
|
1759
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
1740
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
1741
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
1760
1742
|
name: "TON",
|
|
1761
1743
|
method: "ton"
|
|
1762
1744
|
}
|
|
@@ -1818,291 +1800,6 @@ var useWalletModalStore = (0, import_zustand3.create)((set) => ({
|
|
|
1818
1800
|
|
|
1819
1801
|
// src/hooks/useWallet.tsx
|
|
1820
1802
|
var AppClientId = "react-sdk-" + getVersion();
|
|
1821
|
-
function useWallet() {
|
|
1822
|
-
const { appid, token, overview, address, wallet: walletConfig } = useLocalStore_default();
|
|
1823
|
-
const { setRecoveryModal, closeRecoveryModal, walletReady } = useStore_default();
|
|
1824
|
-
const { open: openHashPanel } = useHashPanelStore();
|
|
1825
|
-
const initCore = ({
|
|
1826
|
-
did,
|
|
1827
|
-
address: address2
|
|
1828
|
-
}) => {
|
|
1829
|
-
return window.matchProvider.waitUntilWalletMessage(
|
|
1830
|
-
{
|
|
1831
|
-
method: "initCore",
|
|
1832
|
-
data: {
|
|
1833
|
-
AppId: appid,
|
|
1834
|
-
AppClientId,
|
|
1835
|
-
UserId: did,
|
|
1836
|
-
AccessToken: token,
|
|
1837
|
-
Address: address2
|
|
1838
|
-
}
|
|
1839
|
-
}
|
|
1840
|
-
);
|
|
1841
|
-
};
|
|
1842
|
-
const generateEmbeddedWallets = async (data) => {
|
|
1843
|
-
return await window.matchProvider.waitUntilWalletMessage({
|
|
1844
|
-
method: "generateEmbeddedWallets",
|
|
1845
|
-
data
|
|
1846
|
-
});
|
|
1847
|
-
};
|
|
1848
|
-
const recoveryEmbeddedWallets = async (data) => {
|
|
1849
|
-
return await window.matchProvider.waitUntilWalletMessage({
|
|
1850
|
-
method: "recoveryEmbeddedWallets",
|
|
1851
|
-
data
|
|
1852
|
-
});
|
|
1853
|
-
};
|
|
1854
|
-
const isRecovered = async () => {
|
|
1855
|
-
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
1856
|
-
method: "isRecovered"
|
|
1857
|
-
});
|
|
1858
|
-
return res.isRecovered;
|
|
1859
|
-
};
|
|
1860
|
-
const recoverAfter = async ({
|
|
1861
|
-
chainType,
|
|
1862
|
-
handle
|
|
1863
|
-
}) => {
|
|
1864
|
-
return new Promise(async (resolve, reject) => {
|
|
1865
|
-
const res = await isRecovered();
|
|
1866
|
-
matchlog_default.log("sdk.mpc.isRecovered", res);
|
|
1867
|
-
if (res) {
|
|
1868
|
-
await recoveryEmbeddedWallets({ chainType, recoveryType: "user_passcode_recovery_key" });
|
|
1869
|
-
await handle(resolve, reject);
|
|
1870
|
-
return;
|
|
1871
|
-
}
|
|
1872
|
-
setRecoveryModal({
|
|
1873
|
-
chainType,
|
|
1874
|
-
open: true,
|
|
1875
|
-
success: async () => {
|
|
1876
|
-
closeRecoveryModal();
|
|
1877
|
-
matchlog_default.log("sdk.mpc.recover", "Success");
|
|
1878
|
-
await handle(resolve, reject);
|
|
1879
|
-
},
|
|
1880
|
-
close: async () => {
|
|
1881
|
-
closeRecoveryModal();
|
|
1882
|
-
reject(new Error("recover modal close"));
|
|
1883
|
-
}
|
|
1884
|
-
});
|
|
1885
|
-
await initCore({
|
|
1886
|
-
address: overview?.address || "",
|
|
1887
|
-
did: overview?.did || ""
|
|
1888
|
-
});
|
|
1889
|
-
});
|
|
1890
|
-
};
|
|
1891
|
-
const signMessage2 = async ({
|
|
1892
|
-
message,
|
|
1893
|
-
chainType = "ethereum" /* Ethereum */
|
|
1894
|
-
}) => {
|
|
1895
|
-
const getSign = async (resolve, reject) => {
|
|
1896
|
-
try {
|
|
1897
|
-
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1898
|
-
method: "signMessage",
|
|
1899
|
-
data: {
|
|
1900
|
-
message,
|
|
1901
|
-
chainType
|
|
1902
|
-
}
|
|
1903
|
-
});
|
|
1904
|
-
resolve(recoverRes.message);
|
|
1905
|
-
} catch (error) {
|
|
1906
|
-
console.error("qwe-sign-error", error);
|
|
1907
|
-
reject(error);
|
|
1908
|
-
}
|
|
1909
|
-
};
|
|
1910
|
-
return await recoverAfter({
|
|
1911
|
-
handle: getSign,
|
|
1912
|
-
chainType
|
|
1913
|
-
});
|
|
1914
|
-
};
|
|
1915
|
-
const signTransaction = async ({
|
|
1916
|
-
transaction,
|
|
1917
|
-
chainType = "ethereum" /* Ethereum */,
|
|
1918
|
-
chain
|
|
1919
|
-
}) => {
|
|
1920
|
-
console.log("qwe-sign-transaction", transaction);
|
|
1921
|
-
const getSign = async (resolve, reject) => {
|
|
1922
|
-
try {
|
|
1923
|
-
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1924
|
-
method: "signTransaction",
|
|
1925
|
-
data: {
|
|
1926
|
-
transaction,
|
|
1927
|
-
chainType,
|
|
1928
|
-
chain
|
|
1929
|
-
}
|
|
1930
|
-
});
|
|
1931
|
-
resolve(recoverRes.message);
|
|
1932
|
-
} catch (error) {
|
|
1933
|
-
console.error("qwe-sign-error", error);
|
|
1934
|
-
reject(error);
|
|
1935
|
-
}
|
|
1936
|
-
};
|
|
1937
|
-
return await recoverAfter({
|
|
1938
|
-
handle: getSign,
|
|
1939
|
-
chainType
|
|
1940
|
-
});
|
|
1941
|
-
};
|
|
1942
|
-
const evmAccount = (0, import_react6.useMemo)(() => {
|
|
1943
|
-
return address ? (0, import_accounts.toAccount)({
|
|
1944
|
-
address,
|
|
1945
|
-
async signMessage({ message }) {
|
|
1946
|
-
return await signMessage2({
|
|
1947
|
-
message,
|
|
1948
|
-
chainType: "ethereum" /* Ethereum */
|
|
1949
|
-
});
|
|
1950
|
-
},
|
|
1951
|
-
async signTransaction(transaction, options) {
|
|
1952
|
-
const { account, chain, ...restTransaction } = transaction;
|
|
1953
|
-
console.log("qwe-sign-transaction", restTransaction, options);
|
|
1954
|
-
return await signTransaction({
|
|
1955
|
-
transaction: {
|
|
1956
|
-
...restTransaction
|
|
1957
|
-
},
|
|
1958
|
-
chainType: "ethereum" /* Ethereum */,
|
|
1959
|
-
chain: {
|
|
1960
|
-
id: chain?.id || restTransaction.chainId,
|
|
1961
|
-
name: chain?.name,
|
|
1962
|
-
nativeCurrency: {
|
|
1963
|
-
name: chain?.nativeCurrency?.name || "ETH",
|
|
1964
|
-
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
1965
|
-
decimals: chain?.nativeCurrency?.decimals || 18
|
|
1966
|
-
},
|
|
1967
|
-
rpcUrls: chain?.rpcUrls
|
|
1968
|
-
}
|
|
1969
|
-
});
|
|
1970
|
-
},
|
|
1971
|
-
async signTypedData(typedData) {
|
|
1972
|
-
return "0x";
|
|
1973
|
-
}
|
|
1974
|
-
}) : void 0;
|
|
1975
|
-
}, [address]);
|
|
1976
|
-
(0, import_react6.useEffect)(() => {
|
|
1977
|
-
matchlog_default.log("qwe-evmAccount", evmAccount);
|
|
1978
|
-
}, [evmAccount]);
|
|
1979
|
-
return {
|
|
1980
|
-
walletReady,
|
|
1981
|
-
evmAccount,
|
|
1982
|
-
address,
|
|
1983
|
-
initCore,
|
|
1984
|
-
signMessage: signMessage2,
|
|
1985
|
-
signTransaction,
|
|
1986
|
-
isRecovered,
|
|
1987
|
-
recoverAfter,
|
|
1988
|
-
generateEmbeddedWallets,
|
|
1989
|
-
recoveryEmbeddedWallets,
|
|
1990
|
-
createWalletClient: (parameters) => {
|
|
1991
|
-
if (!evmAccount) {
|
|
1992
|
-
return;
|
|
1993
|
-
}
|
|
1994
|
-
const obj = (0, import_viem2.createWalletClient)({
|
|
1995
|
-
...parameters,
|
|
1996
|
-
account: evmAccount
|
|
1997
|
-
});
|
|
1998
|
-
const sendTransaction = async (transaction) => {
|
|
1999
|
-
const getSign = async (resolve, reject) => {
|
|
2000
|
-
const { chain, ...restTransaction } = transaction;
|
|
2001
|
-
const chainId = chain ? chain.id : await obj.getChainId();
|
|
2002
|
-
const _chain = chain || obj.chain;
|
|
2003
|
-
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
2004
|
-
window.matchProvider.transactionMessageIntervalMap[transactionId] = {
|
|
2005
|
-
transaction,
|
|
2006
|
-
func: async () => {
|
|
2007
|
-
try {
|
|
2008
|
-
const {
|
|
2009
|
-
chain: chain2,
|
|
2010
|
-
account,
|
|
2011
|
-
...prepareTransactionRequest
|
|
2012
|
-
// @ts-ignore
|
|
2013
|
-
} = await obj.prepareTransactionRequest(window.matchProvider.transactionMessageIntervalMap[transactionId].transaction);
|
|
2014
|
-
window.matchProvider.sendWalletMessage({
|
|
2015
|
-
method: "prepareTransactionRequest",
|
|
2016
|
-
data: {
|
|
2017
|
-
prepareTransactionRequest,
|
|
2018
|
-
transactionId
|
|
2019
|
-
}
|
|
2020
|
-
});
|
|
2021
|
-
} catch (error) {
|
|
2022
|
-
console.error(error);
|
|
2023
|
-
}
|
|
2024
|
-
},
|
|
2025
|
-
interval: setInterval(() => {
|
|
2026
|
-
window.matchProvider.transactionMessageIntervalMap[transactionId].func();
|
|
2027
|
-
}, 1e4)
|
|
2028
|
-
};
|
|
2029
|
-
try {
|
|
2030
|
-
const {
|
|
2031
|
-
chain: chain2,
|
|
2032
|
-
account,
|
|
2033
|
-
...prepareTransactionRequest
|
|
2034
|
-
// @ts-ignore
|
|
2035
|
-
} = await obj.prepareTransactionRequest(transaction);
|
|
2036
|
-
const { serializedTransaction } = await window.matchProvider.waitUntilWalletMessage({
|
|
2037
|
-
method: "sendTransaction",
|
|
2038
|
-
data: {
|
|
2039
|
-
transactionId,
|
|
2040
|
-
transaction: {
|
|
2041
|
-
...restTransaction
|
|
2042
|
-
},
|
|
2043
|
-
chainType: "ethereum" /* Ethereum */,
|
|
2044
|
-
chain: {
|
|
2045
|
-
id: chainId,
|
|
2046
|
-
name: _chain?.name,
|
|
2047
|
-
nativeCurrency: _chain?.nativeCurrency,
|
|
2048
|
-
rpcUrls: _chain?.rpcUrls
|
|
2049
|
-
},
|
|
2050
|
-
prepareTransactionRequest
|
|
2051
|
-
}
|
|
2052
|
-
});
|
|
2053
|
-
openHashPanel();
|
|
2054
|
-
const txHash = await obj.sendRawTransaction({
|
|
2055
|
-
serializedTransaction
|
|
2056
|
-
});
|
|
2057
|
-
openHashPanel({
|
|
2058
|
-
hash: txHash,
|
|
2059
|
-
chain: _chain
|
|
2060
|
-
});
|
|
2061
|
-
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
2062
|
-
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
2063
|
-
resolve(txHash);
|
|
2064
|
-
} catch (error) {
|
|
2065
|
-
console.error("qwe-sign-error", error);
|
|
2066
|
-
clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
|
|
2067
|
-
delete window.matchProvider.transactionMessageIntervalMap[transactionId];
|
|
2068
|
-
reject(error);
|
|
2069
|
-
}
|
|
2070
|
-
};
|
|
2071
|
-
return await recoverAfter({
|
|
2072
|
-
handle: getSign,
|
|
2073
|
-
chainType: "ethereum" /* Ethereum */
|
|
2074
|
-
});
|
|
2075
|
-
};
|
|
2076
|
-
const deployContract = async (parameters2) => {
|
|
2077
|
-
const { abi, args, bytecode, ...request3 } = parameters2;
|
|
2078
|
-
const calldata = (0, import_viem3.encodeDeployData)({ abi, args, bytecode });
|
|
2079
|
-
return await sendTransaction({
|
|
2080
|
-
...request3,
|
|
2081
|
-
data: calldata
|
|
2082
|
-
});
|
|
2083
|
-
};
|
|
2084
|
-
const writeContract = async (parameters2) => {
|
|
2085
|
-
const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
|
|
2086
|
-
const data = (0, import_viem.encodeFunctionData)({
|
|
2087
|
-
abi,
|
|
2088
|
-
args,
|
|
2089
|
-
functionName
|
|
2090
|
-
});
|
|
2091
|
-
return await sendTransaction({
|
|
2092
|
-
data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
|
|
2093
|
-
to: address2,
|
|
2094
|
-
...request3
|
|
2095
|
-
});
|
|
2096
|
-
};
|
|
2097
|
-
return {
|
|
2098
|
-
...obj,
|
|
2099
|
-
sendTransaction,
|
|
2100
|
-
deployContract,
|
|
2101
|
-
writeContract
|
|
2102
|
-
};
|
|
2103
|
-
}
|
|
2104
|
-
};
|
|
2105
|
-
}
|
|
2106
1803
|
|
|
2107
1804
|
// src/hooks/useCopyClipboard.ts
|
|
2108
1805
|
var import_copy_to_clipboard = __toESM(require("copy-to-clipboard"));
|
|
@@ -2127,165 +1824,49 @@ function useCopyClipboard(timeout = 500) {
|
|
|
2127
1824
|
return [isCopied, staticCopy];
|
|
2128
1825
|
}
|
|
2129
1826
|
|
|
2130
|
-
// src/components/
|
|
1827
|
+
// src/components/CEXBindModal/index.tsx
|
|
1828
|
+
var import_react8 = require("react");
|
|
2131
1829
|
var import_react_intl2 = require("react-intl");
|
|
2132
|
-
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
2133
|
-
function PasswordModal({
|
|
2134
|
-
title,
|
|
2135
|
-
isOpen,
|
|
2136
|
-
onSuccess,
|
|
2137
|
-
chainType = "ethereum" /* Ethereum */,
|
|
2138
|
-
recoveryType = "user_passcode_recovery_key" /* UserPasscode */,
|
|
2139
|
-
...props
|
|
2140
|
-
}) {
|
|
2141
|
-
const { refreshOverview, overview } = useUserInfo();
|
|
2142
|
-
const { isLogin, did } = useUserInfo();
|
|
2143
|
-
const [password, setPassword] = (0, import_react8.useState)("");
|
|
2144
|
-
const [rePassword, setRePassword] = (0, import_react8.useState)("");
|
|
2145
|
-
const [error, setError] = (0, import_react8.useState)("");
|
|
2146
|
-
const { generateEmbeddedWallets, initCore } = useWallet();
|
|
2147
|
-
const { walletReady } = useStore_default();
|
|
2148
|
-
const intl = (0, import_react_intl2.useIntl)();
|
|
2149
|
-
const passwordError = (0, import_react8.useMemo)(() => {
|
|
2150
|
-
if (password.length < 6) return intl.formatMessage({
|
|
2151
|
-
id: "passwordMinError"
|
|
2152
|
-
}, {
|
|
2153
|
-
length: 6
|
|
2154
|
-
});
|
|
2155
|
-
return "";
|
|
2156
|
-
}, [password]);
|
|
2157
|
-
const rePasswordError = (0, import_react8.useMemo)(() => {
|
|
2158
|
-
if (rePassword != password) {
|
|
2159
|
-
return intl.formatMessage({
|
|
2160
|
-
id: "passwordMatchError"
|
|
2161
|
-
});
|
|
2162
|
-
}
|
|
2163
|
-
return "";
|
|
2164
|
-
}, [rePassword, password]);
|
|
2165
|
-
(0, import_react8.useEffect)(() => {
|
|
2166
|
-
if (isOpen) {
|
|
2167
|
-
setPassword("");
|
|
2168
|
-
setRePassword("");
|
|
2169
|
-
}
|
|
2170
|
-
}, [isOpen, overview]);
|
|
2171
|
-
const [isSubmitting, setIsSubmitting] = (0, import_react8.useState)(false);
|
|
2172
|
-
const onContinue = async () => {
|
|
2173
|
-
if (isSubmitting) return;
|
|
2174
|
-
try {
|
|
2175
|
-
setIsSubmitting(true);
|
|
2176
|
-
await initCore({
|
|
2177
|
-
did: overview?.did || "",
|
|
2178
|
-
address: ""
|
|
2179
|
-
});
|
|
2180
|
-
const address = await generateEmbeddedWallets({
|
|
2181
|
-
userPasscode: password,
|
|
2182
|
-
chainType,
|
|
2183
|
-
recoveryType
|
|
2184
|
-
});
|
|
2185
|
-
await refreshOverview();
|
|
2186
|
-
onSuccess && onSuccess();
|
|
2187
|
-
} catch (error2) {
|
|
2188
|
-
setError(error2.message);
|
|
2189
|
-
} finally {
|
|
2190
|
-
setIsSubmitting(false);
|
|
2191
|
-
}
|
|
2192
|
-
};
|
|
2193
|
-
return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
2194
|
-
id: "passwordTitle"
|
|
2195
|
-
}), children: /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "matchid-password-box", children: [
|
|
2196
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "matchid-password-header", children: [
|
|
2197
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(PasswordRoundIcon, {}) }),
|
|
2198
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_intl2.FormattedMessage, { id: "passwordTips" }) })
|
|
2199
|
-
] }),
|
|
2200
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "matchid-password-content", children: [
|
|
2201
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 && passwordError, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
2202
|
-
Input,
|
|
2203
|
-
{
|
|
2204
|
-
placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
|
|
2205
|
-
maxLength: 32,
|
|
2206
|
-
type: "password",
|
|
2207
|
-
onChange: (e) => setPassword(e.target.value),
|
|
2208
|
-
value: password
|
|
2209
|
-
}
|
|
2210
|
-
) }),
|
|
2211
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Field, { label: intl.formatMessage({
|
|
2212
|
-
id: "rePassword"
|
|
2213
|
-
}), error: !walletReady ? intl.formatMessage({ id: "walletLoading" }) : rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
2214
|
-
Input,
|
|
2215
|
-
{
|
|
2216
|
-
placeholder: intl.formatMessage({
|
|
2217
|
-
id: "rePasswordPlaceholder"
|
|
2218
|
-
}),
|
|
2219
|
-
maxLength: 32,
|
|
2220
|
-
onChange: (e) => setRePassword(e.target.value),
|
|
2221
|
-
value: rePassword,
|
|
2222
|
-
type: "password"
|
|
2223
|
-
}
|
|
2224
|
-
) })
|
|
2225
|
-
] }),
|
|
2226
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
2227
|
-
Button,
|
|
2228
|
-
{
|
|
2229
|
-
disabled: password.length == 0 || !!passwordError || !!rePasswordError || !walletReady,
|
|
2230
|
-
highlight: true,
|
|
2231
|
-
block: true,
|
|
2232
|
-
size: "lg",
|
|
2233
|
-
onClick: onContinue,
|
|
2234
|
-
loading: isSubmitting,
|
|
2235
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_intl2.FormattedMessage, { id: "continue" })
|
|
2236
|
-
}
|
|
2237
|
-
)
|
|
2238
|
-
] }) });
|
|
2239
|
-
}
|
|
2240
|
-
|
|
2241
|
-
// src/components/RecoveryModal/index.tsx
|
|
2242
|
-
var import_react9 = require("react");
|
|
2243
|
-
var import_react_intl3 = require("react-intl");
|
|
2244
1830
|
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2245
1831
|
|
|
2246
|
-
// src/
|
|
2247
|
-
var import_react10 = require("react");
|
|
2248
|
-
var import_react_intl4 = require("react-intl");
|
|
2249
|
-
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
2250
|
-
|
|
2251
|
-
// src/components/HashPanel/index.tsx
|
|
1832
|
+
// src/ui/HashPanel/index.tsx
|
|
2252
1833
|
var import_viem4 = require("viem");
|
|
2253
|
-
var
|
|
1834
|
+
var import_react9 = require("react");
|
|
2254
1835
|
var import_react_query = require("@tanstack/react-query");
|
|
2255
1836
|
|
|
2256
|
-
// src/
|
|
1837
|
+
// src/ui/Drawer/index.tsx
|
|
1838
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
1839
|
+
|
|
1840
|
+
// src/ui/ModalDrawer/index.tsx
|
|
2257
1841
|
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2258
1842
|
|
|
2259
|
-
// src/
|
|
1843
|
+
// src/ui/HashPanel/index.tsx
|
|
2260
1844
|
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
2261
1845
|
|
|
2262
|
-
// src/components/HashPanel/index.tsx
|
|
2263
|
-
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
2264
|
-
|
|
2265
1846
|
// src/context/BusinessProvider.tsx
|
|
2266
|
-
var
|
|
1847
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
2267
1848
|
|
|
2268
1849
|
// src/context/index.tsx
|
|
2269
|
-
var
|
|
1850
|
+
var import_jsx_runtime57 = (
|
|
2270
1851
|
// <MpcWalletProvider>
|
|
2271
1852
|
require("react/jsx-runtime")
|
|
2272
1853
|
);
|
|
2273
1854
|
|
|
2274
1855
|
// src/hooks/useWalletInit.ts
|
|
2275
|
-
var
|
|
1856
|
+
var import_react10 = require("react");
|
|
2276
1857
|
var AppClientId2 = getAppClientId();
|
|
2277
1858
|
|
|
2278
1859
|
// src/hooks/useInit.tsx
|
|
2279
|
-
var
|
|
1860
|
+
var import_react11 = require("react");
|
|
2280
1861
|
|
|
2281
1862
|
// src/MatchContext.tsx
|
|
2282
1863
|
var import_react_query2 = require("@tanstack/react-query");
|
|
2283
|
-
var
|
|
2284
|
-
var
|
|
1864
|
+
var import_react_intl3 = require("react-intl");
|
|
1865
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
2285
1866
|
var queryClient = new import_react_query2.QueryClient();
|
|
2286
|
-
var MatchContext = (0,
|
|
1867
|
+
var MatchContext = (0, import_react12.createContext)(void 0);
|
|
2287
1868
|
var useMatch = () => {
|
|
2288
|
-
const context = (0,
|
|
1869
|
+
const context = (0, import_react12.useContext)(MatchContext);
|
|
2289
1870
|
if (context === void 0) {
|
|
2290
1871
|
throw new Error("useMatch must be used within a MatchProvider");
|
|
2291
1872
|
}
|
|
@@ -2304,7 +1885,8 @@ function useUserInfo() {
|
|
|
2304
1885
|
overview,
|
|
2305
1886
|
address,
|
|
2306
1887
|
endpoints,
|
|
2307
|
-
locale
|
|
1888
|
+
locale,
|
|
1889
|
+
refreshOverview
|
|
2308
1890
|
} = useLocalStore_default();
|
|
2309
1891
|
const { events, login } = useMatch();
|
|
2310
1892
|
const { open: SOLOpen } = useSOLModalStore();
|
|
@@ -2313,7 +1895,7 @@ function useUserInfo() {
|
|
|
2313
1895
|
const { open: BTCOpen } = useBTCModalStore();
|
|
2314
1896
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
2315
1897
|
const walletModalStore = useWalletModalStore();
|
|
2316
|
-
const isLogin = (0,
|
|
1898
|
+
const isLogin = (0, import_react13.useMemo)(() => !!token && !!overview, [token, overview]);
|
|
2317
1899
|
const logout = async () => {
|
|
2318
1900
|
try {
|
|
2319
1901
|
await toLogoutApi();
|
|
@@ -2413,12 +1995,6 @@ function useUserInfo() {
|
|
|
2413
1995
|
}
|
|
2414
1996
|
return false;
|
|
2415
1997
|
};
|
|
2416
|
-
const refreshOverview = async () => {
|
|
2417
|
-
const res = await getOverviewInfoApi();
|
|
2418
|
-
if (res.data) {
|
|
2419
|
-
setOverview(res.data);
|
|
2420
|
-
}
|
|
2421
|
-
};
|
|
2422
1998
|
const bindWallet = async () => {
|
|
2423
1999
|
if (!token) {
|
|
2424
2000
|
throw new Error("You must login first");
|
|
@@ -2551,29 +2127,29 @@ function useUserInfo() {
|
|
|
2551
2127
|
}
|
|
2552
2128
|
|
|
2553
2129
|
// src/components/EmailModal/StepVerify.tsx
|
|
2554
|
-
var
|
|
2130
|
+
var import_react14 = require("react");
|
|
2555
2131
|
|
|
2556
2132
|
// src/config/index.tsx
|
|
2557
2133
|
var EMAIL_INTERVAL = 60;
|
|
2558
2134
|
var EMAIL_CODE_LENGTH = 6;
|
|
2559
2135
|
|
|
2560
2136
|
// src/components/EmailModal/StepVerify.tsx
|
|
2561
|
-
var
|
|
2562
|
-
var
|
|
2137
|
+
var import_react_intl4 = require("react-intl");
|
|
2138
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
2563
2139
|
function StepVerify(props) {
|
|
2564
|
-
const intl = (0,
|
|
2140
|
+
const intl = (0, import_react_intl4.useIntl)();
|
|
2565
2141
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
2566
|
-
const [error, setError] = (0,
|
|
2567
|
-
const [code, setCode] = (0,
|
|
2568
|
-
const [sending, setSending] = (0,
|
|
2569
|
-
const [submitting, setSubmitting] = (0,
|
|
2570
|
-
const sendTimeRef = (0,
|
|
2571
|
-
const [sendBtnText, setSendBtnText] = (0,
|
|
2142
|
+
const [error, setError] = (0, import_react14.useState)("");
|
|
2143
|
+
const [code, setCode] = (0, import_react14.useState)("");
|
|
2144
|
+
const [sending, setSending] = (0, import_react14.useState)(false);
|
|
2145
|
+
const [submitting, setSubmitting] = (0, import_react14.useState)(false);
|
|
2146
|
+
const sendTimeRef = (0, import_react14.useRef)(0);
|
|
2147
|
+
const [sendBtnText, setSendBtnText] = (0, import_react14.useState)(intl.formatMessage({
|
|
2572
2148
|
id: "send"
|
|
2573
2149
|
}));
|
|
2574
2150
|
const intervalTime = EMAIL_INTERVAL;
|
|
2575
2151
|
const codeLength = EMAIL_CODE_LENGTH;
|
|
2576
|
-
const intervalRef = (0,
|
|
2152
|
+
const intervalRef = (0, import_react14.useRef)(null);
|
|
2577
2153
|
const isDownMd = useDownMd();
|
|
2578
2154
|
const onSend = async () => {
|
|
2579
2155
|
if (sendTimeRef.current > 0) {
|
|
@@ -2604,7 +2180,7 @@ function StepVerify(props) {
|
|
|
2604
2180
|
setSending(false);
|
|
2605
2181
|
}
|
|
2606
2182
|
};
|
|
2607
|
-
(0,
|
|
2183
|
+
(0, import_react14.useEffect)(() => {
|
|
2608
2184
|
onSend();
|
|
2609
2185
|
return () => {
|
|
2610
2186
|
if (intervalRef.current) {
|
|
@@ -2612,7 +2188,7 @@ function StepVerify(props) {
|
|
|
2612
2188
|
}
|
|
2613
2189
|
};
|
|
2614
2190
|
}, []);
|
|
2615
|
-
const canContinue = (0,
|
|
2191
|
+
const canContinue = (0, import_react14.useMemo)(() => {
|
|
2616
2192
|
return code.length === codeLength;
|
|
2617
2193
|
}, [code]);
|
|
2618
2194
|
const onContinue = async () => {
|
|
@@ -2636,17 +2212,17 @@ function StepVerify(props) {
|
|
|
2636
2212
|
setSubmitting(false);
|
|
2637
2213
|
}
|
|
2638
2214
|
};
|
|
2639
|
-
return /* @__PURE__ */ (0,
|
|
2640
|
-
/* @__PURE__ */ (0,
|
|
2641
|
-
/* @__PURE__ */ (0,
|
|
2642
|
-
/* @__PURE__ */ (0,
|
|
2643
|
-
/* @__PURE__ */ (0,
|
|
2644
|
-
/* @__PURE__ */ (0,
|
|
2215
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-box", children: [
|
|
2216
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header", children: [
|
|
2217
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
2218
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header-content", children: [
|
|
2219
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
2220
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl4.FormattedMessage, { id: "sendEmailTips" }) })
|
|
2645
2221
|
] })
|
|
2646
2222
|
] }),
|
|
2647
|
-
/* @__PURE__ */ (0,
|
|
2223
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Field, { label: intl.formatMessage({
|
|
2648
2224
|
id: "verificationCode"
|
|
2649
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
2225
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2650
2226
|
Input,
|
|
2651
2227
|
{
|
|
2652
2228
|
placeholder: intl.formatMessage({
|
|
@@ -2656,7 +2232,7 @@ function StepVerify(props) {
|
|
|
2656
2232
|
maxLength: codeLength,
|
|
2657
2233
|
onChange: (e) => setCode(e.target.value),
|
|
2658
2234
|
value: code,
|
|
2659
|
-
after: /* @__PURE__ */ (0,
|
|
2235
|
+
after: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2660
2236
|
Button,
|
|
2661
2237
|
{
|
|
2662
2238
|
highlight: true,
|
|
@@ -2675,13 +2251,13 @@ function StepVerify(props) {
|
|
|
2675
2251
|
)
|
|
2676
2252
|
}
|
|
2677
2253
|
) }),
|
|
2678
|
-
/* @__PURE__ */ (0,
|
|
2254
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl4.FormattedMessage, { id: "continue" }) })
|
|
2679
2255
|
] });
|
|
2680
2256
|
}
|
|
2681
2257
|
|
|
2682
2258
|
// src/components/EmailModal/index.tsx
|
|
2683
|
-
var
|
|
2684
|
-
var
|
|
2259
|
+
var import_react_intl5 = require("react-intl");
|
|
2260
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
2685
2261
|
function EmailModal({
|
|
2686
2262
|
isOpen = false,
|
|
2687
2263
|
width = 480,
|
|
@@ -2689,16 +2265,16 @@ function EmailModal({
|
|
|
2689
2265
|
onBack,
|
|
2690
2266
|
onLogin
|
|
2691
2267
|
}) {
|
|
2692
|
-
const [step, setStep] = (0,
|
|
2693
|
-
const [emailVal, setEmailVal] = (0,
|
|
2694
|
-
const intl = (0,
|
|
2695
|
-
(0,
|
|
2268
|
+
const [step, setStep] = (0, import_react15.useState)("input");
|
|
2269
|
+
const [emailVal, setEmailVal] = (0, import_react15.useState)("");
|
|
2270
|
+
const intl = (0, import_react_intl5.useIntl)();
|
|
2271
|
+
(0, import_react15.useEffect)(() => {
|
|
2696
2272
|
if (!isOpen) {
|
|
2697
2273
|
setStep("input");
|
|
2698
2274
|
setEmailVal("");
|
|
2699
2275
|
}
|
|
2700
2276
|
}, [isOpen]);
|
|
2701
|
-
return /* @__PURE__ */ (0,
|
|
2277
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
2702
2278
|
ModalWithHeader,
|
|
2703
2279
|
{
|
|
2704
2280
|
isOpen,
|
|
@@ -2708,17 +2284,17 @@ function EmailModal({
|
|
|
2708
2284
|
id: "email"
|
|
2709
2285
|
}),
|
|
2710
2286
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
2711
|
-
children: step === "input" ? /* @__PURE__ */ (0,
|
|
2287
|
+
children: step === "input" ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
2712
2288
|
setEmailVal(email);
|
|
2713
2289
|
setStep("verify");
|
|
2714
|
-
} }) : /* @__PURE__ */ (0,
|
|
2290
|
+
} }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
2715
2291
|
}
|
|
2716
2292
|
);
|
|
2717
2293
|
}
|
|
2718
2294
|
|
|
2719
|
-
// src/
|
|
2720
|
-
var
|
|
2721
|
-
var
|
|
2295
|
+
// src/ui/Popover/index.tsx
|
|
2296
|
+
var import_react16 = require("react");
|
|
2297
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2722
2298
|
function Popover({
|
|
2723
2299
|
children,
|
|
2724
2300
|
content,
|
|
@@ -2727,8 +2303,8 @@ function Popover({
|
|
|
2727
2303
|
className = "",
|
|
2728
2304
|
gap = "20px"
|
|
2729
2305
|
}) {
|
|
2730
|
-
const [active, setActive] = (0,
|
|
2731
|
-
return children && /* @__PURE__ */ (0,
|
|
2306
|
+
const [active, setActive] = (0, import_react16.useState)(false);
|
|
2307
|
+
return children && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
2732
2308
|
"div",
|
|
2733
2309
|
{
|
|
2734
2310
|
onClick: () => {
|
|
@@ -2739,17 +2315,17 @@ function Popover({
|
|
|
2739
2315
|
className: `matchid-popover-box matchid-popover-${position} matchid-popover-${type} ${className} ${type == "click" && active ? "matchid-popover-click-active" : ""}`,
|
|
2740
2316
|
children: [
|
|
2741
2317
|
children,
|
|
2742
|
-
/* @__PURE__ */ (0,
|
|
2318
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { style: {
|
|
2743
2319
|
paddingTop: gap
|
|
2744
|
-
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0,
|
|
2320
|
+
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: `matchid-popover-content`, children: content }) })
|
|
2745
2321
|
]
|
|
2746
2322
|
}
|
|
2747
2323
|
);
|
|
2748
2324
|
}
|
|
2749
2325
|
|
|
2750
2326
|
// src/components/LoginBox/index.tsx
|
|
2751
|
-
var
|
|
2752
|
-
var
|
|
2327
|
+
var import_react17 = require("react");
|
|
2328
|
+
var import_react_intl6 = require("react-intl");
|
|
2753
2329
|
|
|
2754
2330
|
// src/hooks/useAppConfig.ts
|
|
2755
2331
|
var import_react_query3 = require("@tanstack/react-query");
|
|
@@ -2772,7 +2348,7 @@ function useAppConfig() {
|
|
|
2772
2348
|
}
|
|
2773
2349
|
|
|
2774
2350
|
// src/components/LoginBox/index.tsx
|
|
2775
|
-
var
|
|
2351
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
2776
2352
|
var RecommendItem = ({
|
|
2777
2353
|
icon,
|
|
2778
2354
|
name,
|
|
@@ -2781,20 +2357,20 @@ var RecommendItem = ({
|
|
|
2781
2357
|
children,
|
|
2782
2358
|
footer
|
|
2783
2359
|
}) => {
|
|
2784
|
-
return /* @__PURE__ */ (0,
|
|
2785
|
-
/* @__PURE__ */ (0,
|
|
2786
|
-
/* @__PURE__ */ (0,
|
|
2787
|
-
/* @__PURE__ */ (0,
|
|
2788
|
-
/* @__PURE__ */ (0,
|
|
2360
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method", children: [
|
|
2361
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-content", children: [
|
|
2363
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
2364
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
2789
2365
|
] }),
|
|
2790
|
-
footer ? footer : children ? /* @__PURE__ */ (0,
|
|
2366
|
+
footer ? footer : children ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2791
2367
|
ArrowDownIcon,
|
|
2792
2368
|
{
|
|
2793
2369
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
2794
2370
|
size: 20,
|
|
2795
2371
|
color: "var(--matchid-arrow-color)"
|
|
2796
2372
|
}
|
|
2797
|
-
) : /* @__PURE__ */ (0,
|
|
2373
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2798
2374
|
ArrowRightIcon,
|
|
2799
2375
|
{
|
|
2800
2376
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -2803,7 +2379,7 @@ var RecommendItem = ({
|
|
|
2803
2379
|
}
|
|
2804
2380
|
)
|
|
2805
2381
|
] }),
|
|
2806
|
-
children && /* @__PURE__ */ (0,
|
|
2382
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2807
2383
|
"div",
|
|
2808
2384
|
{
|
|
2809
2385
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -2819,7 +2395,7 @@ function LoginBox({
|
|
|
2819
2395
|
inModal = false
|
|
2820
2396
|
}) {
|
|
2821
2397
|
const config = useAppConfig();
|
|
2822
|
-
const methodConfig = (0,
|
|
2398
|
+
const methodConfig = (0, import_react17.useMemo)(() => {
|
|
2823
2399
|
if (recommendMethods || methods || walletMethods) {
|
|
2824
2400
|
return {
|
|
2825
2401
|
recommendMethods: recommendMethods ? recommendMethods : walletMethods ? ["wallet"] : [],
|
|
@@ -2861,82 +2437,82 @@ function LoginBox({
|
|
|
2861
2437
|
walletMethods: walletMethodList
|
|
2862
2438
|
};
|
|
2863
2439
|
}, [config.platform, recommendMethods, methods, walletMethods]);
|
|
2864
|
-
const [emailOpen, setEmailOpen] = (0,
|
|
2440
|
+
const [emailOpen, setEmailOpen] = (0, import_react17.useState)(false);
|
|
2865
2441
|
const { login } = useUserInfo();
|
|
2866
|
-
const [showWallet, setShowWallet] = (0,
|
|
2867
|
-
const intl = (0,
|
|
2442
|
+
const [showWallet, setShowWallet] = (0, import_react17.useState)(false);
|
|
2443
|
+
const intl = (0, import_react_intl6.useIntl)();
|
|
2868
2444
|
const isDownMd = useDownMd();
|
|
2869
2445
|
const methodMap = {
|
|
2870
2446
|
wallet: {
|
|
2871
|
-
icon: /* @__PURE__ */ (0,
|
|
2447
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
2872
2448
|
name: intl.formatMessage({ id: "wallet" }),
|
|
2873
2449
|
onClick: () => setShowWallet(!showWallet),
|
|
2874
2450
|
type: "wallet"
|
|
2875
2451
|
},
|
|
2876
2452
|
email: {
|
|
2877
|
-
icon: /* @__PURE__ */ (0,
|
|
2453
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
2878
2454
|
name: intl.formatMessage({ id: "email" }),
|
|
2879
2455
|
onClick: () => {
|
|
2880
2456
|
setEmailOpen(true);
|
|
2881
2457
|
}
|
|
2882
2458
|
},
|
|
2883
2459
|
google: {
|
|
2884
|
-
icon: /* @__PURE__ */ (0,
|
|
2460
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
2885
2461
|
name: "Google",
|
|
2886
2462
|
onClick: () => login("google")
|
|
2887
2463
|
},
|
|
2888
2464
|
twitter: {
|
|
2889
|
-
icon: /* @__PURE__ */ (0,
|
|
2465
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
2890
2466
|
name: "X",
|
|
2891
2467
|
onClick: () => login("twitter")
|
|
2892
2468
|
},
|
|
2893
2469
|
telegram: {
|
|
2894
|
-
icon: /* @__PURE__ */ (0,
|
|
2470
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
2895
2471
|
name: "Telegram",
|
|
2896
2472
|
onClick: () => login("telegram")
|
|
2897
2473
|
},
|
|
2898
2474
|
github: {
|
|
2899
|
-
icon: /* @__PURE__ */ (0,
|
|
2475
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
2900
2476
|
name: "Github",
|
|
2901
2477
|
onClick: () => login("github")
|
|
2902
2478
|
},
|
|
2903
2479
|
discord: {
|
|
2904
|
-
icon: /* @__PURE__ */ (0,
|
|
2480
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
2905
2481
|
name: "Discord",
|
|
2906
2482
|
onClick: () => login("discord")
|
|
2907
2483
|
},
|
|
2908
2484
|
linkedin: {
|
|
2909
|
-
icon: /* @__PURE__ */ (0,
|
|
2485
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
2910
2486
|
name: "LinkedIn",
|
|
2911
2487
|
onClick: () => login("linkedin")
|
|
2912
2488
|
},
|
|
2913
2489
|
facebook: {
|
|
2914
|
-
icon: /* @__PURE__ */ (0,
|
|
2490
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
2915
2491
|
name: "Facebook",
|
|
2916
2492
|
onClick: () => login("facebook")
|
|
2917
2493
|
},
|
|
2918
2494
|
youtube: {
|
|
2919
|
-
icon: /* @__PURE__ */ (0,
|
|
2495
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
2920
2496
|
name: "Youtube",
|
|
2921
2497
|
onClick: () => login("youtube")
|
|
2922
2498
|
}
|
|
2923
2499
|
};
|
|
2924
2500
|
const { walletMap } = useWalletConfig();
|
|
2925
|
-
return /* @__PURE__ */ (0,
|
|
2926
|
-
(!inModal || !emailOpen) && /* @__PURE__ */ (0,
|
|
2927
|
-
/* @__PURE__ */ (0,
|
|
2928
|
-
return /* @__PURE__ */ (0,
|
|
2501
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2502
|
+
(!inModal || !emailOpen) && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-box", children: [
|
|
2503
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
|
|
2504
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2929
2505
|
RecommendItem,
|
|
2930
2506
|
{
|
|
2931
2507
|
icon: methodMap[m]?.icon,
|
|
2932
2508
|
name: methodMap[m]?.name,
|
|
2933
2509
|
onClick: methodMap[m]?.onClick,
|
|
2934
2510
|
showChildren: m == "wallet" && showWallet,
|
|
2935
|
-
children: m == "wallet" && /* @__PURE__ */ (0,
|
|
2936
|
-
/* @__PURE__ */ (0,
|
|
2937
|
-
/* @__PURE__ */ (0,
|
|
2511
|
+
children: m == "wallet" && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2512
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
2513
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
|
|
2938
2514
|
const m2 = walletMap[n];
|
|
2939
|
-
return /* @__PURE__ */ (0,
|
|
2515
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
2940
2516
|
"div",
|
|
2941
2517
|
{
|
|
2942
2518
|
className: "matchid-login-recommend-wallet-item",
|
|
@@ -2944,16 +2520,16 @@ function LoginBox({
|
|
|
2944
2520
|
login(m2.method);
|
|
2945
2521
|
},
|
|
2946
2522
|
children: [
|
|
2947
|
-
/* @__PURE__ */ (0,
|
|
2948
|
-
/* @__PURE__ */ (0,
|
|
2949
|
-
/* @__PURE__ */ (0,
|
|
2523
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
2524
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
2525
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2950
2526
|
"div",
|
|
2951
2527
|
{
|
|
2952
2528
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
2953
2529
|
children: m2.activeIcon
|
|
2954
2530
|
}
|
|
2955
2531
|
),
|
|
2956
|
-
/* @__PURE__ */ (0,
|
|
2532
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2957
2533
|
"span",
|
|
2958
2534
|
{
|
|
2959
2535
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -2961,7 +2537,7 @@ function LoginBox({
|
|
|
2961
2537
|
}
|
|
2962
2538
|
)
|
|
2963
2539
|
] }),
|
|
2964
|
-
/* @__PURE__ */ (0,
|
|
2540
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2965
2541
|
ArrowRightIcon,
|
|
2966
2542
|
{
|
|
2967
2543
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -2979,10 +2555,10 @@ function LoginBox({
|
|
|
2979
2555
|
m
|
|
2980
2556
|
);
|
|
2981
2557
|
}) }),
|
|
2982
|
-
methodConfig.methods.length > 0 && /* @__PURE__ */ (0,
|
|
2983
|
-
/* @__PURE__ */ (0,
|
|
2984
|
-
/* @__PURE__ */ (0,
|
|
2985
|
-
return /* @__PURE__ */ (0,
|
|
2558
|
+
methodConfig.methods.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-other", children: [
|
|
2559
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_intl6.FormattedMessage, { id: "otherLoginMethods" }) }),
|
|
2560
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
|
|
2561
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2986
2562
|
"div",
|
|
2987
2563
|
{
|
|
2988
2564
|
className: "matchid-login-method-item",
|
|
@@ -2995,7 +2571,7 @@ function LoginBox({
|
|
|
2995
2571
|
}) })
|
|
2996
2572
|
] })
|
|
2997
2573
|
] }),
|
|
2998
|
-
/* @__PURE__ */ (0,
|
|
2574
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2999
2575
|
EmailModal,
|
|
3000
2576
|
{
|
|
3001
2577
|
isOpen: emailOpen,
|
|
@@ -3011,56 +2587,56 @@ function LoginBox({
|
|
|
3011
2587
|
}
|
|
3012
2588
|
|
|
3013
2589
|
// src/components/LoginButton/index.tsx
|
|
3014
|
-
var
|
|
2590
|
+
var import_react19 = require("react");
|
|
3015
2591
|
|
|
3016
2592
|
// src/components/LoginPanel/index.tsx
|
|
3017
|
-
var
|
|
3018
|
-
var
|
|
2593
|
+
var import_react_intl7 = require("react-intl");
|
|
2594
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
3019
2595
|
function LoginPanel({
|
|
3020
2596
|
header,
|
|
3021
2597
|
onClose,
|
|
3022
2598
|
...props
|
|
3023
2599
|
}) {
|
|
3024
2600
|
const isDownMd = useDownMd();
|
|
3025
|
-
return /* @__PURE__ */ (0,
|
|
3026
|
-
header ? header : /* @__PURE__ */ (0,
|
|
3027
|
-
/* @__PURE__ */ (0,
|
|
3028
|
-
/* @__PURE__ */ (0,
|
|
3029
|
-
/* @__PURE__ */ (0,
|
|
2601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel", children: [
|
|
2602
|
+
header ? header : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header", children: [
|
|
2603
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header-content", children: [
|
|
2604
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl7.FormattedMessage, { id: "loginTitle" }) }),
|
|
2605
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl7.FormattedMessage, { id: "loginTips" }) })
|
|
3030
2606
|
] }),
|
|
3031
|
-
onClose && /* @__PURE__ */ (0,
|
|
2607
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
3032
2608
|
] }),
|
|
3033
|
-
/* @__PURE__ */ (0,
|
|
3034
|
-
/* @__PURE__ */ (0,
|
|
2609
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-divide" }),
|
|
2610
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoginBox, { ...props }) })
|
|
3035
2611
|
] });
|
|
3036
2612
|
}
|
|
3037
2613
|
|
|
3038
2614
|
// src/components/LoginModal/index.tsx
|
|
3039
|
-
var
|
|
2615
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
3040
2616
|
function LoginModal({
|
|
3041
2617
|
isOpen = false,
|
|
3042
2618
|
width = 480,
|
|
3043
2619
|
...props
|
|
3044
2620
|
}) {
|
|
3045
2621
|
const { isLogin } = useUserInfo();
|
|
3046
|
-
return /* @__PURE__ */ (0,
|
|
2622
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
3047
2623
|
Modal,
|
|
3048
2624
|
{
|
|
3049
2625
|
isOpen: isOpen && !isLogin,
|
|
3050
2626
|
width,
|
|
3051
|
-
children: /* @__PURE__ */ (0,
|
|
2627
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LoginPanel, { ...props, inModal: true })
|
|
3052
2628
|
}
|
|
3053
2629
|
);
|
|
3054
2630
|
}
|
|
3055
2631
|
|
|
3056
2632
|
// src/components/UserPopover/index.tsx
|
|
3057
|
-
var
|
|
2633
|
+
var import_react18 = require("react");
|
|
3058
2634
|
|
|
3059
2635
|
// src/assets/icon/ProfileIcon.tsx
|
|
3060
|
-
var
|
|
2636
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
3061
2637
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
3062
|
-
return /* @__PURE__ */ (0,
|
|
3063
|
-
/* @__PURE__ */ (0,
|
|
2638
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2639
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
3064
2640
|
"path",
|
|
3065
2641
|
{
|
|
3066
2642
|
fillRule: "evenodd",
|
|
@@ -3069,7 +2645,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
3069
2645
|
fill: color
|
|
3070
2646
|
}
|
|
3071
2647
|
),
|
|
3072
|
-
/* @__PURE__ */ (0,
|
|
2648
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
3073
2649
|
"path",
|
|
3074
2650
|
{
|
|
3075
2651
|
fillRule: "evenodd",
|
|
@@ -3082,11 +2658,11 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
3082
2658
|
}
|
|
3083
2659
|
|
|
3084
2660
|
// src/components/UserPopover/index.tsx
|
|
3085
|
-
var
|
|
3086
|
-
var
|
|
2661
|
+
var import_react_intl8 = require("react-intl");
|
|
2662
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
3087
2663
|
function UserContent() {
|
|
3088
2664
|
const { logout, address, username } = useUserInfo();
|
|
3089
|
-
const [logouting, setLogouting] = (0,
|
|
2665
|
+
const [logouting, setLogouting] = (0, import_react18.useState)(false);
|
|
3090
2666
|
const onLogout = async () => {
|
|
3091
2667
|
if (logouting) return;
|
|
3092
2668
|
try {
|
|
@@ -3104,34 +2680,34 @@ function UserContent() {
|
|
|
3104
2680
|
rightIcon,
|
|
3105
2681
|
onClick
|
|
3106
2682
|
}) => {
|
|
3107
|
-
return /* @__PURE__ */ (0,
|
|
3108
|
-
/* @__PURE__ */ (0,
|
|
2683
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
2684
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: `matchid-user-popover-item-content`, children: [
|
|
3109
2685
|
icon,
|
|
3110
|
-
/* @__PURE__ */ (0,
|
|
2686
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "matchid-user-popover-item-text", children })
|
|
3111
2687
|
] }),
|
|
3112
2688
|
rightIcon
|
|
3113
2689
|
] });
|
|
3114
2690
|
};
|
|
3115
2691
|
const UserDivider = () => {
|
|
3116
|
-
return /* @__PURE__ */ (0,
|
|
2692
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: `matchid-user-popover-divider` });
|
|
3117
2693
|
};
|
|
3118
|
-
const [usernameOpen, setUsernameOpen] = (0,
|
|
2694
|
+
const [usernameOpen, setUsernameOpen] = (0, import_react18.useState)(false);
|
|
3119
2695
|
const [copied, setCopied] = useCopyClipboard();
|
|
3120
|
-
const intl = (0,
|
|
3121
|
-
return /* @__PURE__ */ (0,
|
|
3122
|
-
/* @__PURE__ */ (0,
|
|
3123
|
-
/* @__PURE__ */ (0,
|
|
2696
|
+
const intl = (0, import_react_intl8.useIntl)();
|
|
2697
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-content", children: [
|
|
2698
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-list", children: [
|
|
2699
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
3124
2700
|
setCopied(address);
|
|
3125
|
-
}, icon: copied ? /* @__PURE__ */ (0,
|
|
3126
|
-
/* @__PURE__ */ (0,
|
|
3127
|
-
/* @__PURE__ */ (0,
|
|
2701
|
+
}, icon: copied ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
|
|
2702
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserDivider, {}),
|
|
2703
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
3128
2704
|
setUsernameOpen(true);
|
|
3129
|
-
}, icon: /* @__PURE__ */ (0,
|
|
2705
|
+
}, icon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
|
|
3130
2706
|
id: "setUsername"
|
|
3131
2707
|
}) })
|
|
3132
2708
|
] }),
|
|
3133
|
-
/* @__PURE__ */ (0,
|
|
3134
|
-
/* @__PURE__ */ (0,
|
|
2709
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_intl8.FormattedMessage, { id: "disconnect" }) }),
|
|
2710
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
3135
2711
|
setUsernameOpen(false);
|
|
3136
2712
|
}, onSuccess: () => {
|
|
3137
2713
|
setUsernameOpen(false);
|
|
@@ -3142,12 +2718,12 @@ function UserPopover({
|
|
|
3142
2718
|
children,
|
|
3143
2719
|
...props
|
|
3144
2720
|
}) {
|
|
3145
|
-
return /* @__PURE__ */ (0,
|
|
2721
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Popover, { ...props, content: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserContent, {}), children });
|
|
3146
2722
|
}
|
|
3147
2723
|
|
|
3148
2724
|
// src/components/LoginButton/index.tsx
|
|
3149
|
-
var
|
|
3150
|
-
var
|
|
2725
|
+
var import_react_intl9 = require("react-intl");
|
|
2726
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
3151
2727
|
function LoginButton({
|
|
3152
2728
|
loginRender,
|
|
3153
2729
|
methods,
|
|
@@ -3159,12 +2735,12 @@ function LoginButton({
|
|
|
3159
2735
|
walletMethods,
|
|
3160
2736
|
...props
|
|
3161
2737
|
}) {
|
|
3162
|
-
const intl = (0,
|
|
2738
|
+
const intl = (0, import_react_intl9.useIntl)();
|
|
3163
2739
|
const { isLogin, username } = useUserInfo();
|
|
3164
|
-
const [loginOpen, setLoginOpen] = (0,
|
|
2740
|
+
const [loginOpen, setLoginOpen] = (0, import_react19.useState)(false);
|
|
3165
2741
|
if (!isLogin) {
|
|
3166
|
-
return /* @__PURE__ */ (0,
|
|
3167
|
-
/* @__PURE__ */ (0,
|
|
2742
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
2743
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
3168
2744
|
LoginModal,
|
|
3169
2745
|
{
|
|
3170
2746
|
methods,
|
|
@@ -3174,32 +2750,32 @@ function LoginButton({
|
|
|
3174
2750
|
onClose: () => setLoginOpen(false)
|
|
3175
2751
|
}
|
|
3176
2752
|
),
|
|
3177
|
-
/* @__PURE__ */ (0,
|
|
3178
|
-
/* @__PURE__ */ (0,
|
|
3179
|
-
/* @__PURE__ */ (0,
|
|
2753
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
2754
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UnLoginIcon_default, {}),
|
|
2755
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_intl9.FormattedMessage, { id: "login" }) })
|
|
3180
2756
|
] })
|
|
3181
2757
|
] });
|
|
3182
2758
|
}
|
|
3183
|
-
return loginRender ? /* @__PURE__ */ (0,
|
|
3184
|
-
/* @__PURE__ */ (0,
|
|
3185
|
-
/* @__PURE__ */ (0,
|
|
2759
|
+
return loginRender ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_jsx_runtime67.Fragment, { children: loginRender }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
|
|
2760
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(LoginIcon_default, {}),
|
|
2761
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
3186
2762
|
id: "user"
|
|
3187
2763
|
}) })
|
|
3188
2764
|
] }) });
|
|
3189
2765
|
}
|
|
3190
2766
|
|
|
3191
2767
|
// src/components/UsernameModal/index.tsx
|
|
3192
|
-
var
|
|
2768
|
+
var import_react20 = require("react");
|
|
3193
2769
|
|
|
3194
2770
|
// src/assets/icon/InfoRoundIcon.tsx
|
|
3195
|
-
var
|
|
2771
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
3196
2772
|
function InfoRoundIcon({
|
|
3197
2773
|
size,
|
|
3198
2774
|
color = "#6E6E6E",
|
|
3199
2775
|
...props
|
|
3200
2776
|
}) {
|
|
3201
|
-
return /* @__PURE__ */ (0,
|
|
3202
|
-
/* @__PURE__ */ (0,
|
|
2777
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
2778
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
3203
2779
|
"path",
|
|
3204
2780
|
{
|
|
3205
2781
|
fillRule: "evenodd",
|
|
@@ -3208,21 +2784,21 @@ function InfoRoundIcon({
|
|
|
3208
2784
|
fill: color
|
|
3209
2785
|
}
|
|
3210
2786
|
) }),
|
|
3211
|
-
/* @__PURE__ */ (0,
|
|
2787
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
3212
2788
|
] });
|
|
3213
2789
|
}
|
|
3214
2790
|
|
|
3215
2791
|
// src/components/UsernameModal/index.tsx
|
|
3216
|
-
var
|
|
3217
|
-
var
|
|
2792
|
+
var import_react_intl10 = require("react-intl");
|
|
2793
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
3218
2794
|
var ValidItem = ({
|
|
3219
2795
|
success = false,
|
|
3220
2796
|
text
|
|
3221
2797
|
}) => {
|
|
3222
2798
|
const isDownMd = useDownMd();
|
|
3223
|
-
return /* @__PURE__ */ (0,
|
|
3224
|
-
success ? /* @__PURE__ */ (0,
|
|
3225
|
-
/* @__PURE__ */ (0,
|
|
2799
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
2800
|
+
success ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
2801
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: text })
|
|
3226
2802
|
] });
|
|
3227
2803
|
};
|
|
3228
2804
|
function UsernameModal({
|
|
@@ -3233,23 +2809,23 @@ function UsernameModal({
|
|
|
3233
2809
|
}) {
|
|
3234
2810
|
const { username, refreshOverview } = useUserInfo();
|
|
3235
2811
|
const { isLogin } = useUserInfo();
|
|
3236
|
-
const [val, setVal] = (0,
|
|
3237
|
-
const [error, setError] = (0,
|
|
2812
|
+
const [val, setVal] = (0, import_react20.useState)(username);
|
|
2813
|
+
const [error, setError] = (0, import_react20.useState)("");
|
|
3238
2814
|
const isDownMd = useDownMd();
|
|
3239
|
-
(0,
|
|
2815
|
+
(0, import_react20.useEffect)(() => {
|
|
3240
2816
|
if (isOpen) {
|
|
3241
2817
|
setVal(username);
|
|
3242
2818
|
setError("");
|
|
3243
2819
|
}
|
|
3244
2820
|
}, [isOpen]);
|
|
3245
|
-
const isValid = (0,
|
|
2821
|
+
const isValid = (0, import_react20.useMemo)(() => {
|
|
3246
2822
|
return isValidUsername(val);
|
|
3247
2823
|
}, [val]);
|
|
3248
|
-
const isLength = (0,
|
|
2824
|
+
const isLength = (0, import_react20.useMemo)(() => {
|
|
3249
2825
|
return val.length >= 2 && val.length <= 32;
|
|
3250
2826
|
}, [val]);
|
|
3251
2827
|
const isSafe = isValid && isLength;
|
|
3252
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
2828
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react20.useState)(false);
|
|
3253
2829
|
const onSubmit = async () => {
|
|
3254
2830
|
if (isSubmitting) return;
|
|
3255
2831
|
try {
|
|
@@ -3269,13 +2845,13 @@ function UsernameModal({
|
|
|
3269
2845
|
setIsSubmitting(false);
|
|
3270
2846
|
}
|
|
3271
2847
|
};
|
|
3272
|
-
const intl = (0,
|
|
3273
|
-
return /* @__PURE__ */ (0,
|
|
2848
|
+
const intl = (0, import_react_intl10.useIntl)();
|
|
2849
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
3274
2850
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
3275
|
-
}), children: /* @__PURE__ */ (0,
|
|
3276
|
-
/* @__PURE__ */ (0,
|
|
2851
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-username-box", children: [
|
|
2852
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Field, { label: intl.formatMessage({
|
|
3277
2853
|
id: "username"
|
|
3278
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
2854
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
3279
2855
|
Input,
|
|
3280
2856
|
{
|
|
3281
2857
|
placeholder: intl.formatMessage({
|
|
@@ -3288,8 +2864,8 @@ function UsernameModal({
|
|
|
3288
2864
|
value: val
|
|
3289
2865
|
}
|
|
3290
2866
|
) }),
|
|
3291
|
-
/* @__PURE__ */ (0,
|
|
3292
|
-
/* @__PURE__ */ (0,
|
|
2867
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-valid", children: [
|
|
2868
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
3293
2869
|
ValidItem,
|
|
3294
2870
|
{
|
|
3295
2871
|
success: isValid,
|
|
@@ -3298,21 +2874,21 @@ function UsernameModal({
|
|
|
3298
2874
|
})
|
|
3299
2875
|
}
|
|
3300
2876
|
),
|
|
3301
|
-
/* @__PURE__ */ (0,
|
|
2877
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ValidItem, { success: isLength, text: intl.formatMessage({
|
|
3302
2878
|
id: "usernameLengthError"
|
|
3303
2879
|
}) })
|
|
3304
2880
|
] }),
|
|
3305
|
-
/* @__PURE__ */ (0,
|
|
2881
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { disabled: !isSafe, loading: isSubmitting, style: {
|
|
3306
2882
|
marginTop: isDownMd ? "36px" : "64px"
|
|
3307
|
-
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
3308
|
-
/* @__PURE__ */ (0,
|
|
2883
|
+
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl10.FormattedMessage, { id: "confirm" }) }),
|
|
2884
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { style: {
|
|
3309
2885
|
marginTop: isDownMd ? "12px" : "24px"
|
|
3310
|
-
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0,
|
|
2886
|
+
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl10.FormattedMessage, { id: "cancel" }) })
|
|
3311
2887
|
] }) });
|
|
3312
2888
|
}
|
|
3313
2889
|
|
|
3314
2890
|
// src/components/SOLModal/index.tsx
|
|
3315
|
-
var
|
|
2891
|
+
var import_react22 = __toESM(require("react"));
|
|
3316
2892
|
var import_web3 = require("@solana/web3.js");
|
|
3317
2893
|
var import_wallet_adapter_react = require("@solana/wallet-adapter-react");
|
|
3318
2894
|
var import_wallet_adapter_react_ui = require("@solana/wallet-adapter-react-ui");
|
|
@@ -3328,10 +2904,10 @@ var WalletAdapterNetwork;
|
|
|
3328
2904
|
// src/components/SOLModal/index.tsx
|
|
3329
2905
|
var import_wallet_adapter_wallets = require("@solana/wallet-adapter-wallets");
|
|
3330
2906
|
var import_styles = require("@solana/wallet-adapter-react-ui/styles.css");
|
|
3331
|
-
var
|
|
2907
|
+
var import_react_intl11 = require("react-intl");
|
|
3332
2908
|
|
|
3333
2909
|
// src/components/WalletModalContent/index.tsx
|
|
3334
|
-
var
|
|
2910
|
+
var import_react21 = require("react");
|
|
3335
2911
|
|
|
3336
2912
|
// src/assets/wallet.ts
|
|
3337
2913
|
var walletErrorImage = "data:image/png;base64,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";
|
|
@@ -3341,7 +2917,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
3341
2917
|
var walletSigningImage = "data:image/png;base64,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";
|
|
3342
2918
|
|
|
3343
2919
|
// src/components/WalletModalContent/index.tsx
|
|
3344
|
-
var
|
|
2920
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
3345
2921
|
function WalletModalContent({
|
|
3346
2922
|
status,
|
|
3347
2923
|
error,
|
|
@@ -3352,7 +2928,7 @@ function WalletModalContent({
|
|
|
3352
2928
|
address,
|
|
3353
2929
|
connected
|
|
3354
2930
|
}) {
|
|
3355
|
-
const pageData = (0,
|
|
2931
|
+
const pageData = (0, import_react21.useMemo)(() => {
|
|
3356
2932
|
if (status == "success") {
|
|
3357
2933
|
return {
|
|
3358
2934
|
btnText: "Disconnect Wallet",
|
|
@@ -3411,12 +2987,12 @@ function WalletModalContent({
|
|
|
3411
2987
|
statusImage: walletConnectImage
|
|
3412
2988
|
};
|
|
3413
2989
|
}, [visible, connected, status, error, address]);
|
|
3414
|
-
return /* @__PURE__ */ (0,
|
|
3415
|
-
/* @__PURE__ */ (0,
|
|
3416
|
-
/* @__PURE__ */ (0,
|
|
3417
|
-
/* @__PURE__ */ (0,
|
|
2990
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: `matchid-wallet-box`, children: [
|
|
2991
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: `matchid-wallet-content`, children: [
|
|
2992
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("img", { src: pageData.statusImage }),
|
|
2993
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
3418
2994
|
] }),
|
|
3419
|
-
/* @__PURE__ */ (0,
|
|
2995
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
3420
2996
|
Button,
|
|
3421
2997
|
{
|
|
3422
2998
|
block: true,
|
|
@@ -3431,7 +3007,7 @@ function WalletModalContent({
|
|
|
3431
3007
|
}
|
|
3432
3008
|
|
|
3433
3009
|
// src/components/SOLModal/index.tsx
|
|
3434
|
-
var
|
|
3010
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
3435
3011
|
function WalletContent({
|
|
3436
3012
|
onSuccess,
|
|
3437
3013
|
type
|
|
@@ -3439,17 +3015,17 @@ function WalletContent({
|
|
|
3439
3015
|
const { setVisible, visible } = (0, import_wallet_adapter_react_ui.useWalletModal)();
|
|
3440
3016
|
const wallet = (0, import_wallet_adapter_react.useWallet)();
|
|
3441
3017
|
const { events, login } = useMatch();
|
|
3442
|
-
const [status, setStatus] = (0,
|
|
3443
|
-
const statusRef =
|
|
3444
|
-
const [error, setError] = (0,
|
|
3445
|
-
(0,
|
|
3018
|
+
const [status, setStatus] = (0, import_react22.useState)("");
|
|
3019
|
+
const statusRef = import_react22.default.useRef(status);
|
|
3020
|
+
const [error, setError] = (0, import_react22.useState)("");
|
|
3021
|
+
(0, import_react22.useEffect)(() => {
|
|
3446
3022
|
const init = async () => {
|
|
3447
3023
|
await wallet.disconnect();
|
|
3448
3024
|
setVisible(true);
|
|
3449
3025
|
};
|
|
3450
3026
|
init();
|
|
3451
3027
|
}, []);
|
|
3452
|
-
(0,
|
|
3028
|
+
(0, import_react22.useEffect)(() => {
|
|
3453
3029
|
if (wallet.connected) {
|
|
3454
3030
|
console.log("wallet.connected", wallet.connected);
|
|
3455
3031
|
toLoginInWallet();
|
|
@@ -3513,7 +3089,7 @@ function WalletContent({
|
|
|
3513
3089
|
statusRef.current = "";
|
|
3514
3090
|
}
|
|
3515
3091
|
};
|
|
3516
|
-
return /* @__PURE__ */ (0,
|
|
3092
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
3517
3093
|
WalletModalContent,
|
|
3518
3094
|
{
|
|
3519
3095
|
connected: wallet.connected,
|
|
@@ -3573,20 +3149,20 @@ function SOLConnectModal({
|
|
|
3573
3149
|
onSuccess,
|
|
3574
3150
|
...props
|
|
3575
3151
|
}) {
|
|
3576
|
-
const intl = (0,
|
|
3577
|
-
return /* @__PURE__ */ (0,
|
|
3152
|
+
const intl = (0, import_react_intl11.useIntl)();
|
|
3153
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3578
3154
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3579
3155
|
}, {
|
|
3580
3156
|
name: "SOL"
|
|
3581
|
-
}), children: /* @__PURE__ */ (0,
|
|
3157
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react.ConnectionProvider, { endpoint: (0, import_web3.clusterApiUrl)("devnet"), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react.WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react_ui.WalletModalProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(WalletContent, { onSuccess, type }) }) }) }) });
|
|
3582
3158
|
}
|
|
3583
3159
|
function SOLModal(props) {
|
|
3584
|
-
return props.isOpen && /* @__PURE__ */ (0,
|
|
3160
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SOLConnectModal, { ...props });
|
|
3585
3161
|
}
|
|
3586
3162
|
|
|
3587
3163
|
// src/components/TRONModal/index.tsx
|
|
3588
|
-
var
|
|
3589
|
-
var
|
|
3164
|
+
var import_react24 = __toESM(require("react"));
|
|
3165
|
+
var import_react_intl12 = require("react-intl");
|
|
3590
3166
|
|
|
3591
3167
|
// src/lib/tron/TronLinkAdapter.ts
|
|
3592
3168
|
var TronLinkAdapter = class {
|
|
@@ -3619,7 +3195,7 @@ var TronLinkAdapter = class {
|
|
|
3619
3195
|
};
|
|
3620
3196
|
|
|
3621
3197
|
// src/hooks/useTRONWallet.ts
|
|
3622
|
-
var
|
|
3198
|
+
var import_react23 = require("react");
|
|
3623
3199
|
|
|
3624
3200
|
// src/lib/tron/BitgetAdapter.ts
|
|
3625
3201
|
var BitgetAdapter = class {
|
|
@@ -3664,9 +3240,9 @@ var OKXAdapter = class {
|
|
|
3664
3240
|
// src/hooks/useTRONWallet.ts
|
|
3665
3241
|
var useTRONWallet = () => {
|
|
3666
3242
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
3667
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3668
|
-
const [address, setAddress] = (0,
|
|
3669
|
-
(0,
|
|
3243
|
+
const [installedWallets, setInstalledWallets] = (0, import_react23.useState)([]);
|
|
3244
|
+
const [address, setAddress] = (0, import_react23.useState)(null);
|
|
3245
|
+
(0, import_react23.useEffect)(() => {
|
|
3670
3246
|
const getInstalled = async () => {
|
|
3671
3247
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3672
3248
|
wallet: wallet2,
|
|
@@ -3676,11 +3252,11 @@ var useTRONWallet = () => {
|
|
|
3676
3252
|
};
|
|
3677
3253
|
getInstalled();
|
|
3678
3254
|
}, []);
|
|
3679
|
-
const [wallet, chooseWallet] = (0,
|
|
3255
|
+
const [wallet, chooseWallet] = (0, import_react23.useState)(null);
|
|
3680
3256
|
const onConnect = async () => {
|
|
3681
3257
|
setAddress(await wallet.connect());
|
|
3682
3258
|
};
|
|
3683
|
-
(0,
|
|
3259
|
+
(0, import_react23.useEffect)(() => {
|
|
3684
3260
|
if (!wallet) {
|
|
3685
3261
|
setAddress(null);
|
|
3686
3262
|
}
|
|
@@ -3696,25 +3272,25 @@ var useTRONWallet = () => {
|
|
|
3696
3272
|
};
|
|
3697
3273
|
|
|
3698
3274
|
// src/components/TRONModal/index.tsx
|
|
3699
|
-
var
|
|
3275
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
3700
3276
|
function TRONConnectModal({
|
|
3701
3277
|
type = "login",
|
|
3702
3278
|
onSuccess,
|
|
3703
3279
|
...props
|
|
3704
3280
|
}) {
|
|
3705
3281
|
const isDownMd = useDownMd();
|
|
3706
|
-
const intl = (0,
|
|
3282
|
+
const intl = (0, import_react_intl12.useIntl)();
|
|
3707
3283
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
|
|
3708
3284
|
const iconMaps = {
|
|
3709
|
-
tronlink: /* @__PURE__ */ (0,
|
|
3710
|
-
bitget: /* @__PURE__ */ (0,
|
|
3711
|
-
okx: /* @__PURE__ */ (0,
|
|
3285
|
+
tronlink: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
|
|
3286
|
+
bitget: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(BitgetIcon, { size: isDownMd ? 36 : 40 }),
|
|
3287
|
+
okx: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
3712
3288
|
};
|
|
3713
3289
|
const { events, login } = useMatch();
|
|
3714
|
-
const [status, setStatus] = (0,
|
|
3715
|
-
const statusRef =
|
|
3716
|
-
const [error, setError] = (0,
|
|
3717
|
-
const connected = (0,
|
|
3290
|
+
const [status, setStatus] = (0, import_react24.useState)("");
|
|
3291
|
+
const statusRef = import_react24.default.useRef(status);
|
|
3292
|
+
const [error, setError] = (0, import_react24.useState)("");
|
|
3293
|
+
const connected = (0, import_react24.useMemo)(() => {
|
|
3718
3294
|
return !!address;
|
|
3719
3295
|
}, [address]);
|
|
3720
3296
|
const disconnect = async () => {
|
|
@@ -3782,7 +3358,7 @@ function TRONConnectModal({
|
|
|
3782
3358
|
statusRef.current = "";
|
|
3783
3359
|
}
|
|
3784
3360
|
};
|
|
3785
|
-
(0,
|
|
3361
|
+
(0, import_react24.useEffect)(() => {
|
|
3786
3362
|
if (wallet) {
|
|
3787
3363
|
console.log("onConnect");
|
|
3788
3364
|
onConnect();
|
|
@@ -3790,21 +3366,21 @@ function TRONConnectModal({
|
|
|
3790
3366
|
setStatus("");
|
|
3791
3367
|
}
|
|
3792
3368
|
}, [wallet]);
|
|
3793
|
-
(0,
|
|
3369
|
+
(0, import_react24.useEffect)(() => {
|
|
3794
3370
|
if (address) {
|
|
3795
3371
|
toLoginInWallet();
|
|
3796
3372
|
}
|
|
3797
3373
|
}, [address]);
|
|
3798
|
-
(0,
|
|
3374
|
+
(0, import_react24.useEffect)(() => {
|
|
3799
3375
|
if (!props.isOpen) {
|
|
3800
3376
|
disconnect();
|
|
3801
3377
|
}
|
|
3802
3378
|
}, [props.isOpen]);
|
|
3803
|
-
return /* @__PURE__ */ (0,
|
|
3379
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3804
3380
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3805
3381
|
}, {
|
|
3806
3382
|
name: "TRON"
|
|
3807
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
3383
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3808
3384
|
WalletModalContent,
|
|
3809
3385
|
{
|
|
3810
3386
|
error,
|
|
@@ -3817,9 +3393,9 @@ function TRONConnectModal({
|
|
|
3817
3393
|
setVisible: () => {
|
|
3818
3394
|
}
|
|
3819
3395
|
}
|
|
3820
|
-
) : /* @__PURE__ */ (0,
|
|
3396
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
3821
3397
|
installedWallets.map((wallet2) => {
|
|
3822
|
-
return /* @__PURE__ */ (0,
|
|
3398
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3823
3399
|
RecommendItem,
|
|
3824
3400
|
{
|
|
3825
3401
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -3832,14 +3408,14 @@ function TRONConnectModal({
|
|
|
3832
3408
|
);
|
|
3833
3409
|
}),
|
|
3834
3410
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
3835
|
-
return /* @__PURE__ */ (0,
|
|
3411
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3836
3412
|
RecommendItem,
|
|
3837
3413
|
{
|
|
3838
3414
|
icon: iconMaps[wallet2.walletKey],
|
|
3839
3415
|
name: wallet2.name,
|
|
3840
3416
|
onClick: () => {
|
|
3841
3417
|
},
|
|
3842
|
-
footer: /* @__PURE__ */ (0,
|
|
3418
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Button, { size: "sm", onClick: () => {
|
|
3843
3419
|
window.open(wallet2.website);
|
|
3844
3420
|
}, children: "Install" })
|
|
3845
3421
|
},
|
|
@@ -3849,28 +3425,28 @@ function TRONConnectModal({
|
|
|
3849
3425
|
] }) }) });
|
|
3850
3426
|
}
|
|
3851
3427
|
function TRONModal(props) {
|
|
3852
|
-
return props.isOpen && /* @__PURE__ */ (0,
|
|
3428
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TRONConnectModal, { ...props, type: props.type });
|
|
3853
3429
|
}
|
|
3854
3430
|
|
|
3855
3431
|
// src/components/TONModal/index.tsx
|
|
3856
|
-
var
|
|
3857
|
-
var
|
|
3432
|
+
var import_react25 = __toESM(require("react"));
|
|
3433
|
+
var import_react_intl13 = require("react-intl");
|
|
3858
3434
|
var import_ui_react = require("@tonconnect/ui-react");
|
|
3859
|
-
var
|
|
3435
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
3860
3436
|
function WalletContent2({
|
|
3861
3437
|
onSuccess,
|
|
3862
3438
|
type
|
|
3863
3439
|
}) {
|
|
3864
3440
|
const { events, login } = useMatch();
|
|
3865
|
-
const [connected, setConnected] = (0,
|
|
3441
|
+
const [connected, setConnected] = (0, import_react25.useState)(false);
|
|
3866
3442
|
const wallet = (0, import_ui_react.useTonWallet)();
|
|
3867
3443
|
const userFriendlyAddress = (0, import_ui_react.useTonAddress)();
|
|
3868
3444
|
const [tonConnectUI] = (0, import_ui_react.useTonConnectUI)();
|
|
3869
3445
|
const { state, open, close } = (0, import_ui_react.useTonConnectModal)();
|
|
3870
|
-
const [status, setStatus] = (0,
|
|
3871
|
-
const statusRef =
|
|
3872
|
-
const [error, setError] = (0,
|
|
3873
|
-
(0,
|
|
3446
|
+
const [status, setStatus] = (0, import_react25.useState)("");
|
|
3447
|
+
const statusRef = import_react25.default.useRef(status);
|
|
3448
|
+
const [error, setError] = (0, import_react25.useState)("");
|
|
3449
|
+
(0, import_react25.useEffect)(() => {
|
|
3874
3450
|
const init = async () => {
|
|
3875
3451
|
if (wallet) {
|
|
3876
3452
|
await tonConnectUI.disconnect();
|
|
@@ -3943,7 +3519,7 @@ function WalletContent2({
|
|
|
3943
3519
|
}
|
|
3944
3520
|
});
|
|
3945
3521
|
}, []);
|
|
3946
|
-
(0,
|
|
3522
|
+
(0, import_react25.useEffect)(() => {
|
|
3947
3523
|
if (wallet) {
|
|
3948
3524
|
setConnected(true);
|
|
3949
3525
|
console.log("Wallet connected:", wallet);
|
|
@@ -3954,7 +3530,7 @@ function WalletContent2({
|
|
|
3954
3530
|
setStatus("");
|
|
3955
3531
|
}
|
|
3956
3532
|
}, [wallet]);
|
|
3957
|
-
(0,
|
|
3533
|
+
(0, import_react25.useEffect)(() => {
|
|
3958
3534
|
console.log({
|
|
3959
3535
|
state,
|
|
3960
3536
|
wallet
|
|
@@ -3983,7 +3559,7 @@ function WalletContent2({
|
|
|
3983
3559
|
}
|
|
3984
3560
|
}
|
|
3985
3561
|
}, [state]);
|
|
3986
|
-
return /* @__PURE__ */ (0,
|
|
3562
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
3987
3563
|
WalletModalContent,
|
|
3988
3564
|
{
|
|
3989
3565
|
connected,
|
|
@@ -4014,28 +3590,28 @@ function TONConnectModal({
|
|
|
4014
3590
|
onSuccess,
|
|
4015
3591
|
...props
|
|
4016
3592
|
}) {
|
|
4017
|
-
const intl = (0,
|
|
3593
|
+
const intl = (0, import_react_intl13.useIntl)();
|
|
4018
3594
|
const { endpoints, appid } = useLocalStore_default();
|
|
4019
3595
|
const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
|
|
4020
|
-
return /* @__PURE__ */ (0,
|
|
3596
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
4021
3597
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
4022
3598
|
}, {
|
|
4023
3599
|
name: "TON"
|
|
4024
|
-
}), children: /* @__PURE__ */ (0,
|
|
3600
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
4025
3601
|
import_ui_react.TonConnectUIProvider,
|
|
4026
3602
|
{
|
|
4027
3603
|
manifestUrl,
|
|
4028
|
-
children: /* @__PURE__ */ (0,
|
|
3604
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(WalletContent2, { onSuccess, type })
|
|
4029
3605
|
}
|
|
4030
3606
|
) });
|
|
4031
3607
|
}
|
|
4032
3608
|
function TONModal(props) {
|
|
4033
|
-
return props.isOpen && /* @__PURE__ */ (0,
|
|
3609
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(TONConnectModal, { ...props });
|
|
4034
3610
|
}
|
|
4035
3611
|
|
|
4036
3612
|
// src/components/BTCModal/index.tsx
|
|
4037
|
-
var
|
|
4038
|
-
var
|
|
3613
|
+
var import_react27 = __toESM(require("react"));
|
|
3614
|
+
var import_react_intl14 = require("react-intl");
|
|
4039
3615
|
|
|
4040
3616
|
// src/lib/btc/UnisatAdapter.ts
|
|
4041
3617
|
var UnisatAdapter = class {
|
|
@@ -4183,12 +3759,12 @@ var LeatherAdapter = class {
|
|
|
4183
3759
|
};
|
|
4184
3760
|
|
|
4185
3761
|
// src/hooks/useBTCWallet.ts
|
|
4186
|
-
var
|
|
3762
|
+
var import_react26 = require("react");
|
|
4187
3763
|
var useBTCWallet = () => {
|
|
4188
3764
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
4189
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
4190
|
-
const [address, setAddress] = (0,
|
|
4191
|
-
(0,
|
|
3765
|
+
const [installedWallets, setInstalledWallets] = (0, import_react26.useState)([]);
|
|
3766
|
+
const [address, setAddress] = (0, import_react26.useState)(null);
|
|
3767
|
+
(0, import_react26.useEffect)(() => {
|
|
4192
3768
|
const getInstalled = async () => {
|
|
4193
3769
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
4194
3770
|
wallet: wallet2,
|
|
@@ -4198,11 +3774,11 @@ var useBTCWallet = () => {
|
|
|
4198
3774
|
};
|
|
4199
3775
|
getInstalled();
|
|
4200
3776
|
}, []);
|
|
4201
|
-
const [wallet, chooseWallet] = (0,
|
|
3777
|
+
const [wallet, chooseWallet] = (0, import_react26.useState)(null);
|
|
4202
3778
|
const onConnect = async () => {
|
|
4203
3779
|
setAddress(await wallet.connect());
|
|
4204
3780
|
};
|
|
4205
|
-
(0,
|
|
3781
|
+
(0, import_react26.useEffect)(() => {
|
|
4206
3782
|
if (!wallet) {
|
|
4207
3783
|
setAddress(null);
|
|
4208
3784
|
}
|
|
@@ -4218,25 +3794,25 @@ var useBTCWallet = () => {
|
|
|
4218
3794
|
};
|
|
4219
3795
|
|
|
4220
3796
|
// src/components/BTCModal/index.tsx
|
|
4221
|
-
var
|
|
3797
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
4222
3798
|
function BTCConnectModal({
|
|
4223
3799
|
type = "login",
|
|
4224
3800
|
onSuccess,
|
|
4225
3801
|
...props
|
|
4226
3802
|
}) {
|
|
4227
3803
|
const isDownMd = useDownMd();
|
|
4228
|
-
const intl = (0,
|
|
3804
|
+
const intl = (0, import_react_intl14.useIntl)();
|
|
4229
3805
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
|
|
4230
3806
|
const iconMaps = {
|
|
4231
|
-
leather: /* @__PURE__ */ (0,
|
|
4232
|
-
unisat: /* @__PURE__ */ (0,
|
|
4233
|
-
xverse: /* @__PURE__ */ (0,
|
|
3807
|
+
leather: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(LeatherIcon, { size: isDownMd ? 36 : 40 }),
|
|
3808
|
+
unisat: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(UnisatIcon, { size: isDownMd ? 36 : 40 }),
|
|
3809
|
+
xverse: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
4234
3810
|
};
|
|
4235
3811
|
const { events, login } = useMatch();
|
|
4236
|
-
const [status, setStatus] = (0,
|
|
4237
|
-
const statusRef =
|
|
4238
|
-
const [error, setError] = (0,
|
|
4239
|
-
const connected = (0,
|
|
3812
|
+
const [status, setStatus] = (0, import_react27.useState)("");
|
|
3813
|
+
const statusRef = import_react27.default.useRef(status);
|
|
3814
|
+
const [error, setError] = (0, import_react27.useState)("");
|
|
3815
|
+
const connected = (0, import_react27.useMemo)(() => {
|
|
4240
3816
|
return !!address;
|
|
4241
3817
|
}, [address]);
|
|
4242
3818
|
const disconnect = async () => {
|
|
@@ -4300,7 +3876,7 @@ function BTCConnectModal({
|
|
|
4300
3876
|
statusRef.current = "";
|
|
4301
3877
|
}
|
|
4302
3878
|
};
|
|
4303
|
-
(0,
|
|
3879
|
+
(0, import_react27.useEffect)(() => {
|
|
4304
3880
|
if (wallet) {
|
|
4305
3881
|
console.log("onConnect");
|
|
4306
3882
|
try {
|
|
@@ -4313,12 +3889,12 @@ function BTCConnectModal({
|
|
|
4313
3889
|
setStatus("");
|
|
4314
3890
|
}
|
|
4315
3891
|
}, [wallet]);
|
|
4316
|
-
(0,
|
|
3892
|
+
(0, import_react27.useEffect)(() => {
|
|
4317
3893
|
if (address) {
|
|
4318
3894
|
toLoginInWallet();
|
|
4319
3895
|
}
|
|
4320
3896
|
}, [address]);
|
|
4321
|
-
(0,
|
|
3897
|
+
(0, import_react27.useEffect)(() => {
|
|
4322
3898
|
if (!props.isOpen) {
|
|
4323
3899
|
disconnect();
|
|
4324
3900
|
}
|
|
@@ -4330,11 +3906,11 @@ function BTCConnectModal({
|
|
|
4330
3906
|
statusRef.current = "";
|
|
4331
3907
|
setError("");
|
|
4332
3908
|
};
|
|
4333
|
-
return /* @__PURE__ */ (0,
|
|
3909
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
4334
3910
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
4335
3911
|
}, {
|
|
4336
3912
|
name: "BTC"
|
|
4337
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
3913
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
4338
3914
|
WalletModalContent,
|
|
4339
3915
|
{
|
|
4340
3916
|
error,
|
|
@@ -4347,9 +3923,9 @@ function BTCConnectModal({
|
|
|
4347
3923
|
setVisible: () => {
|
|
4348
3924
|
}
|
|
4349
3925
|
}
|
|
4350
|
-
) : /* @__PURE__ */ (0,
|
|
3926
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
4351
3927
|
installedWallets.map((wallet2) => {
|
|
4352
|
-
return /* @__PURE__ */ (0,
|
|
3928
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
4353
3929
|
RecommendItem,
|
|
4354
3930
|
{
|
|
4355
3931
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -4362,14 +3938,14 @@ function BTCConnectModal({
|
|
|
4362
3938
|
);
|
|
4363
3939
|
}),
|
|
4364
3940
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
4365
|
-
return /* @__PURE__ */ (0,
|
|
3941
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
4366
3942
|
RecommendItem,
|
|
4367
3943
|
{
|
|
4368
3944
|
icon: iconMaps[wallet2.walletKey],
|
|
4369
3945
|
name: wallet2.name,
|
|
4370
3946
|
onClick: () => {
|
|
4371
3947
|
},
|
|
4372
|
-
footer: /* @__PURE__ */ (0,
|
|
3948
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { size: "sm", onClick: () => {
|
|
4373
3949
|
window.open(wallet2.website);
|
|
4374
3950
|
}, children: "Install" })
|
|
4375
3951
|
},
|
|
@@ -4379,23 +3955,23 @@ function BTCConnectModal({
|
|
|
4379
3955
|
] }) }) });
|
|
4380
3956
|
}
|
|
4381
3957
|
function BTCModal(props) {
|
|
4382
|
-
return props.isOpen && /* @__PURE__ */ (0,
|
|
3958
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(BTCConnectModal, { ...props });
|
|
4383
3959
|
}
|
|
4384
3960
|
|
|
4385
3961
|
// src/components/WalletModal/index.tsx
|
|
4386
|
-
var
|
|
4387
|
-
var
|
|
4388
|
-
var
|
|
3962
|
+
var import_react28 = require("react");
|
|
3963
|
+
var import_react_intl15 = require("react-intl");
|
|
3964
|
+
var import_jsx_runtime75 = require("react/jsx-runtime");
|
|
4389
3965
|
function WalletConnectModal({
|
|
4390
3966
|
type,
|
|
4391
3967
|
methods: _methods,
|
|
4392
3968
|
...props
|
|
4393
3969
|
}) {
|
|
4394
|
-
const intl = (0,
|
|
3970
|
+
const intl = (0, import_react_intl15.useIntl)();
|
|
4395
3971
|
const { walletMap } = useWalletConfig();
|
|
4396
3972
|
const { bind, login } = useUserInfo();
|
|
4397
3973
|
const config = useAppConfig();
|
|
4398
|
-
const methods = (0,
|
|
3974
|
+
const methods = (0, import_react28.useMemo)(() => {
|
|
4399
3975
|
if (_methods) return _methods;
|
|
4400
3976
|
if (!config.platform) {
|
|
4401
3977
|
return [];
|
|
@@ -4403,13 +3979,13 @@ function WalletConnectModal({
|
|
|
4403
3979
|
const platform = config.platform.map((p) => p.toLowerCase());
|
|
4404
3980
|
return WALLET_METHODS.filter((m) => platform.includes(m));
|
|
4405
3981
|
}, [config.platform, _methods]);
|
|
4406
|
-
return /* @__PURE__ */ (0,
|
|
3982
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
4407
3983
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
4408
3984
|
}, {
|
|
4409
3985
|
name: ""
|
|
4410
|
-
}), children: /* @__PURE__ */ (0,
|
|
3986
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime75.jsx)("div", { className: "matchid-login-recommend-list", children: methods.map((method, index) => {
|
|
4411
3987
|
const m = walletMap[method];
|
|
4412
|
-
return /* @__PURE__ */ (0,
|
|
3988
|
+
return /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(
|
|
4413
3989
|
RecommendItem,
|
|
4414
3990
|
{
|
|
4415
3991
|
icon: m?.icon,
|
|
@@ -4423,7 +3999,7 @@ function WalletConnectModal({
|
|
|
4423
3999
|
}) }) }) });
|
|
4424
4000
|
}
|
|
4425
4001
|
function WalletModal(props) {
|
|
4426
|
-
return props.isOpen && /* @__PURE__ */ (0,
|
|
4002
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime75.jsx)(WalletConnectModal, { ...props });
|
|
4427
4003
|
}
|
|
4428
4004
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4429
4005
|
0 && (module.exports = {
|
|
@@ -4439,7 +4015,6 @@ function WalletModal(props) {
|
|
|
4439
4015
|
Modal,
|
|
4440
4016
|
ModalWithHeader,
|
|
4441
4017
|
Overlay,
|
|
4442
|
-
PasswordModal,
|
|
4443
4018
|
Popover,
|
|
4444
4019
|
SOLModal,
|
|
4445
4020
|
TONModal,
|