@matchain/matchid-sdk-react 0.1.42-alpha.0 → 0.1.42-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icon/index.d.mts +1 -1
- package/dist/assets/icon/index.d.ts +1 -1
- package/dist/{chunk-ZP4OU66T.mjs → chunk-N53ZMW5C.mjs} +2 -2
- package/dist/chunk-SQIJR7RA.mjs +29 -0
- package/dist/chunk-SQIJR7RA.mjs.map +1 -0
- package/dist/chunk-YG4MNAUD.mjs +4662 -0
- package/dist/chunk-YG4MNAUD.mjs.map +1 -0
- package/dist/components/index.d.mts +3 -2
- package/dist/components/index.d.ts +3 -2
- package/dist/components/index.js +678 -454
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +4 -1
- package/dist/hooks/api/index.d.mts +2 -2
- package/dist/hooks/api/index.d.ts +2 -2
- package/dist/hooks/api/index.js +122 -77
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +3 -2
- package/dist/hooks/index.d.mts +5 -2
- package/dist/hooks/index.d.ts +5 -2
- package/dist/hooks/index.js +330 -146
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +2 -1
- package/dist/index-BxS06a5O.d.ts +50 -0
- package/dist/{index-Dq9Swg8r.d.ts → index-Ca9nh_8s.d.ts} +1 -1
- package/dist/{index-COlsBC-b.d.mts → index-CmH9iRLd.d.mts} +25 -12
- package/dist/{index-C3KZYrtu.d.mts → index-DFZpfAfc.d.mts} +1 -1
- package/dist/index-DKMrpRJC.d.ts +137 -0
- package/dist/{index-fS75Swm8.d.ts → index-DY_ReBra.d.ts} +25 -12
- package/dist/index-q5XDobUF.d.mts +50 -0
- package/dist/index-sOVSnYF4.d.mts +137 -0
- package/dist/index.css +84 -4
- package/dist/index.d.mts +9 -4
- package/dist/index.d.ts +9 -4
- package/dist/index.js +1102 -615
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -5
- package/dist/mpc-CTbBWHld.d.mts +20 -0
- package/dist/mpc-CTbBWHld.d.ts +20 -0
- package/dist/types/index.d.mts +3 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.js +44 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/index.mjs +10 -0
- package/dist/types/index.mjs.map +1 -0
- package/dist/types-CVwZEgQ0.d.mts +244 -0
- package/dist/types-CVwZEgQ0.d.ts +244 -0
- package/example/package.json +1 -0
- package/example/src/App.tsx +56 -27
- package/example/src/components/ButtonGroup/index.tsx +10 -0
- package/example/src/components/Login/index.tsx +2 -2
- package/example/src/components/RoutePrivate/index.tsx +4 -3
- package/example/src/config/chains/index.ts +2 -0
- package/example/src/config/chains/matchMain.ts +27 -0
- package/example/src/config/chains/matchTest.ts +33 -0
- package/example/src/config/index.ts +6 -2
- package/example/src/pages/User/components/BindListModal.tsx +10 -0
- package/example/src/pages/User/components/PohListModal.tsx +10 -0
- package/example/src/pages/User/components/QueryDisplay.tsx +25 -0
- package/example/src/pages/{User.tsx → User/index.tsx} +55 -84
- package/example/src/pages/Wallet.tsx +133 -44
- package/example/src/store/useLocalStore.ts +45 -0
- package/package.json +7 -2
- package/dist/chunk-OVZZIJZP.mjs +0 -4196
- package/dist/chunk-OVZZIJZP.mjs.map +0 -1
- package/dist/index-Blx4Nrwm.d.ts +0 -93
- package/dist/index-C1uG-2K1.d.mts +0 -93
- package/dist/types.d-CLO_WLka.d.mts +0 -176
- package/dist/types.d-CLO_WLka.d.ts +0 -176
- /package/dist/{chunk-ZP4OU66T.mjs.map → chunk-N53ZMW5C.mjs.map} +0 -0
package/dist/components/index.js
CHANGED
|
@@ -41,6 +41,7 @@ __export(components_exports, {
|
|
|
41
41
|
LoginPanel: () => LoginPanel,
|
|
42
42
|
Modal: () => Modal,
|
|
43
43
|
ModalWithHeader: () => ModalWithHeader,
|
|
44
|
+
Overlay: () => Overlay,
|
|
44
45
|
PasswordModal: () => PasswordModal,
|
|
45
46
|
Popover: () => Popover,
|
|
46
47
|
SOLModal: () => SOLModal,
|
|
@@ -51,7 +52,7 @@ __export(components_exports, {
|
|
|
51
52
|
module.exports = __toCommonJS(components_exports);
|
|
52
53
|
|
|
53
54
|
// src/components/EmailModal/index.tsx
|
|
54
|
-
var
|
|
55
|
+
var import_react18 = require("react");
|
|
55
56
|
|
|
56
57
|
// src/assets/icon/ArrowLeftIcon.tsx
|
|
57
58
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1123,15 +1124,24 @@ function useDownMd() {
|
|
|
1123
1124
|
return isBelowMd;
|
|
1124
1125
|
}
|
|
1125
1126
|
|
|
1126
|
-
// src/components/
|
|
1127
|
+
// src/components/Overlay/index.tsx
|
|
1128
|
+
var import_react2 = require("react");
|
|
1127
1129
|
var import_jsx_runtime44 = require("react/jsx-runtime");
|
|
1128
|
-
function
|
|
1130
|
+
function Overlay({
|
|
1131
|
+
isOpen = false,
|
|
1129
1132
|
children,
|
|
1130
|
-
|
|
1131
|
-
width = 480,
|
|
1132
|
-
zIndex = 100,
|
|
1133
|
-
className = ""
|
|
1133
|
+
zIndex = 100
|
|
1134
1134
|
}) {
|
|
1135
|
+
(0, import_react2.useEffect)(() => {
|
|
1136
|
+
if (isOpen) {
|
|
1137
|
+
document.body.style.overflow = "hidden";
|
|
1138
|
+
} else {
|
|
1139
|
+
document.body.style.overflow = "";
|
|
1140
|
+
}
|
|
1141
|
+
return () => {
|
|
1142
|
+
document.body.style.overflow = "";
|
|
1143
|
+
};
|
|
1144
|
+
}, [isOpen]);
|
|
1135
1145
|
return isOpen ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
|
|
1136
1146
|
"div",
|
|
1137
1147
|
{
|
|
@@ -1139,15 +1149,27 @@ function Modal({
|
|
|
1139
1149
|
style: {
|
|
1140
1150
|
zIndex
|
|
1141
1151
|
},
|
|
1142
|
-
children
|
|
1143
|
-
width
|
|
1144
|
-
}, children: [
|
|
1145
|
-
/* @__PURE__ */ (0, import_jsx_runtime44.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1146
|
-
children
|
|
1147
|
-
] })
|
|
1152
|
+
children
|
|
1148
1153
|
}
|
|
1149
1154
|
) : /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_jsx_runtime44.Fragment, {});
|
|
1150
1155
|
}
|
|
1156
|
+
|
|
1157
|
+
// src/components/Modal/index.tsx
|
|
1158
|
+
var import_jsx_runtime45 = require("react/jsx-runtime");
|
|
1159
|
+
function Modal({
|
|
1160
|
+
children,
|
|
1161
|
+
isOpen,
|
|
1162
|
+
width = 480,
|
|
1163
|
+
zIndex = 100,
|
|
1164
|
+
className = ""
|
|
1165
|
+
}) {
|
|
1166
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(Overlay, { isOpen, zIndex, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: `matchid-modal ${className}`, style: {
|
|
1167
|
+
width
|
|
1168
|
+
}, children: [
|
|
1169
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "matchid-modal-mobile-header" }),
|
|
1170
|
+
children
|
|
1171
|
+
] }) });
|
|
1172
|
+
}
|
|
1151
1173
|
function ModalWithHeader({
|
|
1152
1174
|
children,
|
|
1153
1175
|
onBack,
|
|
@@ -1158,24 +1180,24 @@ function ModalWithHeader({
|
|
|
1158
1180
|
...props
|
|
1159
1181
|
}) {
|
|
1160
1182
|
const isDownMd = useDownMd();
|
|
1161
|
-
return /* @__PURE__ */ (0,
|
|
1162
|
-
/* @__PURE__ */ (0,
|
|
1163
|
-
/* @__PURE__ */ (0,
|
|
1164
|
-
onBack && /* @__PURE__ */ (0,
|
|
1165
|
-
/* @__PURE__ */ (0,
|
|
1183
|
+
return /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(Modal, { ...props, children: [
|
|
1184
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: `matchid-modal-header ${showBorder ? "matchid-modal-header-border" : ""}`, children: [
|
|
1185
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsxs)("div", { className: "matchid-modal-header-content", children: [
|
|
1186
|
+
onBack && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(ArrowLeftIcon, { height: isDownMd ? 20 : 25, width: isDownMd ? 20 : 24, className: "matchid-modal-header-back", onClick: onBack }),
|
|
1187
|
+
/* @__PURE__ */ (0, import_jsx_runtime45.jsx)("span", { className: "matchid-modal-header-title", children: title })
|
|
1166
1188
|
] }),
|
|
1167
|
-
onClose && /* @__PURE__ */ (0,
|
|
1189
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30, className: "matchid-modal-header-close", onClick: onClose })
|
|
1168
1190
|
] }),
|
|
1169
1191
|
children
|
|
1170
1192
|
] });
|
|
1171
1193
|
}
|
|
1172
1194
|
|
|
1173
1195
|
// src/components/EmailModal/StepEmail.tsx
|
|
1174
|
-
var
|
|
1196
|
+
var import_react4 = require("react");
|
|
1175
1197
|
|
|
1176
1198
|
// src/utils/index.ts
|
|
1177
1199
|
var getVersion = () => {
|
|
1178
|
-
return "0.0.
|
|
1200
|
+
return "0.0.2";
|
|
1179
1201
|
};
|
|
1180
1202
|
function encodeBase64(input) {
|
|
1181
1203
|
return btoa(unescape(encodeURIComponent(input)));
|
|
@@ -1199,7 +1221,7 @@ function getAppClientId() {
|
|
|
1199
1221
|
}
|
|
1200
1222
|
|
|
1201
1223
|
// src/components/Button/index.tsx
|
|
1202
|
-
var
|
|
1224
|
+
var import_jsx_runtime46 = require("react/jsx-runtime");
|
|
1203
1225
|
function Button({
|
|
1204
1226
|
size = "df",
|
|
1205
1227
|
disabled = false,
|
|
@@ -1218,7 +1240,7 @@ function Button({
|
|
|
1218
1240
|
onClick && onClick();
|
|
1219
1241
|
}
|
|
1220
1242
|
};
|
|
1221
|
-
return /* @__PURE__ */ (0,
|
|
1243
|
+
return /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(
|
|
1222
1244
|
"button",
|
|
1223
1245
|
{
|
|
1224
1246
|
type,
|
|
@@ -1228,14 +1250,14 @@ function Button({
|
|
|
1228
1250
|
...style
|
|
1229
1251
|
},
|
|
1230
1252
|
onClick: onAction,
|
|
1231
|
-
children: loading ? /* @__PURE__ */ (0,
|
|
1253
|
+
children: loading ? /* @__PURE__ */ (0, import_jsx_runtime46.jsx)(LoadingIcon_default, { className: "matchid-btn-loading-icon", color: "var(--matchid-btn-loading-color)" }) : children
|
|
1232
1254
|
}
|
|
1233
1255
|
);
|
|
1234
1256
|
}
|
|
1235
1257
|
|
|
1236
1258
|
// src/components/Input/index.tsx
|
|
1237
|
-
var
|
|
1238
|
-
var
|
|
1259
|
+
var import_react3 = require("react");
|
|
1260
|
+
var import_jsx_runtime47 = require("react/jsx-runtime");
|
|
1239
1261
|
function Input({
|
|
1240
1262
|
onChange,
|
|
1241
1263
|
type,
|
|
@@ -1243,19 +1265,19 @@ function Input({
|
|
|
1243
1265
|
className = "",
|
|
1244
1266
|
...props
|
|
1245
1267
|
}) {
|
|
1246
|
-
const [inputType, setInputType] = (0,
|
|
1268
|
+
const [inputType, setInputType] = (0, import_react3.useState)(type);
|
|
1247
1269
|
const isDownMd = useDownMd();
|
|
1248
|
-
return /* @__PURE__ */ (0,
|
|
1270
|
+
return /* @__PURE__ */ (0, import_jsx_runtime47.jsxs)(
|
|
1249
1271
|
"div",
|
|
1250
1272
|
{
|
|
1251
1273
|
className: `matchid-input-box ${props.value && props.value.length > 0 ? "matchid-input-has-content" : ""} ${className}`,
|
|
1252
1274
|
children: [
|
|
1253
|
-
/* @__PURE__ */ (0,
|
|
1254
|
-
props.value && props.value.length > 0 && /* @__PURE__ */ (0,
|
|
1275
|
+
/* @__PURE__ */ (0, import_jsx_runtime47.jsx)("input", { type: inputType, onChange, ...props, className: "matchid-input-field" }),
|
|
1276
|
+
props.value && props.value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-input-delete-icon", onClick: (e) => {
|
|
1255
1277
|
if (onChange) {
|
|
1256
1278
|
onChange({ target: { value: "" } });
|
|
1257
1279
|
}
|
|
1258
|
-
}, children: /* @__PURE__ */ (0,
|
|
1280
|
+
}, children: /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
|
|
1259
1281
|
DeleteRoundIcon,
|
|
1260
1282
|
{
|
|
1261
1283
|
height: isDownMd ? 16 : 21,
|
|
@@ -1263,9 +1285,9 @@ function Input({
|
|
|
1263
1285
|
color: "var(--matchid-input-delete-icon-color)"
|
|
1264
1286
|
}
|
|
1265
1287
|
) }),
|
|
1266
|
-
type === "password" && /* @__PURE__ */ (0,
|
|
1288
|
+
type === "password" && /* @__PURE__ */ (0, import_jsx_runtime47.jsx)("div", { className: "matchid-input-eye-icon", onClick: () => {
|
|
1267
1289
|
setInputType(inputType === "password" ? "text" : "password");
|
|
1268
|
-
}, children: inputType === "password" ? /* @__PURE__ */ (0,
|
|
1290
|
+
}, children: inputType === "password" ? /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(CloseEyeIcon, { size: isDownMd ? 16 : 20 }) : /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(OpenEyeIcon, { size: isDownMd ? 16 : 20 }) }),
|
|
1269
1291
|
after
|
|
1270
1292
|
]
|
|
1271
1293
|
}
|
|
@@ -1273,7 +1295,7 @@ function Input({
|
|
|
1273
1295
|
}
|
|
1274
1296
|
|
|
1275
1297
|
// src/components/Field/index.tsx
|
|
1276
|
-
var
|
|
1298
|
+
var import_jsx_runtime48 = require("react/jsx-runtime");
|
|
1277
1299
|
function Field({
|
|
1278
1300
|
label,
|
|
1279
1301
|
children,
|
|
@@ -1281,37 +1303,37 @@ function Field({
|
|
|
1281
1303
|
required,
|
|
1282
1304
|
className = ""
|
|
1283
1305
|
}) {
|
|
1284
|
-
return /* @__PURE__ */ (0,
|
|
1285
|
-
/* @__PURE__ */ (0,
|
|
1286
|
-
required && /* @__PURE__ */ (0,
|
|
1306
|
+
return /* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: `matchid-field-box ${className}`, children: [
|
|
1307
|
+
/* @__PURE__ */ (0, import_jsx_runtime48.jsxs)("div", { className: "matchid-field-label", children: [
|
|
1308
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("span", { className: "matchid-field-required", children: "*" }),
|
|
1287
1309
|
label
|
|
1288
1310
|
] }),
|
|
1289
1311
|
children,
|
|
1290
|
-
error && /* @__PURE__ */ (0,
|
|
1312
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime48.jsx)("div", { className: "matchid-field-error", children: error })
|
|
1291
1313
|
] });
|
|
1292
1314
|
}
|
|
1293
1315
|
|
|
1294
1316
|
// src/components/EmailModal/StepEmail.tsx
|
|
1295
1317
|
var import_react_intl = require("react-intl");
|
|
1296
|
-
var
|
|
1318
|
+
var import_jsx_runtime49 = require("react/jsx-runtime");
|
|
1297
1319
|
function StepEmail(props) {
|
|
1298
1320
|
const intl = (0, import_react_intl.useIntl)();
|
|
1299
|
-
const [emailVal, setEmailVal] = (0,
|
|
1300
|
-
(0,
|
|
1321
|
+
const [emailVal, setEmailVal] = (0, import_react4.useState)("");
|
|
1322
|
+
(0, import_react4.useEffect)(() => {
|
|
1301
1323
|
if (props.email) {
|
|
1302
1324
|
setEmailVal(props.email);
|
|
1303
1325
|
}
|
|
1304
1326
|
}, []);
|
|
1305
|
-
const canContinue = (0,
|
|
1327
|
+
const canContinue = (0, import_react4.useMemo)(() => {
|
|
1306
1328
|
return isValidEmail(emailVal);
|
|
1307
1329
|
}, [emailVal]);
|
|
1308
1330
|
const onContinue = async () => {
|
|
1309
1331
|
props.onContinue(emailVal);
|
|
1310
1332
|
};
|
|
1311
|
-
return /* @__PURE__ */ (0,
|
|
1312
|
-
/* @__PURE__ */ (0,
|
|
1333
|
+
return /* @__PURE__ */ (0, import_jsx_runtime49.jsxs)("div", { className: "matchid-email-email-box", children: [
|
|
1334
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Field, { label: intl.formatMessage({
|
|
1313
1335
|
id: "emailAddress"
|
|
1314
|
-
}), children: /* @__PURE__ */ (0,
|
|
1336
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
|
|
1315
1337
|
Input,
|
|
1316
1338
|
{
|
|
1317
1339
|
placeholder: intl.formatMessage({
|
|
@@ -1321,9 +1343,9 @@ function StepEmail(props) {
|
|
|
1321
1343
|
value: emailVal
|
|
1322
1344
|
}
|
|
1323
1345
|
) }),
|
|
1324
|
-
/* @__PURE__ */ (0,
|
|
1346
|
+
/* @__PURE__ */ (0, import_jsx_runtime49.jsx)(Button, { disabled: !canContinue, style: {
|
|
1325
1347
|
marginTop: "64px"
|
|
1326
|
-
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
1348
|
+
}, onClick: onContinue, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_react_intl.FormattedMessage, { id: "continue" }) })
|
|
1327
1349
|
] });
|
|
1328
1350
|
}
|
|
1329
1351
|
|
|
@@ -1358,7 +1380,11 @@ var persistedState = (0, import_middleware.persist)(
|
|
|
1358
1380
|
address: "",
|
|
1359
1381
|
setAddress: (address) => set({ address }),
|
|
1360
1382
|
locale: "en",
|
|
1361
|
-
setLocale: (locale) => set({ locale })
|
|
1383
|
+
setLocale: (locale) => set({ locale }),
|
|
1384
|
+
wallet: {
|
|
1385
|
+
type: "UserPasscode"
|
|
1386
|
+
},
|
|
1387
|
+
setWallet: (wallet) => set({ wallet })
|
|
1362
1388
|
}),
|
|
1363
1389
|
{ name: "match-local" }
|
|
1364
1390
|
);
|
|
@@ -1367,7 +1393,7 @@ var localStore = useLocalStore;
|
|
|
1367
1393
|
var useLocalStore_default = useLocalStore;
|
|
1368
1394
|
|
|
1369
1395
|
// src/hooks/useUserInfo.tsx
|
|
1370
|
-
var
|
|
1396
|
+
var import_react16 = require("react");
|
|
1371
1397
|
|
|
1372
1398
|
// src/api/request.ts
|
|
1373
1399
|
var import_axios = __toESM(require("axios"));
|
|
@@ -1576,13 +1602,16 @@ var toBindWalletApi = ({
|
|
|
1576
1602
|
};
|
|
1577
1603
|
|
|
1578
1604
|
// src/MatchContext.tsx
|
|
1579
|
-
var
|
|
1605
|
+
var import_react15 = require("react");
|
|
1606
|
+
|
|
1607
|
+
// src/context/BusinessProvider.tsx
|
|
1608
|
+
var import_react12 = require("react");
|
|
1580
1609
|
|
|
1581
1610
|
// src/components/PasswordModal/index.tsx
|
|
1582
|
-
var
|
|
1611
|
+
var import_react8 = require("react");
|
|
1583
1612
|
|
|
1584
1613
|
// src/hooks/useMatchEvents.ts
|
|
1585
|
-
var
|
|
1614
|
+
var import_react5 = require("react");
|
|
1586
1615
|
|
|
1587
1616
|
// src/hooks/eventManager.ts
|
|
1588
1617
|
var EventManager = class {
|
|
@@ -1612,11 +1641,14 @@ var EventManager = class {
|
|
|
1612
1641
|
var eventManager = new EventManager();
|
|
1613
1642
|
var eventManager_default = eventManager;
|
|
1614
1643
|
|
|
1644
|
+
// src/hooks/useWallet.tsx
|
|
1645
|
+
var import_viem = require("viem");
|
|
1646
|
+
|
|
1615
1647
|
// src/store/useStore.ts
|
|
1616
1648
|
var import_zustand2 = require("zustand");
|
|
1617
1649
|
var useStore = (0, import_zustand2.create)((set) => ({
|
|
1618
|
-
|
|
1619
|
-
|
|
1650
|
+
walletReady: false,
|
|
1651
|
+
setWalletReady: (inited) => set({ walletReady: inited }),
|
|
1620
1652
|
recoveryModal: {
|
|
1621
1653
|
open: false,
|
|
1622
1654
|
success: async () => {
|
|
@@ -1631,143 +1663,335 @@ var useStore_default = useStore;
|
|
|
1631
1663
|
|
|
1632
1664
|
// src/hooks/useWallet.tsx
|
|
1633
1665
|
var import_accounts = require("viem/accounts");
|
|
1666
|
+
var import_viem2 = require("viem");
|
|
1667
|
+
var import_react6 = require("react");
|
|
1668
|
+
var import_viem3 = require("viem");
|
|
1669
|
+
|
|
1670
|
+
// src/store/useModalStore.ts
|
|
1671
|
+
var import_zustand3 = require("zustand");
|
|
1672
|
+
var useSOLModalStore = (0, import_zustand3.create)((set) => ({
|
|
1673
|
+
isOpen: false,
|
|
1674
|
+
type: "",
|
|
1675
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1676
|
+
close: () => set({ isOpen: false })
|
|
1677
|
+
}));
|
|
1678
|
+
var useTRONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1679
|
+
isOpen: false,
|
|
1680
|
+
type: "",
|
|
1681
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1682
|
+
close: () => set({ isOpen: false })
|
|
1683
|
+
}));
|
|
1684
|
+
var useTONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1685
|
+
isOpen: false,
|
|
1686
|
+
type: "",
|
|
1687
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1688
|
+
close: () => set({ isOpen: false })
|
|
1689
|
+
}));
|
|
1690
|
+
var useBTCModalStore = (0, import_zustand3.create)((set) => ({
|
|
1691
|
+
isOpen: false,
|
|
1692
|
+
type: "",
|
|
1693
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1694
|
+
close: () => set({ isOpen: false })
|
|
1695
|
+
}));
|
|
1696
|
+
var useCEXBindModalStore = (0, import_zustand3.create)((set) => ({
|
|
1697
|
+
type: "",
|
|
1698
|
+
isOpen: false,
|
|
1699
|
+
open: (type) => set({ isOpen: true, type }),
|
|
1700
|
+
close: () => set({ isOpen: false })
|
|
1701
|
+
}));
|
|
1702
|
+
var useHashPanelStore = (0, import_zustand3.create)((set) => ({
|
|
1703
|
+
isOpen: false,
|
|
1704
|
+
hash: null,
|
|
1705
|
+
chain: null,
|
|
1706
|
+
open: (params) => set({
|
|
1707
|
+
isOpen: true,
|
|
1708
|
+
hash: params?.hash || null,
|
|
1709
|
+
chain: params?.chain || null
|
|
1710
|
+
}),
|
|
1711
|
+
close: () => set({ isOpen: false })
|
|
1712
|
+
}));
|
|
1713
|
+
|
|
1714
|
+
// src/hooks/useWallet.tsx
|
|
1634
1715
|
var AppClientId = "react-sdk-" + getVersion();
|
|
1635
1716
|
function useWallet() {
|
|
1636
|
-
const { appid, token, overview, address } = useLocalStore_default();
|
|
1637
|
-
const { setRecoveryModal, closeRecoveryModal } = useStore_default();
|
|
1638
|
-
const
|
|
1717
|
+
const { appid, token, overview, address, wallet: walletConfig } = useLocalStore_default();
|
|
1718
|
+
const { setRecoveryModal, closeRecoveryModal, walletReady } = useStore_default();
|
|
1719
|
+
const { open: openHashPanel } = useHashPanelStore();
|
|
1720
|
+
const initCore = ({
|
|
1639
1721
|
did,
|
|
1640
1722
|
address: address2
|
|
1641
1723
|
}) => {
|
|
1642
|
-
return window.
|
|
1643
|
-
"initCore",
|
|
1724
|
+
return window.matchProvider.waitUntilWalletMessage(
|
|
1644
1725
|
{
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1726
|
+
method: "initCore",
|
|
1727
|
+
data: {
|
|
1728
|
+
AppId: appid,
|
|
1729
|
+
AppClientId,
|
|
1730
|
+
UserId: did,
|
|
1731
|
+
AccessToken: token,
|
|
1732
|
+
Address: address2
|
|
1733
|
+
}
|
|
1650
1734
|
}
|
|
1651
1735
|
);
|
|
1652
1736
|
};
|
|
1737
|
+
const generateEmbeddedWallets = async (data) => {
|
|
1738
|
+
return await window.matchProvider.waitUntilWalletMessage({
|
|
1739
|
+
method: "generateEmbeddedWallets",
|
|
1740
|
+
data
|
|
1741
|
+
});
|
|
1742
|
+
};
|
|
1743
|
+
const recoveryEmbeddedWallets = async (data) => {
|
|
1744
|
+
return await window.matchProvider.waitUntilWalletMessage({
|
|
1745
|
+
method: "recoveryEmbeddedWallets",
|
|
1746
|
+
data
|
|
1747
|
+
});
|
|
1748
|
+
};
|
|
1653
1749
|
const isRecovered = async () => {
|
|
1654
|
-
const res = await window.
|
|
1750
|
+
const res = await window.matchProvider.waitUntilWalletMessage({
|
|
1751
|
+
method: "isRecovered"
|
|
1752
|
+
});
|
|
1655
1753
|
return res.isRecovered;
|
|
1656
1754
|
};
|
|
1657
|
-
const
|
|
1658
|
-
|
|
1659
|
-
|
|
1755
|
+
const recoverAfter = async ({
|
|
1756
|
+
chainType,
|
|
1757
|
+
handle
|
|
1660
1758
|
}) => {
|
|
1661
|
-
return await window.waitMatchUntilWalletMessage("generateWallet", {
|
|
1662
|
-
chainType: "ethereum",
|
|
1663
|
-
recoveryType: "user_passcode_recovery_key",
|
|
1664
|
-
userPasscode
|
|
1665
|
-
});
|
|
1666
|
-
};
|
|
1667
|
-
const recoverAfter = async (func) => {
|
|
1668
1759
|
return new Promise(async (resolve, reject) => {
|
|
1669
1760
|
const res = await isRecovered();
|
|
1670
|
-
matchlog_default.log("isRecovered", res);
|
|
1671
|
-
if (
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
matchlog_default.log("recover Success");
|
|
1676
|
-
await func(resolve, reject);
|
|
1677
|
-
},
|
|
1678
|
-
close: async () => {
|
|
1679
|
-
closeRecoveryModal();
|
|
1680
|
-
reject(new Error("recover modal close"));
|
|
1681
|
-
}
|
|
1682
|
-
});
|
|
1683
|
-
await initWallet({
|
|
1684
|
-
address: overview?.address || "",
|
|
1685
|
-
did: overview?.did?.split(":")[2] || ""
|
|
1686
|
-
});
|
|
1687
|
-
} else {
|
|
1688
|
-
await recoveryWallet("ethereum", "user_passcode_recovery_key");
|
|
1689
|
-
await func(resolve, reject);
|
|
1761
|
+
matchlog_default.log("sdk.mpc.isRecovered", res);
|
|
1762
|
+
if (res) {
|
|
1763
|
+
await recoveryEmbeddedWallets({ chainType, recoveryType: "user_passcode_recovery_key" });
|
|
1764
|
+
await handle(resolve, reject);
|
|
1765
|
+
return;
|
|
1690
1766
|
}
|
|
1767
|
+
setRecoveryModal({
|
|
1768
|
+
chainType,
|
|
1769
|
+
open: true,
|
|
1770
|
+
success: async () => {
|
|
1771
|
+
closeRecoveryModal();
|
|
1772
|
+
matchlog_default.log("sdk.mpc.recover", "Success");
|
|
1773
|
+
await handle(resolve, reject);
|
|
1774
|
+
},
|
|
1775
|
+
close: async () => {
|
|
1776
|
+
closeRecoveryModal();
|
|
1777
|
+
reject(new Error("recover modal close"));
|
|
1778
|
+
}
|
|
1779
|
+
});
|
|
1780
|
+
await initCore({
|
|
1781
|
+
address: overview?.address || "",
|
|
1782
|
+
did: overview?.did || ""
|
|
1783
|
+
});
|
|
1691
1784
|
});
|
|
1692
1785
|
};
|
|
1693
|
-
const signMessage2 = async (
|
|
1786
|
+
const signMessage2 = async ({
|
|
1787
|
+
message,
|
|
1788
|
+
chainType = "ethereum" /* Ethereum */
|
|
1789
|
+
}) => {
|
|
1694
1790
|
const getSign = async (resolve, reject) => {
|
|
1695
1791
|
try {
|
|
1696
|
-
const recoverRes = await window.
|
|
1697
|
-
|
|
1698
|
-
|
|
1792
|
+
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1793
|
+
method: "signMessage",
|
|
1794
|
+
data: {
|
|
1795
|
+
message,
|
|
1796
|
+
chainType
|
|
1797
|
+
}
|
|
1699
1798
|
});
|
|
1700
|
-
|
|
1701
|
-
resolve(recoverRes);
|
|
1799
|
+
resolve(recoverRes.message);
|
|
1702
1800
|
} catch (error) {
|
|
1703
1801
|
console.error("qwe-sign-error", error);
|
|
1704
1802
|
reject(error);
|
|
1705
1803
|
}
|
|
1706
1804
|
};
|
|
1707
|
-
return await recoverAfter(
|
|
1805
|
+
return await recoverAfter({
|
|
1806
|
+
handle: getSign,
|
|
1807
|
+
chainType
|
|
1808
|
+
});
|
|
1708
1809
|
};
|
|
1709
|
-
const signTransaction = async (
|
|
1810
|
+
const signTransaction = async ({
|
|
1811
|
+
transaction,
|
|
1812
|
+
chainType = "ethereum" /* Ethereum */,
|
|
1813
|
+
chain
|
|
1814
|
+
}) => {
|
|
1815
|
+
console.log("qwe-sign-transaction", transaction);
|
|
1710
1816
|
const getSign = async (resolve, reject) => {
|
|
1711
1817
|
try {
|
|
1712
|
-
const recoverRes = await window.
|
|
1713
|
-
|
|
1714
|
-
|
|
1818
|
+
const recoverRes = await window.matchProvider.waitUntilWalletMessage({
|
|
1819
|
+
method: "signTransaction",
|
|
1820
|
+
data: {
|
|
1821
|
+
transaction,
|
|
1822
|
+
chainType,
|
|
1823
|
+
chain
|
|
1824
|
+
}
|
|
1715
1825
|
});
|
|
1716
|
-
|
|
1717
|
-
resolve(recoverRes);
|
|
1826
|
+
resolve(recoverRes.message);
|
|
1718
1827
|
} catch (error) {
|
|
1719
1828
|
console.error("qwe-sign-error", error);
|
|
1720
1829
|
reject(error);
|
|
1721
1830
|
}
|
|
1722
1831
|
};
|
|
1723
|
-
return await recoverAfter(
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
return await window.waitMatchUntilWalletMessage("recoveryWallet", {
|
|
1727
|
-
chainType,
|
|
1728
|
-
recoveryType,
|
|
1729
|
-
userPasscode
|
|
1832
|
+
return await recoverAfter({
|
|
1833
|
+
handle: getSign,
|
|
1834
|
+
chainType
|
|
1730
1835
|
});
|
|
1731
1836
|
};
|
|
1732
|
-
const evmAccount =
|
|
1733
|
-
address,
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
|
|
1837
|
+
const evmAccount = (0, import_react6.useMemo)(() => {
|
|
1838
|
+
return address ? (0, import_accounts.toAccount)({
|
|
1839
|
+
address,
|
|
1840
|
+
async signMessage({ message }) {
|
|
1841
|
+
return await signMessage2({
|
|
1842
|
+
message,
|
|
1843
|
+
chainType: "ethereum" /* Ethereum */
|
|
1844
|
+
});
|
|
1845
|
+
},
|
|
1846
|
+
async signTransaction(transaction, options) {
|
|
1847
|
+
const { account, chain, ...restTransaction } = transaction;
|
|
1848
|
+
console.log("qwe-sign-transaction", restTransaction, options);
|
|
1849
|
+
return await signTransaction({
|
|
1850
|
+
transaction: {
|
|
1851
|
+
...restTransaction
|
|
1852
|
+
},
|
|
1853
|
+
chainType: "ethereum" /* Ethereum */,
|
|
1854
|
+
chain: {
|
|
1855
|
+
id: chain?.id || restTransaction.chainId,
|
|
1856
|
+
name: chain?.name,
|
|
1857
|
+
nativeCurrency: {
|
|
1858
|
+
name: chain?.nativeCurrency?.name || "ETH",
|
|
1859
|
+
symbol: chain?.nativeCurrency?.symbol || "ETH",
|
|
1860
|
+
decimals: chain?.nativeCurrency?.decimals || 18
|
|
1861
|
+
}
|
|
1862
|
+
}
|
|
1863
|
+
});
|
|
1864
|
+
},
|
|
1865
|
+
async signTypedData(typedData) {
|
|
1866
|
+
return "0x";
|
|
1867
|
+
}
|
|
1868
|
+
}) : void 0;
|
|
1869
|
+
}, [address]);
|
|
1870
|
+
(0, import_react6.useEffect)(() => {
|
|
1871
|
+
console.log("qwe-evmAccount", evmAccount);
|
|
1872
|
+
}, [evmAccount]);
|
|
1748
1873
|
return {
|
|
1874
|
+
walletReady,
|
|
1749
1875
|
evmAccount,
|
|
1750
1876
|
address,
|
|
1751
|
-
|
|
1752
|
-
initWallet,
|
|
1753
|
-
generateWallet,
|
|
1877
|
+
initCore,
|
|
1754
1878
|
signMessage: signMessage2,
|
|
1755
1879
|
signTransaction,
|
|
1756
1880
|
isRecovered,
|
|
1757
|
-
recoverAfter
|
|
1881
|
+
recoverAfter,
|
|
1882
|
+
generateEmbeddedWallets,
|
|
1883
|
+
recoveryEmbeddedWallets,
|
|
1884
|
+
createWalletClient: (parameters) => {
|
|
1885
|
+
if (!evmAccount) {
|
|
1886
|
+
return;
|
|
1887
|
+
}
|
|
1888
|
+
const obj = (0, import_viem2.createWalletClient)({
|
|
1889
|
+
...parameters,
|
|
1890
|
+
account: evmAccount
|
|
1891
|
+
});
|
|
1892
|
+
const sendTransaction = async (transaction) => {
|
|
1893
|
+
const getSign = async (resolve, reject) => {
|
|
1894
|
+
const { chain, ...restTransaction } = transaction;
|
|
1895
|
+
const chainId = chain ? chain.id : await obj.getChainId();
|
|
1896
|
+
const _chain = chain || obj.chain;
|
|
1897
|
+
const transactionId = Date.now().toString() + Math.random().toString().slice(6);
|
|
1898
|
+
const sendPrepareTransactionRequest = async () => {
|
|
1899
|
+
const { chain: chain2, account, ...prepareTransactionRequest } = await obj.prepareTransactionRequest(transaction);
|
|
1900
|
+
window.matchProvider.sendWalletMessage({
|
|
1901
|
+
method: "prepareTransactionRequest",
|
|
1902
|
+
data: {
|
|
1903
|
+
prepareTransactionRequest,
|
|
1904
|
+
transactionId
|
|
1905
|
+
}
|
|
1906
|
+
});
|
|
1907
|
+
};
|
|
1908
|
+
let interval = null;
|
|
1909
|
+
const timer = setTimeout(() => {
|
|
1910
|
+
sendPrepareTransactionRequest();
|
|
1911
|
+
interval = setInterval(() => {
|
|
1912
|
+
sendPrepareTransactionRequest();
|
|
1913
|
+
}, 1e4);
|
|
1914
|
+
}, 1500);
|
|
1915
|
+
try {
|
|
1916
|
+
const { serializedTransaction } = await window.matchProvider.waitUntilWalletMessage({
|
|
1917
|
+
method: "sendTransaction",
|
|
1918
|
+
data: {
|
|
1919
|
+
transactionId,
|
|
1920
|
+
transaction: {
|
|
1921
|
+
...restTransaction
|
|
1922
|
+
},
|
|
1923
|
+
chainType: "ethereum" /* Ethereum */,
|
|
1924
|
+
chain: {
|
|
1925
|
+
id: chainId,
|
|
1926
|
+
name: _chain?.name,
|
|
1927
|
+
nativeCurrency: _chain?.nativeCurrency
|
|
1928
|
+
}
|
|
1929
|
+
}
|
|
1930
|
+
});
|
|
1931
|
+
openHashPanel();
|
|
1932
|
+
const txHash = await obj.sendRawTransaction({
|
|
1933
|
+
serializedTransaction
|
|
1934
|
+
});
|
|
1935
|
+
openHashPanel({
|
|
1936
|
+
hash: txHash,
|
|
1937
|
+
chain
|
|
1938
|
+
});
|
|
1939
|
+
clearTimeout(timer);
|
|
1940
|
+
clearInterval(interval);
|
|
1941
|
+
resolve(txHash);
|
|
1942
|
+
} catch (error) {
|
|
1943
|
+
console.error("qwe-sign-error", error);
|
|
1944
|
+
clearTimeout(timer);
|
|
1945
|
+
clearInterval(interval);
|
|
1946
|
+
reject(error);
|
|
1947
|
+
}
|
|
1948
|
+
};
|
|
1949
|
+
return await recoverAfter({
|
|
1950
|
+
handle: getSign,
|
|
1951
|
+
chainType: "ethereum" /* Ethereum */
|
|
1952
|
+
});
|
|
1953
|
+
};
|
|
1954
|
+
const deployContract = async (parameters2) => {
|
|
1955
|
+
const { abi, args, bytecode, ...request3 } = parameters2;
|
|
1956
|
+
const calldata = (0, import_viem3.encodeDeployData)({ abi, args, bytecode });
|
|
1957
|
+
return await sendTransaction({
|
|
1958
|
+
...request3,
|
|
1959
|
+
data: calldata
|
|
1960
|
+
});
|
|
1961
|
+
};
|
|
1962
|
+
const writeContract = async (parameters2) => {
|
|
1963
|
+
const { abi, address: address2, args, dataSuffix, functionName, ...request3 } = parameters2;
|
|
1964
|
+
const data = (0, import_viem.encodeFunctionData)({
|
|
1965
|
+
abi,
|
|
1966
|
+
args,
|
|
1967
|
+
functionName
|
|
1968
|
+
});
|
|
1969
|
+
return await sendTransaction({
|
|
1970
|
+
data: `${data}${dataSuffix ? dataSuffix.replace("0x", "") : ""}`,
|
|
1971
|
+
to: address2,
|
|
1972
|
+
...request3
|
|
1973
|
+
});
|
|
1974
|
+
};
|
|
1975
|
+
return {
|
|
1976
|
+
...obj,
|
|
1977
|
+
sendTransaction,
|
|
1978
|
+
deployContract,
|
|
1979
|
+
writeContract
|
|
1980
|
+
};
|
|
1981
|
+
}
|
|
1758
1982
|
};
|
|
1759
1983
|
}
|
|
1760
1984
|
|
|
1761
1985
|
// src/hooks/useCopyClipboard.ts
|
|
1762
1986
|
var import_copy_to_clipboard = __toESM(require("copy-to-clipboard"));
|
|
1763
|
-
var
|
|
1987
|
+
var import_react7 = require("react");
|
|
1764
1988
|
function useCopyClipboard(timeout = 500) {
|
|
1765
|
-
const [isCopied, setIsCopied] = (0,
|
|
1766
|
-
const staticCopy = (0,
|
|
1989
|
+
const [isCopied, setIsCopied] = (0, import_react7.useState)(false);
|
|
1990
|
+
const staticCopy = (0, import_react7.useCallback)((text) => {
|
|
1767
1991
|
const didCopy = (0, import_copy_to_clipboard.default)(text);
|
|
1768
1992
|
setIsCopied(didCopy);
|
|
1769
1993
|
}, []);
|
|
1770
|
-
(0,
|
|
1994
|
+
(0, import_react7.useEffect)(() => {
|
|
1771
1995
|
if (isCopied) {
|
|
1772
1996
|
const hide = setTimeout(() => {
|
|
1773
1997
|
setIsCopied(false);
|
|
@@ -1783,21 +2007,23 @@ function useCopyClipboard(timeout = 500) {
|
|
|
1783
2007
|
|
|
1784
2008
|
// src/components/PasswordModal/index.tsx
|
|
1785
2009
|
var import_react_intl2 = require("react-intl");
|
|
1786
|
-
var
|
|
2010
|
+
var import_jsx_runtime50 = require("react/jsx-runtime");
|
|
1787
2011
|
function PasswordModal({
|
|
1788
2012
|
title,
|
|
1789
2013
|
isOpen,
|
|
1790
2014
|
onSuccess,
|
|
2015
|
+
chainType = "ethereum" /* Ethereum */,
|
|
2016
|
+
recoveryType = "user_passcode_recovery_key" /* UserPasscode */,
|
|
1791
2017
|
...props
|
|
1792
2018
|
}) {
|
|
1793
2019
|
const { refreshOverview, overview } = useUserInfo();
|
|
1794
2020
|
const { isLogin, did } = useUserInfo();
|
|
1795
|
-
const [password, setPassword] = (0,
|
|
1796
|
-
const [rePassword, setRePassword] = (0,
|
|
1797
|
-
const [error, setError] = (0,
|
|
1798
|
-
const {
|
|
2021
|
+
const [password, setPassword] = (0, import_react8.useState)("");
|
|
2022
|
+
const [rePassword, setRePassword] = (0, import_react8.useState)("");
|
|
2023
|
+
const [error, setError] = (0, import_react8.useState)("");
|
|
2024
|
+
const { generateEmbeddedWallets, initCore } = useWallet();
|
|
1799
2025
|
const intl = (0, import_react_intl2.useIntl)();
|
|
1800
|
-
const passwordError = (0,
|
|
2026
|
+
const passwordError = (0, import_react8.useMemo)(() => {
|
|
1801
2027
|
if (password.length < 6) return intl.formatMessage({
|
|
1802
2028
|
id: "passwordMinError"
|
|
1803
2029
|
}, {
|
|
@@ -1805,7 +2031,7 @@ function PasswordModal({
|
|
|
1805
2031
|
});
|
|
1806
2032
|
return "";
|
|
1807
2033
|
}, [password]);
|
|
1808
|
-
const rePasswordError = (0,
|
|
2034
|
+
const rePasswordError = (0, import_react8.useMemo)(() => {
|
|
1809
2035
|
if (rePassword != password) {
|
|
1810
2036
|
return intl.formatMessage({
|
|
1811
2037
|
id: "passwordMatchError"
|
|
@@ -1813,25 +2039,25 @@ function PasswordModal({
|
|
|
1813
2039
|
}
|
|
1814
2040
|
return "";
|
|
1815
2041
|
}, [rePassword, password]);
|
|
1816
|
-
(0,
|
|
2042
|
+
(0, import_react8.useEffect)(() => {
|
|
1817
2043
|
if (isOpen) {
|
|
1818
2044
|
setPassword("");
|
|
1819
2045
|
setRePassword("");
|
|
1820
2046
|
}
|
|
1821
2047
|
}, [isOpen, overview]);
|
|
1822
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
2048
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react8.useState)(false);
|
|
1823
2049
|
const onContinue = async () => {
|
|
1824
2050
|
if (isSubmitting) return;
|
|
1825
2051
|
try {
|
|
1826
2052
|
setIsSubmitting(true);
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
did: did2,
|
|
2053
|
+
await initCore({
|
|
2054
|
+
did: overview?.did || "",
|
|
1830
2055
|
address: ""
|
|
1831
2056
|
});
|
|
1832
|
-
const address = await
|
|
1833
|
-
|
|
1834
|
-
|
|
2057
|
+
const address = await generateEmbeddedWallets({
|
|
2058
|
+
userPasscode: password,
|
|
2059
|
+
chainType,
|
|
2060
|
+
recoveryType
|
|
1835
2061
|
});
|
|
1836
2062
|
await refreshOverview();
|
|
1837
2063
|
onSuccess && onSuccess();
|
|
@@ -1841,15 +2067,15 @@ function PasswordModal({
|
|
|
1841
2067
|
setIsSubmitting(false);
|
|
1842
2068
|
}
|
|
1843
2069
|
};
|
|
1844
|
-
return /* @__PURE__ */ (0,
|
|
2070
|
+
return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
1845
2071
|
id: "passwordTitle"
|
|
1846
|
-
}), children: /* @__PURE__ */ (0,
|
|
1847
|
-
/* @__PURE__ */ (0,
|
|
1848
|
-
/* @__PURE__ */ (0,
|
|
1849
|
-
/* @__PURE__ */ (0,
|
|
2072
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-box", children: [
|
|
2073
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-header", children: [
|
|
2074
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "matchid-password-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PasswordRoundIcon, {}) }),
|
|
2075
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { className: "matchid-password-header-content", children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl2.FormattedMessage, { id: "passwordTips" }) })
|
|
1850
2076
|
] }),
|
|
1851
|
-
/* @__PURE__ */ (0,
|
|
1852
|
-
/* @__PURE__ */ (0,
|
|
2077
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "matchid-password-content", children: [
|
|
2078
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Field, { label: intl.formatMessage({ id: "password" }), error: password.length > 0 && passwordError, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1853
2079
|
Input,
|
|
1854
2080
|
{
|
|
1855
2081
|
placeholder: intl.formatMessage({ id: "passwordPlaceholder" }),
|
|
@@ -1859,9 +2085,9 @@ function PasswordModal({
|
|
|
1859
2085
|
value: password
|
|
1860
2086
|
}
|
|
1861
2087
|
) }),
|
|
1862
|
-
/* @__PURE__ */ (0,
|
|
2088
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Field, { label: intl.formatMessage({
|
|
1863
2089
|
id: "rePassword"
|
|
1864
|
-
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0,
|
|
2090
|
+
}), error: rePassword.length > 0 ? rePasswordError || error : error, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1865
2091
|
Input,
|
|
1866
2092
|
{
|
|
1867
2093
|
placeholder: intl.formatMessage({
|
|
@@ -1874,7 +2100,7 @@ function PasswordModal({
|
|
|
1874
2100
|
}
|
|
1875
2101
|
) })
|
|
1876
2102
|
] }),
|
|
1877
|
-
/* @__PURE__ */ (0,
|
|
2103
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
1878
2104
|
Button,
|
|
1879
2105
|
{
|
|
1880
2106
|
disabled: password.length == 0 || !!passwordError || !!rePasswordError,
|
|
@@ -1883,79 +2109,60 @@ function PasswordModal({
|
|
|
1883
2109
|
size: "lg",
|
|
1884
2110
|
onClick: onContinue,
|
|
1885
2111
|
loading: isSubmitting,
|
|
1886
|
-
children: /* @__PURE__ */ (0,
|
|
2112
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_intl2.FormattedMessage, { id: "continue" })
|
|
1887
2113
|
}
|
|
1888
2114
|
)
|
|
1889
2115
|
] }) });
|
|
1890
2116
|
}
|
|
1891
2117
|
|
|
1892
2118
|
// src/components/RecoveryModal/index.tsx
|
|
1893
|
-
var
|
|
2119
|
+
var import_react9 = require("react");
|
|
1894
2120
|
var import_react_intl3 = require("react-intl");
|
|
1895
|
-
var
|
|
1896
|
-
|
|
1897
|
-
// src/store/useModalStore.ts
|
|
1898
|
-
var import_zustand3 = require("zustand");
|
|
1899
|
-
var useSOLModalStore = (0, import_zustand3.create)((set) => ({
|
|
1900
|
-
isOpen: false,
|
|
1901
|
-
type: "",
|
|
1902
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1903
|
-
close: () => set({ isOpen: false })
|
|
1904
|
-
}));
|
|
1905
|
-
var useTRONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1906
|
-
isOpen: false,
|
|
1907
|
-
type: "",
|
|
1908
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1909
|
-
close: () => set({ isOpen: false })
|
|
1910
|
-
}));
|
|
1911
|
-
var useTONModalStore = (0, import_zustand3.create)((set) => ({
|
|
1912
|
-
isOpen: false,
|
|
1913
|
-
type: "",
|
|
1914
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1915
|
-
close: () => set({ isOpen: false })
|
|
1916
|
-
}));
|
|
1917
|
-
var useBTCModalStore = (0, import_zustand3.create)((set) => ({
|
|
1918
|
-
isOpen: false,
|
|
1919
|
-
type: "",
|
|
1920
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1921
|
-
close: () => set({ isOpen: false })
|
|
1922
|
-
}));
|
|
1923
|
-
var useCEXBindModalStore = (0, import_zustand3.create)((set) => ({
|
|
1924
|
-
type: "",
|
|
1925
|
-
isOpen: false,
|
|
1926
|
-
open: (type) => set({ isOpen: true, type }),
|
|
1927
|
-
close: () => set({ isOpen: false })
|
|
1928
|
-
}));
|
|
2121
|
+
var import_jsx_runtime51 = require("react/jsx-runtime");
|
|
1929
2122
|
|
|
1930
2123
|
// src/components/CEXBindModal/index.tsx
|
|
1931
|
-
var
|
|
2124
|
+
var import_react10 = require("react");
|
|
1932
2125
|
var import_react_intl4 = require("react-intl");
|
|
1933
|
-
var
|
|
2126
|
+
var import_jsx_runtime52 = require("react/jsx-runtime");
|
|
2127
|
+
|
|
2128
|
+
// src/components/HashPanel/index.tsx
|
|
2129
|
+
var import_viem4 = require("viem");
|
|
2130
|
+
var import_react11 = require("react");
|
|
2131
|
+
var import_react_query = require("@tanstack/react-query");
|
|
2132
|
+
|
|
2133
|
+
// src/components/Drawer/index.tsx
|
|
2134
|
+
var import_jsx_runtime53 = require("react/jsx-runtime");
|
|
2135
|
+
|
|
2136
|
+
// src/components/ModalDrawer/index.tsx
|
|
2137
|
+
var import_jsx_runtime54 = require("react/jsx-runtime");
|
|
2138
|
+
|
|
2139
|
+
// src/components/HashPanel/index.tsx
|
|
2140
|
+
var import_jsx_runtime55 = require("react/jsx-runtime");
|
|
1934
2141
|
|
|
1935
2142
|
// src/context/BusinessProvider.tsx
|
|
1936
|
-
var
|
|
2143
|
+
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
1937
2144
|
|
|
1938
2145
|
// src/context/index.tsx
|
|
1939
|
-
var
|
|
2146
|
+
var import_jsx_runtime57 = (
|
|
1940
2147
|
// <MpcWalletProvider>
|
|
1941
2148
|
require("react/jsx-runtime")
|
|
1942
2149
|
);
|
|
1943
2150
|
|
|
1944
2151
|
// src/hooks/useWalletInit.ts
|
|
1945
|
-
var
|
|
2152
|
+
var import_react13 = require("react");
|
|
1946
2153
|
var AppClientId2 = getAppClientId();
|
|
1947
2154
|
|
|
1948
2155
|
// src/hooks/useInit.tsx
|
|
1949
|
-
var
|
|
2156
|
+
var import_react14 = require("react");
|
|
1950
2157
|
|
|
1951
2158
|
// src/MatchContext.tsx
|
|
1952
|
-
var
|
|
2159
|
+
var import_react_query2 = require("@tanstack/react-query");
|
|
1953
2160
|
var import_react_intl5 = require("react-intl");
|
|
1954
|
-
var
|
|
1955
|
-
var queryClient = new
|
|
1956
|
-
var MatchContext = (0,
|
|
2161
|
+
var import_jsx_runtime58 = require("react/jsx-runtime");
|
|
2162
|
+
var queryClient = new import_react_query2.QueryClient();
|
|
2163
|
+
var MatchContext = (0, import_react15.createContext)(void 0);
|
|
1957
2164
|
var useMatch = () => {
|
|
1958
|
-
const context = (0,
|
|
2165
|
+
const context = (0, import_react15.useContext)(MatchContext);
|
|
1959
2166
|
if (context === void 0) {
|
|
1960
2167
|
throw new Error("useMatch must be used within a MatchProvider");
|
|
1961
2168
|
}
|
|
@@ -1982,7 +2189,7 @@ function useUserInfo() {
|
|
|
1982
2189
|
const { open: TONOpen } = useTONModalStore();
|
|
1983
2190
|
const { open: BTCOpen } = useBTCModalStore();
|
|
1984
2191
|
const { open: CEXBindOpen } = useCEXBindModalStore();
|
|
1985
|
-
const isLogin = (0,
|
|
2192
|
+
const isLogin = (0, import_react16.useMemo)(() => !!token && !!overview, [token, overview]);
|
|
1986
2193
|
const logout = async () => {
|
|
1987
2194
|
try {
|
|
1988
2195
|
await toLogoutApi();
|
|
@@ -2175,7 +2382,8 @@ function useUserInfo() {
|
|
|
2175
2382
|
resolve({
|
|
2176
2383
|
...res.data,
|
|
2177
2384
|
method: res.method,
|
|
2178
|
-
appid: res.appid
|
|
2385
|
+
appid: res.appid,
|
|
2386
|
+
did
|
|
2179
2387
|
});
|
|
2180
2388
|
} else {
|
|
2181
2389
|
reject(new Error(res.message));
|
|
@@ -2215,7 +2423,7 @@ function useUserInfo() {
|
|
|
2215
2423
|
}
|
|
2216
2424
|
|
|
2217
2425
|
// src/components/EmailModal/StepVerify.tsx
|
|
2218
|
-
var
|
|
2426
|
+
var import_react17 = require("react");
|
|
2219
2427
|
|
|
2220
2428
|
// src/config/index.tsx
|
|
2221
2429
|
var EMAIL_INTERVAL = 60;
|
|
@@ -2223,21 +2431,21 @@ var EMAIL_CODE_LENGTH = 6;
|
|
|
2223
2431
|
|
|
2224
2432
|
// src/components/EmailModal/StepVerify.tsx
|
|
2225
2433
|
var import_react_intl6 = require("react-intl");
|
|
2226
|
-
var
|
|
2434
|
+
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
2227
2435
|
function StepVerify(props) {
|
|
2228
2436
|
const intl = (0, import_react_intl6.useIntl)();
|
|
2229
2437
|
const { getLoginEmailCode, loginByEmail } = useUserInfo();
|
|
2230
|
-
const [error, setError] = (0,
|
|
2231
|
-
const [code, setCode] = (0,
|
|
2232
|
-
const [sending, setSending] = (0,
|
|
2233
|
-
const [submitting, setSubmitting] = (0,
|
|
2234
|
-
const sendTimeRef = (0,
|
|
2235
|
-
const [sendBtnText, setSendBtnText] = (0,
|
|
2438
|
+
const [error, setError] = (0, import_react17.useState)("");
|
|
2439
|
+
const [code, setCode] = (0, import_react17.useState)("");
|
|
2440
|
+
const [sending, setSending] = (0, import_react17.useState)(false);
|
|
2441
|
+
const [submitting, setSubmitting] = (0, import_react17.useState)(false);
|
|
2442
|
+
const sendTimeRef = (0, import_react17.useRef)(0);
|
|
2443
|
+
const [sendBtnText, setSendBtnText] = (0, import_react17.useState)(intl.formatMessage({
|
|
2236
2444
|
id: "send"
|
|
2237
2445
|
}));
|
|
2238
2446
|
const intervalTime = EMAIL_INTERVAL;
|
|
2239
2447
|
const codeLength = EMAIL_CODE_LENGTH;
|
|
2240
|
-
const intervalRef = (0,
|
|
2448
|
+
const intervalRef = (0, import_react17.useRef)(null);
|
|
2241
2449
|
const isDownMd = useDownMd();
|
|
2242
2450
|
const onSend = async () => {
|
|
2243
2451
|
if (sendTimeRef.current > 0) {
|
|
@@ -2268,7 +2476,7 @@ function StepVerify(props) {
|
|
|
2268
2476
|
setSending(false);
|
|
2269
2477
|
}
|
|
2270
2478
|
};
|
|
2271
|
-
(0,
|
|
2479
|
+
(0, import_react17.useEffect)(() => {
|
|
2272
2480
|
onSend();
|
|
2273
2481
|
return () => {
|
|
2274
2482
|
if (intervalRef.current) {
|
|
@@ -2276,7 +2484,7 @@ function StepVerify(props) {
|
|
|
2276
2484
|
}
|
|
2277
2485
|
};
|
|
2278
2486
|
}, []);
|
|
2279
|
-
const canContinue = (0,
|
|
2487
|
+
const canContinue = (0, import_react17.useMemo)(() => {
|
|
2280
2488
|
return code.length === codeLength;
|
|
2281
2489
|
}, [code]);
|
|
2282
2490
|
const onContinue = async () => {
|
|
@@ -2300,17 +2508,17 @@ function StepVerify(props) {
|
|
|
2300
2508
|
setSubmitting(false);
|
|
2301
2509
|
}
|
|
2302
2510
|
};
|
|
2303
|
-
return /* @__PURE__ */ (0,
|
|
2304
|
-
/* @__PURE__ */ (0,
|
|
2305
|
-
/* @__PURE__ */ (0,
|
|
2306
|
-
/* @__PURE__ */ (0,
|
|
2307
|
-
/* @__PURE__ */ (0,
|
|
2308
|
-
/* @__PURE__ */ (0,
|
|
2511
|
+
return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-box", children: [
|
|
2512
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header", children: [
|
|
2513
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
|
|
2514
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "matchid-email-verify-header-content", children: [
|
|
2515
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-value", children: props.email }),
|
|
2516
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl6.FormattedMessage, { id: "sendEmailTips" }) })
|
|
2309
2517
|
] })
|
|
2310
2518
|
] }),
|
|
2311
|
-
/* @__PURE__ */ (0,
|
|
2519
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Field, { label: intl.formatMessage({
|
|
2312
2520
|
id: "verificationCode"
|
|
2313
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
2521
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2314
2522
|
Input,
|
|
2315
2523
|
{
|
|
2316
2524
|
placeholder: intl.formatMessage({
|
|
@@ -2320,7 +2528,7 @@ function StepVerify(props) {
|
|
|
2320
2528
|
maxLength: codeLength,
|
|
2321
2529
|
onChange: (e) => setCode(e.target.value),
|
|
2322
2530
|
value: code,
|
|
2323
|
-
after: /* @__PURE__ */ (0,
|
|
2531
|
+
after: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
|
|
2324
2532
|
Button,
|
|
2325
2533
|
{
|
|
2326
2534
|
highlight: true,
|
|
@@ -2339,13 +2547,13 @@ function StepVerify(props) {
|
|
|
2339
2547
|
)
|
|
2340
2548
|
}
|
|
2341
2549
|
) }),
|
|
2342
|
-
/* @__PURE__ */ (0,
|
|
2550
|
+
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_intl6.FormattedMessage, { id: "continue" }) })
|
|
2343
2551
|
] });
|
|
2344
2552
|
}
|
|
2345
2553
|
|
|
2346
2554
|
// src/components/EmailModal/index.tsx
|
|
2347
2555
|
var import_react_intl7 = require("react-intl");
|
|
2348
|
-
var
|
|
2556
|
+
var import_jsx_runtime60 = require("react/jsx-runtime");
|
|
2349
2557
|
function EmailModal({
|
|
2350
2558
|
isOpen = false,
|
|
2351
2559
|
width = 480,
|
|
@@ -2353,16 +2561,16 @@ function EmailModal({
|
|
|
2353
2561
|
onBack,
|
|
2354
2562
|
onLogin
|
|
2355
2563
|
}) {
|
|
2356
|
-
const [step, setStep] = (0,
|
|
2357
|
-
const [emailVal, setEmailVal] = (0,
|
|
2564
|
+
const [step, setStep] = (0, import_react18.useState)("input");
|
|
2565
|
+
const [emailVal, setEmailVal] = (0, import_react18.useState)("");
|
|
2358
2566
|
const intl = (0, import_react_intl7.useIntl)();
|
|
2359
|
-
(0,
|
|
2567
|
+
(0, import_react18.useEffect)(() => {
|
|
2360
2568
|
if (!isOpen) {
|
|
2361
2569
|
setStep("input");
|
|
2362
2570
|
setEmailVal("");
|
|
2363
2571
|
}
|
|
2364
2572
|
}, [isOpen]);
|
|
2365
|
-
return /* @__PURE__ */ (0,
|
|
2573
|
+
return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
|
|
2366
2574
|
ModalWithHeader,
|
|
2367
2575
|
{
|
|
2368
2576
|
isOpen,
|
|
@@ -2372,17 +2580,17 @@ function EmailModal({
|
|
|
2372
2580
|
id: "email"
|
|
2373
2581
|
}),
|
|
2374
2582
|
onBack: step == "verify" ? () => setStep("input") : onBack,
|
|
2375
|
-
children: step === "input" ? /* @__PURE__ */ (0,
|
|
2583
|
+
children: step === "input" ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepEmail, { email: emailVal, onContinue: (email) => {
|
|
2376
2584
|
setEmailVal(email);
|
|
2377
2585
|
setStep("verify");
|
|
2378
|
-
} }) : /* @__PURE__ */ (0,
|
|
2586
|
+
} }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(StepVerify, { email: emailVal, onSuccess: onLogin })
|
|
2379
2587
|
}
|
|
2380
2588
|
);
|
|
2381
2589
|
}
|
|
2382
2590
|
|
|
2383
2591
|
// src/components/Popover/index.tsx
|
|
2384
|
-
var
|
|
2385
|
-
var
|
|
2592
|
+
var import_react19 = require("react");
|
|
2593
|
+
var import_jsx_runtime61 = require("react/jsx-runtime");
|
|
2386
2594
|
function Popover({
|
|
2387
2595
|
children,
|
|
2388
2596
|
content,
|
|
@@ -2391,8 +2599,8 @@ function Popover({
|
|
|
2391
2599
|
className = "",
|
|
2392
2600
|
gap = "20px"
|
|
2393
2601
|
}) {
|
|
2394
|
-
const [active, setActive] = (0,
|
|
2395
|
-
return children && /* @__PURE__ */ (0,
|
|
2602
|
+
const [active, setActive] = (0, import_react19.useState)(false);
|
|
2603
|
+
return children && /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
|
|
2396
2604
|
"div",
|
|
2397
2605
|
{
|
|
2398
2606
|
onClick: () => {
|
|
@@ -2403,18 +2611,18 @@ function Popover({
|
|
|
2403
2611
|
className: `matchid-popover-box matchid-popover-${position} matchid-popover-${type} ${className} ${type == "click" && active ? "matchid-popover-click-active" : ""}`,
|
|
2404
2612
|
children: [
|
|
2405
2613
|
children,
|
|
2406
|
-
/* @__PURE__ */ (0,
|
|
2614
|
+
/* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { style: {
|
|
2407
2615
|
paddingTop: gap
|
|
2408
|
-
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0,
|
|
2616
|
+
}, className: `matchid-popover-area`, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("div", { className: `matchid-popover-content`, children: content }) })
|
|
2409
2617
|
]
|
|
2410
2618
|
}
|
|
2411
2619
|
);
|
|
2412
2620
|
}
|
|
2413
2621
|
|
|
2414
2622
|
// src/components/LoginBox/index.tsx
|
|
2415
|
-
var
|
|
2623
|
+
var import_react20 = require("react");
|
|
2416
2624
|
var import_react_intl8 = require("react-intl");
|
|
2417
|
-
var
|
|
2625
|
+
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
2418
2626
|
var RecommendItem = ({
|
|
2419
2627
|
icon,
|
|
2420
2628
|
name,
|
|
@@ -2423,20 +2631,20 @@ var RecommendItem = ({
|
|
|
2423
2631
|
children,
|
|
2424
2632
|
footer
|
|
2425
2633
|
}) => {
|
|
2426
|
-
return /* @__PURE__ */ (0,
|
|
2427
|
-
/* @__PURE__ */ (0,
|
|
2428
|
-
/* @__PURE__ */ (0,
|
|
2429
|
-
/* @__PURE__ */ (0,
|
|
2430
|
-
/* @__PURE__ */ (0,
|
|
2634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method", children: [
|
|
2635
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-item", onClick, children: [
|
|
2636
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-method-content", children: [
|
|
2637
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-method-icon", children: icon }),
|
|
2638
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("span", { className: "matchid-login-recommend-method-name", children: name })
|
|
2431
2639
|
] }),
|
|
2432
|
-
footer ? footer : children ? /* @__PURE__ */ (0,
|
|
2640
|
+
footer ? footer : children ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2433
2641
|
ArrowDownIcon,
|
|
2434
2642
|
{
|
|
2435
2643
|
className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
|
|
2436
2644
|
size: 20,
|
|
2437
2645
|
color: "var(--matchid-arrow-color)"
|
|
2438
2646
|
}
|
|
2439
|
-
) : /* @__PURE__ */ (0,
|
|
2647
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2440
2648
|
ArrowRightIcon,
|
|
2441
2649
|
{
|
|
2442
2650
|
className: "matchid-login-recommend-method-arrow",
|
|
@@ -2445,7 +2653,7 @@ var RecommendItem = ({
|
|
|
2445
2653
|
}
|
|
2446
2654
|
)
|
|
2447
2655
|
] }),
|
|
2448
|
-
children && /* @__PURE__ */ (0,
|
|
2656
|
+
children && /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2449
2657
|
"div",
|
|
2450
2658
|
{
|
|
2451
2659
|
className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
|
|
@@ -2467,131 +2675,131 @@ function LoginBox({
|
|
|
2467
2675
|
"linkedin",
|
|
2468
2676
|
"discord"
|
|
2469
2677
|
],
|
|
2470
|
-
walletMethods = ["evm", "sol", "btc", "tron"],
|
|
2678
|
+
walletMethods = ["evm", "sol", "btc", "tron", "ton"],
|
|
2471
2679
|
inModal = false
|
|
2472
2680
|
}) {
|
|
2473
|
-
const [emailOpen, setEmailOpen] = (0,
|
|
2681
|
+
const [emailOpen, setEmailOpen] = (0, import_react20.useState)(false);
|
|
2474
2682
|
const { login } = useUserInfo();
|
|
2475
|
-
const [showWallet, setShowWallet] = (0,
|
|
2683
|
+
const [showWallet, setShowWallet] = (0, import_react20.useState)(false);
|
|
2476
2684
|
const intl = (0, import_react_intl8.useIntl)();
|
|
2477
2685
|
const isDownMd = useDownMd();
|
|
2478
2686
|
const methodMap = {
|
|
2479
2687
|
wallet: {
|
|
2480
|
-
icon: /* @__PURE__ */ (0,
|
|
2688
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(WalletIcon, { size: isDownMd ? 36 : 40 }),
|
|
2481
2689
|
name: intl.formatMessage({ id: "wallet" }),
|
|
2482
2690
|
onClick: () => setShowWallet(!showWallet),
|
|
2483
2691
|
type: "wallet"
|
|
2484
2692
|
},
|
|
2485
2693
|
email: {
|
|
2486
|
-
icon: /* @__PURE__ */ (0,
|
|
2694
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EmailIcon, { size: isDownMd ? 36 : 40 }),
|
|
2487
2695
|
name: intl.formatMessage({ id: "email" }),
|
|
2488
2696
|
onClick: () => {
|
|
2489
2697
|
setEmailOpen(true);
|
|
2490
2698
|
}
|
|
2491
2699
|
},
|
|
2492
2700
|
google: {
|
|
2493
|
-
icon: /* @__PURE__ */ (0,
|
|
2701
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GoogleIcon, { size: isDownMd ? 36 : 40 }),
|
|
2494
2702
|
name: "Google",
|
|
2495
2703
|
onClick: () => login("google")
|
|
2496
2704
|
},
|
|
2497
2705
|
twitter: {
|
|
2498
|
-
icon: /* @__PURE__ */ (0,
|
|
2706
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(XIcon, { size: isDownMd ? 36 : 40 }),
|
|
2499
2707
|
name: "X",
|
|
2500
2708
|
onClick: () => login("twitter")
|
|
2501
2709
|
},
|
|
2502
2710
|
telegram: {
|
|
2503
|
-
icon: /* @__PURE__ */ (0,
|
|
2711
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TelegramIcon, { size: isDownMd ? 36 : 40 }),
|
|
2504
2712
|
name: "Telegram",
|
|
2505
2713
|
onClick: () => login("telegram")
|
|
2506
2714
|
},
|
|
2507
2715
|
github: {
|
|
2508
|
-
icon: /* @__PURE__ */ (0,
|
|
2716
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(GithubIcon, { size: isDownMd ? 36 : 40 }),
|
|
2509
2717
|
name: "Github",
|
|
2510
2718
|
onClick: () => login("github")
|
|
2511
2719
|
},
|
|
2512
2720
|
discord: {
|
|
2513
|
-
icon: /* @__PURE__ */ (0,
|
|
2721
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(DiscordIcon, { size: isDownMd ? 36 : 40 }),
|
|
2514
2722
|
name: "Discord",
|
|
2515
2723
|
onClick: () => login("discord")
|
|
2516
2724
|
},
|
|
2517
2725
|
linkedin: {
|
|
2518
|
-
icon: /* @__PURE__ */ (0,
|
|
2726
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
|
|
2519
2727
|
name: "LinkedIn",
|
|
2520
2728
|
onClick: () => login("linkedin")
|
|
2521
2729
|
},
|
|
2522
2730
|
facebook: {
|
|
2523
|
-
icon: /* @__PURE__ */ (0,
|
|
2731
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(FacebookIcon, { size: isDownMd ? 36 : 40 }),
|
|
2524
2732
|
name: "Facebook",
|
|
2525
2733
|
onClick: () => login("facebook")
|
|
2526
2734
|
},
|
|
2527
2735
|
youtube: {
|
|
2528
|
-
icon: /* @__PURE__ */ (0,
|
|
2736
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
|
|
2529
2737
|
name: "Youtube",
|
|
2530
2738
|
onClick: () => login("youtube")
|
|
2531
2739
|
}
|
|
2532
2740
|
};
|
|
2533
2741
|
const walletMap = {
|
|
2534
2742
|
evm: {
|
|
2535
|
-
icon: /* @__PURE__ */ (0,
|
|
2536
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2743
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2744
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2537
2745
|
name: "EVM",
|
|
2538
2746
|
onClick: () => login("evm")
|
|
2539
2747
|
},
|
|
2540
2748
|
sol: {
|
|
2541
|
-
icon: /* @__PURE__ */ (0,
|
|
2542
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2749
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2750
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2543
2751
|
name: "SOL",
|
|
2544
2752
|
onClick: () => login("sol")
|
|
2545
2753
|
},
|
|
2546
2754
|
btc: {
|
|
2547
|
-
icon: /* @__PURE__ */ (0,
|
|
2548
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2755
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2756
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2549
2757
|
name: "BTC",
|
|
2550
2758
|
onClick: () => login("btc")
|
|
2551
2759
|
},
|
|
2552
2760
|
tron: {
|
|
2553
|
-
icon: /* @__PURE__ */ (0,
|
|
2554
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2761
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
|
|
2762
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2555
2763
|
name: "TRON",
|
|
2556
2764
|
onClick: () => login("tron")
|
|
2557
2765
|
},
|
|
2558
2766
|
ton: {
|
|
2559
|
-
icon: /* @__PURE__ */ (0,
|
|
2560
|
-
activeIcon: /* @__PURE__ */ (0,
|
|
2767
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TonLightIcon, { size: isDownMd ? 36 : 40 }),
|
|
2768
|
+
activeIcon: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
|
|
2561
2769
|
name: "TON",
|
|
2562
2770
|
onClick: () => login("ton")
|
|
2563
2771
|
}
|
|
2564
2772
|
};
|
|
2565
|
-
return /* @__PURE__ */ (0,
|
|
2566
|
-
(!inModal || !emailOpen) && /* @__PURE__ */ (0,
|
|
2567
|
-
/* @__PURE__ */ (0,
|
|
2568
|
-
return /* @__PURE__ */ (0,
|
|
2773
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2774
|
+
(!inModal || !emailOpen) && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-box", children: [
|
|
2775
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-list", children: recommendMethods.map((m) => {
|
|
2776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2569
2777
|
RecommendItem,
|
|
2570
2778
|
{
|
|
2571
2779
|
icon: methodMap[m]?.icon,
|
|
2572
2780
|
name: methodMap[m]?.name,
|
|
2573
2781
|
onClick: methodMap[m]?.onClick,
|
|
2574
2782
|
showChildren: m == "wallet" && showWallet,
|
|
2575
|
-
children: m == "wallet" && /* @__PURE__ */ (0,
|
|
2576
|
-
/* @__PURE__ */ (0,
|
|
2577
|
-
/* @__PURE__ */ (0,
|
|
2783
|
+
children: m == "wallet" && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
|
|
2784
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-divider" }),
|
|
2785
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-list", children: walletMethods.map((n) => {
|
|
2578
2786
|
const m2 = walletMap[n];
|
|
2579
|
-
return /* @__PURE__ */ (0,
|
|
2787
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
|
|
2580
2788
|
"div",
|
|
2581
2789
|
{
|
|
2582
2790
|
className: "matchid-login-recommend-wallet-item",
|
|
2583
2791
|
onClick: m2.onClick,
|
|
2584
2792
|
children: [
|
|
2585
|
-
/* @__PURE__ */ (0,
|
|
2586
|
-
/* @__PURE__ */ (0,
|
|
2587
|
-
/* @__PURE__ */ (0,
|
|
2793
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-recommend-wallet-item-content", children: [
|
|
2794
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
|
|
2795
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2588
2796
|
"div",
|
|
2589
2797
|
{
|
|
2590
2798
|
className: "matchid-login-recommend-wallet-item-hover-icon",
|
|
2591
2799
|
children: m2.activeIcon
|
|
2592
2800
|
}
|
|
2593
2801
|
),
|
|
2594
|
-
/* @__PURE__ */ (0,
|
|
2802
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2595
2803
|
"span",
|
|
2596
2804
|
{
|
|
2597
2805
|
className: "matchid-login-recommend-wallet-item-name",
|
|
@@ -2599,7 +2807,7 @@ function LoginBox({
|
|
|
2599
2807
|
}
|
|
2600
2808
|
)
|
|
2601
2809
|
] }),
|
|
2602
|
-
/* @__PURE__ */ (0,
|
|
2810
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2603
2811
|
ArrowRightIcon,
|
|
2604
2812
|
{
|
|
2605
2813
|
className: "matchid-login-recommend-wallet-item-arrow",
|
|
@@ -2617,10 +2825,10 @@ function LoginBox({
|
|
|
2617
2825
|
m
|
|
2618
2826
|
);
|
|
2619
2827
|
}) }),
|
|
2620
|
-
methods.length > 0 && /* @__PURE__ */ (0,
|
|
2621
|
-
/* @__PURE__ */ (0,
|
|
2622
|
-
/* @__PURE__ */ (0,
|
|
2623
|
-
return /* @__PURE__ */ (0,
|
|
2828
|
+
methods.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)("div", { className: "matchid-login-other", children: [
|
|
2829
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_intl8.FormattedMessage, { id: "otherLoginMethods" }) }),
|
|
2830
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)("div", { className: "matchid-login-method-box", children: methods.map((m) => {
|
|
2831
|
+
return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2624
2832
|
"div",
|
|
2625
2833
|
{
|
|
2626
2834
|
className: "matchid-login-method-item",
|
|
@@ -2633,7 +2841,7 @@ function LoginBox({
|
|
|
2633
2841
|
}) })
|
|
2634
2842
|
] })
|
|
2635
2843
|
] }),
|
|
2636
|
-
/* @__PURE__ */ (0,
|
|
2844
|
+
/* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
|
|
2637
2845
|
EmailModal,
|
|
2638
2846
|
{
|
|
2639
2847
|
isOpen: emailOpen,
|
|
@@ -2649,56 +2857,56 @@ function LoginBox({
|
|
|
2649
2857
|
}
|
|
2650
2858
|
|
|
2651
2859
|
// src/components/LoginButton/index.tsx
|
|
2652
|
-
var
|
|
2860
|
+
var import_react22 = require("react");
|
|
2653
2861
|
|
|
2654
2862
|
// src/components/LoginPanel/index.tsx
|
|
2655
2863
|
var import_react_intl9 = require("react-intl");
|
|
2656
|
-
var
|
|
2864
|
+
var import_jsx_runtime63 = require("react/jsx-runtime");
|
|
2657
2865
|
function LoginPanel({
|
|
2658
2866
|
header,
|
|
2659
2867
|
onClose,
|
|
2660
2868
|
...props
|
|
2661
2869
|
}) {
|
|
2662
2870
|
const isDownMd = useDownMd();
|
|
2663
|
-
return /* @__PURE__ */ (0,
|
|
2664
|
-
header ? header : /* @__PURE__ */ (0,
|
|
2665
|
-
/* @__PURE__ */ (0,
|
|
2666
|
-
/* @__PURE__ */ (0,
|
|
2667
|
-
/* @__PURE__ */ (0,
|
|
2871
|
+
return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel", children: [
|
|
2872
|
+
header ? header : /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header", children: [
|
|
2873
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsxs)("div", { className: "matchid-login-panel-header-content", children: [
|
|
2874
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl9.FormattedMessage, { id: "loginTitle" }) }),
|
|
2875
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_intl9.FormattedMessage, { id: "loginTips" }) })
|
|
2668
2876
|
] }),
|
|
2669
|
-
onClose && /* @__PURE__ */ (0,
|
|
2877
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
|
|
2670
2878
|
] }),
|
|
2671
|
-
/* @__PURE__ */ (0,
|
|
2672
|
-
/* @__PURE__ */ (0,
|
|
2879
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-divide" }),
|
|
2880
|
+
/* @__PURE__ */ (0, import_jsx_runtime63.jsx)("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(LoginBox, { ...props }) })
|
|
2673
2881
|
] });
|
|
2674
2882
|
}
|
|
2675
2883
|
|
|
2676
2884
|
// src/components/LoginModal/index.tsx
|
|
2677
|
-
var
|
|
2885
|
+
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
2678
2886
|
function LoginModal({
|
|
2679
2887
|
isOpen = false,
|
|
2680
2888
|
width = 480,
|
|
2681
2889
|
...props
|
|
2682
2890
|
}) {
|
|
2683
2891
|
const { isLogin } = useUserInfo();
|
|
2684
|
-
return /* @__PURE__ */ (0,
|
|
2892
|
+
return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
|
|
2685
2893
|
Modal,
|
|
2686
2894
|
{
|
|
2687
2895
|
isOpen: isOpen && !isLogin,
|
|
2688
2896
|
width,
|
|
2689
|
-
children: /* @__PURE__ */ (0,
|
|
2897
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(LoginPanel, { ...props, inModal: true })
|
|
2690
2898
|
}
|
|
2691
2899
|
);
|
|
2692
2900
|
}
|
|
2693
2901
|
|
|
2694
2902
|
// src/components/UserPopover/index.tsx
|
|
2695
|
-
var
|
|
2903
|
+
var import_react21 = require("react");
|
|
2696
2904
|
|
|
2697
2905
|
// src/assets/icon/ProfileIcon.tsx
|
|
2698
|
-
var
|
|
2906
|
+
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
2699
2907
|
function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
2700
|
-
return /* @__PURE__ */ (0,
|
|
2701
|
-
/* @__PURE__ */ (0,
|
|
2908
|
+
return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
2909
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
2702
2910
|
"path",
|
|
2703
2911
|
{
|
|
2704
2912
|
fillRule: "evenodd",
|
|
@@ -2707,7 +2915,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2707
2915
|
fill: color
|
|
2708
2916
|
}
|
|
2709
2917
|
),
|
|
2710
|
-
/* @__PURE__ */ (0,
|
|
2918
|
+
/* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
|
|
2711
2919
|
"path",
|
|
2712
2920
|
{
|
|
2713
2921
|
fillRule: "evenodd",
|
|
@@ -2721,10 +2929,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
|
|
|
2721
2929
|
|
|
2722
2930
|
// src/components/UserPopover/index.tsx
|
|
2723
2931
|
var import_react_intl10 = require("react-intl");
|
|
2724
|
-
var
|
|
2932
|
+
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
2725
2933
|
function UserContent() {
|
|
2726
2934
|
const { logout, address, username } = useUserInfo();
|
|
2727
|
-
const [logouting, setLogouting] = (0,
|
|
2935
|
+
const [logouting, setLogouting] = (0, import_react21.useState)(false);
|
|
2728
2936
|
const onLogout = async () => {
|
|
2729
2937
|
if (logouting) return;
|
|
2730
2938
|
try {
|
|
@@ -2742,34 +2950,34 @@ function UserContent() {
|
|
|
2742
2950
|
rightIcon,
|
|
2743
2951
|
onClick
|
|
2744
2952
|
}) => {
|
|
2745
|
-
return /* @__PURE__ */ (0,
|
|
2746
|
-
/* @__PURE__ */ (0,
|
|
2953
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-item", onClick, children: [
|
|
2954
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: `matchid-user-popover-item-content`, children: [
|
|
2747
2955
|
icon,
|
|
2748
|
-
/* @__PURE__ */ (0,
|
|
2956
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: "matchid-user-popover-item-text", children })
|
|
2749
2957
|
] }),
|
|
2750
2958
|
rightIcon
|
|
2751
2959
|
] });
|
|
2752
2960
|
};
|
|
2753
2961
|
const UserDivider = () => {
|
|
2754
|
-
return /* @__PURE__ */ (0,
|
|
2962
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)("div", { className: `matchid-user-popover-divider` });
|
|
2755
2963
|
};
|
|
2756
|
-
const [usernameOpen, setUsernameOpen] = (0,
|
|
2964
|
+
const [usernameOpen, setUsernameOpen] = (0, import_react21.useState)(false);
|
|
2757
2965
|
const [copied, setCopied] = useCopyClipboard();
|
|
2758
2966
|
const intl = (0, import_react_intl10.useIntl)();
|
|
2759
|
-
return /* @__PURE__ */ (0,
|
|
2760
|
-
/* @__PURE__ */ (0,
|
|
2761
|
-
/* @__PURE__ */ (0,
|
|
2967
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-content", children: [
|
|
2968
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsxs)("div", { className: "matchid-user-popover-list", children: [
|
|
2969
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
2762
2970
|
setCopied(address);
|
|
2763
|
-
}, icon: copied ? /* @__PURE__ */ (0,
|
|
2764
|
-
/* @__PURE__ */ (0,
|
|
2765
|
-
/* @__PURE__ */ (0,
|
|
2971
|
+
}, icon: copied ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
|
|
2972
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserDivider, {}),
|
|
2973
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserItem, { onClick: () => {
|
|
2766
2974
|
setUsernameOpen(true);
|
|
2767
|
-
}, icon: /* @__PURE__ */ (0,
|
|
2975
|
+
}, icon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
|
|
2768
2976
|
id: "setUsername"
|
|
2769
2977
|
}) })
|
|
2770
2978
|
] }),
|
|
2771
|
-
/* @__PURE__ */ (0,
|
|
2772
|
-
/* @__PURE__ */ (0,
|
|
2979
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_intl10.FormattedMessage, { id: "disconnect" }) }),
|
|
2980
|
+
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UsernameModal, { isOpen: usernameOpen, onClose: () => {
|
|
2773
2981
|
setUsernameOpen(false);
|
|
2774
2982
|
}, onSuccess: () => {
|
|
2775
2983
|
setUsernameOpen(false);
|
|
@@ -2780,12 +2988,12 @@ function UserPopover({
|
|
|
2780
2988
|
children,
|
|
2781
2989
|
...props
|
|
2782
2990
|
}) {
|
|
2783
|
-
return /* @__PURE__ */ (0,
|
|
2991
|
+
return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Popover, { ...props, content: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(UserContent, {}), children });
|
|
2784
2992
|
}
|
|
2785
2993
|
|
|
2786
2994
|
// src/components/LoginButton/index.tsx
|
|
2787
2995
|
var import_react_intl11 = require("react-intl");
|
|
2788
|
-
var
|
|
2996
|
+
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
2789
2997
|
function LoginButton({
|
|
2790
2998
|
loginRender,
|
|
2791
2999
|
methods,
|
|
@@ -2799,10 +3007,10 @@ function LoginButton({
|
|
|
2799
3007
|
}) {
|
|
2800
3008
|
const intl = (0, import_react_intl11.useIntl)();
|
|
2801
3009
|
const { isLogin, username } = useUserInfo();
|
|
2802
|
-
const [loginOpen, setLoginOpen] = (0,
|
|
3010
|
+
const [loginOpen, setLoginOpen] = (0, import_react22.useState)(false);
|
|
2803
3011
|
if (!isLogin) {
|
|
2804
|
-
return /* @__PURE__ */ (0,
|
|
2805
|
-
/* @__PURE__ */ (0,
|
|
3012
|
+
return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
|
|
3013
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
|
|
2806
3014
|
LoginModal,
|
|
2807
3015
|
{
|
|
2808
3016
|
methods,
|
|
@@ -2812,32 +3020,32 @@ function LoginButton({
|
|
|
2812
3020
|
onClose: () => setLoginOpen(false)
|
|
2813
3021
|
}
|
|
2814
3022
|
),
|
|
2815
|
-
/* @__PURE__ */ (0,
|
|
2816
|
-
/* @__PURE__ */ (0,
|
|
2817
|
-
/* @__PURE__ */ (0,
|
|
3023
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
|
|
3024
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UnLoginIcon_default, {}),
|
|
3025
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_intl11.FormattedMessage, { id: "login" }) })
|
|
2818
3026
|
] })
|
|
2819
3027
|
] });
|
|
2820
3028
|
}
|
|
2821
|
-
return loginRender ? /* @__PURE__ */ (0,
|
|
2822
|
-
/* @__PURE__ */ (0,
|
|
2823
|
-
/* @__PURE__ */ (0,
|
|
3029
|
+
return loginRender ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_jsx_runtime67.Fragment, { children: loginRender }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
|
|
3030
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)(LoginIcon_default, {}),
|
|
3031
|
+
/* @__PURE__ */ (0, import_jsx_runtime67.jsx)("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
|
|
2824
3032
|
id: "user"
|
|
2825
3033
|
}) })
|
|
2826
3034
|
] }) });
|
|
2827
3035
|
}
|
|
2828
3036
|
|
|
2829
3037
|
// src/components/UsernameModal/index.tsx
|
|
2830
|
-
var
|
|
3038
|
+
var import_react23 = require("react");
|
|
2831
3039
|
|
|
2832
3040
|
// src/assets/icon/InfoRoundIcon.tsx
|
|
2833
|
-
var
|
|
3041
|
+
var import_jsx_runtime68 = require("react/jsx-runtime");
|
|
2834
3042
|
function InfoRoundIcon({
|
|
2835
3043
|
size,
|
|
2836
3044
|
color = "#6E6E6E",
|
|
2837
3045
|
...props
|
|
2838
3046
|
}) {
|
|
2839
|
-
return /* @__PURE__ */ (0,
|
|
2840
|
-
/* @__PURE__ */ (0,
|
|
3047
|
+
return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
|
|
3048
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
|
|
2841
3049
|
"path",
|
|
2842
3050
|
{
|
|
2843
3051
|
fillRule: "evenodd",
|
|
@@ -2846,21 +3054,21 @@ function InfoRoundIcon({
|
|
|
2846
3054
|
fill: color
|
|
2847
3055
|
}
|
|
2848
3056
|
) }),
|
|
2849
|
-
/* @__PURE__ */ (0,
|
|
3057
|
+
/* @__PURE__ */ (0, import_jsx_runtime68.jsx)("defs", { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)("rect", { width: "16", height: "16", fill: "white" }) }) })
|
|
2850
3058
|
] });
|
|
2851
3059
|
}
|
|
2852
3060
|
|
|
2853
3061
|
// src/components/UsernameModal/index.tsx
|
|
2854
3062
|
var import_react_intl12 = require("react-intl");
|
|
2855
|
-
var
|
|
3063
|
+
var import_jsx_runtime69 = require("react/jsx-runtime");
|
|
2856
3064
|
var ValidItem = ({
|
|
2857
3065
|
success = false,
|
|
2858
3066
|
text
|
|
2859
3067
|
}) => {
|
|
2860
3068
|
const isDownMd = useDownMd();
|
|
2861
|
-
return /* @__PURE__ */ (0,
|
|
2862
|
-
success ? /* @__PURE__ */ (0,
|
|
2863
|
-
/* @__PURE__ */ (0,
|
|
3069
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
|
|
3070
|
+
success ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
|
|
3071
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: text })
|
|
2864
3072
|
] });
|
|
2865
3073
|
};
|
|
2866
3074
|
function UsernameModal({
|
|
@@ -2871,23 +3079,23 @@ function UsernameModal({
|
|
|
2871
3079
|
}) {
|
|
2872
3080
|
const { username, refreshOverview } = useUserInfo();
|
|
2873
3081
|
const { isLogin } = useUserInfo();
|
|
2874
|
-
const [val, setVal] = (0,
|
|
2875
|
-
const [error, setError] = (0,
|
|
3082
|
+
const [val, setVal] = (0, import_react23.useState)(username);
|
|
3083
|
+
const [error, setError] = (0, import_react23.useState)("");
|
|
2876
3084
|
const isDownMd = useDownMd();
|
|
2877
|
-
(0,
|
|
3085
|
+
(0, import_react23.useEffect)(() => {
|
|
2878
3086
|
if (isOpen) {
|
|
2879
3087
|
setVal(username);
|
|
2880
3088
|
setError("");
|
|
2881
3089
|
}
|
|
2882
3090
|
}, [isOpen]);
|
|
2883
|
-
const isValid = (0,
|
|
3091
|
+
const isValid = (0, import_react23.useMemo)(() => {
|
|
2884
3092
|
return isValidUsername(val);
|
|
2885
3093
|
}, [val]);
|
|
2886
|
-
const isLength = (0,
|
|
3094
|
+
const isLength = (0, import_react23.useMemo)(() => {
|
|
2887
3095
|
return val.length >= 2 && val.length <= 32;
|
|
2888
3096
|
}, [val]);
|
|
2889
3097
|
const isSafe = isValid && isLength;
|
|
2890
|
-
const [isSubmitting, setIsSubmitting] = (0,
|
|
3098
|
+
const [isSubmitting, setIsSubmitting] = (0, import_react23.useState)(false);
|
|
2891
3099
|
const onSubmit = async () => {
|
|
2892
3100
|
if (isSubmitting) return;
|
|
2893
3101
|
try {
|
|
@@ -2908,12 +3116,12 @@ function UsernameModal({
|
|
|
2908
3116
|
}
|
|
2909
3117
|
};
|
|
2910
3118
|
const intl = (0, import_react_intl12.useIntl)();
|
|
2911
|
-
return /* @__PURE__ */ (0,
|
|
3119
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
|
|
2912
3120
|
id: username ? "editUsernameTitle" : "setUsernameTitle"
|
|
2913
|
-
}), children: /* @__PURE__ */ (0,
|
|
2914
|
-
/* @__PURE__ */ (0,
|
|
3121
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-username-box", children: [
|
|
3122
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Field, { label: intl.formatMessage({
|
|
2915
3123
|
id: "username"
|
|
2916
|
-
}), error, children: /* @__PURE__ */ (0,
|
|
3124
|
+
}), error, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
2917
3125
|
Input,
|
|
2918
3126
|
{
|
|
2919
3127
|
placeholder: intl.formatMessage({
|
|
@@ -2926,8 +3134,8 @@ function UsernameModal({
|
|
|
2926
3134
|
value: val
|
|
2927
3135
|
}
|
|
2928
3136
|
) }),
|
|
2929
|
-
/* @__PURE__ */ (0,
|
|
2930
|
-
/* @__PURE__ */ (0,
|
|
3137
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "matchid-valid", children: [
|
|
3138
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
2931
3139
|
ValidItem,
|
|
2932
3140
|
{
|
|
2933
3141
|
success: isValid,
|
|
@@ -2936,21 +3144,21 @@ function UsernameModal({
|
|
|
2936
3144
|
})
|
|
2937
3145
|
}
|
|
2938
3146
|
),
|
|
2939
|
-
/* @__PURE__ */ (0,
|
|
3147
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ValidItem, { success: isLength, text: intl.formatMessage({
|
|
2940
3148
|
id: "usernameLengthError"
|
|
2941
3149
|
}) })
|
|
2942
3150
|
] }),
|
|
2943
|
-
/* @__PURE__ */ (0,
|
|
3151
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { disabled: !isSafe, loading: isSubmitting, style: {
|
|
2944
3152
|
marginTop: isDownMd ? "36px" : "64px"
|
|
2945
|
-
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0,
|
|
2946
|
-
/* @__PURE__ */ (0,
|
|
3153
|
+
}, onClick: onSubmit, size: "lg", block: true, highlight: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl12.FormattedMessage, { id: "confirm" }) }),
|
|
3154
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Button, { style: {
|
|
2947
3155
|
marginTop: isDownMd ? "12px" : "24px"
|
|
2948
|
-
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0,
|
|
3156
|
+
}, onClick: props.onClose, size: "lg", block: true, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_intl12.FormattedMessage, { id: "cancel" }) })
|
|
2949
3157
|
] }) });
|
|
2950
3158
|
}
|
|
2951
3159
|
|
|
2952
3160
|
// src/components/SOLModal/index.tsx
|
|
2953
|
-
var
|
|
3161
|
+
var import_react25 = __toESM(require("react"));
|
|
2954
3162
|
var import_web3 = require("@solana/web3.js");
|
|
2955
3163
|
var import_wallet_adapter_react = require("@solana/wallet-adapter-react");
|
|
2956
3164
|
var import_wallet_adapter_react_ui = require("@solana/wallet-adapter-react-ui");
|
|
@@ -2969,7 +3177,7 @@ var import_styles = require("@solana/wallet-adapter-react-ui/styles.css");
|
|
|
2969
3177
|
var import_react_intl13 = require("react-intl");
|
|
2970
3178
|
|
|
2971
3179
|
// src/components/WalletModalContent/index.tsx
|
|
2972
|
-
var
|
|
3180
|
+
var import_react24 = require("react");
|
|
2973
3181
|
|
|
2974
3182
|
// src/assets/wallet.ts
|
|
2975
3183
|
var walletErrorImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAABHlUlEQVR4Xu19i3NUVbb3mYc6M3pHxhkHEZAAioIIAcQHz+adhARDeMn7GAnPhDR5P+mGJCSGRwLyEFA7gshVx0p9OOotxqljOeVY937fra6acQYFsXkaHcfqP2F/+3fIijub053unA4grF/Vqu50n7P37pO91l6vvbZhMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMG4oNDU1Jaenp3uKioqaCgoKxMqVK8WsWbOEx+PpoKlTpwp5jcjLyxN1dXVi+vTpnrVr13rkvUl6ewwG4waHZVlJR44cMSVjmwsXLgyOGjVK9OnTR/zyl78UP//5z4W85Cr66U9/an//61//WjzyyCMiJSVFzJ49O5CdnW1+8MEHHrV9BoNxA0Myfeszzzwj7r//fpupwdw/+clP7FeQ4SAAiHAdvd55553i0UcfFevXrw83NjYG3n33XU9HJwwG48bC3r17vZmZmdbvf/97cfvtt9tMHIkMB+Z3ImgM0B7GjRsnNmzYEJSCIJn6YzAYNwCOHj3qmZM5p2nw4MGOKr7O/KoQ0IWB/jcR2oV5MH7CeCGFDAsBBuNGwPvvv59ZXl4uBg0aJH72s585MrDO8LGQ3gYRBMHTTz8dWrJkidna2pp0ZRQMBuOaQzKgKdXy0G9/+1tx2223XcWsRDpzd8Xk0QhCplevXmLs2LGioaHBYiHAYFwHwCFXUVERTkpKisjM6uc684ORf/WrX3U4CeEz6MpBSEQRgylTpoj9+/cHDQaDce3wyiuveFetWmWvxJGYH4TvwKy/+MUvxO9+9zuo7nDmBRcvXmzl5eVZfr/fqq6utkzTtFJTU60xY8aERo4cKe6++25bo4gmQOg7mB4QAu+99x77BRiMngZs/o0bN4revXvbq7jhwPREYP777rtPTJ48GTZ74MiRI4FojHr8+HGzqakpMGvWLOvxxx8Xd911V0cI0YnkLbZPAMlEjY2N1gcffJCkt8lgMBKEEydOmJL5Q/fcc48j84PAsGBKqOhYzeWK73/55ZczOzXUBaQQ6FVcXGympKRYgwcPuorxVQEAgoYhtQdRX1/PQoDB6AlYlmXb/A8++OBVDKgTGBIr+Pr165u9Xm8vtZ14IO9NlqZG8N57f3cV86v94z0EDjSBffv2sU+AwUgkAoGAd926dbbaf8cdd1zFhFj1SSOA2i7V/TCSgvR2uouampogBIqeXGQoAoD+hk9g9+7dwdbW1oimBoPBiBHvvvtuZm5urp2NB8ecbpMbysoP5p85c6aQAsOnNeMKx48fT6qqqrJGjBjRSQAZ7f3SmPAe3z/xxBNi27ZtbA4wGG5w8uRJU6rxIaT2UpKPTkb7Cvwf//EfYu7cuWLLli1+vZ1EQAqVpPLycguRBN3/oI8JPghsQGLHIIPRTSDOX1lZGX744Yc7rfqGxnD4Gzb/tGnTRFNTU7Nk1G7b/F3h0KFDybW1tcF77723kwAA6UIAOQaTJ09mnwCDES9g82/YsEEgwy9Scg6YDN+B0RYsWBBGbkCnRnoQUsuwtxhD8BgRBAB9jkSlvXv3cp4AgxEr8vPzbZtfV7VVApNB7cfKf/ToUZ96f0/jwIEDSaWlpbZPAI5Bw0EAEOE3wIHI5gCD0QVg82dmZgaQvBNp5afPsVcfe/6rqqr8ShPXDKgWVFRUZD322GNXMb2uCcAxCN/Brl27WAgwGE6AzV9dXR1+6KGHIjI/MRVW3QkTJvS4zd8V4BPw+XwdPgE4/3RnJT7HKyIUnCfAYDjgjTfe8CK99ze/+U1E5icC8y9atCgMP4HSxHWF1EI6fAI686uEMOYDDzxgCwH2CTAYEm+++Wam1+sVffv2tZnfSQAQQ8Hhh1XUrc2PuL604828vDxTah2m/NujXxMP4BPIz8+3kKXoNH6VoCWgutD27dvZHGDc2pAMYO/nhwqt777TCTZ/RkZGQmz+lStXtqIyMOx3OOjmz58fRvFP/bp4ACEgBZk1ZMiQqL8DBC0G9QR27NjBQoBxa+Ltt9/2lJeXhwcOHNglw0C1njhxIjzprm3+xYsXNw0YMMB2zIEgeFDqKzk5OTRv3ry4Ng3pgE+gsrIy2L9//6i/ibQZ5AlwPQHGLYf//M//9G7atMneo++kMpPKT3F+yZjhPXv2uLL5MzMze2HPP/qEGq6m74LwmRQCQl7jqh+gtLTU3jvgVKWIfhde8T32Dhw8eDB48uRJ9gkwbn4gt5/i/JRXb0RgEnjOcWiHVK99nVuJD88++2ySVPkD0DZUR52h9QuGHDp0KEwCT6cG4gT5BJDFSFEBEnT0noQAaPz48aK5uZnNAcbNjffee6+jhp/Tyk9EKjJO66moqPArTXQLUoi0wslIK7/h0CcRGHb06NFhqTGYP7QQP7B3AEJg6NBHOq36OslLO3wCnCfAuGmBOD9sfpTujsSExBBgVDBEImx+uZo3QduIFGFwIgifYcOGufYJ4FgymAMwO4z236cTPidTBzUGX331VfYJMG4uvP76697169cLVPLRmZCYAITvUFhjzpw5Yck8rmxxsvmRi6/u4zccGF4lug6aAI4Imz59uqtxAEVFRUFEHKjwqC4EiGASIb0YjkH2CTBuCqCGHxx+KOahMn+kVRBx/t27d/u0ZuICbP4ZM2YEoPZHOisgEqljwr3wCcj2PFda7h6QNrxu3bqOPAGd8dXxUZbj3r17rU8//TRJa4rB+PEAcX6v1xuCCq5Ocv09mAJxfsTm5Wrp79RINwCbv1+/fhEZP9rnOrXv7Q9nZWWZ7c13C/X19UnLly+3hgx56Cqm1wlCAIIQdQmVJhiMHw9oPz9WPTAR1Fs1T95QJjy+g81fV1fXjIKcWlNxYeHChU1Q+3VTQyX0j7Gg0AgiDernTgTNRKrwIdm2K5+AZOhkrzc/iF2MhsO4iNAn0qKnTJkSXLJkCZsCjB8XEOdHbj95+2klVdVfo32yg7kyMjISYvPLdqxYVn4w4Pjx48OvvvqqJYWUhVOE6UxBnfmJECJEvr/sx9U4gcLCwiAyBiOFQYkgnJ577jlhWRYLAYZ7nDla5rlwrMLUP08k/vrXv2aWlJTY9fgNjfl0AvNjP/8LL7zg05qJC7D509LSAsjwAyNHYioIIDAyDgCR6rhJ9y9atMhCjgDVH1DHSEILn+N7OPPc+gRgDsAnMGzYMMdkIZXwHF9//XVLuZ3BiA+XWzYE/uafHPhn7ezQPxqyxBc7FwQuHFlv6te5BfbzSzU3hEnblfMNzA+b3+v1+pUmuoXU1NRWhBcjFRAhRgazoWDnsmXLOqnypmn2kit7CwSIk5NONSfwXgoQ13kCEAI5OTkWdgcaDmMmwpil6RF+6623zB/uZjBixPfvVDZ9tT1FnC4bKc6WDBOni4aKs/6x4txLz4b+/W6VK5tWxaeffuppaGgIQ7V1UvVB+BsrNJxcYESfz+fa5l+5cmUTVPjbbo++ktrOvNGjsJXYUYWXQgBaRCvaMrQxq4TPILweffRR1z6Burq65Oeffz4YLTsR30G4FRQUBDrfzWDEgKA/1TpTOkKEyoaI86WDxfmKwSJUMkR8VvW0+N+6DFO/vjs4fPiwR07Qjv38+mRWGQh2b0ZGeliq/Y6MGCtg80uyc/udGIcIjA9bGja/XPk9ShOOkIKg2akcmS4E8D32DmRkZLj6HUD6nPQgtCYSBIY2fgicrKwscejQIbPznQxGFzhVPsU6X/KwuFg+SFysGCAuVw0Q31QOFmcqR4izexYEwq0+VyuwZVmZjz/+uJ/280fy9ONvTOSnnnrKtc1vrjWTUDoM3n4nRqX3kWz+rjB79mwL5oDatioAVCEgNQHXPoGioiKPNGNs56RT9AKCAf3E8xsYDBunK8daF0oGi7bNSeIbf5J8HSjaKh8QoYqh4vIhU3z3dpVHvydW/PnPfzbLyspCtgrevp9fJ6OdEbHyJ8rmT89IbyUvuqExiyoA8D022uTm5salqsMnMGfOnBbs1IsmBED4XgrA8JIlS0ytmZjR2traS46xpX//fo4CgEKWmzZt4r0CjPhweuuT1sXqB8V3dQ+I72pBUgPYmiS+8o1wJQD+9Kc/eWpra8PwZOtMoQsArPxgxIqKCtc2f3Z2dhNt7FGZnYg+g0DCltylS5d2S0WHTwDORWgCRhQBgM8pT0B3LsaDrVu3mqh5oGs0IPSDPlavXo2dkZ5ONzIY0fCZ32NdqBwiV/8B4t/1A8T32weKb2sGSgGQLD6r9pj69bEgEAh45GRtwqqEFYuYkUj1A8DhN2PGjLCc4N1iRAJWZYTrsCobGoOoRAU+YPOvWrXK80ML3cPixYub9fCiLgBAYFycEBzJyRgLxo4d24LcCcPhd6F/CDRp+njUexiMqPi8aop1ruQRcbFSMn/DQFsAXN48SJyuelz8rTrF1K/vCrD5S0tLBRJu9NWKmIL8AHf84g7x9Lin3dv85hWbH5tzsBIaDgxCBHt5xIgRIXmP+UML7gBnY6Q8AVUoIJ0Z9f66K3ikedQSLSyIiskTJkzwKLcwGNERan7OOls6WpwvGiLa/EniX1v6i/MVD4rPN08Qn9UvMPXro+GTTz5BEU07zu9kqxJhtQIzYHvrxo0b/UoT3QKp4rrAISJGxE7CJ598EhWEuq2KO4HyBCjFWBcAKsHvMH369HB9fb2pt9MV3njjjRaERw2H3wiCr2X48OEe5RYGIzouHfImf751tviicJQ4KzWBMxVDxanKsVL9n/lRyJcZlz2OFWrkyJE2I0ZiRhCYAOowbH6fz12UAXF+rIq6wFFXX3wHUwMqslTZu62CRwO0EMnYdp6AzvQqyUtth11KSkpAb6MrfPjhhy3yvqueJxHCrLt27eJ6ATcrQsfLkv7etMzzf2vSPcH6TE8okOsJuQzTARACX+1aaf2tNtP6f7UZ1qXD+U36NdHQ2trqLS4utlcg1d43HCYpGFGu/OHa2lpXjCiFjW3zQ+3XmV8ljAPhM+yeq6urM5UmegRz5861dKbXBQA0kaVLlyKH39Tv7wqjRo2yDIffCYJvY//+/XjPuNnQFjCTQodWWv94YY74e/Vk8Y+tM0ToRVNcfNnbrF97LYHc/rKyso66/UY70zkJADA/VHDJiL5OjcSJtWvXJknmt2v40SadSARtY/To0aGdO3cGkI34QyuJh9QCPJMmTQpGMwPkZbafYs6cOSEpADx6G9GA66XmhBX+qt8JggA4cOAA3jNuJvzrrZzktlfnW6GGp8XZ0qHiYvEgcb5wsAhVjJHqeoq4dDDP1WrqBpIZLdj8+kRXJzxewYhYhQsKCvx6G/HimWeeaQXzUyUfQ2MEfAYTBH0isej5559PqM3vBDj2JPPb9QxpF59KahIUHKQQYHobXeHkyZMt2BxlODA/CALg4MGDLABuNoQOz/ec3zNTtNUMFZfKB4ivC/uKy5v6iIsFA8XZjY+Js9uywhePuz8QI15kZWZ6hwwZEtYnu8r8IDAqfANbtmxxHeeXjNaxn59WWkNjBDAaNAOk4s6fP7/HhSP25EuzJgTHJjG7/iwoHAqaPn16EFqM3k5XOHr0aAsOETUcmB+EFOUNGzb0+O9lXGOcakr3nGmcJC5XDxJtZfeLy+X9xeXiPuLr4vvF1wX9xLnSEeLs9rniy1cSv4PPCXDcrVmzuumBpP7iJz+9mvFVAQDmnzlrpus4P2z+Z599NuruOOoTuf1jx44Nuy3fHQvA/PDMw65XhZH+LCAAoB3IlR/fdwuSuVv0zUgqIR04JSXFo9zCuBlw5sCzni93pYpQ+cOS8R8Ql0sklT4gvq7oL9qK+onLRVITqEgW/2jICISaTFcrbCyAGj9+wvhOxTRVpqcVEDF3qOCJsvnB/E6pt/Q3+u1Obn93gHp88jmYTz75ZBDMr2ce6szfq1cvxOitY8eOBfS2YgFSfKX6b0WrFgQTq7s5BowbGKGA2etU09yWU5VjxLmCJHFZrvqX5erfVtFXagT9RFuJNAfKB4pTdR7x9+09nwmWnj7bXmVVVddQJiKF3aRNLNavX+/vfHf8yMrKaoXaHy3bjt4j1Ocm5TYWoALPSy+9ZIHh8BzUsejjgsCCai6v/QiFSfS2YgXyBiBM9YgH9YVnY5omjkT3dL6TcVPgVFNK0uf+ia2h0sek7d9fqv99pACQQkCaA20lfcU3lf3E6W1PSQEw3aPfm0hs3epruvf394rb77jNntyqEMAkJFsX6mhpaanrOP+6deuakN6rRxhUJgNhLI+NeEy8uPdF/N2jeO2114IzZsywk5nIsedEGDMcc+np6UHkCejtxAocFS5NqBDyB9TfDCItDDkAUvA1Y+OQdjvjZkJoR6Z1pnK4uFA+SFzePFhcKh4gLhYlia+3PCzO7ZklQgd6zu4tKytLGjlyZPBnP7+S6EMCAETv20N9Ycn4rm3+pUuX2ttuDYcVTxUAYETk9iMM16mRBANq+KFDh+x6fU6OPpVo5Z81a5brxJxVq1d5k0clX7X6E+FzOFkrKnq2nBvjBsD371R6T9V4rLObx4hQxaPiXPFD4lz5MPFl3Vjx1UsLrEvH1ifr9yQKkiHtslg/+/kVhlcFAFZ92N8IcUk71KffGw9g80t1OYCz8/SaeDqj4bOhw4ZiG3GgcyuJBZgfx3XDrDGUsTgJAjwXHGkutQRLCiVX/4+DBw9mzpkzJ2ItAPSH75BXcPToUU+nmxk3J0JNmb1O78hsOVMzXZzdOkmcaUgVXzYt/Ahmgn5tovDiiy96Jk+eHCJvtz7hwaiovoONQPq98WLevHmtKBdONQSMCMxP3yEPQa60oZycnMB//dd/JVwQSLU6uba21kL6MhybRhcCCSW65s+f/5EUSkmdGooTqPO3YsUKO7xoaIxPhGePLddSO0v472bcwAgdWJt0pj7dc2Z7uudU03xP2wF3k60rwOONY6n0FY9WfyrosXPnTleqf15eXsd+fkOb7MRgOtNhDHfedad9lDYODJVCKK5U5q7Q2NgYRKhPF0ggdRxgxrvvvlusXLkyCHOpcyvxQQodT3Fxcbir7c3od9q0aUGcLvTD3QxGAgHHklT/m+Bo0hkPkx7MD9V/omeiqd8bK7CjDnF+2lsfyblmKExH70kI4T1eoRLj+CzZph/t6n3FCpzgu23btmD//v07GJwEoKEwIPWPZ4Ainno78eLw4cNeaUbZGpWT2k+E7yAgjhw5klCBx2B0AqrMSLvcTnZRNQC8pwIbs2enIQRl6vfGAtj8WVlZHTX8qG2d8Yl0AeBEGBciEdIObz5+/LinU4cxQP7mJLkCWzjsg8aCV3VcRvt4wPxITX7uuecsVPLV24oHf/jDHzKlFmSflRgp1RnPCK+ICiBE2qkBBiPRyM3NtYtS0mqkMho+g8Nr5syZH0lNIUm/NxZkZGTYdfujrXYq6QyoMz8RGBNay8aNG8NylTSv9NY19u3bl5yfn2+hwAaYkLQLJ4KgwQGhcsX+yK0aLp+fuWbNmhCeJzG52hf+BmFM0HKys7NROt3TuRUGI8FAVVvYwJiEVJqa1H9SfaWqHdDviwXYzw8Vm3IIjAhMTZ/R9yrp1+oMg/FJZgm9+eabMSUIVVZWBqE93H77bR2/k9rUNRMwa2lpaRAHeejtxAPUUKyurg7TASZORVSN9t8Dp+D06dPFq6++ynF/Rs8DZaawGuoTkgh2qJy8cQkAxPkXL15sYcIbEZiabGu9P1LF6Tr1eieGAd1zzz12hCJaqAwrOM7l088vcPJH4DOEKauqqlzb/IFAwLtu3TpbmDgJQRK0+A5biefNmxd+5ZVXXDlbGYyYEUkAECNCBW5sbIxZAFCcn04GNhwEABEmP7QOMDAYDqE4VBDGrjis0ggB0vZblWmd2kECT05OTnP7MDpBqtL2UVxUxdiJ6YmggqMQSVFRkXXo0CFXNv+7776biYNSnQ4bAan9wgeDysAHDhzwdW6FwehBRBIAxCjIQpOMENDvi4TMzMxWsq+dmJUIDA1PuFzxRHFx8UdScJgojy1tdBMOR4QmU1JSTGlGCAgTfXOS3h6EDfLpaRwEqY0ko7oQmSL6b9QJQkiu/B/BUai3FQ8++OADc/369XaKL0U+DAfGx3PAngOkHyeihiKDERck03igquuMQIT8gObm5pgEwJo1a5qokg+tsoYD8+NzMLW0x7HSeizLSlLbUbF9+3aPtPH9sIsRkTAc2iOC80zPE1i6dGkQ22zVVZ+uJwaETY5XXIe6e8ePH09S24gXcuX3yN8WVgWrk/qP99BwUEkJ9RTc7q1gMOIG9phjlVftbpXA0F2l4mLiypXa0usGqmS0tw07d9SoUXHv55f2vV/2Ef7FL66cCKQyMhE+Gz58eBCqOzL1wPwQCvpYVMLvBhOipLfUPhJi8+fm5trajZOpYSjPGM8iNTU1LDUetvkZ1wfYYz516tQOe12fsCh0kZGREVEAgNEkY9o2v+6o0wkMMXTo0NCCBfGVJCfAOTZ27FjHrD0iaDOI8aenp3cUGNHHoRKdWdjQ0GAhLVjtL158+OGHmfJ52DUUIz1PfAaC0EHp9N27d/u0ZhiMa4eamhqPXI2vmrDEzHBOSbs+JG1aj34vsHjx4lZoEGSj66uevKRDzYY5IYVJTOG6SMC2WKeDSYjAWMg4hLkQSSCRgxO/GcJPqv0fuT137+TJk6YUPPZZiRib3jf9jT6hlaD+XyJqKDJucJx5aZH1z8Yp1pkGj02f14y3/tkwwwq9vLJHd/fFirffftuDEBoYRlXfiUngoEK9+urqalO/V9rvdt1+ePJpgusTX15mMwQ88FLdda3qwmeAHXSqwMJrJNKZX/1tiBxI0yLolvkR55c2fBjRg0gmEAkFPCuYG9Jscl1DkXEDAxt6/lE7M3im9GFxoXiAuFz5gLhU/aC4vHmg+KrsYfF50XDxRb1HnN635LoLAXjbsWrqkxaECY3YOY4BJycVXtetW2fX7dev1wmJLdhm6yRAugNU7EEyD0KHRrtwwWtXhLHQezAhNjcdO3bMtc1/+PBhj1zJ7Th/JOan54h+pWkSfuGFF1wLQsYNji9efLbl9JanxOWSfnaBz7byPuJbX1/xbdX94uvSvuJCQT9xtnyYOLUr09LvvdaQDG1ig43TBCZVGbH5+vr6ZuyEW7NmTQBxeqeMNn3Sy+tCW7duTWjd/hkzZpiwsw0HRo9EGA9eoX5PnjxZSMa1PvnkE1fC9/3338+EYESIEYJIf36G0i+YHza/27MSGT8S/HPbxJZzvmHim9I+4nLZA6Ktqp/4rra/+Lb6fvFN+X2irfD34nJRP/E331PXXQAg7IUCF0418EhdxkqOPQMTJ05sdSrmQUQTHvc89thjCT+rDzAl4HSUbztMgWik/hYU+pRCzIwWeowFJ06cMKXpZOf2YwxoW/d/gOBDwbNCkg/b/LcQvqh5quX85kfE10W9xaXCK3X+vtvaT7RtluZA+QPi6019xaVN/cXfq8ZfdwEAlJSUtCDtV5/AxDiY3BAQ5FwzHBiNCNfCPJBqdo+oujk5OSaEkHwbURDpBOcgioouWLDA1aoPwCEqtZowfAjyz07PSX1u+A5RBuy12Lx5M8f5byX8fXu6/4vKJ8KXNiaJyxsk4xdAE+gvTYIB4nzhIBEqfEicLk8W/7t19g2z31syh0VJMeokjoeg6o4cOTLuOH88yMjIMKF2G+3Mh1cnot8AJpw2bVoIdf6VZrqFd955xyuFpR0elX/awk71+quagH1uwsyZHOe/VfFZ5SxvqGCMOLd+kDi/STJ9yYMi5B0oviwaKr7wTRD/aJh5Q+333r59uxf79jFxDQeG6oow+RHnz8rKMtFeTwCq+9q1awNwTBoOY1AJ4wGjgvnlPZ6ORroJ2XcmHH7Yo0CmB5lIRPgcQhSCEPsadu7c6dPbYdxCOO1LMU95k81TBZLKks3TeY+YnxWPNk83PWsiUqBff72Rn59vF6MwHBgqGmHSDx8+vEdsfhWojS9NgA7VP5oGgJUfZbu9Xq/nhxa6h48//ti2+ZHhp5tH6nsylZDbL/v16+0wGDc0EKJC7T0wT1e2Poi838jAmz59eo+ruijdDfufGD/aGOF1x2Yg5fZuY926dS3IZcDvhfDBb9adfvIyKp2ODUVs8zMSj2Aw2AuJJy/KlRDVfDIzMz2SYTto2bJlHiTLoNRXIBDo1gTMy8sz1f0B0QiqLpxrr7/+eshtWK0roCQXTuwhxpMfXaUBkNq/dOnSUEVFhevxwOYvLy+3NwrRag/mVwUAPodQAE2dOjUMU0pvh8FwhbePH/ds9fnM+ZmZ/vLSUmGuWCFmzZwpxowaJUYlJ9uEE3Ox+qSlpaGAJV6bcY4ettjGGvZCbv/ylcsDsZTxAgOgvz179oQSGed3AlR/0zSDUK8p3m44CADY588880xIrsCeTg10A7D5pRCxN0RRzgOp+arjj8p4IVdiy5YtPr0dBqPbaGxsTPbm5weysrJCE8aPF/fec4/4lVx178CK086gP2knvAdhYiL+jEkJpx5i0BkZGVZtbW1Aa/4qSCZrhaobKb6u2r2w+bGPv6eZH9l2clwhMCIxoM74RKmpqYjze9T7uwOpzZiVlZUhCBRD+e30+4nwOYQD5/YzEo7A4cNNk8aNCyb17y9+feed4nasPHLCqfRTjWiCYlUiRgEzw3mFKrjSRLCkiurX+wKkzdoEdR72v6ExFq14pPqiUlBPxflVYGuvVMFD2HNA1YGIDG2M0FpycnJcq/1y5fc0NDSEoVEZ7c9UZX68qs8Dm5xg83NuP8M1YLdLe7pp9erVYhBUT0w0MDEmncL4kUhfpfTJi4w+MK9kdkG15+CsQqVcfN6V2k8JNcXFxSaNuacA5ofHn+r46b/HaB8TPkdqcFFRkevcftj8UoOwBabR/jxJ61BXfqz60LJmpc7i3H5G4pCbm+uHFx6n0EDF/1k7Q2J1v4rZNea0tQBlkuoMowoCMNWiRQvhJTezs7MDjw5/1GZutT2dwAQPP/xwwnP7nYDTc+TYgnDo6eM3lDHhb/wWqfpb69e7311ZXV1tF0JVnxW9knDE3/BFYE8B5/YzEgapnvugTlIIrpNdDwbUSBcAIJ3RIzEOCCsY8vWxE5CuVb/X02wRfnO7nz8WwObfuHFjCOnERvtvIubTCX6OrKwsFNM0lSbiBmx+CEI8C9XUUEN99DzwGZJ8cjfm+vV2GIxuwTRNL1JoVaY12ic5GF1n/kgCwL6+nWGc4tQ6RfocREyHdmBfT5w4scdVXWkCJctVOIRVuKtCoLTD7rXXXsPBJd22v2Hz79ixIwwTSN/RR8+AfB9kApWWlnKcn+EeON9u4cKFdmENTDY1xdSehGBSMKFCP5ff/VJO/t/16iXuv6+37enH9lysXohXQ22GiorJqgoBtBsvoR054cPINzB6GGD+DRs22PZ3NMYHQTggunHixAlXeyn++Mc/eqH263069Y/nKTWgsGT8HheEjFsEaWlpfqjhpF7SikObcmy7/idXnIBg/D69e4vHR49GCM56csyYwKIFCwLFhYUBhPgKvd4A6vdJYRCYOnVqCF5/KoqJNuMl3DdkyJCQZH7T6GHgjL/8/PwgOd/I5lbHDmGGVzwbrPw7d+50tZfi448/zvT7/bYANdp/r242EUHgTJgwnuP8jMQBNj/ZnIbCdPorJj6896Ml4+O0GhTwwOm2nRrTAIZCFR4cTIF4PdRlw4HJnYj6xHbX1NTUHrf5caIPbH46OstoH4MuuMCceA5wvqFUuZvy3X/+85/NzZs3h3BoByX56ALAaO8Xzw59rl+/3q81w2B0D9nZ2d4RI0aE1YmmTzz6DKsijpQuKirynjx5Mi5PtxQUHkxcRBZoC2skov5hhqDgxrWw+Y8dO5YsV2E7zq86+iI9C6j9L774oiub/y9/+YunsbHRtvmpH1UAqJoHhAM0qeLiYrb5Ge4Bm3/p0qVNYDCsdmrGnToJyeEkrwvLldxyE3ZDggoSgMBk6mQ3NAGAftHnsGHDwokomdUVYPOvWbNG3HPPb+zxqCuxzoyIWCDtGDkSejvxAJqRNI+asOMR7VJ8X+2THIHtGX5s8zMShzlz5viRYQZVlhx0hiYA8DlsToTdYCbobcQDnGxbWFgYQD19teSXoa2seEWfAwcODKHgRqdGegDQTGDzo6SWmmevCgA8BxKEqFkoGdG1zb9161aBE3vI50K+FuqTNvqgTxwTVldX5+r5MxgdWLFihQ+TD5NLn+zqBAQjwqufkpLi19uIF1L9b6X0XrKvVaIVD4wAZ+SOHTuszi0kHrD58/Ly7FCfGnYztLGB6NBMyYiBrvwe0YA4/5YtW0LIGMTzpedP2haZH3iPsmeoZLx69Wq/3g6D0S0gzj969OiwHmdWJz4JAHilFyxY0AxzQW8nHkjbuokcgKp9rRJpG2DGhoYGgbLbnRpJMN56663k2tpae2OPvvoa7c8AryCMDaf2SOb/qLtbmwkbN25sgVDVn70qAPA3hDOSsbxeL9v8DPeQE8mO8yOrDYyoT0BDYUZMQjlJwxAWWjNxARMXx2OBebCC6v2A6DNMeGxjfe2110LXgvmp4hAEna4FGe1Mj88xrrFjHxeS8V3b/LNmzbLzLCKZGvibNKG0tDS2+RmJA2x+9cQYo5351EmPV0x4rIpLlizx6W3EA9j8BQUFAXiuofY7MT8In4PZULEW+/mRDae2k2iAEcvLy4NUbkx9BuoY8ZyUw0Rc2fwAbH7aRqwyvC4AICjxzDjOz0gYpA3pox12ToxIExCMCPUUSUGdGugGcnNzW5EvoAocnahf+CNwIm5PMz+OHyssLAzpZbTxXicILWgk0hxxFecH0tPTfageTKu7bn4Z7X1eSfKZgFCrv3MLDEY3ATX+ySef7LD5DYfJTl5u2Pzz5s1rzszMdGVz7t+/vwmhMtrMYjj0SYQEJKkt9LjNT3F++Bj0MJ/hMC4kA5WVlbmy+d99912PbMOSAqdjbwU9a/qbXsH88PZzbj8jIYDNjzg/bE4nrzuIGADCIRE2P+L8Ur224PBDm4ZDn0RQdREVOHDgQOi9997rceZHbj+q6oDhDOX303ud4KVHOTMpnDrOIowV//M//5O8IW+DF6cdIwXaUJ61LnjwnNojDLyfn5E4SLXTD7XfcJjcIFp9IByQDOTW5peMnFRRURFAEc+uVn70iXwAyVw9bvOj/ZKSkqBaTDPa2IhwDWohIPV2zpw5ze31DD0dDTugtbUVzwBhviAcn3ras878IGgjuFZqCr5OjTEY3QVsfqzCTis/TT684nvY39OnT/crt3cLxcXFrXCYYdI7mRuqwEFi0e7du4NIwuncSmIBm18ypG3z07PQxxWN6BkhBRq2+eLFi0NSKwhA0EltJyCFXmDv3r2BysrKgBSgASksLGg1cDB2dagJngUSopBbIDUvv8FgJAJS1bXj/LffEX0CYnJjAwpWN7c2/86dO5tGJo+01V0wjBOTkQMMJsnTTz/t7WmbH6E+aBjQbroyR6IRCQEQfh+ceWgTyUrIpESsHkIUJkMsZxiQBgDtAit/YWEh2/wM94DNn52d3ZHbbzhMPiJMUjmBw8uXL3dlc5LND2YgRjEc+sN3sHPBLLD5491IFC/A/JKx7JXYSRh1Reo96nsSYjqT45quhAwxPu6FoEhNTeU4PyNxmD9/vh8MFo0JaaLC8+42tx82f3V1deDxsY+L227/watuOPSNSY84/wsvvNDjdftRw6+0tLSTzW84jAkE+xvmCB0zTtdG+y1uCG0ivVeaXDil12cwGIlAbm6uD5NYX5lANJlp9Wk/Osuv3t8dFJcUtz497ml7ZTccJjsEEZXSQp+NjY3XJM4Pmx+5DNHKeOFvfA+hBCGGgqSzZ88WvXr1cnyGiSA8D2yDXrx4MZJ8/AaDkQjA5kepLH2SExEDYMIjzo9Tetza/FL1b8KhHeqqqRMYCQ5BOOAQ5+/pUJ9c+ZN37NhhO/zUTTZO48N3sL+3bdvWEeeX773r16+39yLQDr1oFKltJ7qyqWqYePbZZz/avn27x00NAQbDBtn8SO9VK/nohMneruqGpZngyuaEzS8ZxYLzy8nmJS0D79EnQoIvv/xyj9v8YP7i4mLRu3fvDiekSuqqDmbEuCLl9svf6MfpRfClIBVY1wj0tlVSr8E4cD/MrQkTJgTffPNNx/4YjG5BruIdNfyirURg1ETE+SVjJFVUlCHUZXuwDa0fYjTaWYd8dtj8OEC0U0MJBnL7pT0dBPOru/oMhVkpL4Fi7qWlpV3m9peVlQUk41r4HQgDgpnJAagzPj6j3w4bH85HChuiRiIKjujtMxjdhlz97f38kUJuIHyOCQvfQCJs/oKCgtYnnhjbUUPAcOgThDEh487n8wV72uEHm18yql2332klJsJzoMIaiOHDgdmpoQjAvn/ZvunxeMyioiKBzD4wNpytSLICwd8AjQiCcdmyZUilRtETU5o9JhySepsMhitI5rdz+/UJr7/HatSvXz8xd+7chNj8WAlvu+1qtV8nhLiWL18uEIr7oYXEA2XC9u/fb+f2q2q/4TAmEJyVqOALxlSaiRnQNKRQ80g73j7+HJCC1Sb8bZqmBycHu9k7wGBEBGz+VatW2TY/2d/qpNeZAPX0Fi1a5Mrmx2Suqa2xcPpMNOYCkdBJSUlBEQvPD60kHhAumzZtEvfcc09UbUQlXIfr8/LykIvgobZuNLQd9yVdPF7laWut8XzX6vN897bPE2rlRKFbHnLl8SPNVC/drWsAYML2DD+f1kRcgJosVzy7hl9Xaa1ESG2Vq7+FwzQ7GkowoPZXVlYGod2oQqkrDQAEIQCTKCcnp7mjwRsEoUPrzdO+GWZozyLr3D5TnD+cIy4czBYXX8oRZ198/oYbL+MaAnF+2JkU2zYcJj1eMcERc580aZK/cwvxA46yeJgfBHVcCgCzvYkewdKlS1siHZ2lOgAjETQlxP/ff/99V9pRInH5eJXvc/8cca5klDhf/JA4X/igOFf0kAgVSMofKs6UPynObs+4YcbLuIZYvXq1V07YsNMedvU9Jj9W/tTUVNc2P/bzw6n1i1/GfogHGAs1AOrq6sz2ZhIKqP01NTVW//797WdhKL9fFwL4LhrBoy9NAauj8euM0IuLrS8KhkuGHygub+orLnv7ia8L+trvL3oHiHOFg8UZ/+TwFy8u8ev3Mm5SwOZft25dE612hsNEJgLzyZUf5+a5WiVsm18yWbwrPwhjxM62nTt3mldaSxzA/IjzQ8AZDn2DSADA2YcwHDbuRNIK8DfGum/fvkBHJ9cJ//pjVcvphhnifFFfcaGgj7hYcJ/4uvgKtZX0EZdL+0nqL85tfkJcaF5w3cfLuEaAzY+SWpEq6aorH2rNyet9nVuID2Tzjxs3znEfu/q3E/WUAEBVHRxDhl2EhkO/IHoO0AwwfikIW2fMmGFHJJw275BD8LnnnrMkkqiv64Hzr5e3/MM/RVzw9hWXiiTjF90rvintLb4tb6eqPuLb6vtFqO4JEdqTFdDvZ9yEKCoq8sHbrya26ExIW1TBGB6Px9+5hfixdevWVtmOY1ahzkBOhPHBTyFXatNuMAFoL6kVcjo6SyV5qT1uCEzk9iNpCeW0qQ6A/uwgFPBsMzIyEK40O3V6jXHmaJnnVP3c0OkNg8WF/Pul6t9bCoHfi7bie69Q+f3iUkWSOLNtkjj/ihnQ72fcZCgoKPA+/fTTHTXk1Emuvsf3yH6bNm2aa5v/8OHDTSiASSf2GBpjRxJCKrWbIUKuvCa16wbYO7Br1y6b+fWNPUTok/wBcOxJDaYjtx8596ZpXqXNgOj3IJMyJyfH/KHX64PTjQuS/1kyTny16UGpCfSXZkB/8XXhA/brudLB4ovKEeJ007xgKLA2Sb+XcZMARSHy8vLsTTZYoZw2tNCkByGfPT8/P6C3Ew/ALPX19XYVGyc/AzE/+gMjYYstsvyI6XTCNatXr3YdZwfzy5XcLrKhC0KVMA70iQy/5ubmq3LtpVlk4nli/IbDePFbYGpJM8CVAE0EQnWZyWf8s6zTZY9bZ2unhE+XPWWdrnrS+mfVBCt0yLT06xk3GVAWCqswVZUBqULAaGdIyvDLzs4OfPrpp6beTqyAzS+Z387tx8pvaMxB/ZK63H5KTWjWrJmhaHsBhg4bap9m80NP8QFx/pqamiB2LkZa+akvfA+1f926dY65/YcOHTJxGnEkhyaEB5yLMDXU+643vn+n0pUzl/EjA4pDYEUnh58+2Q2FyWDzT5gwwa81ETdwwCUcZvCaO9n4JIRgW2PlhyPugw8+8CxbtqwFK7N+PQkLhNjgSzhx4kTck7g9ycfezx/pWdDzoNx+ycABHEKitwVIAZmUmppqOQk4EAQDKv+61VgYjG5Dqrre8ePH27FtVQ3XJzyYAWEwqMbIS+/cSnw4cuRIE0J90ar3oj8wIXYSSqbE9lk7u0++tkBw6NfTWKFuY0ec1ALCf/rTn/xXeuwa2NK7c+dOe2OPnuqsEgmFYY8OE5s2bfqoq3p6GRkZLdjNZzj8RjzzrKwsCDePeg+D0ePAxJVM0oTVjrLaDI2hyP7G97BlJYOE3VTVgc3f0NBgwWFG4TFiKOqLxgHmh9qPIhv6xp5Vq1ZZWOlxXST6zW9+g3CcyM3N9UdbYXHqjrzGs2LFClvTMJTfrxPGCI0FBUhx4KjelhPkCt8SKX8A7U2bNk2sXbvWo97DYPQ4cPwT7G8qOqELABBNekzgNWvWuLL5sbUVx1xBPUefaBtCAExPgkDNsENZcZyk47Sf/5133vHCg+7kOFQJ7SE9OCcnBz4LE1mCUvswJdPb7+GBl/a7NWvWLDtxR3UuqoxPgun222+zsw1RgrxjMF2gKwGA5yH/Fx71HgajRwGbH9trSQUnMpTJj1dMfJShhgquNRE3qqurWrGX3amGn9o/mBBVbFBkI9p+9m3bttleeifBpRNsbaj2KMaB3YJpaWn2oZsQMqiTB0GihutoPCQY8Zwozl9aWmrH+duH0SWiCQC0DSHMAoBxzQCbf8qUKfZZfYYy2YmR1L+RrVZeXi4kI8btUFMBm58iDLTiGw7MAEKEQdrE6LOT2q/jjTfe8CLO7pQ4pBPahRCgiALuoSw9CtHRq/r7SQDgOuziy8vL69Lm18ECgHFDAPZ37bbapgkTJzgm3GCyU7gK77HpJTU11RXjo/hkc3OzhdVWZXq9b4rzwx/hZPNHwsGDBzMXLJgXuvfe33V5BHg0crqG7H0IDGT0SfMlJptfx5gxY1ru+g/nKAB+95IlSwSShtR7GIyEY9++fX44xSIxivoZViypKvvU++MFnGuNjY12nB99Gg59qQyIjDuk3cYbE0eFncVLFodhwzs5M0E6c+ukXkPvSQDA1yBX8ZhtfhUIDz740IMWzi0wtDGBoIl4vV5x9OhRj3ofg5FwZGdn244uffKrDNO+8tuhPv3+eFFTU9MK5o/mZyDnH2x5v98f7C4joBQW4uloRzdt8F79uyuia6ENIUMRxTkjxfm7ApyM0B4MB+YHIaFJXhO43huCGDc5ELKi5Bl9wquTHttY4fD74x//6Er1f+eddzri/GRHq/0Q4+P9vffea2fDdWXzd4VXXnnFi7HDsUebmMDETra9TvheJ2gkam5/vIAZU1paGsJhH4ZD++gXzk5pApjqfQxGQvGHP/yhBVtTyb53mvxgFnjJpZ0bdlNJF8yya9cuC972SP0R80O9RohO9hmzzR8LpOnhR2gPWXqI64MBIRD0cegEQYHrQPD2d9fmJ6CQCh2VRs8ZhPapr6lTp4aj5Si4BWr5hQ57PWfqMz1/93k8p16c72k77k3Sr2PcpIBqmZubiyo2V014InmZ7e0vKCgIyetNvY1YgbPpcWQ1Qn1w6FH7lPBDf+M9edWR2x8t1OcGODZ7wYIFgYkTJ4bw+/TfrRNpDKNHj8K4umXzEz7++ONMHMEFZ6uuAdHvR3agFAAB/d5EIhTwmmeanhVnfVPE59VPiDO7UsXZA0sCoSazW1oN40eGffv22ZtRKPauT3p8BmZ97rnnhNQUMvX740FdXV0rEmrQl9oHhdpUJoOTsbCwMCg1Bo/eTiLxl7/8BQd1hqiAZzTCc0A9ASkIu23zE6RJYyETURd+hmICQEORz6zHBMDpfZnJXzXPsi42jBWX/I+IS5WDxfmqR8TpqqfFmfrZln494yaEXAFNVOtRJ6FKUEOxYkvb2ZXNjzg/1H5ifqNd2JC6T/1DEGALLDzflNvfk8jLyzPhyFM1EieSl9refsm4ccf5dWRnZ3tRHk19Dmo/eIUQlII5iEiJdnvC8P3/2Ri8tH20+H7nEPHvxsHiX1v7i7bi+8WF/AHiXNlIcaF5oSsTh3GDAx511KCnsJ8+EcGU2NkHIaHfGyvI5kd6rKGsbiD0gz5oLwGYEH6GLVu2hK4F80sb3i5Vpv92lTA+CEHkH8Sa2x8JqKFommYTHHto11Cegy4AHnnkYQGhqTWRUHx/fJk4t3WY+K7mAfHvugfEd75+om1TH/GNt7d8vV+aBWNFaEd6a+gAF/m4KYGTYuD8U/Pr1YkIwTBp0qSQVHc92q0xAatXc3NzAKfdOFW9AamrP44Sy8/PDx0+fNijttMTmDlzZiZ8DJEckSAIJkrvXbNmjSubH1i2bJkfm5woAmEoQlB9DjAN5Phc99cVzgWetz7zPSUu++Tqv6W/Xdfv29Le4psCKQAkXSpPEmdqxokLL+cEwnzwx80HqZJ7wATqZFRp8IODxaJFiwL6fbFi27ZtrVOnTnXMKgQRk4EQXpTM3+04fzzIyMgwpaYRIqGk/24aKzYkwTxIhM0vV/+r6ikYWt/4/M677hRzs+Zih6JHbyPRCAW8ns93LhRfbh4l2vyDpBDoJ76tul+0lfURXxdLTaCyrwhVPyLO7lkkLh7t2ZOUGNcBjY2NQYTBnJgTBNt/x44d3RIAOGqaNvbo7dOEh9qPFRbe7g0bNqAEdo+r/TgjD0eSkc1vRBEACNHFsp+/K0jm90ot4qqzAvBe/RvPA36Gurq65u7mFsSDUMDX68yBZf4z2yaLi1seEd9u7ivaKqUZUCSFQP59UhDcL86VDxan69LEmaZlHv1+xo8c0tbuOEZbn5SgtLQ07O2P2/knmb9l+vTpV7WnE1Y8eN+R3tuTR3UBOKhTaiNeJO84FRmh3w9tBCs/vP2JsPmzs7PtcxP0bEddAOBZjBkzJlxSUhL383aLb99c6w/tTg9fkKv95cIB4utN/cRlUHF/8WXxo+Lz+rTQ6X1LevT/w7gOQHad09ZborFjx1rq9bHggw8+SFqwYIGFasD6RNcJFXrXrl3b4zY/CpRI7SKI1ZX2A5Aaro6PHH4Iv+Xl5bm2wefPn+9Hn2pfOsnLbD8E/B+rVq3y6W1cK1w6ssH7VWOKOF84TFyQQuBS0QBxoWSI+HzzJPFZXYapX8+4CYBQm1O9PZqcU6ZMiVsAoMgl9tOrxTINB+YHrVmzJtiTWW4A4vzNzc0hRCF0xndiRFQ1kszv2ubHWYmIaDgV+6Q+SeDANzBnzhx/pwauAy4GcptDOxeIL33jxJflY0RoW6oI7V7xUVuAMwNvSshJepVTCoS/oQrPnh1/MohkaHPmzJkdqbW6cFEJR3yp9/YECgoKTDC/HoVQmRC/FYwKjWTjxo2ubX65knsff/xxu56C+lzVXAP0iz4RZl28eHEzzAW9nUj47kS191zLBuvzPfOtU82zrbY/eK3wSZ9rFR0+gdCBVZ4z9dM9p6o8nlDTs562A8z8Ny1QyEMVADoNHz48bgZFiuvy5cvtDS400fV2iRBbh6rtdrWNhOnTp3vRR7RQH8YHLcjNfn4CmHj16tVNSBXWtzerRP3CGSmZPy6bv+1EsXl+/0JxdvPj4vyWR8Xl7SPF+V1Pii93z0fbDEbskCuwXR2XVmmdOZAjjzLb+n1dQdr1OOyi08lBhkP7WCGTRyUj5RcltGJeAWPBwoULM2F/qyaO3j+FICEkcnJyXNv8sk8/1Hna4Wg4MD8IAgmbnJYsWeJT7+8Kba3epPOvLAl8VfuEuFg2UHztHyS+axgo2hqGijO+8eKiXLH1exiMiJBMZ4fgIjHI+PHjxbFjxwL6fbEAVX4oxBiNIARQexC58Xob3UVWVpYpmTpEKjjI0FZgEFZpMD+KmZaVlSV1biU+IM4Pb7++s08nPGtcl5KS4ldujwkXj+Z6zr+0WHxVOVxcKEmyY/ff1j9k07mqUSLUmJmwZ8i4BbBu3TovbYIxHAQAVimc7qPfFwtOnjyZvHnzZjvVluxsvX0irIhwmEmB5EoFB+bPn+8ZN25cWN/dZ7T/PryCMCZ43rtTw08H4vx0VqLhwPREeAZ4pgsWLOjWWYmhgOkJ7Z0jzvkeFRcrBou2uofE99sHi+9eeERcrEsW/2xMZwHAiB3INsPuPKeJC2aBHS9Xq1Y5v5M63RgjcH6etKuDSKiJVGlIJajP8AnEU1FXxe7du+1EGkq11dsnAQBGBPNLxnclcGDzr1q1qgltoU1DeXb0HoTxwNcyfPjwsJltxmXzqwgFlnm+ejFNnK0aKi6VDxBtNQ+K7xsG2ELgYv0IKQBSWAAwYgdO70EkwKlqLiYxrZK1tbUoSRX3igXAh4Da/Qiv6cyoEhiIYvAVFRWBeDPhYPPDlFDVfifC91DBly9f7trmx6GdEFokbIz250aEv0H4HqZG9qpsn9ZEXDhz2PSc3TVbnC8eJL4u6iO+rhoovqtLEt9skyaAb5g4XTONBQAjdoCpi4qKWpz2whvtkxnCAYUrUFNPvz9WQAggFg+fANR9MKGhCRsQmQpg5PLy8pgnM3L7R48e3cnm1wlt43sINNTYc2vzl5SU+FDSLNo2YnIyQuCkpaX59TbiRSiw1vNVc5YIFT54JVW3tL9o2zJItNU+JM5UPSrO1KTG/MwYDBtytTXh7NOZx1AYFNWC1q1bF9RujQswB1CPDwwIz7yTT8Bo7w9jgdkQS1gONr+8NqweA6a3S4RQ3+rVq13b/EjXhc1PEQan3wCCRgObf9GiRc2m6b7CTltrmefiq9niy9LHxMX8/uJyQT9bC7hYM1ScKk8WF/evYQHAiB8pKSktOP3GUCavSpjkSFiRpgBO4ul2wgkcg/AJkJ3uxDQg9AeCei1NlFYcE96poXbMmjXLzu1X21LbxCut/GD+0tLSLgVKNEBwbNiwoQmHkTr1SYT+QFLtjzvO3xUuHM3N/GLbjNA5CIGih8WFsofEV/6R4uwLM1wJaMYtDNTNl8zWsVsNpDMmGAl72aUQsFDbT70/Hjj5BIwIQofMAZTd1vMEli1bZsf5nTQJ1SbH9+grETb/ihUr/FD7wdxqqrPeN8wmZBVK7cSnt5EInN6zxDxdOytwtj5TnN06M3TK7wl8VufptmBmMAypnlsov61OZkMRBiBMfKzKEAJuSlXhYI+9e/d2+ARUD7pOJATk6m3hXlQkhlMyOTnZcT+/ei/Gi/Biomx+mCW6kNT7JifjzJkz/Z1bSDwuHSszLx7gffqMBADbcbGFl5x0TgIAhNVt3LhxcAq6UjnhE5BMade9jyYAqE+s9i+99JLV0tISgs9CPb1IZUD1PexvqSkkxOZHbgGNU2d8InyP3zN37txuxfkZjOsKySweKt+lCgCQOtHxNyIH+/fvd+UTwL01NTV2noCar++UlwBC1SAUDHVieP1vJCCtWbPGtc2fl5fXhBCeyvxk4+Mz8lfgmcEZKU2NhNr8DMY1A2x77NAjJ52hMaDObPAJ1NfXu/YJ4OAPmBZgKDIJVAGk9huNcC3uTUpKQrada5sfNfxwYvGdd17Z2EP9EOPjPV7xrNCn2zg/g3HdAdu+qKjIFgJGFwwIRkDlnEQIAalNhBBuhLpPq6veXyQy2sdJcf4lS5YEupu9SIDNr0Yr5Ecdqz3+pleMExEGaT75tSYYjB8npH2PmL1dL1D1B+iMB8KKDZv80KFDrnwCCBHCJ4Bwo6pe6/3pREyJe2CWSOb/KJ699U4oKCiw4/y6L0QVAPgOwgHPKC0tjW1+xs2HysqKIFZ4ShXWmU8lqMAou+XGJwDH4LZt24I4vJPsbDCZamurRH3jGjjfpObi2uaXwqMJlYCRWKSbIiphbNjyvGjRIrb5GTcnkICTn59vQcXFSh9tRZaXo36AaGxsdGUOIEQotY8Qkm0geMCE0QhjwrWSEV3b/Ijzw68Bh55qghga8+M7aCoLFy70dW6BwbjJgJ15GzZs6HAMElPoq7C81GZYOM22b99uoTio3laswGGg9fX1IWQnUj8qw9Pf6A/Mnwibv6KiwgdtR/9NRPgbfWLlR59s8zNuGcAnUFpaGkQYjhiRVHNiShIKUJ0nT55shwj1duLBsWPHklG0tG/fvh2rMdoHAxrtDAmzIycnx7XNjzj/lClTOmx+J+anvmFqpKens83PuPUAIQD7HMxPzKJqArQy4zsk4cAnALtebydWvPXWW8nSLg/iaC419ZY22cBe1++JB2Tz02+i9lUhQK/4bbD558+fzzY/49YEmQMItYFhIqnm9IroAMwBiSS9rViBst7V1dUBqXKHcYwZUnvT0tLsTUL6tfHCNE07zu+0O9FQVn58hxAl2/yMWx4QAnl5uRY22MAGhyBQzQGV8D02z+zYscOVTwDA+QHZ2dkmCo4eOXLEdNteVVWVj8qFq1qMLgCgzcDUmDBhgl9vg8G4JYEz/IqLi22fgLpKOhFy9j0ejzh48KArn0AiUVlZ6Z08eXJYPxbd0Lz9+Ay/UWogAtWTOjXCYNzqkPZzcPjwR+1VlOL2lMRDRMIBNjuEABJ+9HauFcjmhxmBMTkxPYgEAsf5GYwowIEea9assX0CqhDQtQASAthFmAhzoLuQJoQfY1AdikY706spvxgrsgrZ5mcwugB8AtIut7AHXnUE6gKA7Gl49JEsdK2FwObNm+04v9NZfSCME68YJxx+kyZN8iu3MxiMSECewKZNm4KUuKNqAbpzDY5BZAwiRKi301OQNrxX9mnH+Q0H5icim7+iooJtfgYjXsAngL39CKuRENAFAKnZSKgJBAI96hOg/fx6JR+dMCaYMAgzNjQ0hFF1SGmGwWDEApgDa9ausYYMeUiu9Ff2DugCwFAYD9GBPXv2uMoTiAbE+ZGLQIeSGA7MD4KgQm7/li1bQpL5TaUJBoMRD8gn8MgjDzsW91AJ5sBTTz1lC4FE+wSQ208rv9q/KojoPWx+v98v/vu//ztTa4bBYMSLuro65PEH77uv91UMqBK0A8TiUYtw7969CfMJILdfrvwdNr8uANAv3uN7+C1wTPqJEyc43MdgJBKFhYXBxx4b7nj0mE69e/fGKhyUK3e3fQJHjx71ZGRkdNTtNxSmxysYn0KAeD948OBwVVWVxTY/g9EDgDmwbt1aa/DgQR2rbjRCIc/MzEyrsbHRbG1tjWu3nRQ2mZJsW17vS9dA8H2fPn2EvN5S22AwGAkGkoVWrVplwcPeVRgOjPnrX//adg4uX77cev311wOffPKJ+UNrnYEIQktLS2DevHn2OQEUhlSdjqq9TyFKlPF64okn/H/961/Z5mcwehrwCcAc+O3vfhvVKUifQ01HPB479aQwCEErwGq9a9cuC5mEUNvz8vIsaecHn3jyCfta+BLULcq6EADBLEB9gZKSEnH48GGPMkQGg9HTQLIQdhHSiT5dEdUdwHsIDvgScC/tQlTzDNT71JUfhGtwLfYASGEURtkxg8FgXFv4fD7bHMDega7MASJ1BScVHsxMr/r1TveB4BsoLy8PSbPBNBgMxvUBfAJSE7Bw3h8YE4ysO+0SQWgTBG0B/ofNmzeLDz/8kG1+BuN6A+cQ7t69OwhNQD3jL1FEqz58CThxKCcnpxkhQoPBYNw4KC4uTl66dGkQTHrXXXddxcjdJTA+PP2LFi2y9u/fzwk+DMaNCjjkSktLEcoLYw8+NhI5ZQ/qNj19RlEFqPuoSIw2hg4dapmmGejcE4PBuGGB7bdSEDRv3LjRLiaK/Hw6pVgn8urDvr/77rvtLMIxY8bgfIBgWlqaWVZWlqS3z2AwbnBYltUL8fnMzEwP9gbgrMAVK1aIadOm2cVFEcYD4fQefLZs2TJk84Ga09PTPahLoLfJYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBYDAYDAaDwWAwGAwGg8FgMBgMBoPBuLHx/wF/KenXydwZIgAAAABJRU5ErkJggg==";
|
|
@@ -2979,7 +3187,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
|
|
|
2979
3187
|
var walletSigningImage = "data:image/png;base64,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";
|
|
2980
3188
|
|
|
2981
3189
|
// src/components/WalletModalContent/index.tsx
|
|
2982
|
-
var
|
|
3190
|
+
var import_jsx_runtime70 = require("react/jsx-runtime");
|
|
2983
3191
|
function WalletModalContent({
|
|
2984
3192
|
status,
|
|
2985
3193
|
error,
|
|
@@ -2990,7 +3198,7 @@ function WalletModalContent({
|
|
|
2990
3198
|
address,
|
|
2991
3199
|
connected
|
|
2992
3200
|
}) {
|
|
2993
|
-
const pageData = (0,
|
|
3201
|
+
const pageData = (0, import_react24.useMemo)(() => {
|
|
2994
3202
|
if (status == "success") {
|
|
2995
3203
|
return {
|
|
2996
3204
|
btnText: "Disconnect Wallet",
|
|
@@ -3049,12 +3257,12 @@ function WalletModalContent({
|
|
|
3049
3257
|
statusImage: walletConnectImage
|
|
3050
3258
|
};
|
|
3051
3259
|
}, [visible, connected, status, error, address]);
|
|
3052
|
-
return /* @__PURE__ */ (0,
|
|
3053
|
-
/* @__PURE__ */ (0,
|
|
3054
|
-
/* @__PURE__ */ (0,
|
|
3055
|
-
/* @__PURE__ */ (0,
|
|
3260
|
+
return /* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: `matchid-wallet-box`, children: [
|
|
3261
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsxs)("div", { className: `matchid-wallet-content`, children: [
|
|
3262
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("img", { src: pageData.statusImage }),
|
|
3263
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
|
|
3056
3264
|
] }),
|
|
3057
|
-
/* @__PURE__ */ (0,
|
|
3265
|
+
/* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
|
|
3058
3266
|
Button,
|
|
3059
3267
|
{
|
|
3060
3268
|
block: true,
|
|
@@ -3069,7 +3277,7 @@ function WalletModalContent({
|
|
|
3069
3277
|
}
|
|
3070
3278
|
|
|
3071
3279
|
// src/components/SOLModal/index.tsx
|
|
3072
|
-
var
|
|
3280
|
+
var import_jsx_runtime71 = require("react/jsx-runtime");
|
|
3073
3281
|
function WalletContent({
|
|
3074
3282
|
onSuccess,
|
|
3075
3283
|
type
|
|
@@ -3077,17 +3285,17 @@ function WalletContent({
|
|
|
3077
3285
|
const { setVisible, visible } = (0, import_wallet_adapter_react_ui.useWalletModal)();
|
|
3078
3286
|
const wallet = (0, import_wallet_adapter_react.useWallet)();
|
|
3079
3287
|
const { events, login } = useMatch();
|
|
3080
|
-
const [status, setStatus] = (0,
|
|
3081
|
-
const statusRef =
|
|
3082
|
-
const [error, setError] = (0,
|
|
3083
|
-
(0,
|
|
3288
|
+
const [status, setStatus] = (0, import_react25.useState)("");
|
|
3289
|
+
const statusRef = import_react25.default.useRef(status);
|
|
3290
|
+
const [error, setError] = (0, import_react25.useState)("");
|
|
3291
|
+
(0, import_react25.useEffect)(() => {
|
|
3084
3292
|
const init = async () => {
|
|
3085
3293
|
await wallet.disconnect();
|
|
3086
3294
|
setVisible(true);
|
|
3087
3295
|
};
|
|
3088
3296
|
init();
|
|
3089
3297
|
}, []);
|
|
3090
|
-
(0,
|
|
3298
|
+
(0, import_react25.useEffect)(() => {
|
|
3091
3299
|
if (wallet.connected) {
|
|
3092
3300
|
console.log("wallet.connected", wallet.connected);
|
|
3093
3301
|
toLoginInWallet();
|
|
@@ -3099,7 +3307,10 @@ function WalletContent({
|
|
|
3099
3307
|
try {
|
|
3100
3308
|
setStatus("nonce");
|
|
3101
3309
|
statusRef.current = "nonce";
|
|
3102
|
-
const res = type == "bind" ? await getWalletInitApi({
|
|
3310
|
+
const res = type == "bind" ? await getWalletInitApi({
|
|
3311
|
+
address,
|
|
3312
|
+
type: "SOL"
|
|
3313
|
+
}) : await getWalletNonceApi({ address, type: "SOL" });
|
|
3103
3314
|
if (!isSuccess(res)) {
|
|
3104
3315
|
throw new Error(res.message);
|
|
3105
3316
|
}
|
|
@@ -3148,7 +3359,7 @@ function WalletContent({
|
|
|
3148
3359
|
statusRef.current = "";
|
|
3149
3360
|
}
|
|
3150
3361
|
};
|
|
3151
|
-
return /* @__PURE__ */ (0,
|
|
3362
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
|
|
3152
3363
|
WalletModalContent,
|
|
3153
3364
|
{
|
|
3154
3365
|
connected: wallet.connected,
|
|
@@ -3203,21 +3414,24 @@ var wallets = [
|
|
|
3203
3414
|
new import_wallet_adapter_wallets.TrustWalletAdapter(),
|
|
3204
3415
|
new import_wallet_adapter_wallets.XDEFIWalletAdapter()
|
|
3205
3416
|
];
|
|
3206
|
-
function
|
|
3417
|
+
function SOLConnectModal({
|
|
3207
3418
|
type = "login",
|
|
3208
3419
|
onSuccess,
|
|
3209
3420
|
...props
|
|
3210
3421
|
}) {
|
|
3211
3422
|
const intl = (0, import_react_intl13.useIntl)();
|
|
3212
|
-
return /* @__PURE__ */ (0,
|
|
3423
|
+
return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3213
3424
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3214
3425
|
}, {
|
|
3215
3426
|
name: "SOL"
|
|
3216
|
-
}), children: /* @__PURE__ */ (0,
|
|
3427
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react.ConnectionProvider, { endpoint: (0, import_web3.clusterApiUrl)("devnet"), children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react.WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_wallet_adapter_react_ui.WalletModalProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(WalletContent, { onSuccess, type }) }) }) }) });
|
|
3428
|
+
}
|
|
3429
|
+
function SOLModal(props) {
|
|
3430
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(SOLConnectModal, { ...props });
|
|
3217
3431
|
}
|
|
3218
3432
|
|
|
3219
3433
|
// src/components/TRONModal/index.tsx
|
|
3220
|
-
var
|
|
3434
|
+
var import_react27 = __toESM(require("react"));
|
|
3221
3435
|
var import_react_intl14 = require("react-intl");
|
|
3222
3436
|
|
|
3223
3437
|
// src/lib/tron/TronLinkAdapter.ts
|
|
@@ -3251,7 +3465,7 @@ var TronLinkAdapter = class {
|
|
|
3251
3465
|
};
|
|
3252
3466
|
|
|
3253
3467
|
// src/hooks/useTRONWallet.ts
|
|
3254
|
-
var
|
|
3468
|
+
var import_react26 = require("react");
|
|
3255
3469
|
|
|
3256
3470
|
// src/lib/tron/BitgetAdapter.ts
|
|
3257
3471
|
var BitgetAdapter = class {
|
|
@@ -3296,9 +3510,9 @@ var OKXAdapter = class {
|
|
|
3296
3510
|
// src/hooks/useTRONWallet.ts
|
|
3297
3511
|
var useTRONWallet = () => {
|
|
3298
3512
|
const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
|
|
3299
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3300
|
-
const [address, setAddress] = (0,
|
|
3301
|
-
(0,
|
|
3513
|
+
const [installedWallets, setInstalledWallets] = (0, import_react26.useState)([]);
|
|
3514
|
+
const [address, setAddress] = (0, import_react26.useState)(null);
|
|
3515
|
+
(0, import_react26.useEffect)(() => {
|
|
3302
3516
|
const getInstalled = async () => {
|
|
3303
3517
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3304
3518
|
wallet: wallet2,
|
|
@@ -3308,11 +3522,11 @@ var useTRONWallet = () => {
|
|
|
3308
3522
|
};
|
|
3309
3523
|
getInstalled();
|
|
3310
3524
|
}, []);
|
|
3311
|
-
const [wallet, chooseWallet] = (0,
|
|
3525
|
+
const [wallet, chooseWallet] = (0, import_react26.useState)(null);
|
|
3312
3526
|
const onConnect = async () => {
|
|
3313
3527
|
setAddress(await wallet.connect());
|
|
3314
3528
|
};
|
|
3315
|
-
(0,
|
|
3529
|
+
(0, import_react26.useEffect)(() => {
|
|
3316
3530
|
if (!wallet) {
|
|
3317
3531
|
setAddress(null);
|
|
3318
3532
|
}
|
|
@@ -3328,8 +3542,8 @@ var useTRONWallet = () => {
|
|
|
3328
3542
|
};
|
|
3329
3543
|
|
|
3330
3544
|
// src/components/TRONModal/index.tsx
|
|
3331
|
-
var
|
|
3332
|
-
function
|
|
3545
|
+
var import_jsx_runtime72 = require("react/jsx-runtime");
|
|
3546
|
+
function TRONConnectModal({
|
|
3333
3547
|
type = "login",
|
|
3334
3548
|
onSuccess,
|
|
3335
3549
|
...props
|
|
@@ -3338,15 +3552,15 @@ function TRONModal({
|
|
|
3338
3552
|
const intl = (0, import_react_intl14.useIntl)();
|
|
3339
3553
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useTRONWallet();
|
|
3340
3554
|
const iconMaps = {
|
|
3341
|
-
tronlink: /* @__PURE__ */ (0,
|
|
3342
|
-
bitget: /* @__PURE__ */ (0,
|
|
3343
|
-
okx: /* @__PURE__ */ (0,
|
|
3555
|
+
tronlink: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TronLinkIcon, { size: isDownMd ? 36 : 40 }),
|
|
3556
|
+
bitget: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(BitgetIcon, { size: isDownMd ? 36 : 40 }),
|
|
3557
|
+
okx: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(OKXIcon, { size: isDownMd ? 36 : 40 })
|
|
3344
3558
|
};
|
|
3345
3559
|
const { events, login } = useMatch();
|
|
3346
|
-
const [status, setStatus] = (0,
|
|
3347
|
-
const statusRef =
|
|
3348
|
-
const [error, setError] = (0,
|
|
3349
|
-
const connected = (0,
|
|
3560
|
+
const [status, setStatus] = (0, import_react27.useState)("");
|
|
3561
|
+
const statusRef = import_react27.default.useRef(status);
|
|
3562
|
+
const [error, setError] = (0, import_react27.useState)("");
|
|
3563
|
+
const connected = (0, import_react27.useMemo)(() => {
|
|
3350
3564
|
return !!address;
|
|
3351
3565
|
}, [address]);
|
|
3352
3566
|
const disconnect = async () => {
|
|
@@ -3414,7 +3628,7 @@ function TRONModal({
|
|
|
3414
3628
|
statusRef.current = "";
|
|
3415
3629
|
}
|
|
3416
3630
|
};
|
|
3417
|
-
(0,
|
|
3631
|
+
(0, import_react27.useEffect)(() => {
|
|
3418
3632
|
if (wallet) {
|
|
3419
3633
|
console.log("onConnect");
|
|
3420
3634
|
onConnect();
|
|
@@ -3422,21 +3636,21 @@ function TRONModal({
|
|
|
3422
3636
|
setStatus("");
|
|
3423
3637
|
}
|
|
3424
3638
|
}, [wallet]);
|
|
3425
|
-
(0,
|
|
3639
|
+
(0, import_react27.useEffect)(() => {
|
|
3426
3640
|
if (address) {
|
|
3427
3641
|
toLoginInWallet();
|
|
3428
3642
|
}
|
|
3429
3643
|
}, [address]);
|
|
3430
|
-
(0,
|
|
3644
|
+
(0, import_react27.useEffect)(() => {
|
|
3431
3645
|
if (!props.isOpen) {
|
|
3432
3646
|
disconnect();
|
|
3433
3647
|
}
|
|
3434
3648
|
}, [props.isOpen]);
|
|
3435
|
-
return /* @__PURE__ */ (0,
|
|
3649
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3436
3650
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3437
3651
|
}, {
|
|
3438
3652
|
name: "TRON"
|
|
3439
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
3653
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3440
3654
|
WalletModalContent,
|
|
3441
3655
|
{
|
|
3442
3656
|
error,
|
|
@@ -3449,9 +3663,9 @@ function TRONModal({
|
|
|
3449
3663
|
setVisible: () => {
|
|
3450
3664
|
}
|
|
3451
3665
|
}
|
|
3452
|
-
) : /* @__PURE__ */ (0,
|
|
3666
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
3453
3667
|
installedWallets.map((wallet2) => {
|
|
3454
|
-
return /* @__PURE__ */ (0,
|
|
3668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3455
3669
|
RecommendItem,
|
|
3456
3670
|
{
|
|
3457
3671
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -3464,14 +3678,14 @@ function TRONModal({
|
|
|
3464
3678
|
);
|
|
3465
3679
|
}),
|
|
3466
3680
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
3467
|
-
return /* @__PURE__ */ (0,
|
|
3681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
|
|
3468
3682
|
RecommendItem,
|
|
3469
3683
|
{
|
|
3470
3684
|
icon: iconMaps[wallet2.walletKey],
|
|
3471
3685
|
name: wallet2.name,
|
|
3472
3686
|
onClick: () => {
|
|
3473
3687
|
},
|
|
3474
|
-
footer: /* @__PURE__ */ (0,
|
|
3688
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Button, { size: "sm", onClick: () => {
|
|
3475
3689
|
window.open(wallet2.website);
|
|
3476
3690
|
}, children: "Install" })
|
|
3477
3691
|
},
|
|
@@ -3480,26 +3694,29 @@ function TRONModal({
|
|
|
3480
3694
|
})
|
|
3481
3695
|
] }) }) });
|
|
3482
3696
|
}
|
|
3697
|
+
function TRONModal(props) {
|
|
3698
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(TRONConnectModal, { ...props, type: "" });
|
|
3699
|
+
}
|
|
3483
3700
|
|
|
3484
3701
|
// src/components/TONModal/index.tsx
|
|
3485
|
-
var
|
|
3702
|
+
var import_react28 = __toESM(require("react"));
|
|
3486
3703
|
var import_react_intl15 = require("react-intl");
|
|
3487
3704
|
var import_ui_react = require("@tonconnect/ui-react");
|
|
3488
|
-
var
|
|
3705
|
+
var import_jsx_runtime73 = require("react/jsx-runtime");
|
|
3489
3706
|
function WalletContent2({
|
|
3490
3707
|
onSuccess,
|
|
3491
3708
|
type
|
|
3492
3709
|
}) {
|
|
3493
3710
|
const { events, login } = useMatch();
|
|
3494
|
-
const [connected, setConnected] = (0,
|
|
3711
|
+
const [connected, setConnected] = (0, import_react28.useState)(false);
|
|
3495
3712
|
const wallet = (0, import_ui_react.useTonWallet)();
|
|
3496
3713
|
const userFriendlyAddress = (0, import_ui_react.useTonAddress)();
|
|
3497
3714
|
const [tonConnectUI] = (0, import_ui_react.useTonConnectUI)();
|
|
3498
3715
|
const { state, open, close } = (0, import_ui_react.useTonConnectModal)();
|
|
3499
|
-
const [status, setStatus] = (0,
|
|
3500
|
-
const statusRef =
|
|
3501
|
-
const [error, setError] = (0,
|
|
3502
|
-
(0,
|
|
3716
|
+
const [status, setStatus] = (0, import_react28.useState)("");
|
|
3717
|
+
const statusRef = import_react28.default.useRef(status);
|
|
3718
|
+
const [error, setError] = (0, import_react28.useState)("");
|
|
3719
|
+
(0, import_react28.useEffect)(() => {
|
|
3503
3720
|
const init = async () => {
|
|
3504
3721
|
if (wallet) {
|
|
3505
3722
|
await tonConnectUI.disconnect();
|
|
@@ -3572,7 +3789,7 @@ function WalletContent2({
|
|
|
3572
3789
|
}
|
|
3573
3790
|
});
|
|
3574
3791
|
}, []);
|
|
3575
|
-
(0,
|
|
3792
|
+
(0, import_react28.useEffect)(() => {
|
|
3576
3793
|
if (wallet) {
|
|
3577
3794
|
setConnected(true);
|
|
3578
3795
|
console.log("Wallet connected:", wallet);
|
|
@@ -3583,7 +3800,7 @@ function WalletContent2({
|
|
|
3583
3800
|
setStatus("");
|
|
3584
3801
|
}
|
|
3585
3802
|
}, [wallet]);
|
|
3586
|
-
(0,
|
|
3803
|
+
(0, import_react28.useEffect)(() => {
|
|
3587
3804
|
console.log({
|
|
3588
3805
|
state,
|
|
3589
3806
|
wallet
|
|
@@ -3612,7 +3829,7 @@ function WalletContent2({
|
|
|
3612
3829
|
}
|
|
3613
3830
|
}
|
|
3614
3831
|
}, [state]);
|
|
3615
|
-
return /* @__PURE__ */ (0,
|
|
3832
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
3616
3833
|
WalletModalContent,
|
|
3617
3834
|
{
|
|
3618
3835
|
connected,
|
|
@@ -3638,7 +3855,7 @@ function WalletContent2({
|
|
|
3638
3855
|
}
|
|
3639
3856
|
);
|
|
3640
3857
|
}
|
|
3641
|
-
function
|
|
3858
|
+
function TONConnectModal({
|
|
3642
3859
|
type = "login",
|
|
3643
3860
|
onSuccess,
|
|
3644
3861
|
...props
|
|
@@ -3646,21 +3863,24 @@ function TONModal({
|
|
|
3646
3863
|
const intl = (0, import_react_intl15.useIntl)();
|
|
3647
3864
|
const { endpoints, appid } = useLocalStore_default();
|
|
3648
3865
|
const manifestUrl = `${endpoints.back}api/v1/wallet/ton?appid=${appid}&url=` + encodeURIComponent(window.location.origin);
|
|
3649
|
-
return /* @__PURE__ */ (0,
|
|
3866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3650
3867
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3651
3868
|
}, {
|
|
3652
3869
|
name: "TON"
|
|
3653
|
-
}), children: /* @__PURE__ */ (0,
|
|
3870
|
+
}), children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(
|
|
3654
3871
|
import_ui_react.TonConnectUIProvider,
|
|
3655
3872
|
{
|
|
3656
3873
|
manifestUrl,
|
|
3657
|
-
children: /* @__PURE__ */ (0,
|
|
3874
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(WalletContent2, { onSuccess, type })
|
|
3658
3875
|
}
|
|
3659
3876
|
) });
|
|
3660
3877
|
}
|
|
3878
|
+
function TONModal(props) {
|
|
3879
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime73.jsx)(TONConnectModal, { ...props });
|
|
3880
|
+
}
|
|
3661
3881
|
|
|
3662
3882
|
// src/components/BTCModal/index.tsx
|
|
3663
|
-
var
|
|
3883
|
+
var import_react30 = __toESM(require("react"));
|
|
3664
3884
|
var import_react_intl16 = require("react-intl");
|
|
3665
3885
|
|
|
3666
3886
|
// src/lib/btc/UnisatAdapter.ts
|
|
@@ -3732,7 +3952,7 @@ var XverseAdapter = class {
|
|
|
3732
3952
|
}
|
|
3733
3953
|
});
|
|
3734
3954
|
} catch (err) {
|
|
3735
|
-
|
|
3955
|
+
matchlog_default.error(err);
|
|
3736
3956
|
resolve(false);
|
|
3737
3957
|
}
|
|
3738
3958
|
});
|
|
@@ -3809,12 +4029,12 @@ var LeatherAdapter = class {
|
|
|
3809
4029
|
};
|
|
3810
4030
|
|
|
3811
4031
|
// src/hooks/useBTCWallet.ts
|
|
3812
|
-
var
|
|
4032
|
+
var import_react29 = require("react");
|
|
3813
4033
|
var useBTCWallet = () => {
|
|
3814
4034
|
const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
|
|
3815
|
-
const [installedWallets, setInstalledWallets] = (0,
|
|
3816
|
-
const [address, setAddress] = (0,
|
|
3817
|
-
(0,
|
|
4035
|
+
const [installedWallets, setInstalledWallets] = (0, import_react29.useState)([]);
|
|
4036
|
+
const [address, setAddress] = (0, import_react29.useState)(null);
|
|
4037
|
+
(0, import_react29.useEffect)(() => {
|
|
3818
4038
|
const getInstalled = async () => {
|
|
3819
4039
|
const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
|
|
3820
4040
|
wallet: wallet2,
|
|
@@ -3824,11 +4044,11 @@ var useBTCWallet = () => {
|
|
|
3824
4044
|
};
|
|
3825
4045
|
getInstalled();
|
|
3826
4046
|
}, []);
|
|
3827
|
-
const [wallet, chooseWallet] = (0,
|
|
4047
|
+
const [wallet, chooseWallet] = (0, import_react29.useState)(null);
|
|
3828
4048
|
const onConnect = async () => {
|
|
3829
4049
|
setAddress(await wallet.connect());
|
|
3830
4050
|
};
|
|
3831
|
-
(0,
|
|
4051
|
+
(0, import_react29.useEffect)(() => {
|
|
3832
4052
|
if (!wallet) {
|
|
3833
4053
|
setAddress(null);
|
|
3834
4054
|
}
|
|
@@ -3844,8 +4064,8 @@ var useBTCWallet = () => {
|
|
|
3844
4064
|
};
|
|
3845
4065
|
|
|
3846
4066
|
// src/components/BTCModal/index.tsx
|
|
3847
|
-
var
|
|
3848
|
-
function
|
|
4067
|
+
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
4068
|
+
function BTCConnectModal({
|
|
3849
4069
|
type = "login",
|
|
3850
4070
|
onSuccess,
|
|
3851
4071
|
...props
|
|
@@ -3854,15 +4074,15 @@ function BTCModal({
|
|
|
3854
4074
|
const intl = (0, import_react_intl16.useIntl)();
|
|
3855
4075
|
const { wallets: wallets2, installedWallets, chooseWallet, wallet, address, onConnect } = useBTCWallet();
|
|
3856
4076
|
const iconMaps = {
|
|
3857
|
-
leather: /* @__PURE__ */ (0,
|
|
3858
|
-
unisat: /* @__PURE__ */ (0,
|
|
3859
|
-
xverse: /* @__PURE__ */ (0,
|
|
4077
|
+
leather: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(LeatherIcon, { size: isDownMd ? 36 : 40 }),
|
|
4078
|
+
unisat: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(UnisatIcon, { size: isDownMd ? 36 : 40 }),
|
|
4079
|
+
xverse: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(XverseIcon, { size: isDownMd ? 36 : 40 })
|
|
3860
4080
|
};
|
|
3861
4081
|
const { events, login } = useMatch();
|
|
3862
|
-
const [status, setStatus] = (0,
|
|
3863
|
-
const statusRef =
|
|
3864
|
-
const [error, setError] = (0,
|
|
3865
|
-
const connected = (0,
|
|
4082
|
+
const [status, setStatus] = (0, import_react30.useState)("");
|
|
4083
|
+
const statusRef = import_react30.default.useRef(status);
|
|
4084
|
+
const [error, setError] = (0, import_react30.useState)("");
|
|
4085
|
+
const connected = (0, import_react30.useMemo)(() => {
|
|
3866
4086
|
return !!address;
|
|
3867
4087
|
}, [address]);
|
|
3868
4088
|
const disconnect = async () => {
|
|
@@ -3926,7 +4146,7 @@ function BTCModal({
|
|
|
3926
4146
|
statusRef.current = "";
|
|
3927
4147
|
}
|
|
3928
4148
|
};
|
|
3929
|
-
(0,
|
|
4149
|
+
(0, import_react30.useEffect)(() => {
|
|
3930
4150
|
if (wallet) {
|
|
3931
4151
|
console.log("onConnect");
|
|
3932
4152
|
try {
|
|
@@ -3939,12 +4159,12 @@ function BTCModal({
|
|
|
3939
4159
|
setStatus("");
|
|
3940
4160
|
}
|
|
3941
4161
|
}, [wallet]);
|
|
3942
|
-
(0,
|
|
4162
|
+
(0, import_react30.useEffect)(() => {
|
|
3943
4163
|
if (address) {
|
|
3944
4164
|
toLoginInWallet();
|
|
3945
4165
|
}
|
|
3946
4166
|
}, [address]);
|
|
3947
|
-
(0,
|
|
4167
|
+
(0, import_react30.useEffect)(() => {
|
|
3948
4168
|
if (!props.isOpen) {
|
|
3949
4169
|
disconnect();
|
|
3950
4170
|
}
|
|
@@ -3956,11 +4176,11 @@ function BTCModal({
|
|
|
3956
4176
|
statusRef.current = "";
|
|
3957
4177
|
setError("");
|
|
3958
4178
|
};
|
|
3959
|
-
return /* @__PURE__ */ (0,
|
|
4179
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(ModalWithHeader, { ...props, title: props.title || intl.formatMessage({
|
|
3960
4180
|
id: type == "bind" ? "bindWith" : "loginWith"
|
|
3961
4181
|
}, {
|
|
3962
4182
|
name: "BTC"
|
|
3963
|
-
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0,
|
|
4183
|
+
}), onBack: wallet ? onBack : void 0, children: wallet ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3964
4184
|
WalletModalContent,
|
|
3965
4185
|
{
|
|
3966
4186
|
error,
|
|
@@ -3973,9 +4193,9 @@ function BTCModal({
|
|
|
3973
4193
|
setVisible: () => {
|
|
3974
4194
|
}
|
|
3975
4195
|
}
|
|
3976
|
-
) : /* @__PURE__ */ (0,
|
|
4196
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("div", { className: "matchid-login-box", children: /* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "matchid-login-recommend-list", children: [
|
|
3977
4197
|
installedWallets.map((wallet2) => {
|
|
3978
|
-
return /* @__PURE__ */ (0,
|
|
4198
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3979
4199
|
RecommendItem,
|
|
3980
4200
|
{
|
|
3981
4201
|
icon: iconMaps[wallet2.walletKey],
|
|
@@ -3988,14 +4208,14 @@ function BTCModal({
|
|
|
3988
4208
|
);
|
|
3989
4209
|
}),
|
|
3990
4210
|
wallets2.filter((wallet2) => !installedWallets.find((installedWallet) => installedWallet.walletKey == wallet2.walletKey)).map((wallet2) => {
|
|
3991
|
-
return /* @__PURE__ */ (0,
|
|
4211
|
+
return /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(
|
|
3992
4212
|
RecommendItem,
|
|
3993
4213
|
{
|
|
3994
4214
|
icon: iconMaps[wallet2.walletKey],
|
|
3995
4215
|
name: wallet2.name,
|
|
3996
4216
|
onClick: () => {
|
|
3997
4217
|
},
|
|
3998
|
-
footer: /* @__PURE__ */ (0,
|
|
4218
|
+
footer: /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(Button, { size: "sm", onClick: () => {
|
|
3999
4219
|
window.open(wallet2.website);
|
|
4000
4220
|
}, children: "Install" })
|
|
4001
4221
|
},
|
|
@@ -4004,6 +4224,9 @@ function BTCModal({
|
|
|
4004
4224
|
})
|
|
4005
4225
|
] }) }) });
|
|
4006
4226
|
}
|
|
4227
|
+
function BTCModal(props) {
|
|
4228
|
+
return props.isOpen && /* @__PURE__ */ (0, import_jsx_runtime74.jsx)(BTCConnectModal, { ...props });
|
|
4229
|
+
}
|
|
4007
4230
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4008
4231
|
0 && (module.exports = {
|
|
4009
4232
|
BTCModal,
|
|
@@ -4017,6 +4240,7 @@ function BTCModal({
|
|
|
4017
4240
|
LoginPanel,
|
|
4018
4241
|
Modal,
|
|
4019
4242
|
ModalWithHeader,
|
|
4243
|
+
Overlay,
|
|
4020
4244
|
PasswordModal,
|
|
4021
4245
|
Popover,
|
|
4022
4246
|
SOLModal,
|