@matchain/matchid-sdk-react 0.1.42-alpha.1 → 0.1.42-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icon/index.d.mts +1 -1
- package/dist/assets/icon/index.d.ts +1 -1
- package/dist/{chunk-U5KWO2YJ.mjs → chunk-N53ZMW5C.mjs} +2 -2
- package/dist/chunk-SQIJR7RA.mjs +29 -0
- package/dist/chunk-SQIJR7RA.mjs.map +1 -0
- package/dist/chunk-YG4MNAUD.mjs +4662 -0
- package/dist/chunk-YG4MNAUD.mjs.map +1 -0
- package/dist/components/index.d.mts +3 -2
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.js +676 -453
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +4 -1
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +120 -76
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +3 -2
- package/dist/hooks/index.d.mts +5 -2
- package/dist/hooks/index.d.ts +5 -2
- package/dist/hooks/index.js +328 -145
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +2 -1
- package/dist/index-BxS06a5O.d.ts +50 -0
- package/dist/{index-Dq9Swg8r.d.ts → index-Ca9nh_8s.d.ts} +1 -1
- package/dist/{index-COlsBC-b.d.mts → index-CmH9iRLd.d.mts} +25 -12
- package/dist/{index-C3KZYrtu.d.mts → index-DFZpfAfc.d.mts} +1 -1
- package/dist/index-DKMrpRJC.d.ts +137 -0
- package/dist/{index-fS75Swm8.d.ts → index-DY_ReBra.d.ts} +25 -12
- package/dist/index-q5XDobUF.d.mts +50 -0
- package/dist/index-sOVSnYF4.d.mts +137 -0
- package/dist/index.css +84 -4
- package/dist/index.d.mts +9 -4
- package/dist/index.d.ts +9 -4
- package/dist/index.js +1100 -614
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6 -2
- package/dist/mpc-CTbBWHld.d.mts +20 -0
- package/dist/mpc-CTbBWHld.d.ts +20 -0
- package/dist/types/index.d.mts +3 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.js +44 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +10 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/types-CVwZEgQ0.d.mts +244 -0
- package/dist/types-CVwZEgQ0.d.ts +244 -0
- package/example/package.json +1 -0
- package/example/src/App.tsx +56 -27
- package/example/src/components/ButtonGroup/index.tsx +10 -0
- package/example/src/components/Login/index.tsx +2 -2
- package/example/src/components/RoutePrivate/index.tsx +4 -3
- package/example/src/config/chains/index.ts +2 -0
- package/example/src/config/chains/matchMain.ts +27 -0
- package/example/src/config/chains/matchTest.ts +33 -0
- package/example/src/config/index.ts +6 -2
- package/example/src/pages/User/components/BindListModal.tsx +10 -0
- package/example/src/pages/User/components/PohListModal.tsx +10 -0
- package/example/src/pages/User/components/QueryDisplay.tsx +25 -0
- package/example/src/pages/{User.tsx → User/index.tsx} +55 -84
- package/example/src/pages/Wallet.tsx +133 -44
- package/example/src/store/useLocalStore.ts +45 -0
- package/package.json +7 -2
- package/dist/chunk-SBOIXOAW.mjs +0 -4197
- package/dist/chunk-SBOIXOAW.mjs.map +0 -1
- package/dist/index-BrdP6eg5.d.ts +0 -93
- package/dist/index-D7bNSBwl.d.mts +0 -93
- package/dist/types.d-CLO_WLka.d.mts +0 -176
- package/dist/types.d-CLO_WLka.d.ts +0 -176
- /package/dist/{chunk-U5KWO2YJ.mjs.map → chunk-N53ZMW5C.mjs.map} +0 -0
package/dist/components/index.js
CHANGED
|
@@ -41,6 +41,7 @@ __export(components_exports, {
|
|
|
41
41
|
LoginPanel: () => LoginPanel,
|
|
42
42
|
Modal: () => Modal,
|
|
43
43
|
ModalWithHeader: () => ModalWithHeader,
|
|
44
|
+
Overlay: () => Overlay,
|
|
44
45
|
PasswordModal: () => PasswordModal,
|
|
45
46
|
Popover: () => Popover,
|
|
46
47
|
SOLModal: () => SOLModal,
|
|
@@ -51,7 +52,7 @@ __export(components_exports, {
|
|
|
51
52
|
module.exports = __toCommonJS(components_exports);
|
|
52
53
|
|
|
53
54
|
// src/components/EmailModal/index.tsx
|
|
54
|
-
var
|
|
55
|
+
var import_react18 = require("react");
|
|
55
56
|
|
|
56
57
|
// src/assets/icon/ArrowLeftIcon.tsx
|
|
57
58
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1123,15 +1124,24 @@ function useDownMd() {
|
|
|
1123
1124
|
return isBelowMd;
|
|
1124
1125
|
}
|
|
1125
1126
|
|
|
1126
|
-
// src/components/
|
|
1127
|
+
// src/components/Overlay/index.tsx
|
|
1128
|
+
var import_react2 = require("react");
|
|
1127
1129
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
1128
|
-
function
|
|
1130
|
+
function Overlay({
|
|
1131
|
+
isOpen = false,
|
|
1129
1132
|
children,
|
|
1130
|
-
|
|
1131
|
-
width = 480,
|
|
1132
|
-
zIndex = 100,
|
|
1133
|
-
className = ""
|
|
1133
|
+
zIndex = 100
|
|
1134
1134
|
}) {
|
|
1135
|
+
(0, import_react2.useEffect)(() => {
|
|
1136
|
+
if (isOpen) {
|
|
1137
|
+
document.body.style.overflow = "hidden";
|
|
1138
|
+
} else {
|
|
1139
|
+
document.body.style.overflow = "";
|
|
1140
|
+
}
|
|
1141
|
+
return () => {
|
|
1142
|
+
document.body.style.overflow = "";
|
|
1143
|
+
};
|
|
1144
|
+
}, [isOpen]);
|
|
1135
1145
|
return isOpen ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
1136
1146
|
"div",
|
|
1137
1147
|
{
|
|
@@ -1139,15 +1149,27 @@ function Modal({
|
|
|
1139
1149
|
style: {
|
|
1140
1150
|
zIndex
|
|
1141
1151
|
},
|
|
1142
|
-
children
|
|
1143
|
-
width
|
|
1144
|
-
}, children: [
|
|
1145
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1146
|
-
children
|
|
1147
|
-
] })
|
|
1152
|
+
children
|
|
1148
1153
|
}
|
|
1149
1154
|
) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, {});
|
|
1150
1155
|
}
|
|
1156
|
+
|
|
1157
|
+
// src/components/Modal/index.tsx
|
|
1158
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
1159
|
+
function Modal({
|
|
1160
|
+
children,
|
|
1161
|
+
isOpen,
|
|
1162
|
+
width = 480,
|
|
1163
|
+
zIndex = 100,
|
|
1164
|
+
className = ""
|
|
1165
|
+
}) {
|
|
1166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Overlay, { isOpen, zIndex, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: `matchid-modal ${className}`, style: {
|
|
1167
|
+
width
|
|
1168
|
+
}, children: [
|
|
1169
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1170
|
+
children
|
|
1171
|
+
] }) });
|
|
1172
|
+
}
|
|
1151
1173
|
function ModalWithHeader({
|
|
1152
1174
|
children,
|
|
1153
1175
|
onBack,
|
|
@@ -1158,24 +1180,24 @@ function ModalWithHeader({
|
|
|
1158
1180
|
...props
|
|
1159
1181
|
}) {
|
|
1160
1182
|
const isDownMd = useDownMd();
|
|
1161
|
-
return /* @__PURE__ */ (0,
|
|
1162
|
-
/* @__PURE__ */ (0,
|
|
1163
|
-
/* @__PURE__ */ (0,
|
|
1164
|
-
onBack && /* @__PURE__ */ (0,
|
|
1165
|
-
/* @__PURE__ */ (0,
|
|
1183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Modal, { ...props, children: [
|
|
1184
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: `matchid-modal-header ${showBorder ? "matchid-modal-header-border" : ""}`, children: [
|
|
1185
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "matchid-modal-header-content", children: [
|
|
1186
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ArrowLeftIcon, { height: isDownMd ? 20 : 25, width: isDownMd ? 20 : 24, className: "matchid-modal-header-back", onClick: onBack }),
|
|
1187
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "matchid-modal-header-title", children: title })
|
|
1166
1188
|
] }),
|
|
1167
|
-
onClose && /* @__PURE__ */ (0,
|
|
1189
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30, className: "matchid-modal-header-close", onClick: onClose })
|
|
1168
1190
|
] }),
|
|
1169
1191
|
children
|
|
1170
1192
|
] });
|
|
1171
1193
|
}
|
|
1172
1194
|
|
|
1173
1195
|
// src/components/EmailModal/StepEmail.tsx
|
|
1174
|
-
var
|
|
1196
|
+
var import_react4 = require("react");
|
|
1175
1197
|
|
|
1176
1198
|
// src/utils/index.ts
|
|
1177
1199
|
var getVersion = () => {
|
|
1178
|
-
return "0.0.
|
|
1200
|
+
return "0.0.2";
|
|
1179
1201
|
};
|
|
1180
1202
|
function encodeBase64(input) {
|
|
1181
1203
|
return btoa(unescape(encodeURIComponent(input)));
|
|
@@ -1199,7 +1221,7 @@ function getAppClientId() {
|
|
|
1199
1221
|
}
|
|
1200
1222
|
|
|
1201
1223
|
// src/components/Button/index.tsx
|
|
1202
|
-
var
|
|
1224
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
1203
1225
|
function Button({
|
|
1204
1226
|
size = "df",
|
|
1205
1227
|
disabled = false,
|
|
@@ -1218,7 +1240,7 @@ function Button({
|
|
|
1218
1240
|
onClick && onClick();
|
|
1219
1241
|
}
|
|
1220
1242
|
};
|
|
1221
|
-
return /* @__PURE__ */ (0,
|
|
1243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
1222
1244
|
"button",
|
|
1223
1245
|
{
|
|
1224
1246
|
type,
|
|
@@ -1228,14 +1250,14 @@ function Button({
|
|
|
1228
1250
|
...style
|
|
1229
1251
|
},
|
|
1230
1252
|
onClick: onAction,
|
|
1231
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
1253
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(LoadingIcon_default, { className: "matchid-btn-loading-icon", color: "var(--matchid-btn-loading-color)" }) : children
|
|
1232
1254
|
}
|
|
1233
1255
|
);
|
|
1234
1256
|
}
|
|
1235
1257
|
|
|
1236
1258
|
// src/components/Input/index.tsx
|
|
1237
|
-
var
|
|
1238
|
-
var
|
|
1259
|
+
var import_react3 = require("react");
|
|
1260
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
1239
1261
|
function Input({
|
|
1240
1262
|
onChange,
|
|
1241
1263
|
type,
|
|
@@ -1243,19 +1265,19 @@ function Input({
|
|
|
1243
1265
|
className = "",
|
|
1244
1266
|
...props
|
|
1245
1267
|
}) {
|
|
1246
|
-
const [inputType, setInputType] = (0,
|
|
1268
|
+
const [inputType, setInputType] = (0, import_react3.useState)(type);
|
|
1247
1269
|
const isDownMd = useDownMd();
|
|
1248
|
-
return /* @__PURE__ */ (0,
|
|
1270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
1249
1271
|
"div",
|
|
1250
1272
|
{
|
|
1251
1273
|
className: `matchid-input-box ${props.value && props.value.length > 0 ? "matchid-input-has-content" : ""} ${className}`,
|
|
1252
1274
|
children: [
|
|
1253
|
-
/* @__PURE__ */ (0,
|
|
1254
|
-
props.value && props.value.length > 0 && /* @__PURE__ */ (0,
|
|
1275
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("input", { type: inputType, onChange, ...props, className: "matchid-input-field" }),
|
|
1276
|
+
props.value && props.value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-input-delete-icon", onClick: (e) => {
|
|
1255
1277
|
if (onChange) {
|
|
1256
1278
|
onChange({ target: { value: "" } });
|
|
1257
1279
|
}
|
|
1258
|
-
}, children: /* @__PURE__ */ (0,
|
|
1280
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
1259
1281
|
DeleteRoundIcon,
|
|
1260
1282
|
{
|
|
1261
1283
|
height: isDownMd ? 16 : 21,
|
|
@@ -1263,9 +1285,9 @@ function Input({
|
|
|
1263
1285
|
color: "var(--matchid-input-delete-icon-color)"
|
|
1264
1286
|
}
|
|
1265
1287
|
) }),
|
|
1266
|
-
type === "password" && /* @__PURE__ */ (0,
|
|
1288
|
+
type === "password" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-input-eye-icon", onClick: () => {
|
|
1267
1289
|
setInputType(inputType === "password" ? "text" : "password");
|
|
1268
|
-
}, children: inputType === "password" ? /* @__PURE__ */ (0,
|
|
1290
|
+
}, children: inputType === "password" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CloseEyeIcon, { size: isDownMd ? 16 : 20 }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(OpenEyeIcon, { size: isDownMd ? 16 : 20 }) }),
|
|
1269
1291
|
after
|
|
1270
1292
|
]
|
|
1271
1293
|
}
|
|
@@ -1273,7 +1295,7 @@ function Input({
|
|
|
1273
1295
|
}
|
|
1274
1296
|
|
|
1275
1297
|
// src/components/Field/index.tsx
|
|
1276
|
-
var
|
|
1298
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
1277
1299
|
function Field({
|
|
1278
1300
|
label,
|
|
1279
1301
|
children,
|
|
@@ -1281,37 +1303,37 @@ function Field({
|
|
|
1281
1303
|
required,
|
|
1282
1304
|
className = ""
|
|
1283
1305
|
}) {
|
|
1284
|
-
return /* @__PURE__ */ (0,
|
|
1285
|
-
/* @__PURE__ */ (0,
|
|
1286
|
-
required && /* @__PURE__ */ (0,
|
|
1306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: `matchid-field-box ${className}`, children: [
|
|
1307
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "matchid-field-label", children: [
|
|
1308
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "matchid-field-required", children: "*" }),
|
|
1287
1309
|
label
|
|
1288
1310
|
] }),
|
|
1289
1311
|
children,
|
|
1290
|
-
error && /* @__PURE__ */ (0,
|
|
1312
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "matchid-field-error", children: error })
|
|
1291
1313
|
] });
|
|
1292
1314
|
}
|
|
1293
1315
|
|
|
1294
1316
|
// src/components/EmailModal/StepEmail.tsx
|
|
1295
1317
|
var import_react_intl = require("react-intl");
|
|
1296
|
-
var
|
|
1318
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
1297
1319
|
function StepEmail(props) {
|
|
1298
1320
|
const intl = (0, import_react_intl.useIntl)();
|
|
1299
|
-
const [emailVal, setEmailVal] = (0,
|
|
1300
|
-
(0,
|
|
1321
|
+
const [emailVal, setEmailVal] = (0, import_react4.useState)("");
|
|
1322
|
+
(0, import_react4.useEffect)(() => {
|
|
1301
1323
|
if (props.email) {
|
|
1302
1324
|
setEmailVal(props.email);
|
|
1303
1325
|
}
|
|
1304
1326
|
}, []);
|
|
1305
|
-
const canContinue = (0,
|
|
1327
|
+
const canContinue = (0, import_react4.useMemo)(() => {
|
|
1306
1328
|
return isValidEmail(emailVal);
|
|
1307
1329
|
}, [emailVal]);
|
|
1308
1330
|
const onContinue = async () => {
|
|
1309
1331
|
props.onContinue(emailVal);
|
|
1310
1332
|
};
|
|
1311
|
-
return /* @__PURE__ */ (0,
|
|
1312
|
-
/* @__PURE__ */ (0,
|
|
1333
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "matchid-email-email-box", children: [
|
|
1334
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Field, { label: intl.formatMessage({
|
|
1313
1335
|
id: "emailAddress"
|
|
1314
|
-
}), children: /* @__PURE__ */ (0,
|
|
1336
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
1315
1337
|
Input,
|
|
1316
1338
|
{
|
|
1317
1339
|
placeholder: intl.formatMessage({
|
|
@@ -1321,9 +1343,9 @@ function StepEmail(props) {
|
|
|
1321
1343
|
value: emailVal
|
|
1322
1344
|
}
|
|
1323
1345
|
) }),
|
|
1324
|
-
/* @__PURE__ */ (0,
|
|
1346
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { disabled: !canContinue, style: {
|
|
1325
1347
|
marginTop: "64px"
|
|
1326
|
-
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
1348
|
+
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_intl.FormattedMessage, { id: "continue" }) })
|
|
1327
1349
|
] });
|
|
1328
1350
|
}
|
|
1329
1351
|
|
|
@@ -1358,7 +1380,11 @@ var persistedState = (0, import_middleware.persist)(
|
|
|
1358
1380
|
address: "",
|
|
1359
1381
|
setAddress: (address) => set({ address }),
|
|
1360
1382
|
locale: "en",
|
|
1361
|
-
setLocale: (locale) => set({ locale })
|
|
1383
|
+
setLocale: (locale) => set({ locale }),
|
|
1384
|
+
wallet: {
|
|
1385
|
+
type: "UserPasscode"
|
|
1386
|
+
},
|
|
1387
|
+
setWallet: (wallet) => set({ wallet })
|
|
1362
1388
|
}),
|
|
1363
1389
|
{ name: "match-local" }
|
|
1364
1390
|
);
|
|
@@ -1367,7 +1393,7 @@ var localStore = useLocalStore;
|
|
|
1367
1393
|
var useLocalStore_default = useLocalStore;
|
|
1368
1394
|
|
|
1369
1395
|
// src/hooks/useUserInfo.tsx
|
|
1370
|
-
var
|
|
1396
|
+
var import_react16 = require("react");
|
|
1371
1397
|
|
|
1372
1398
|
// src/api/request.ts
|
|
1373
1399
|
var import_axios = __toESM(require("axios"));
|
|
@@ -1576,13 +1602,16 @@ var toBindWalletApi = ({
|
|
|
1576
1602
|
};
|
|
1577
1603
|
|
|
1578
1604
|
// src/MatchContext.tsx
|
|
1579
|
-
var
|
|
1605
|
+
var import_react15 = require("react");
|
|
1606
|
+
|
|
1607
|
+
// src/context/BusinessProvider.tsx
|
|
1608
|
+
var import_react12 = require("react");
|
|
1580
1609
|
|
|
1581
1610
|
// src/components/PasswordModal/index.tsx
|
|
1582
|
-
var
|
|
1611
|
+
var import_react8 = require("react");
|
|
1583
1612
|
|
|
1584
1613
|
// src/hooks/useMatchEvents.ts
|
|
1585
|
-
var
|
|
1614
|
+
var import_react5 = require("react");
|
|
1586
1615
|
|
|
1587
1616
|
// src/hooks/eventManager.ts
|
|
1588
1617
|
var EventManager = class {
|
|
@@ -1612,11 +1641,14 @@ var EventManager = class {
|
|
|
1612
1641
|
var eventManager = new EventManager();
|
|
1613
1642
|
var eventManager_default = eventManager;
|
|
1614
1643
|
|
|
1644
|
+
// src/hooks/useWallet.tsx
|
|
1645
|
+
var import_viem = require("viem");
|
|
1646
|
+
|
|
1615
1647
|
// src/store/useStore.ts
|
|
1616
1648
|
var import_zustand2 = require("zustand");
|
|
1617
1649
|
var useStore = (0, import_zustand2.create)((set) => ({
|
|
1618
|
-
|
|
1619
|
-
|
|
1650
|
+
walletReady: false,
|
|
1651
|
+
setWalletReady: (inited) => set({ walletReady: inited }),
|
|
1620
1652
|
recoveryModal: {
|
|
1621
1653
|
open: false,
|
|
1622
1654
|
success: async () => {
|
|
@@ -1631,143 +1663,335 @@ var useStore_default = useStore;
|
|
|
1631
1663
|
|
|
1632
1664
|
// src/hooks/useWallet.tsx
|
|
1633
1665
|
var import_accounts = require("viem/accounts");
|
|
1666
|
+
var import_viem2 = require("viem");
|
|
1667
|
+
var import_react6 = require("react");
|
|
1668
|
+
var import_viem3 = require("viem");
|
|
1669
|
+
|
|
1670
|
+
// src/store/useModalStore.ts
|
|
1671
|
+
var import_zustand3 = require("zustand");
|
|
1672
|
+
var useSOLModalStore = (0, import_zustand3.create)((set) => ({
|
|
1673
|
+
isOpen: false,
|
|
1674
|
+
type: "",
|
|
1675
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1676
|
+
close: () => set({ isOpen: false })
|
|
1677
|
+
}));
|
|
1678
|
+
var useTRONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1679
|
+
isOpen: false,
|
|
1680
|
+
type: "",
|
|
1681
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1682
|
+
close: () => set({ isOpen: false })
|
|
1683
|
+
}));
|
|
1684
|
+
var useTONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1685
|
+
isOpen: false,
|
|
1686
|
+
type: "",
|
|
1687
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1688
|
+
close: () => set({ isOpen: false })
|
|
1689
|
+
}));
|
|
1690
|
+
var useBTCModalStore = (0, import_zustand3.create)((set) => ({
|
|
1691
|
+
isOpen: false,
|
|
1692
|
+
type: "",
|
|
1693
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1694
|
+
close: () => set({ isOpen: false })
|
|
1695
|
+
}));
|
|
1696
|
+
var useCEXBindModalStore = (0, import_zustand3.create)((set) => ({
|
|
1697
|
+
type: "",
|
|
1698
|
+
isOpen: false,
|
|
1699
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1700
|
+
close: () => set({ isOpen: false })
|
|
1701
|
+
}));
|
|
1702
|
+
var useHashPanelStore = (0, import_zustand3.create)((set) => ({
|
|
1703
|
+
isOpen: false,
|
|
1704
|
+
hash: null,
|
|
1705
|
+
chain: null,
|
|
1706
|
+
open: (params) => set({
|
|
1707
|
+
isOpen: true,
|
|
1708
|
+
hash: params?.hash || null,
|
|
1709
|
+
chain: params?.chain || null
|
|
1710
|
+
}),
|
|
1711
|
+
close: () => set({ isOpen: false })
|
|
1712
|
+
}));
|
|
1713
|
+
|
|
1714
|
+
// src/hooks/useWallet.tsx
|
|
1634
1715
|
var AppClientId = "react-sdk-" + getVersion();
|
|
1635
1716
|
function useWallet() {
|
|
1636
|
-
const { appid, token, overview, address } = useLocalStore_default();
|
|
1637
|
-
const { setRecoveryModal, closeRecoveryModal } = useStore_default();
|
|
1638
|
-
const
|
|
1717
|
+
const { appid, token, overview, address, wallet: walletConfig } = useLocalStore_default();
|
|
1718
|
+
const { setRecoveryModal, closeRecoveryModal, walletReady } = useStore_default();
|
|
1719
|
+
const { open: openHashPanel } = useHashPanelStore();
|
|
1720
|
+
const initCore = ({
|
|
1639
1721
|
did,
|
|
1640
1722
|
address: address2
|
|
1641
1723
|
}) => {
|
|
1642
|
-
return window.
|
|
1643
|
-
"initCore",
|
|
1724
|
+
return window.matchProvider.waitUntilWalletMessage(
|
|
1644
1725
|
{
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1726
|
+
method: "initCore",
|
|
1727
|
+
data: {
|
|
1728
|
+
AppId: appid,
|
|
1729
|
+
AppClientId,
|
|
1730
|
+
UserId: did,
|
|
1731
|
+
AccessToken: token,
|
|
1732
|
+
Address: address2
|
|
1733
|
+
}
|
|
1650
1734
|
}
|
|
1651
1735
|
);
|
|
1652
1736
|
};
|
|
1737
|
+
const generateEmbeddedWallets = async (data) => {
|
|
1738
|
+
return await window.matchProvider.waitUntilWalletMessage({
|
|
1739
|
+
method: "generateEmbeddedWallets",
|
|
1740
|
+
data
|
|
1741
|
+
});
|
|
1742
|
+
};
|
|
1743
|
+
const recoveryEmbeddedWallets = async (data) => {
|
|
1744
|
+
return await window.matchProvider.waitUntilWalletMessage({
|
|
1745
|
+
method: "recoveryEmbeddedWallets",
|
|
1746
|
+
data
|
|
1747
|
+
});
|
|
1748
|
+
};
|
|
1653
1749
|
const isRecovered = async () => {
|
|
1654
|
-
const res = await window.
|
|
1750
|
+
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
1751
|
+
method: "isRecovered"
|
|
1752
|
+
});
|
|
1655
1753
|
return res.isRecovered;
|
|
1656
1754
|
};
|
|
1657
|
-
const
|
|
1658
|
-
|
|
1659
|
-
|
|
1755
|
+
const recoverAfter = async ({
|
|
1756
|
+
chainType,
|
|
1757
|
+
handle
|
|
1660
1758
|
}) => {
|
|
1661
|
-
return await window.waitMatchUntilWalletMessage("generateWallet", {
|
|
1662
|
-
chainType: "ethereum",
|
|
1663
|
-
recoveryType: "user_passcode_recovery_key",
|
|
1664
|
-
userPasscode
|
|
1665
|
-
});
|
|
1666
|
-
};
|
|
1667
|
-
const recoverAfter = async (func) => {
|
|
1668
1759
|
return new Promise(async (resolve, reject) => {
|
|
1669
1760
|
const res = await isRecovered();
|
|
1670
|
-
matchlog_default.log("isRecovered", res);
|
|
1671
|
-
if (
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
matchlog_default.log("recover Success");
|
|
1676
|
-
await func(resolve, reject);
|
|
1677
|
-
},
|
|
1678
|
-
close: async () => {
|
|
1679
|
-
closeRecoveryModal();
|
|
1680
|
-
reject(new Error("recover modal close"));
|
|
1681
|
-
}
|
|
1682
|
-
});
|
|
1683
|
-
await initWallet({
|
|
1684
|
-
address: overview?.address || "",
|
|
1685
|
-
did: overview?.did?.split(":")[2] || ""
|
|
1686
|
-
});
|
|
1687
|
-
} else {
|
|
1688
|
-
await recoveryWallet("ethereum", "user_passcode_recovery_key");
|
|
1689
|
-
await func(resolve, reject);
|
|
1761
|
+
matchlog_default.log("sdk.mpc.isRecovered", res);
|
|
1762
|
+
if (res) {
|
|
1763
|
+
await recoveryEmbeddedWallets({ chainType, recoveryType: "user_passcode_recovery_key" });
|
|
1764
|
+
await handle(resolve, reject);
|
|
1765
|
+
return;
|
|
1690
1766
|
}
|
|
1767
|
+
setRecoveryModal({
|
|
1768
|
+
chainType,
|
|
1769
|
+
open: true,
|
|
1770
|
+
success: async () => {
|
|
1771
|
+
closeRecoveryModal();
|
|
1772
|
+
matchlog_default.log("sdk.mpc.recover", "Success");
|
|
1773
|
+
await handle(resolve, reject);
|
|
1774
|
+
},
|
|
1775
|
+
close: async () => {
|
|
1776
|
+
closeRecoveryModal();
|
|
1777
|
+
reject(new Error("recover modal close"));
|
|
1778
|
+
}
|
|
1779
|
+
});
|
|
1780
|
+
await initCore({
|
|
1781
|
+
address: overview?.address || "",
|
|
1782
|
+
did: overview?.did || ""
|
|
1783
|
+
});
|
|
1691
1784
|
});
|
|
1692
1785
|
};
|
|
1693
|
-
const signMessage2 = async (
|
|
1786
|
+
const signMessage2 = async ({
|
|
1787
|
+
message,
|
|
1788
|
+
chainType = "ethereum" /* Ethereum */
|
|
1789
|
+
}) => {
|
|
1694
1790
|
const getSign = async (resolve, reject) => {
|
|
1695
1791
|
try {
|
|
1696
|
-
const recoverRes = await window.
|
|
1697
|
-
|
|
1698
|
-
|
|
1792
|
+
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1793
|
+
method: "signMessage",
|
|
1794
|
+
data: {
|
|
1795
|
+
message,
|
|
1796
|
+
chainType
|
|
1797
|
+
}
|
|
1699
1798
|
});
|
|
1700
|
-
|
|
1701
|
-
resolve(recoverRes);
|
|
1799
|
+
resolve(recoverRes.message);
|
|
1702
1800
|
} catch (error) {
|
|
1703
1801
|
console.error("qwe-sign-error", error);
|
|
1704
1802
|
reject(error);
|
|
1705
1803
|
}
|
|
1706
1804
|
};
|
|
1707
|
-
return await recoverAfter(
|
|
1805
|
+
return await recoverAfter({
|
|
1806
|
+
handle: getSign,
|
|
1807
|
+
chainType
|
|
1808
|
+
});
|
|
1708
1809
|
};
|
|
1709
|
-
const signTransaction = async (
|
|
1810
|
+
const signTransaction = async ({
|
|
1811
|
+
transaction,
|
|
1812
|
+
chainType = "ethereum" /* Ethereum */,
|
|
1813
|
+
chain
|
|
1814
|
+
}) => {
|
|
1815
|
+
console.log("qwe-sign-transaction", transaction);
|
|
1710
1816
|
const getSign = async (resolve, reject) => {
|
|
1711
1817
|
try {
|
|
1712
|
-
const recoverRes = await window.
|
|
1713
|
-
|
|
1714
|
-
|
|
1818
|
+
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1819
|
+
method: "signTransaction",
|
|
1820
|
+
data: {
|
|
1821
|
+
transaction,
|
|
1822
|
+
chainType,
|
|
1823
|
+
chain
|
|
1824
|
+
}
|
|
1715
1825
|
});
|
|
1716
|
-
|
|
1717
|
-
resolve(recoverRes);
|
|
1826
|
+
resolve(recoverRes.message);
|
|
1718
1827
|
} catch (error) {
|
|
1719
1828
|
console.error("qwe-sign-error", error);
|
|
1720
1829
|
reject(error);
|
|
1721
1830
|
}
|
|
1722
1831
|
};
|
|
1723
|
-
return await recoverAfter(
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
return await window.waitMatchUntilWalletMessage("recoveryWallet", {
|
|
1727
|
-
chainType,
|
|
1728
|
-
recoveryType,
|
|
1729
|
-
userPasscode
|
|
1832
|
+
return await recoverAfter({
|
|
1833
|
+
handle: getSign,
|
|
1834
|
+
chainType
|
|
1730
1835
|
});
|
|
1731
1836
|
};
|
|
1732
|
-
const evmAccount =
|
|
1733
|
-
address,
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1837
|
+
const evmAccount = (0, import_react6.useMemo)(() => {
|
|
1838
|
+
return address ? (0, import_accounts.toAccount)({
|
|
1839
|
+
address,
|
|
1840
|
+
async signMessage({ message }) {
|
|
1841
|
+
return await signMessage2({
|
|
1842
|
+
message,
|
|
1843
|
+
chainType: "ethereum" /* Ethereum */
|
|
1844
|
+
});
|
|
1845
|
+
},
|
|
1846
|
+
async signTransaction(transaction, options) {
|
|
1847
|
+
const { account, chain, ...restTransaction } = transaction;
|
|
1848
|
+
console.log("qwe-sign-transaction", restTransaction, options);
|
|
1849
|
+
return await signTransaction({
|
|
1850
|
+
transaction: {
|
|
1851
|
+
...restTransaction
|
|
1852
|
+
},
|
|
1853
|
+
chainType: "ethereum" /* Ethereum */,
|
|
1854
|
+
chain: {
|
|
1855
|
+
id: chain?.id || restTransaction.chainId,
|
|
1856
|
+
name: chain?.name,
|
|
1857
|
+
nativeCurrency: {
|
|
1858
|
+
name: chain?.nativeCurrency?.name || "ETH",
|
|
1859
|
+
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
1860
|
+
decimals: chain?.nativeCurrency?.decimals || 18
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
});
|
|
1864
|
+
},
|
|
1865
|
+
async signTypedData(typedData) {
|
|
1866
|
+
return "0x";
|
|
1867
|
+
}
|
|
1868
|
+
}) : void 0;
|
|
1869
|
+
}, [address]);
|
|
1870
|
+
(0, import_react6.useEffect)(() => {
|
|
1871
|
+
console.log("qwe-evmAccount", evmAccount);
|
|
1872
|
+
}, [evmAccount]);
|
|
1748
1873
|
return {
|
|
1874
|
+
walletReady,
|
|
1749
1875
|
evmAccount,
|
|
1750
1876
|
address,
|
|
1751
|
-
|
|
1752
|
-
initWallet,
|
|
1753
|
-
generateWallet,
|
|
1877
|
+
initCore,
|
|
1754
1878
|
signMessage: signMessage2,
|
|
1755
1879
|
signTransaction,
|
|
1756
1880
|
isRecovered,
|
|
1757
|
-
recoverAfter
|
|
1881
|
+
recoverAfter,
|
|
1882
|
+
generateEmbeddedWallets,
|
|
1883
|
+
recoveryEmbeddedWallets,
|
|
1884
|
+
createWalletClient: (parameters) => {
|
|
1885
|
+
if (!evmAccount) {
|
|
1886
|
+
return;
|
|
1887
|
+
}
|
|
1888
|
+
const obj = (0, import_viem2.createWalletClient)({
|
|
1889
|
+
...parameters,
|
|
1890
|
+
account: evmAccount
|
|
1891
|
+
});
|
|
1892
|
+
const sendTransaction = async (transaction) => {
|
|
1893
|
+
const getSign = async (resolve, reject) => {
|
|
1894
|
+
const { chain, ...restTransaction } = transaction;
|
|
1895
|
+
const chainId = chain ? chain.id : await obj.getChainId();
|
|
1896
|
+
const _chain = chain || obj.chain;
|
|
1897
|
+
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
1898
|
+
const sendPrepareTransactionRequest = async () => {
|
|
1899
|
+
const { chain: chain2, account, ...prepareTransactionRequest } = await obj.prepareTransactionRequest(transaction);
|
|
1900
|
+
window.matchProvider.sendWalletMessage({
|
|
1901
|
+
method: "prepareTransactionRequest",
|
|
1902
|
+
data: {
|
|
1903
|
+
prepareTransactionRequest,
|
|
1904
|
+
transactionId
|
|
1905
|
+
}
|
|
1906
|
+
});
|
|
1907
|
+
};
|
|
1908
|
+
let interval = null;
|
|
1909
|
+
const timer = setTimeout(() => {
|
|
1910
|
+
sendPrepareTransactionRequest();
|
|
1911
|
+
interval = setInterval(() => {
|
|
1912
|
+
sendPrepareTransactionRequest();
|
|
1913
|
+
}, 1e4);
|
|
1914
|
+
}, 1500);
|
|
1915
|
+
try {
|
|
1916
|
+
const { serializedTransaction } = await window.matchProvider.waitUntilWalletMessage({
|
|
1917
|
+
method: "sendTransaction",
|
|
1918
|
+
data: {
|
|
1919
|
+
transactionId,
|
|
1920
|
+
transaction: {
|
|
1921
|
+
...restTransaction
|
|
1922
|
+
},
|
|
1923
|
+
chainType: "ethereum" /* Ethereum */,
|
|
1924
|
+
chain: {
|
|
1925
|
+
id: chainId,
|
|
1926
|
+
name: _chain?.name,
|
|
1927
|
+
nativeCurrency: _chain?.nativeCurrency
|
|
1928
|
+
}
|
|
1929
|
+
}
|
|
1930
|
+
});
|
|
1931
|
+
openHashPanel();
|
|
1932
|
+
const txHash = await obj.sendRawTransaction({
|
|
1933
|
+
serializedTransaction
|
|
1934
|
+
});
|
|
1935
|
+
openHashPanel({
|
|
1936
|
+
hash: txHash,
|
|
1937
|
+
chain
|
|
1938
|
+
});
|
|
1939
|
+
clearTimeout(timer);
|
|
1940
|
+
clearInterval(interval);
|
|
1941
|
+
resolve(txHash);
|
|
1942
|
+
} catch (error) {
|
|
1943
|
+
console.error("qwe-sign-error", error);
|
|
1944
|
+
clearTimeout(timer);
|
|
1945
|
+
clearInterval(interval);
|
|
1946
|
+
reject(error);
|
|
1947
|
+
}
|
|
1948
|
+
};
|
|
1949
|
+
return await recoverAfter({
|
|
1950
|
+
handle: getSign,
|
|
1951
|
+
chainType: "ethereum" /* Ethereum */
|
|
1952
|
+
});
|
|
1953
|
+
};
|
|
1954
|
+
const deployContract = async (parameters2) => {
|
|
1955
|
+
const { abi, args, bytecode, ...request3 } = parameters2;
|
|
1956
|
+
const calldata = (0, import_viem3.encodeDeployData)({ abi, args, bytecode });
|
|
1957
|
+
return await sendTransaction({
|
|
1958
|
+
...request3,
|
|
1959
|
+
data: calldata
|
|
1960
|
+
});
|
|
1961
|
+
};
|
|
1962
|
+
const writeContract = async (parameters2) => {
|
|
1963
|
+
const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
|
|
1964
|
+
const data = (0, import_viem.encodeFunctionData)({
|
|
1965
|
+
abi,
|
|
1966
|
+
args,
|
|
1967
|
+
functionName
|
|
1968
|
+
});
|
|
1969
|
+
return await sendTransaction({
|
|
1970
|
+
data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
|
|
1971
|
+
to: address2,
|
|
1972
|
+
...request3
|
|
1973
|
+
});
|
|
1974
|
+
};
|
|
1975
|
+
return {
|
|
1976
|
+
...obj,
|
|
1977
|
+
sendTransaction,
|
|
1978
|
+
deployContract,
|
|
1979
|
+
writeContract
|
|
1980
|
+
};
|
|
1981
|
+
}
|
|
1758
1982
|
};
|
|
1759
1983
|
}
|
|
1760
1984
|
|
|
1761
1985
|
// src/hooks/useCopyClipboard.ts
|
|
1762
1986
|
var import_copy_to_clipboard = __toESM(require("copy-to-clipboard"));
|
|
1763
|
-
var
|
|
1987
|
+
var import_react7 = require("react");
|
|
1764
1988
|
function useCopyClipboard(timeout = 500) {
|
|
1765
|
-
const [isCopied, setIsCopied] = (0,
|
|
1766
|
-
const staticCopy = (0,
|
|
1989
|
+
const [isCopied, setIsCopied] = (0, import_react7.useState)(false);
|
|
1990
|
+
const staticCopy = (0, import_react7.useCallback)((text) => {
|
|
1767
1991
|
const didCopy = (0, import_copy_to_clipboard.default)(text);
|
|
1768
1992
|
setIsCopied(didCopy);
|
|
1769
1993
|
}, []);
|
|
1770
|
-
(0,
|
|
1994
|
+
(0, import_react7.useEffect)(() => {
|
|
1771
1995
|
if (isCopied) {
|
|
1772
1996
|
const hide = setTimeout(() => {
|
|
1773
1997
|
setIsCopied(false);
|
|
@@ -1783,21 +2007,23 @@ function useCopyClipboard(timeout = 500) {
|
|
|
1783
2007
|
|
|
1784
2008
|
// src/components/PasswordModal/index.tsx
|
|
1785
2009
|
var import_react_intl2 = require("react-intl");
|
|
1786
|
-
var
|
|
2010
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
1787
2011
|
function PasswordModal({
|
|
1788
2012
|
title,
|
|
1789
2013
|
isOpen,
|
|
1790
2014
|
onSuccess,
|
|
2015
|
+
chainType = "ethereum" /* Ethereum */,
|
|
2016
|
+
recoveryType = "user_passcode_recovery_key" /* UserPasscode */,
|
|
1791
2017
|
...props
|
|
1792
2018
|
}) {
|
|
1793
2019
|
const { refreshOverview, overview } = useUserInfo();
|
|
1794
2020
|
const { isLogin, did } = useUserInfo();
|
|
1795
|
-
const [password, setPassword] = (0,
|
|
1796
|
-
const [rePassword, setRePassword] = (0,
|
|
1797
|
-
const [error, setError] = (0,
|
|
1798
|
-
const {
|
|
2021
|
+
const [password, setPassword] = (0, import_react8.useState)("");
|
|
2022
|
+
const [rePassword, setRePassword] = (0, import_react8.useState)("");
|
|
2023
|
+
const [error, setError] = (0, import_react8.useState)("");
|
|
2024
|
+
const { generateEmbeddedWallets, initCore } = useWallet();
|
|
1799
2025
|
const intl = (0, import_react_intl2.useIntl)();
|
|
1800
|
-
const passwordError = (0,
|
|
2026
|
+
const passwordError = (0, import_react8.useMemo)(() => {
|
|
1801
2027
|
if (password.length < 6) return intl.formatMessage({
|
|
1802
2028
|
id: "passwordMinError"
|
|
1803
2029
|
}, {
|
|
@@ -1805,7 +2031,7 @@ function PasswordModal({
|
|
|
1805
2031
|
});
|
|
1806
2032
|
return "";
|
|
1807
2033
|
}, [password]);
|
|
1808
|
-
const rePasswordError = (0,
|
|
2034
|
+
const rePasswordError = (0, import_react8.useMemo)(() => {
|
|
1809
2035
|
if (rePassword != password) {
|
|
1810
2036
|
return intl.formatMessage({
|
|
1811
2037
|
id: "passwordMatchError"
|
|
@@ -1813,25 +2039,25 @@ function PasswordModal({
|
|
|
1813
2039
|
}
|
|
1814
2040
|
return "";
|
|
1815
2041
|
}, [rePassword, password]);
|
|
1816
|
-
(0,
|
|
2042
|
+
(0, import_react8.useEffect)(() => {
|
|
1817
2043
|
if (isOpen) {
|
|
1818
2044
|
setPassword("");
|
|
1819
2045
|
setRePassword("");
|
|
1820
2046
|
}
|
|
1821
2047
|
}, [isOpen, overview]);
|
|
1822
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
2048
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react8.useState)(false);
|
|
1823
2049
|
const onContinue = async () => {
|
|
1824
2050
|
if (isSubmitting) return;
|
|
1825
2051
|
try {
|
|
1826
2052
|
setIsSubmitting(true);
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
did: did2,
|
|
2053
|
+
await initCore({
|
|
2054
|
+
did: overview?.did || "",
|
|
1830
2055
|
address: ""
|
|
1831
2056
|
});
|
|
1832
|
-
const address = await
|
|
1833
|
-
|
|
1834
|
-
|
|
2057
|
+
const address = await generateEmbeddedWallets({
|
|
2058
|
+
userPasscode: password,
|
|
2059
|
+
chainType,
|
|
2060
|
+
recoveryType
|
|
1835
2061
|
});
|
|
1836
2062
|
await refreshOverview();
|
|
1837
2063
|
onSuccess && onSuccess();
|
|
@@ -1841,15 +2067,15 @@ function PasswordModal({
|
|
|
1841
2067
|
setIsSubmitting(false);
|
|
1842
2068
|
}
|
|
1843
2069
|
};
|
|
1844
|
-
return /* @__PURE__ */ (0,
|
|
2070
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
1845
2071
|
id: "passwordTitle"
|
|
1846
|
-
}), children: /* @__PURE__ */ (0,
|
|
1847
|
-
/* @__PURE__ */ (0,
|
|
1848
|
-
/* @__PURE__ */ (0,
|
|
1849
|
-
/* @__PURE__ */ (0,
|
|
2072
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-box", children: [
|
|
2073
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-header", children: [
|
|
2074
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PasswordRoundIcon, {}) }),
|
|
2075
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl2.FormattedMessage, { id: "passwordTips" }) })
|
|
1850
2076
|
] }),
|
|
1851
|
-
/* @__PURE__ */ (0,
|
|
1852
|
-
/* @__PURE__ */ (0,
|
|
2077
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-content", children: [
|
|
2078
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 && passwordError, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1853
2079
|
Input,
|
|
1854
2080
|
{
|
|
1855
2081
|
placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
|
|
@@ -1859,9 +2085,9 @@ function PasswordModal({
|
|
|
1859
2085
|
value: password
|
|
1860
2086
|
}
|
|
1861
2087
|
) }),
|
|
1862
|
-
/* @__PURE__ */ (0,
|
|
2088
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Field, { label: intl.formatMessage({
|
|
1863
2089
|
id: "rePassword"
|
|
1864
|
-
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0,
|
|
2090
|
+
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1865
2091
|
Input,
|
|
1866
2092
|
{
|
|
1867
2093
|
placeholder: intl.formatMessage({
|
|
@@ -1874,7 +2100,7 @@ function PasswordModal({
|
|
|
1874
2100
|
}
|
|
1875
2101
|
) })
|
|
1876
2102
|
] }),
|
|
1877
|
-
/* @__PURE__ */ (0,
|
|
2103
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1878
2104
|
Button,
|
|
1879
2105
|
{
|
|
1880
2106
|
disabled: password.length == 0 || !!passwordError || !!rePasswordError,
|
|
@@ -1883,79 +2109,60 @@ function PasswordModal({
|
|
|
1883
2109
|
size: "lg",
|
|
1884
2110
|
onClick: onContinue,
|
|
1885
2111
|
loading: isSubmitting,
|
|
1886
|
-
children: /* @__PURE__ */ (0,
|
|
2112
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl2.FormattedMessage, { id: "continue" })
|
|
1887
2113
|
}
|
|
1888
2114
|
)
|
|
1889
2115
|
] }) });
|
|
1890
2116
|
}
|
|
1891
2117
|
|
|
1892
2118
|
// src/components/RecoveryModal/index.tsx
|
|
1893
|
-
var
|
|
2119
|
+
var import_react9 = require("react");
|
|
1894
2120
|
var import_react_intl3 = require("react-intl");
|
|
1895
|
-
var
|
|
1896
|
-
|
|
1897
|
-
// src/store/useModalStore.ts
|
|
1898
|
-
var import_zustand3 = require("zustand");
|
|
1899
|
-
var useSOLModalStore = (0, import_zustand3.create)((set) => ({
|
|
1900
|
-
isOpen: false,
|
|
1901
|
-
type: "",
|
|
1902
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1903
|
-
close: () => set({ isOpen: false })
|
|
1904
|
-
}));
|
|
1905
|
-
var useTRONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1906
|
-
isOpen: false,
|
|
1907
|
-
type: "",
|
|
1908
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1909
|
-
close: () => set({ isOpen: false })
|
|
1910
|
-
}));
|
|
1911
|
-
var useTONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1912
|
-
isOpen: false,
|
|
1913
|
-
type: "",
|
|
1914
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1915
|
-
close: () => set({ isOpen: false })
|
|
1916
|
-
}));
|
|
1917
|
-
var useBTCModalStore = (0, import_zustand3.create)((set) => ({
|
|
1918
|
-
isOpen: false,
|
|
1919
|
-
type: "",
|
|
1920
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1921
|
-
close: () => set({ isOpen: false })
|
|
1922
|
-
}));
|
|
1923
|
-
var useCEXBindModalStore = (0, import_zustand3.create)((set) => ({
|
|
1924
|
-
type: "",
|
|
1925
|
-
isOpen: false,
|
|
1926
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1927
|
-
close: () => set({ isOpen: false })
|
|
1928
|
-
}));
|
|
2121
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
1929
2122
|
|
|
1930
2123
|
// src/components/CEXBindModal/index.tsx
|
|
1931
|
-
var
|
|
2124
|
+
var import_react10 = require("react");
|
|
1932
2125
|
var import_react_intl4 = require("react-intl");
|
|
1933
|
-
var
|
|
2126
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2127
|
+
|
|
2128
|
+
// src/components/HashPanel/index.tsx
|
|
2129
|
+
var import_viem4 = require("viem");
|
|
2130
|
+
var import_react11 = require("react");
|
|
2131
|
+
var import_react_query = require("@tanstack/react-query");
|
|
2132
|
+
|
|
2133
|
+
// src/components/Drawer/index.tsx
|
|
2134
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
2135
|
+
|
|
2136
|
+
// src/components/ModalDrawer/index.tsx
|
|
2137
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2138
|
+
|
|
2139
|
+
// src/components/HashPanel/index.tsx
|
|
2140
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
1934
2141
|
|
|
1935
2142
|
// src/context/BusinessProvider.tsx
|
|
1936
|
-
var
|
|
2143
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
1937
2144
|
|
|
1938
2145
|
// src/context/index.tsx
|
|
1939
|
-
var
|
|
2146
|
+
var import_jsx_runtime57 = (
|
|
1940
2147
|
// <MpcWalletProvider>
|
|
1941
2148
|
require("react/jsx-runtime")
|
|
1942
2149
|
);
|
|
1943
2150
|
|
|
1944
2151
|
// src/hooks/useWalletInit.ts
|
|
1945
|
-
var
|
|
2152
|
+
var import_react13 = require("react");
|
|
1946
2153
|
var AppClientId2 = getAppClientId();
|
|
1947
2154
|
|
|
1948
2155
|
// src/hooks/useInit.tsx
|
|
1949
|
-
var
|
|
2156
|
+
var import_react14 = require("react");
|
|
1950
2157
|
|
|
1951
2158
|
// src/MatchContext.tsx
|
|
1952
|
-
var
|
|
2159
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
1953
2160
|
var import_react_intl5 = require("react-intl");
|
|
1954
|
-
var
|
|
1955
|
-
var queryClient = new
|
|
1956
|
-
var MatchContext = (0,
|
|
2161
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
2162
|
+
var queryClient = new import_react_query2.QueryClient();
|
|
2163
|
+
var MatchContext = (0, import_react15.createContext)(void 0);
|
|
1957
2164
|
var useMatch = () => {
|
|
1958
|
-
const context = (0,
|
|
2165
|
+
const context = (0, import_react15.useContext)(MatchContext);
|
|
1959
2166
|
if (context === void 0) {
|
|
1960
2167
|
throw new Error("useMatch must be used within a MatchProvider");
|
|
1961
2168
|
}
|
|
@@ -1982,7 +2189,7 @@ function useUserInfo() {
|
|
|
1982
2189
|
const { open: TONOpen } = useTONModalStore();
|
|
1983
2190
|
const { open: BTCOpen } = useBTCModalStore();
|
|
1984
2191
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
1985
|
-
const isLogin = (0,
|
|
2192
|
+
const isLogin = (0, import_react16.useMemo)(() => !!token && !!overview, [token, overview]);
|
|
1986
2193
|
const logout = async () => {
|
|
1987
2194
|
try {
|
|
1988
2195
|
await toLogoutApi();
|
|
@@ -2216,7 +2423,7 @@ function useUserInfo() {
|
|
|
2216
2423
|
}
|
|
2217
2424
|
|
|
2218
2425
|
// src/components/EmailModal/StepVerify.tsx
|
|
2219
|
-
var
|
|
2426
|
+
var import_react17 = require("react");
|
|
2220
2427
|
|
|
2221
2428
|
// src/config/index.tsx
|
|
2222
2429
|
var EMAIL_INTERVAL = 60;
|
|
@@ -2224,21 +2431,21 @@ var EMAIL_CODE_LENGTH = 6;
|
|
|
2224
2431
|
|
|
2225
2432
|
// src/components/EmailModal/StepVerify.tsx
|
|
2226
2433
|
var import_react_intl6 = require("react-intl");
|
|
2227
|
-
var
|
|
2434
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
2228
2435
|
function StepVerify(props) {
|
|
2229
2436
|
const intl = (0, import_react_intl6.useIntl)();
|
|
2230
2437
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
2231
|
-
const [error, setError] = (0,
|
|
2232
|
-
const [code, setCode] = (0,
|
|
2233
|
-
const [sending, setSending] = (0,
|
|
2234
|
-
const [submitting, setSubmitting] = (0,
|
|
2235
|
-
const sendTimeRef = (0,
|
|
2236
|
-
const [sendBtnText, setSendBtnText] = (0,
|
|
2438
|
+
const [error, setError] = (0, import_react17.useState)("");
|
|
2439
|
+
const [code, setCode] = (0, import_react17.useState)("");
|
|
2440
|
+
const [sending, setSending] = (0, import_react17.useState)(false);
|
|
2441
|
+
const [submitting, setSubmitting] = (0, import_react17.useState)(false);
|
|
2442
|
+
const sendTimeRef = (0, import_react17.useRef)(0);
|
|
2443
|
+
const [sendBtnText, setSendBtnText] = (0, import_react17.useState)(intl.formatMessage({
|
|
2237
2444
|
id: "send"
|
|
2238
2445
|
}));
|
|
2239
2446
|
const intervalTime = EMAIL_INTERVAL;
|
|
2240
2447
|
const codeLength = EMAIL_CODE_LENGTH;
|
|
2241
|
-
const intervalRef = (0,
|
|
2448
|
+
const intervalRef = (0, import_react17.useRef)(null);
|
|
2242
2449
|
const isDownMd = useDownMd();
|
|
2243
2450
|
const onSend = async () => {
|
|
2244
2451
|
if (sendTimeRef.current > 0) {
|
|
@@ -2269,7 +2476,7 @@ function StepVerify(props) {
|
|
|
2269
2476
|
setSending(false);
|
|
2270
2477
|
}
|
|
2271
2478
|
};
|
|
2272
|
-
(0,
|
|
2479
|
+
(0, import_react17.useEffect)(() => {
|
|
2273
2480
|
onSend();
|
|
2274
2481
|
return () => {
|
|
2275
2482
|
if (intervalRef.current) {
|
|
@@ -2277,7 +2484,7 @@ function StepVerify(props) {
|
|
|
2277
2484
|
}
|
|
2278
2485
|
};
|
|
2279
2486
|
}, []);
|
|
2280
|
-
const canContinue = (0,
|
|
2487
|
+
const canContinue = (0, import_react17.useMemo)(() => {
|
|
2281
2488
|
return code.length === codeLength;
|
|
2282
2489
|
}, [code]);
|
|
2283
2490
|
const onContinue = async () => {
|
|
@@ -2301,17 +2508,17 @@ function StepVerify(props) {
|
|
|
2301
2508
|
setSubmitting(false);
|
|
2302
2509
|
}
|
|
2303
2510
|
};
|
|
2304
|
-
return /* @__PURE__ */ (0,
|
|
2305
|
-
/* @__PURE__ */ (0,
|
|
2306
|
-
/* @__PURE__ */ (0,
|
|
2307
|
-
/* @__PURE__ */ (0,
|
|
2308
|
-
/* @__PURE__ */ (0,
|
|
2309
|
-
/* @__PURE__ */ (0,
|
|
2511
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-box", children: [
|
|
2512
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header", children: [
|
|
2513
|
+
/* @__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 }) }),
|
|
2514
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header-content", children: [
|
|
2515
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
2516
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl6.FormattedMessage, { id: "sendEmailTips" }) })
|
|
2310
2517
|
] })
|
|
2311
2518
|
] }),
|
|
2312
|
-
/* @__PURE__ */ (0,
|
|
2519
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Field, { label: intl.formatMessage({
|
|
2313
2520
|
id: "verificationCode"
|
|
2314
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
2521
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2315
2522
|
Input,
|
|
2316
2523
|
{
|
|
2317
2524
|
placeholder: intl.formatMessage({
|
|
@@ -2321,7 +2528,7 @@ function StepVerify(props) {
|
|
|
2321
2528
|
maxLength: codeLength,
|
|
2322
2529
|
onChange: (e) => setCode(e.target.value),
|
|
2323
2530
|
value: code,
|
|
2324
|
-
after: /* @__PURE__ */ (0,
|
|
2531
|
+
after: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2325
2532
|
Button,
|
|
2326
2533
|
{
|
|
2327
2534
|
highlight: true,
|
|
@@ -2340,13 +2547,13 @@ function StepVerify(props) {
|
|
|
2340
2547
|
)
|
|
2341
2548
|
}
|
|
2342
2549
|
) }),
|
|
2343
|
-
/* @__PURE__ */ (0,
|
|
2550
|
+
/* @__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_intl6.FormattedMessage, { id: "continue" }) })
|
|
2344
2551
|
] });
|
|
2345
2552
|
}
|
|
2346
2553
|
|
|
2347
2554
|
// src/components/EmailModal/index.tsx
|
|
2348
2555
|
var import_react_intl7 = require("react-intl");
|
|
2349
|
-
var
|
|
2556
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
2350
2557
|
function EmailModal({
|
|
2351
2558
|
isOpen = false,
|
|
2352
2559
|
width = 480,
|
|
@@ -2354,16 +2561,16 @@ function EmailModal({
|
|
|
2354
2561
|
onBack,
|
|
2355
2562
|
onLogin
|
|
2356
2563
|
}) {
|
|
2357
|
-
const [step, setStep] = (0,
|
|
2358
|
-
const [emailVal, setEmailVal] = (0,
|
|
2564
|
+
const [step, setStep] = (0, import_react18.useState)("input");
|
|
2565
|
+
const [emailVal, setEmailVal] = (0, import_react18.useState)("");
|
|
2359
2566
|
const intl = (0, import_react_intl7.useIntl)();
|
|
2360
|
-
(0,
|
|
2567
|
+
(0, import_react18.useEffect)(() => {
|
|
2361
2568
|
if (!isOpen) {
|
|
2362
2569
|
setStep("input");
|
|
2363
2570
|
setEmailVal("");
|
|
2364
2571
|
}
|
|
2365
2572
|
}, [isOpen]);
|
|
2366
|
-
return /* @__PURE__ */ (0,
|
|
2573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
2367
2574
|
ModalWithHeader,
|
|
2368
2575
|
{
|
|
2369
2576
|
isOpen,
|
|
@@ -2373,17 +2580,17 @@ function EmailModal({
|
|
|
2373
2580
|
id: "email"
|
|
2374
2581
|
}),
|
|
2375
2582
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
2376
|
-
children: step === "input" ? /* @__PURE__ */ (0,
|
|
2583
|
+
children: step === "input" ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
2377
2584
|
setEmailVal(email);
|
|
2378
2585
|
setStep("verify");
|
|
2379
|
-
} }) : /* @__PURE__ */ (0,
|
|
2586
|
+
} }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
2380
2587
|
}
|
|
2381
2588
|
);
|
|
2382
2589
|
}
|
|
2383
2590
|
|
|
2384
2591
|
// src/components/Popover/index.tsx
|
|
2385
|
-
var
|
|
2386
|
-
var
|
|
2592
|
+
var import_react19 = require("react");
|
|
2593
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2387
2594
|
function Popover({
|
|
2388
2595
|
children,
|
|
2389
2596
|
content,
|
|
@@ -2392,8 +2599,8 @@ function Popover({
|
|
|
2392
2599
|
className = "",
|
|
2393
2600
|
gap = "20px"
|
|
2394
2601
|
}) {
|
|
2395
|
-
const [active, setActive] = (0,
|
|
2396
|
-
return children && /* @__PURE__ */ (0,
|
|
2602
|
+
const [active, setActive] = (0, import_react19.useState)(false);
|
|
2603
|
+
return children && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
2397
2604
|
"div",
|
|
2398
2605
|
{
|
|
2399
2606
|
onClick: () => {
|
|
@@ -2404,18 +2611,18 @@ function Popover({
|
|
|
2404
2611
|
className: `matchid-popover-box matchid-popover-${position} matchid-popover-${type} ${className} ${type == "click" && active ? "matchid-popover-click-active" : ""}`,
|
|
2405
2612
|
children: [
|
|
2406
2613
|
children,
|
|
2407
|
-
/* @__PURE__ */ (0,
|
|
2614
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { style: {
|
|
2408
2615
|
paddingTop: gap
|
|
2409
|
-
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0,
|
|
2616
|
+
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: `matchid-popover-content`, children: content }) })
|
|
2410
2617
|
]
|
|
2411
2618
|
}
|
|
2412
2619
|
);
|
|
2413
2620
|
}
|
|
2414
2621
|
|
|
2415
2622
|
// src/components/LoginBox/index.tsx
|
|
2416
|
-
var
|
|
2623
|
+
var import_react20 = require("react");
|
|
2417
2624
|
var import_react_intl8 = require("react-intl");
|
|
2418
|
-
var
|
|
2625
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
2419
2626
|
var RecommendItem = ({
|
|
2420
2627
|
icon,
|
|
2421
2628
|
name,
|
|
@@ -2424,20 +2631,20 @@ var RecommendItem = ({
|
|
|
2424
2631
|
children,
|
|
2425
2632
|
footer
|
|
2426
2633
|
}) => {
|
|
2427
|
-
return /* @__PURE__ */ (0,
|
|
2428
|
-
/* @__PURE__ */ (0,
|
|
2429
|
-
/* @__PURE__ */ (0,
|
|
2430
|
-
/* @__PURE__ */ (0,
|
|
2431
|
-
/* @__PURE__ */ (0,
|
|
2634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method", children: [
|
|
2635
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
2636
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-content", children: [
|
|
2637
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
2638
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
2432
2639
|
] }),
|
|
2433
|
-
footer ? footer : children ? /* @__PURE__ */ (0,
|
|
2640
|
+
footer ? footer : children ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2434
2641
|
ArrowDownIcon,
|
|
2435
2642
|
{
|
|
2436
2643
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
2437
2644
|
size: 20,
|
|
2438
2645
|
color: "var(--matchid-arrow-color)"
|
|
2439
2646
|
}
|
|
2440
|
-
) : /* @__PURE__ */ (0,
|
|
2647
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2441
2648
|
ArrowRightIcon,
|
|
2442
2649
|
{
|
|
2443
2650
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -2446,7 +2653,7 @@ var RecommendItem = ({
|
|
|
2446
2653
|
}
|
|
2447
2654
|
)
|
|
2448
2655
|
] }),
|
|
2449
|
-
children && /* @__PURE__ */ (0,
|
|
2656
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2450
2657
|
"div",
|
|
2451
2658
|
{
|
|
2452
2659
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -2468,131 +2675,131 @@ function LoginBox({
|
|
|
2468
2675
|
"linkedin",
|
|
2469
2676
|
"discord"
|
|
2470
2677
|
],
|
|
2471
|
-
walletMethods = ["evm", "sol", "btc", "tron"],
|
|
2678
|
+
walletMethods = ["evm", "sol", "btc", "tron", "ton"],
|
|
2472
2679
|
inModal = false
|
|
2473
2680
|
}) {
|
|
2474
|
-
const [emailOpen, setEmailOpen] = (0,
|
|
2681
|
+
const [emailOpen, setEmailOpen] = (0, import_react20.useState)(false);
|
|
2475
2682
|
const { login } = useUserInfo();
|
|
2476
|
-
const [showWallet, setShowWallet] = (0,
|
|
2683
|
+
const [showWallet, setShowWallet] = (0, import_react20.useState)(false);
|
|
2477
2684
|
const intl = (0, import_react_intl8.useIntl)();
|
|
2478
2685
|
const isDownMd = useDownMd();
|
|
2479
2686
|
const methodMap = {
|
|
2480
2687
|
wallet: {
|
|
2481
|
-
icon: /* @__PURE__ */ (0,
|
|
2688
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
2482
2689
|
name: intl.formatMessage({ id: "wallet" }),
|
|
2483
2690
|
onClick: () => setShowWallet(!showWallet),
|
|
2484
2691
|
type: "wallet"
|
|
2485
2692
|
},
|
|
2486
2693
|
email: {
|
|
2487
|
-
icon: /* @__PURE__ */ (0,
|
|
2694
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
2488
2695
|
name: intl.formatMessage({ id: "email" }),
|
|
2489
2696
|
onClick: () => {
|
|
2490
2697
|
setEmailOpen(true);
|
|
2491
2698
|
}
|
|
2492
2699
|
},
|
|
2493
2700
|
google: {
|
|
2494
|
-
icon: /* @__PURE__ */ (0,
|
|
2701
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
2495
2702
|
name: "Google",
|
|
2496
2703
|
onClick: () => login("google")
|
|
2497
2704
|
},
|
|
2498
2705
|
twitter: {
|
|
2499
|
-
icon: /* @__PURE__ */ (0,
|
|
2706
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
2500
2707
|
name: "X",
|
|
2501
2708
|
onClick: () => login("twitter")
|
|
2502
2709
|
},
|
|
2503
2710
|
telegram: {
|
|
2504
|
-
icon: /* @__PURE__ */ (0,
|
|
2711
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
2505
2712
|
name: "Telegram",
|
|
2506
2713
|
onClick: () => login("telegram")
|
|
2507
2714
|
},
|
|
2508
2715
|
github: {
|
|
2509
|
-
icon: /* @__PURE__ */ (0,
|
|
2716
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
2510
2717
|
name: "Github",
|
|
2511
2718
|
onClick: () => login("github")
|
|
2512
2719
|
},
|
|
2513
2720
|
discord: {
|
|
2514
|
-
icon: /* @__PURE__ */ (0,
|
|
2721
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
2515
2722
|
name: "Discord",
|
|
2516
2723
|
onClick: () => login("discord")
|
|
2517
2724
|
},
|
|
2518
2725
|
linkedin: {
|
|
2519
|
-
icon: /* @__PURE__ */ (0,
|
|
2726
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
2520
2727
|
name: "LinkedIn",
|
|
2521
2728
|
onClick: () => login("linkedin")
|
|
2522
2729
|
},
|
|
2523
2730
|
facebook: {
|
|
2524
|
-
icon: /* @__PURE__ */ (0,
|
|
2731
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
2525
2732
|
name: "Facebook",
|
|
2526
2733
|
onClick: () => login("facebook")
|
|
2527
2734
|
},
|
|
2528
2735
|
youtube: {
|
|
2529
|
-
icon: /* @__PURE__ */ (0,
|
|
2736
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
2530
2737
|
name: "Youtube",
|
|
2531
2738
|
onClick: () => login("youtube")
|
|
2532
2739
|
}
|
|
2533
2740
|
};
|
|
2534
2741
|
const walletMap = {
|
|
2535
2742
|
evm: {
|
|
2536
|
-
icon: /* @__PURE__ */ (0,
|
|
2537
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2743
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2744
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2538
2745
|
name: "EVM",
|
|
2539
2746
|
onClick: () => login("evm")
|
|
2540
2747
|
},
|
|
2541
2748
|
sol: {
|
|
2542
|
-
icon: /* @__PURE__ */ (0,
|
|
2543
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2749
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2750
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2544
2751
|
name: "SOL",
|
|
2545
2752
|
onClick: () => login("sol")
|
|
2546
2753
|
},
|
|
2547
2754
|
btc: {
|
|
2548
|
-
icon: /* @__PURE__ */ (0,
|
|
2549
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2755
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2756
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2550
2757
|
name: "BTC",
|
|
2551
2758
|
onClick: () => login("btc")
|
|
2552
2759
|
},
|
|
2553
2760
|
tron: {
|
|
2554
|
-
icon: /* @__PURE__ */ (0,
|
|
2555
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2761
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2762
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2556
2763
|
name: "TRON",
|
|
2557
2764
|
onClick: () => login("tron")
|
|
2558
2765
|
},
|
|
2559
2766
|
ton: {
|
|
2560
|
-
icon: /* @__PURE__ */ (0,
|
|
2561
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2767
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2768
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
2562
2769
|
name: "TON",
|
|
2563
2770
|
onClick: () => login("ton")
|
|
2564
2771
|
}
|
|
2565
2772
|
};
|
|
2566
|
-
return /* @__PURE__ */ (0,
|
|
2567
|
-
(!inModal || !emailOpen) && /* @__PURE__ */ (0,
|
|
2568
|
-
/* @__PURE__ */ (0,
|
|
2569
|
-
return /* @__PURE__ */ (0,
|
|
2773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2774
|
+
(!inModal || !emailOpen) && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-box", children: [
|
|
2775
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-list", children: recommendMethods.map((m) => {
|
|
2776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2570
2777
|
RecommendItem,
|
|
2571
2778
|
{
|
|
2572
2779
|
icon: methodMap[m]?.icon,
|
|
2573
2780
|
name: methodMap[m]?.name,
|
|
2574
2781
|
onClick: methodMap[m]?.onClick,
|
|
2575
2782
|
showChildren: m == "wallet" && showWallet,
|
|
2576
|
-
children: m == "wallet" && /* @__PURE__ */ (0,
|
|
2577
|
-
/* @__PURE__ */ (0,
|
|
2578
|
-
/* @__PURE__ */ (0,
|
|
2783
|
+
children: m == "wallet" && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2784
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
2785
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-list", children: walletMethods.map((n) => {
|
|
2579
2786
|
const m2 = walletMap[n];
|
|
2580
|
-
return /* @__PURE__ */ (0,
|
|
2787
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
2581
2788
|
"div",
|
|
2582
2789
|
{
|
|
2583
2790
|
className: "matchid-login-recommend-wallet-item",
|
|
2584
2791
|
onClick: m2.onClick,
|
|
2585
2792
|
children: [
|
|
2586
|
-
/* @__PURE__ */ (0,
|
|
2587
|
-
/* @__PURE__ */ (0,
|
|
2588
|
-
/* @__PURE__ */ (0,
|
|
2793
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
2794
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
2795
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2589
2796
|
"div",
|
|
2590
2797
|
{
|
|
2591
2798
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
2592
2799
|
children: m2.activeIcon
|
|
2593
2800
|
}
|
|
2594
2801
|
),
|
|
2595
|
-
/* @__PURE__ */ (0,
|
|
2802
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2596
2803
|
"span",
|
|
2597
2804
|
{
|
|
2598
2805
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -2600,7 +2807,7 @@ function LoginBox({
|
|
|
2600
2807
|
}
|
|
2601
2808
|
)
|
|
2602
2809
|
] }),
|
|
2603
|
-
/* @__PURE__ */ (0,
|
|
2810
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2604
2811
|
ArrowRightIcon,
|
|
2605
2812
|
{
|
|
2606
2813
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -2618,10 +2825,10 @@ function LoginBox({
|
|
|
2618
2825
|
m
|
|
2619
2826
|
);
|
|
2620
2827
|
}) }),
|
|
2621
|
-
methods.length > 0 && /* @__PURE__ */ (0,
|
|
2622
|
-
/* @__PURE__ */ (0,
|
|
2623
|
-
/* @__PURE__ */ (0,
|
|
2624
|
-
return /* @__PURE__ */ (0,
|
|
2828
|
+
methods.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-other", children: [
|
|
2829
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_intl8.FormattedMessage, { id: "otherLoginMethods" }) }),
|
|
2830
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-method-box", children: methods.map((m) => {
|
|
2831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2625
2832
|
"div",
|
|
2626
2833
|
{
|
|
2627
2834
|
className: "matchid-login-method-item",
|
|
@@ -2634,7 +2841,7 @@ function LoginBox({
|
|
|
2634
2841
|
}) })
|
|
2635
2842
|
] })
|
|
2636
2843
|
] }),
|
|
2637
|
-
/* @__PURE__ */ (0,
|
|
2844
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2638
2845
|
EmailModal,
|
|
2639
2846
|
{
|
|
2640
2847
|
isOpen: emailOpen,
|
|
@@ -2650,56 +2857,56 @@ function LoginBox({
|
|
|
2650
2857
|
}
|
|
2651
2858
|
|
|
2652
2859
|
// src/components/LoginButton/index.tsx
|
|
2653
|
-
var
|
|
2860
|
+
var import_react22 = require("react");
|
|
2654
2861
|
|
|
2655
2862
|
// src/components/LoginPanel/index.tsx
|
|
2656
2863
|
var import_react_intl9 = require("react-intl");
|
|
2657
|
-
var
|
|
2864
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
2658
2865
|
function LoginPanel({
|
|
2659
2866
|
header,
|
|
2660
2867
|
onClose,
|
|
2661
2868
|
...props
|
|
2662
2869
|
}) {
|
|
2663
2870
|
const isDownMd = useDownMd();
|
|
2664
|
-
return /* @__PURE__ */ (0,
|
|
2665
|
-
header ? header : /* @__PURE__ */ (0,
|
|
2666
|
-
/* @__PURE__ */ (0,
|
|
2667
|
-
/* @__PURE__ */ (0,
|
|
2668
|
-
/* @__PURE__ */ (0,
|
|
2871
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel", children: [
|
|
2872
|
+
header ? header : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header", children: [
|
|
2873
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header-content", children: [
|
|
2874
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl9.FormattedMessage, { id: "loginTitle" }) }),
|
|
2875
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl9.FormattedMessage, { id: "loginTips" }) })
|
|
2669
2876
|
] }),
|
|
2670
|
-
onClose && /* @__PURE__ */ (0,
|
|
2877
|
+
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 }) })
|
|
2671
2878
|
] }),
|
|
2672
|
-
/* @__PURE__ */ (0,
|
|
2673
|
-
/* @__PURE__ */ (0,
|
|
2879
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-divide" }),
|
|
2880
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoginBox, { ...props }) })
|
|
2674
2881
|
] });
|
|
2675
2882
|
}
|
|
2676
2883
|
|
|
2677
2884
|
// src/components/LoginModal/index.tsx
|
|
2678
|
-
var
|
|
2885
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
2679
2886
|
function LoginModal({
|
|
2680
2887
|
isOpen = false,
|
|
2681
2888
|
width = 480,
|
|
2682
2889
|
...props
|
|
2683
2890
|
}) {
|
|
2684
2891
|
const { isLogin } = useUserInfo();
|
|
2685
|
-
return /* @__PURE__ */ (0,
|
|
2892
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
2686
2893
|
Modal,
|
|
2687
2894
|
{
|
|
2688
2895
|
isOpen: isOpen && !isLogin,
|
|
2689
2896
|
width,
|
|
2690
|
-
children: /* @__PURE__ */ (0,
|
|
2897
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LoginPanel, { ...props, inModal: true })
|
|
2691
2898
|
}
|
|
2692
2899
|
);
|
|
2693
2900
|
}
|
|
2694
2901
|
|
|
2695
2902
|
// src/components/UserPopover/index.tsx
|
|
2696
|
-
var
|
|
2903
|
+
var import_react21 = require("react");
|
|
2697
2904
|
|
|
2698
2905
|
// src/assets/icon/ProfileIcon.tsx
|
|
2699
|
-
var
|
|
2906
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
2700
2907
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
2701
|
-
return /* @__PURE__ */ (0,
|
|
2702
|
-
/* @__PURE__ */ (0,
|
|
2908
|
+
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: [
|
|
2909
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
2703
2910
|
"path",
|
|
2704
2911
|
{
|
|
2705
2912
|
fillRule: "evenodd",
|
|
@@ -2708,7 +2915,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2708
2915
|
fill: color
|
|
2709
2916
|
}
|
|
2710
2917
|
),
|
|
2711
|
-
/* @__PURE__ */ (0,
|
|
2918
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
2712
2919
|
"path",
|
|
2713
2920
|
{
|
|
2714
2921
|
fillRule: "evenodd",
|
|
@@ -2722,10 +2929,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2722
2929
|
|
|
2723
2930
|
// src/components/UserPopover/index.tsx
|
|
2724
2931
|
var import_react_intl10 = require("react-intl");
|
|
2725
|
-
var
|
|
2932
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
2726
2933
|
function UserContent() {
|
|
2727
2934
|
const { logout, address, username } = useUserInfo();
|
|
2728
|
-
const [logouting, setLogouting] = (0,
|
|
2935
|
+
const [logouting, setLogouting] = (0, import_react21.useState)(false);
|
|
2729
2936
|
const onLogout = async () => {
|
|
2730
2937
|
if (logouting) return;
|
|
2731
2938
|
try {
|
|
@@ -2743,34 +2950,34 @@ function UserContent() {
|
|
|
2743
2950
|
rightIcon,
|
|
2744
2951
|
onClick
|
|
2745
2952
|
}) => {
|
|
2746
|
-
return /* @__PURE__ */ (0,
|
|
2747
|
-
/* @__PURE__ */ (0,
|
|
2953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
2954
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: `matchid-user-popover-item-content`, children: [
|
|
2748
2955
|
icon,
|
|
2749
|
-
/* @__PURE__ */ (0,
|
|
2956
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "matchid-user-popover-item-text", children })
|
|
2750
2957
|
] }),
|
|
2751
2958
|
rightIcon
|
|
2752
2959
|
] });
|
|
2753
2960
|
};
|
|
2754
2961
|
const UserDivider = () => {
|
|
2755
|
-
return /* @__PURE__ */ (0,
|
|
2962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: `matchid-user-popover-divider` });
|
|
2756
2963
|
};
|
|
2757
|
-
const [usernameOpen, setUsernameOpen] = (0,
|
|
2964
|
+
const [usernameOpen, setUsernameOpen] = (0, import_react21.useState)(false);
|
|
2758
2965
|
const [copied, setCopied] = useCopyClipboard();
|
|
2759
2966
|
const intl = (0, import_react_intl10.useIntl)();
|
|
2760
|
-
return /* @__PURE__ */ (0,
|
|
2761
|
-
/* @__PURE__ */ (0,
|
|
2762
|
-
/* @__PURE__ */ (0,
|
|
2967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-content", children: [
|
|
2968
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-list", children: [
|
|
2969
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
2763
2970
|
setCopied(address);
|
|
2764
|
-
}, icon: copied ? /* @__PURE__ */ (0,
|
|
2765
|
-
/* @__PURE__ */ (0,
|
|
2766
|
-
/* @__PURE__ */ (0,
|
|
2971
|
+
}, 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) }),
|
|
2972
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserDivider, {}),
|
|
2973
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
2767
2974
|
setUsernameOpen(true);
|
|
2768
|
-
}, icon: /* @__PURE__ */ (0,
|
|
2975
|
+
}, 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({
|
|
2769
2976
|
id: "setUsername"
|
|
2770
2977
|
}) })
|
|
2771
2978
|
] }),
|
|
2772
|
-
/* @__PURE__ */ (0,
|
|
2773
|
-
/* @__PURE__ */ (0,
|
|
2979
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_intl10.FormattedMessage, { id: "disconnect" }) }),
|
|
2980
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
2774
2981
|
setUsernameOpen(false);
|
|
2775
2982
|
}, onSuccess: () => {
|
|
2776
2983
|
setUsernameOpen(false);
|
|
@@ -2781,12 +2988,12 @@ function UserPopover({
|
|
|
2781
2988
|
children,
|
|
2782
2989
|
...props
|
|
2783
2990
|
}) {
|
|
2784
|
-
return /* @__PURE__ */ (0,
|
|
2991
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Popover, { ...props, content: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserContent, {}), children });
|
|
2785
2992
|
}
|
|
2786
2993
|
|
|
2787
2994
|
// src/components/LoginButton/index.tsx
|
|
2788
2995
|
var import_react_intl11 = require("react-intl");
|
|
2789
|
-
var
|
|
2996
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
2790
2997
|
function LoginButton({
|
|
2791
2998
|
loginRender,
|
|
2792
2999
|
methods,
|
|
@@ -2800,10 +3007,10 @@ function LoginButton({
|
|
|
2800
3007
|
}) {
|
|
2801
3008
|
const intl = (0, import_react_intl11.useIntl)();
|
|
2802
3009
|
const { isLogin, username } = useUserInfo();
|
|
2803
|
-
const [loginOpen, setLoginOpen] = (0,
|
|
3010
|
+
const [loginOpen, setLoginOpen] = (0, import_react22.useState)(false);
|
|
2804
3011
|
if (!isLogin) {
|
|
2805
|
-
return /* @__PURE__ */ (0,
|
|
2806
|
-
/* @__PURE__ */ (0,
|
|
3012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
3013
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
2807
3014
|
LoginModal,
|
|
2808
3015
|
{
|
|
2809
3016
|
methods,
|
|
@@ -2813,32 +3020,32 @@ function LoginButton({
|
|
|
2813
3020
|
onClose: () => setLoginOpen(false)
|
|
2814
3021
|
}
|
|
2815
3022
|
),
|
|
2816
|
-
/* @__PURE__ */ (0,
|
|
2817
|
-
/* @__PURE__ */ (0,
|
|
2818
|
-
/* @__PURE__ */ (0,
|
|
3023
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
3024
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UnLoginIcon_default, {}),
|
|
3025
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_intl11.FormattedMessage, { id: "login" }) })
|
|
2819
3026
|
] })
|
|
2820
3027
|
] });
|
|
2821
3028
|
}
|
|
2822
|
-
return loginRender ? /* @__PURE__ */ (0,
|
|
2823
|
-
/* @__PURE__ */ (0,
|
|
2824
|
-
/* @__PURE__ */ (0,
|
|
3029
|
+
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: [
|
|
3030
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(LoginIcon_default, {}),
|
|
3031
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
2825
3032
|
id: "user"
|
|
2826
3033
|
}) })
|
|
2827
3034
|
] }) });
|
|
2828
3035
|
}
|
|
2829
3036
|
|
|
2830
3037
|
// src/components/UsernameModal/index.tsx
|
|
2831
|
-
var
|
|
3038
|
+
var import_react23 = require("react");
|
|
2832
3039
|
|
|
2833
3040
|
// src/assets/icon/InfoRoundIcon.tsx
|
|
2834
|
-
var
|
|
3041
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
2835
3042
|
function InfoRoundIcon({
|
|
2836
3043
|
size,
|
|
2837
3044
|
color = "#6E6E6E",
|
|
2838
3045
|
...props
|
|
2839
3046
|
}) {
|
|
2840
|
-
return /* @__PURE__ */ (0,
|
|
2841
|
-
/* @__PURE__ */ (0,
|
|
3047
|
+
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: [
|
|
3048
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
2842
3049
|
"path",
|
|
2843
3050
|
{
|
|
2844
3051
|
fillRule: "evenodd",
|
|
@@ -2847,21 +3054,21 @@ function InfoRoundIcon({
|
|
|
2847
3054
|
fill: color
|
|
2848
3055
|
}
|
|
2849
3056
|
) }),
|
|
2850
|
-
/* @__PURE__ */ (0,
|
|
3057
|
+
/* @__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" }) }) })
|
|
2851
3058
|
] });
|
|
2852
3059
|
}
|
|
2853
3060
|
|
|
2854
3061
|
// src/components/UsernameModal/index.tsx
|
|
2855
3062
|
var import_react_intl12 = require("react-intl");
|
|
2856
|
-
var
|
|
3063
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
2857
3064
|
var ValidItem = ({
|
|
2858
3065
|
success = false,
|
|
2859
3066
|
text
|
|
2860
3067
|
}) => {
|
|
2861
3068
|
const isDownMd = useDownMd();
|
|
2862
|
-
return /* @__PURE__ */ (0,
|
|
2863
|
-
success ? /* @__PURE__ */ (0,
|
|
2864
|
-
/* @__PURE__ */ (0,
|
|
3069
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
3070
|
+
success ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
3071
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: text })
|
|
2865
3072
|
] });
|
|
2866
3073
|
};
|
|
2867
3074
|
function UsernameModal({
|
|
@@ -2872,23 +3079,23 @@ function UsernameModal({
|
|
|
2872
3079
|
}) {
|
|
2873
3080
|
const { username, refreshOverview } = useUserInfo();
|
|
2874
3081
|
const { isLogin } = useUserInfo();
|
|
2875
|
-
const [val, setVal] = (0,
|
|
2876
|
-
const [error, setError] = (0,
|
|
3082
|
+
const [val, setVal] = (0, import_react23.useState)(username);
|
|
3083
|
+
const [error, setError] = (0, import_react23.useState)("");
|
|
2877
3084
|
const isDownMd = useDownMd();
|
|
2878
|
-
(0,
|
|
3085
|
+
(0, import_react23.useEffect)(() => {
|
|
2879
3086
|
if (isOpen) {
|
|
2880
3087
|
setVal(username);
|
|
2881
3088
|
setError("");
|
|
2882
3089
|
}
|
|
2883
3090
|
}, [isOpen]);
|
|
2884
|
-
const isValid = (0,
|
|
3091
|
+
const isValid = (0, import_react23.useMemo)(() => {
|
|
2885
3092
|
return isValidUsername(val);
|
|
2886
3093
|
}, [val]);
|
|
2887
|
-
const isLength = (0,
|
|
3094
|
+
const isLength = (0, import_react23.useMemo)(() => {
|
|
2888
3095
|
return val.length >= 2 && val.length <= 32;
|
|
2889
3096
|
}, [val]);
|
|
2890
3097
|
const isSafe = isValid && isLength;
|
|
2891
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
3098
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react23.useState)(false);
|
|
2892
3099
|
const onSubmit = async () => {
|
|
2893
3100
|
if (isSubmitting) return;
|
|
2894
3101
|
try {
|
|
@@ -2909,12 +3116,12 @@ function UsernameModal({
|
|
|
2909
3116
|
}
|
|
2910
3117
|
};
|
|
2911
3118
|
const intl = (0, import_react_intl12.useIntl)();
|
|
2912
|
-
return /* @__PURE__ */ (0,
|
|
3119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
2913
3120
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
2914
|
-
}), children: /* @__PURE__ */ (0,
|
|
2915
|
-
/* @__PURE__ */ (0,
|
|
3121
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-username-box", children: [
|
|
3122
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Field, { label: intl.formatMessage({
|
|
2916
3123
|
id: "username"
|
|
2917
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
3124
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
2918
3125
|
Input,
|
|
2919
3126
|
{
|
|
2920
3127
|
placeholder: intl.formatMessage({
|
|
@@ -2927,8 +3134,8 @@ function UsernameModal({
|
|
|
2927
3134
|
value: val
|
|
2928
3135
|
}
|
|
2929
3136
|
) }),
|
|
2930
|
-
/* @__PURE__ */ (0,
|
|
2931
|
-
/* @__PURE__ */ (0,
|
|
3137
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-valid", children: [
|
|
3138
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
2932
3139
|
ValidItem,
|
|
2933
3140
|
{
|
|
2934
3141
|
success: isValid,
|
|
@@ -2937,21 +3144,21 @@ function UsernameModal({
|
|
|
2937
3144
|
})
|
|
2938
3145
|
}
|
|
2939
3146
|
),
|
|
2940
|
-
/* @__PURE__ */ (0,
|
|
3147
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ValidItem, { success: isLength, text: intl.formatMessage({
|
|
2941
3148
|
id: "usernameLengthError"
|
|
2942
3149
|
}) })
|
|
2943
3150
|
] }),
|
|
2944
|
-
/* @__PURE__ */ (0,
|
|
3151
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { disabled: !isSafe, loading: isSubmitting, style: {
|
|
2945
3152
|
marginTop: isDownMd ? "36px" : "64px"
|
|
2946
|
-
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
2947
|
-
/* @__PURE__ */ (0,
|
|
3153
|
+
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl12.FormattedMessage, { id: "confirm" }) }),
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { style: {
|
|
2948
3155
|
marginTop: isDownMd ? "12px" : "24px"
|
|
2949
|
-
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0,
|
|
3156
|
+
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl12.FormattedMessage, { id: "cancel" }) })
|
|
2950
3157
|
] }) });
|
|
2951
3158
|
}
|
|
2952
3159
|
|
|
2953
3160
|
// src/components/SOLModal/index.tsx
|
|
2954
|
-
var
|
|
3161
|
+
var import_react25 = __toESM(require("react"));
|
|
2955
3162
|
var import_web3 = require("@solana/web3.js");
|
|
2956
3163
|
var import_wallet_adapter_react = require("@solana/wallet-adapter-react");
|
|
2957
3164
|
var import_wallet_adapter_react_ui = require("@solana/wallet-adapter-react-ui");
|
|
@@ -2970,7 +3177,7 @@ var import_styles = require("@solana/wallet-adapter-react-ui/styles.css");
|
|
|
2970
3177
|
var import_react_intl13 = require("react-intl");
|
|
2971
3178
|
|
|
2972
3179
|
// src/components/WalletModalContent/index.tsx
|
|
2973
|
-
var
|
|
3180
|
+
var import_react24 = require("react");
|
|
2974
3181
|
|
|
2975
3182
|
// src/assets/wallet.ts
|
|
2976
3183
|
var walletErrorImage = "data:image/png;base64,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";
|
|
@@ -2980,7 +3187,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
2980
3187
|
var walletSigningImage = "data:image/png;base64,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";
|
|
2981
3188
|
|
|
2982
3189
|
// src/components/WalletModalContent/index.tsx
|
|
2983
|
-
var
|
|
3190
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
2984
3191
|
function WalletModalContent({
|
|
2985
3192
|
status,
|
|
2986
3193
|
error,
|
|
@@ -2991,7 +3198,7 @@ function WalletModalContent({
|
|
|
2991
3198
|
address,
|
|
2992
3199
|
connected
|
|
2993
3200
|
}) {
|
|
2994
|
-
const pageData = (0,
|
|
3201
|
+
const pageData = (0, import_react24.useMemo)(() => {
|
|
2995
3202
|
if (status == "success") {
|
|
2996
3203
|
return {
|
|
2997
3204
|
btnText: "Disconnect Wallet",
|
|
@@ -3050,12 +3257,12 @@ function WalletModalContent({
|
|
|
3050
3257
|
statusImage: walletConnectImage
|
|
3051
3258
|
};
|
|
3052
3259
|
}, [visible, connected, status, error, address]);
|
|
3053
|
-
return /* @__PURE__ */ (0,
|
|
3054
|
-
/* @__PURE__ */ (0,
|
|
3055
|
-
/* @__PURE__ */ (0,
|
|
3056
|
-
/* @__PURE__ */ (0,
|
|
3260
|
+
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: [
|
|
3261
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: `matchid-wallet-content`, children: [
|
|
3262
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("img", { src: pageData.statusImage }),
|
|
3263
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
3057
3264
|
] }),
|
|
3058
|
-
/* @__PURE__ */ (0,
|
|
3265
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
3059
3266
|
Button,
|
|
3060
3267
|
{
|
|
3061
3268
|
block: true,
|
|
@@ -3070,7 +3277,7 @@ function WalletModalContent({
|
|
|
3070
3277
|
}
|
|
3071
3278
|
|
|
3072
3279
|
// src/components/SOLModal/index.tsx
|
|
3073
|
-
var
|
|
3280
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
3074
3281
|
function WalletContent({
|
|
3075
3282
|
onSuccess,
|
|
3076
3283
|
type
|
|
@@ -3078,17 +3285,17 @@ function WalletContent({
|
|
|
3078
3285
|
const { setVisible, visible } = (0, import_wallet_adapter_react_ui.useWalletModal)();
|
|
3079
3286
|
const wallet = (0, import_wallet_adapter_react.useWallet)();
|
|
3080
3287
|
const { events, login } = useMatch();
|
|
3081
|
-
const [status, setStatus] = (0,
|
|
3082
|
-
const statusRef =
|
|
3083
|
-
const [error, setError] = (0,
|
|
3084
|
-
(0,
|
|
3288
|
+
const [status, setStatus] = (0, import_react25.useState)("");
|
|
3289
|
+
const statusRef = import_react25.default.useRef(status);
|
|
3290
|
+
const [error, setError] = (0, import_react25.useState)("");
|
|
3291
|
+
(0, import_react25.useEffect)(() => {
|
|
3085
3292
|
const init = async () => {
|
|
3086
3293
|
await wallet.disconnect();
|
|
3087
3294
|
setVisible(true);
|
|
3088
3295
|
};
|
|
3089
3296
|
init();
|
|
3090
3297
|
}, []);
|
|
3091
|
-
(0,
|
|
3298
|
+
(0, import_react25.useEffect)(() => {
|
|
3092
3299
|
if (wallet.connected) {
|
|
3093
3300
|
console.log("wallet.connected", wallet.connected);
|
|
3094
3301
|
toLoginInWallet();
|
|
@@ -3100,7 +3307,10 @@ function WalletContent({
|
|
|
3100
3307
|
try {
|
|
3101
3308
|
setStatus("nonce");
|
|
3102
3309
|
statusRef.current = "nonce";
|
|
3103
|
-
const res = type == "bind" ? await getWalletInitApi({
|
|
3310
|
+
const res = type == "bind" ? await getWalletInitApi({
|
|
3311
|
+
address,
|
|
3312
|
+
type: "SOL"
|
|
3313
|
+
}) : await getWalletNonceApi({ address, type: "SOL" });
|
|
3104
3314
|
if (!isSuccess(res)) {
|
|
3105
3315
|
throw new Error(res.message);
|
|
3106
3316
|
}
|
|
@@ -3149,7 +3359,7 @@ function WalletContent({
|
|
|
3149
3359
|
statusRef.current = "";
|
|
3150
3360
|
}
|
|
3151
3361
|
};
|
|
3152
|
-
return /* @__PURE__ */ (0,
|
|
3362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
3153
3363
|
WalletModalContent,
|
|
3154
3364
|
{
|
|
3155
3365
|
connected: wallet.connected,
|
|
@@ -3204,21 +3414,24 @@ var wallets = [
|
|
|
3204
3414
|
new import_wallet_adapter_wallets.TrustWalletAdapter(),
|
|
3205
3415
|
new import_wallet_adapter_wallets.XDEFIWalletAdapter()
|
|
3206
3416
|
];
|
|
3207
|
-
function
|
|
3417
|
+
function SOLConnectModal({
|
|
3208
3418
|
type = "login",
|
|
3209
3419
|
onSuccess,
|
|
3210
3420
|
...props
|
|
3211
3421
|
}) {
|
|
3212
3422
|
const intl = (0, import_react_intl13.useIntl)();
|
|
3213
|
-
return /* @__PURE__ */ (0,
|
|
3423
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3214
3424
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3215
3425
|
}, {
|
|
3216
3426
|
name: "SOL"
|
|
3217
|
-
}), children: /* @__PURE__ */ (0,
|
|
3427
|
+
}), 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 }) }) }) }) });
|
|
3428
|
+
}
|
|
3429
|
+
function SOLModal(props) {
|
|
3430
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SOLConnectModal, { ...props });
|
|
3218
3431
|
}
|
|
3219
3432
|
|
|
3220
3433
|
// src/components/TRONModal/index.tsx
|
|
3221
|
-
var
|
|
3434
|
+
var import_react27 = __toESM(require("react"));
|
|
3222
3435
|
var import_react_intl14 = require("react-intl");
|
|
3223
3436
|
|
|
3224
3437
|
// src/lib/tron/TronLinkAdapter.ts
|
|
@@ -3252,7 +3465,7 @@ var TronLinkAdapter = class {
|
|
|
3252
3465
|
};
|
|
3253
3466
|
|
|
3254
3467
|
// src/hooks/useTRONWallet.ts
|
|
3255
|
-
var
|
|
3468
|
+
var import_react26 = require("react");
|
|
3256
3469
|
|
|
3257
3470
|
// src/lib/tron/BitgetAdapter.ts
|
|
3258
3471
|
var BitgetAdapter = class {
|
|
@@ -3297,9 +3510,9 @@ var OKXAdapter = class {
|
|
|
3297
3510
|
// src/hooks/useTRONWallet.ts
|
|
3298
3511
|
var useTRONWallet = () => {
|
|
3299
3512
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
3300
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3301
|
-
const [address, setAddress] = (0,
|
|
3302
|
-
(0,
|
|
3513
|
+
const [installedWallets, setInstalledWallets] = (0, import_react26.useState)([]);
|
|
3514
|
+
const [address, setAddress] = (0, import_react26.useState)(null);
|
|
3515
|
+
(0, import_react26.useEffect)(() => {
|
|
3303
3516
|
const getInstalled = async () => {
|
|
3304
3517
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3305
3518
|
wallet: wallet2,
|
|
@@ -3309,11 +3522,11 @@ var useTRONWallet = () => {
|
|
|
3309
3522
|
};
|
|
3310
3523
|
getInstalled();
|
|
3311
3524
|
}, []);
|
|
3312
|
-
const [wallet, chooseWallet] = (0,
|
|
3525
|
+
const [wallet, chooseWallet] = (0, import_react26.useState)(null);
|
|
3313
3526
|
const onConnect = async () => {
|
|
3314
3527
|
setAddress(await wallet.connect());
|
|
3315
3528
|
};
|
|
3316
|
-
(0,
|
|
3529
|
+
(0, import_react26.useEffect)(() => {
|
|
3317
3530
|
if (!wallet) {
|
|
3318
3531
|
setAddress(null);
|
|
3319
3532
|
}
|
|
@@ -3329,8 +3542,8 @@ var useTRONWallet = () => {
|
|
|
3329
3542
|
};
|
|
3330
3543
|
|
|
3331
3544
|
// src/components/TRONModal/index.tsx
|
|
3332
|
-
var
|
|
3333
|
-
function
|
|
3545
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
3546
|
+
function TRONConnectModal({
|
|
3334
3547
|
type = "login",
|
|
3335
3548
|
onSuccess,
|
|
3336
3549
|
...props
|
|
@@ -3339,15 +3552,15 @@ function TRONModal({
|
|
|
3339
3552
|
const intl = (0, import_react_intl14.useIntl)();
|
|
3340
3553
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
|
|
3341
3554
|
const iconMaps = {
|
|
3342
|
-
tronlink: /* @__PURE__ */ (0,
|
|
3343
|
-
bitget: /* @__PURE__ */ (0,
|
|
3344
|
-
okx: /* @__PURE__ */ (0,
|
|
3555
|
+
tronlink: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
|
|
3556
|
+
bitget: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(BitgetIcon, { size: isDownMd ? 36 : 40 }),
|
|
3557
|
+
okx: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
3345
3558
|
};
|
|
3346
3559
|
const { events, login } = useMatch();
|
|
3347
|
-
const [status, setStatus] = (0,
|
|
3348
|
-
const statusRef =
|
|
3349
|
-
const [error, setError] = (0,
|
|
3350
|
-
const connected = (0,
|
|
3560
|
+
const [status, setStatus] = (0, import_react27.useState)("");
|
|
3561
|
+
const statusRef = import_react27.default.useRef(status);
|
|
3562
|
+
const [error, setError] = (0, import_react27.useState)("");
|
|
3563
|
+
const connected = (0, import_react27.useMemo)(() => {
|
|
3351
3564
|
return !!address;
|
|
3352
3565
|
}, [address]);
|
|
3353
3566
|
const disconnect = async () => {
|
|
@@ -3415,7 +3628,7 @@ function TRONModal({
|
|
|
3415
3628
|
statusRef.current = "";
|
|
3416
3629
|
}
|
|
3417
3630
|
};
|
|
3418
|
-
(0,
|
|
3631
|
+
(0, import_react27.useEffect)(() => {
|
|
3419
3632
|
if (wallet) {
|
|
3420
3633
|
console.log("onConnect");
|
|
3421
3634
|
onConnect();
|
|
@@ -3423,21 +3636,21 @@ function TRONModal({
|
|
|
3423
3636
|
setStatus("");
|
|
3424
3637
|
}
|
|
3425
3638
|
}, [wallet]);
|
|
3426
|
-
(0,
|
|
3639
|
+
(0, import_react27.useEffect)(() => {
|
|
3427
3640
|
if (address) {
|
|
3428
3641
|
toLoginInWallet();
|
|
3429
3642
|
}
|
|
3430
3643
|
}, [address]);
|
|
3431
|
-
(0,
|
|
3644
|
+
(0, import_react27.useEffect)(() => {
|
|
3432
3645
|
if (!props.isOpen) {
|
|
3433
3646
|
disconnect();
|
|
3434
3647
|
}
|
|
3435
3648
|
}, [props.isOpen]);
|
|
3436
|
-
return /* @__PURE__ */ (0,
|
|
3649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3437
3650
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3438
3651
|
}, {
|
|
3439
3652
|
name: "TRON"
|
|
3440
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
3653
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3441
3654
|
WalletModalContent,
|
|
3442
3655
|
{
|
|
3443
3656
|
error,
|
|
@@ -3450,9 +3663,9 @@ function TRONModal({
|
|
|
3450
3663
|
setVisible: () => {
|
|
3451
3664
|
}
|
|
3452
3665
|
}
|
|
3453
|
-
) : /* @__PURE__ */ (0,
|
|
3666
|
+
) : /* @__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: [
|
|
3454
3667
|
installedWallets.map((wallet2) => {
|
|
3455
|
-
return /* @__PURE__ */ (0,
|
|
3668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3456
3669
|
RecommendItem,
|
|
3457
3670
|
{
|
|
3458
3671
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -3465,14 +3678,14 @@ function TRONModal({
|
|
|
3465
3678
|
);
|
|
3466
3679
|
}),
|
|
3467
3680
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
3468
|
-
return /* @__PURE__ */ (0,
|
|
3681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3469
3682
|
RecommendItem,
|
|
3470
3683
|
{
|
|
3471
3684
|
icon: iconMaps[wallet2.walletKey],
|
|
3472
3685
|
name: wallet2.name,
|
|
3473
3686
|
onClick: () => {
|
|
3474
3687
|
},
|
|
3475
|
-
footer: /* @__PURE__ */ (0,
|
|
3688
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Button, { size: "sm", onClick: () => {
|
|
3476
3689
|
window.open(wallet2.website);
|
|
3477
3690
|
}, children: "Install" })
|
|
3478
3691
|
},
|
|
@@ -3481,26 +3694,29 @@ function TRONModal({
|
|
|
3481
3694
|
})
|
|
3482
3695
|
] }) }) });
|
|
3483
3696
|
}
|
|
3697
|
+
function TRONModal(props) {
|
|
3698
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TRONConnectModal, { ...props, type: "" });
|
|
3699
|
+
}
|
|
3484
3700
|
|
|
3485
3701
|
// src/components/TONModal/index.tsx
|
|
3486
|
-
var
|
|
3702
|
+
var import_react28 = __toESM(require("react"));
|
|
3487
3703
|
var import_react_intl15 = require("react-intl");
|
|
3488
3704
|
var import_ui_react = require("@tonconnect/ui-react");
|
|
3489
|
-
var
|
|
3705
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
3490
3706
|
function WalletContent2({
|
|
3491
3707
|
onSuccess,
|
|
3492
3708
|
type
|
|
3493
3709
|
}) {
|
|
3494
3710
|
const { events, login } = useMatch();
|
|
3495
|
-
const [connected, setConnected] = (0,
|
|
3711
|
+
const [connected, setConnected] = (0, import_react28.useState)(false);
|
|
3496
3712
|
const wallet = (0, import_ui_react.useTonWallet)();
|
|
3497
3713
|
const userFriendlyAddress = (0, import_ui_react.useTonAddress)();
|
|
3498
3714
|
const [tonConnectUI] = (0, import_ui_react.useTonConnectUI)();
|
|
3499
3715
|
const { state, open, close } = (0, import_ui_react.useTonConnectModal)();
|
|
3500
|
-
const [status, setStatus] = (0,
|
|
3501
|
-
const statusRef =
|
|
3502
|
-
const [error, setError] = (0,
|
|
3503
|
-
(0,
|
|
3716
|
+
const [status, setStatus] = (0, import_react28.useState)("");
|
|
3717
|
+
const statusRef = import_react28.default.useRef(status);
|
|
3718
|
+
const [error, setError] = (0, import_react28.useState)("");
|
|
3719
|
+
(0, import_react28.useEffect)(() => {
|
|
3504
3720
|
const init = async () => {
|
|
3505
3721
|
if (wallet) {
|
|
3506
3722
|
await tonConnectUI.disconnect();
|
|
@@ -3573,7 +3789,7 @@ function WalletContent2({
|
|
|
3573
3789
|
}
|
|
3574
3790
|
});
|
|
3575
3791
|
}, []);
|
|
3576
|
-
(0,
|
|
3792
|
+
(0, import_react28.useEffect)(() => {
|
|
3577
3793
|
if (wallet) {
|
|
3578
3794
|
setConnected(true);
|
|
3579
3795
|
console.log("Wallet connected:", wallet);
|
|
@@ -3584,7 +3800,7 @@ function WalletContent2({
|
|
|
3584
3800
|
setStatus("");
|
|
3585
3801
|
}
|
|
3586
3802
|
}, [wallet]);
|
|
3587
|
-
(0,
|
|
3803
|
+
(0, import_react28.useEffect)(() => {
|
|
3588
3804
|
console.log({
|
|
3589
3805
|
state,
|
|
3590
3806
|
wallet
|
|
@@ -3613,7 +3829,7 @@ function WalletContent2({
|
|
|
3613
3829
|
}
|
|
3614
3830
|
}
|
|
3615
3831
|
}, [state]);
|
|
3616
|
-
return /* @__PURE__ */ (0,
|
|
3832
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
3617
3833
|
WalletModalContent,
|
|
3618
3834
|
{
|
|
3619
3835
|
connected,
|
|
@@ -3639,7 +3855,7 @@ function WalletContent2({
|
|
|
3639
3855
|
}
|
|
3640
3856
|
);
|
|
3641
3857
|
}
|
|
3642
|
-
function
|
|
3858
|
+
function TONConnectModal({
|
|
3643
3859
|
type = "login",
|
|
3644
3860
|
onSuccess,
|
|
3645
3861
|
...props
|
|
@@ -3647,21 +3863,24 @@ function TONModal({
|
|
|
3647
3863
|
const intl = (0, import_react_intl15.useIntl)();
|
|
3648
3864
|
const { endpoints, appid } = useLocalStore_default();
|
|
3649
3865
|
const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
|
|
3650
|
-
return /* @__PURE__ */ (0,
|
|
3866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3651
3867
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3652
3868
|
}, {
|
|
3653
3869
|
name: "TON"
|
|
3654
|
-
}), children: /* @__PURE__ */ (0,
|
|
3870
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
3655
3871
|
import_ui_react.TonConnectUIProvider,
|
|
3656
3872
|
{
|
|
3657
3873
|
manifestUrl,
|
|
3658
|
-
children: /* @__PURE__ */ (0,
|
|
3874
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(WalletContent2, { onSuccess, type })
|
|
3659
3875
|
}
|
|
3660
3876
|
) });
|
|
3661
3877
|
}
|
|
3878
|
+
function TONModal(props) {
|
|
3879
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(TONConnectModal, { ...props });
|
|
3880
|
+
}
|
|
3662
3881
|
|
|
3663
3882
|
// src/components/BTCModal/index.tsx
|
|
3664
|
-
var
|
|
3883
|
+
var import_react30 = __toESM(require("react"));
|
|
3665
3884
|
var import_react_intl16 = require("react-intl");
|
|
3666
3885
|
|
|
3667
3886
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -3733,7 +3952,7 @@ var XverseAdapter = class {
|
|
|
3733
3952
|
}
|
|
3734
3953
|
});
|
|
3735
3954
|
} catch (err) {
|
|
3736
|
-
|
|
3955
|
+
matchlog_default.error(err);
|
|
3737
3956
|
resolve(false);
|
|
3738
3957
|
}
|
|
3739
3958
|
});
|
|
@@ -3810,12 +4029,12 @@ var LeatherAdapter = class {
|
|
|
3810
4029
|
};
|
|
3811
4030
|
|
|
3812
4031
|
// src/hooks/useBTCWallet.ts
|
|
3813
|
-
var
|
|
4032
|
+
var import_react29 = require("react");
|
|
3814
4033
|
var useBTCWallet = () => {
|
|
3815
4034
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
3816
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3817
|
-
const [address, setAddress] = (0,
|
|
3818
|
-
(0,
|
|
4035
|
+
const [installedWallets, setInstalledWallets] = (0, import_react29.useState)([]);
|
|
4036
|
+
const [address, setAddress] = (0, import_react29.useState)(null);
|
|
4037
|
+
(0, import_react29.useEffect)(() => {
|
|
3819
4038
|
const getInstalled = async () => {
|
|
3820
4039
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3821
4040
|
wallet: wallet2,
|
|
@@ -3825,11 +4044,11 @@ var useBTCWallet = () => {
|
|
|
3825
4044
|
};
|
|
3826
4045
|
getInstalled();
|
|
3827
4046
|
}, []);
|
|
3828
|
-
const [wallet, chooseWallet] = (0,
|
|
4047
|
+
const [wallet, chooseWallet] = (0, import_react29.useState)(null);
|
|
3829
4048
|
const onConnect = async () => {
|
|
3830
4049
|
setAddress(await wallet.connect());
|
|
3831
4050
|
};
|
|
3832
|
-
(0,
|
|
4051
|
+
(0, import_react29.useEffect)(() => {
|
|
3833
4052
|
if (!wallet) {
|
|
3834
4053
|
setAddress(null);
|
|
3835
4054
|
}
|
|
@@ -3845,8 +4064,8 @@ var useBTCWallet = () => {
|
|
|
3845
4064
|
};
|
|
3846
4065
|
|
|
3847
4066
|
// src/components/BTCModal/index.tsx
|
|
3848
|
-
var
|
|
3849
|
-
function
|
|
4067
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
4068
|
+
function BTCConnectModal({
|
|
3850
4069
|
type = "login",
|
|
3851
4070
|
onSuccess,
|
|
3852
4071
|
...props
|
|
@@ -3855,15 +4074,15 @@ function BTCModal({
|
|
|
3855
4074
|
const intl = (0, import_react_intl16.useIntl)();
|
|
3856
4075
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
|
|
3857
4076
|
const iconMaps = {
|
|
3858
|
-
leather: /* @__PURE__ */ (0,
|
|
3859
|
-
unisat: /* @__PURE__ */ (0,
|
|
3860
|
-
xverse: /* @__PURE__ */ (0,
|
|
4077
|
+
leather: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(LeatherIcon, { size: isDownMd ? 36 : 40 }),
|
|
4078
|
+
unisat: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(UnisatIcon, { size: isDownMd ? 36 : 40 }),
|
|
4079
|
+
xverse: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
3861
4080
|
};
|
|
3862
4081
|
const { events, login } = useMatch();
|
|
3863
|
-
const [status, setStatus] = (0,
|
|
3864
|
-
const statusRef =
|
|
3865
|
-
const [error, setError] = (0,
|
|
3866
|
-
const connected = (0,
|
|
4082
|
+
const [status, setStatus] = (0, import_react30.useState)("");
|
|
4083
|
+
const statusRef = import_react30.default.useRef(status);
|
|
4084
|
+
const [error, setError] = (0, import_react30.useState)("");
|
|
4085
|
+
const connected = (0, import_react30.useMemo)(() => {
|
|
3867
4086
|
return !!address;
|
|
3868
4087
|
}, [address]);
|
|
3869
4088
|
const disconnect = async () => {
|
|
@@ -3927,7 +4146,7 @@ function BTCModal({
|
|
|
3927
4146
|
statusRef.current = "";
|
|
3928
4147
|
}
|
|
3929
4148
|
};
|
|
3930
|
-
(0,
|
|
4149
|
+
(0, import_react30.useEffect)(() => {
|
|
3931
4150
|
if (wallet) {
|
|
3932
4151
|
console.log("onConnect");
|
|
3933
4152
|
try {
|
|
@@ -3940,12 +4159,12 @@ function BTCModal({
|
|
|
3940
4159
|
setStatus("");
|
|
3941
4160
|
}
|
|
3942
4161
|
}, [wallet]);
|
|
3943
|
-
(0,
|
|
4162
|
+
(0, import_react30.useEffect)(() => {
|
|
3944
4163
|
if (address) {
|
|
3945
4164
|
toLoginInWallet();
|
|
3946
4165
|
}
|
|
3947
4166
|
}, [address]);
|
|
3948
|
-
(0,
|
|
4167
|
+
(0, import_react30.useEffect)(() => {
|
|
3949
4168
|
if (!props.isOpen) {
|
|
3950
4169
|
disconnect();
|
|
3951
4170
|
}
|
|
@@ -3957,11 +4176,11 @@ function BTCModal({
|
|
|
3957
4176
|
statusRef.current = "";
|
|
3958
4177
|
setError("");
|
|
3959
4178
|
};
|
|
3960
|
-
return /* @__PURE__ */ (0,
|
|
4179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3961
4180
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3962
4181
|
}, {
|
|
3963
4182
|
name: "BTC"
|
|
3964
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
4183
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3965
4184
|
WalletModalContent,
|
|
3966
4185
|
{
|
|
3967
4186
|
error,
|
|
@@ -3974,9 +4193,9 @@ function BTCModal({
|
|
|
3974
4193
|
setVisible: () => {
|
|
3975
4194
|
}
|
|
3976
4195
|
}
|
|
3977
|
-
) : /* @__PURE__ */ (0,
|
|
4196
|
+
) : /* @__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: [
|
|
3978
4197
|
installedWallets.map((wallet2) => {
|
|
3979
|
-
return /* @__PURE__ */ (0,
|
|
4198
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3980
4199
|
RecommendItem,
|
|
3981
4200
|
{
|
|
3982
4201
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -3989,14 +4208,14 @@ function BTCModal({
|
|
|
3989
4208
|
);
|
|
3990
4209
|
}),
|
|
3991
4210
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
3992
|
-
return /* @__PURE__ */ (0,
|
|
4211
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3993
4212
|
RecommendItem,
|
|
3994
4213
|
{
|
|
3995
4214
|
icon: iconMaps[wallet2.walletKey],
|
|
3996
4215
|
name: wallet2.name,
|
|
3997
4216
|
onClick: () => {
|
|
3998
4217
|
},
|
|
3999
|
-
footer: /* @__PURE__ */ (0,
|
|
4218
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { size: "sm", onClick: () => {
|
|
4000
4219
|
window.open(wallet2.website);
|
|
4001
4220
|
}, children: "Install" })
|
|
4002
4221
|
},
|
|
@@ -4005,6 +4224,9 @@ function BTCModal({
|
|
|
4005
4224
|
})
|
|
4006
4225
|
] }) }) });
|
|
4007
4226
|
}
|
|
4227
|
+
function BTCModal(props) {
|
|
4228
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(BTCConnectModal, { ...props });
|
|
4229
|
+
}
|
|
4008
4230
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4009
4231
|
0 && (module.exports = {
|
|
4010
4232
|
BTCModal,
|
|
@@ -4018,6 +4240,7 @@ function BTCModal({
|
|
|
4018
4240
|
LoginPanel,
|
|
4019
4241
|
Modal,
|
|
4020
4242
|
ModalWithHeader,
|
|
4243
|
+
Overlay,
|
|
4021
4244
|
PasswordModal,
|
|
4022
4245
|
Popover,
|
|
4023
4246
|
SOLModal,
|