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