@matchain/matchid-sdk-react 0.1.19 → 0.1.21

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/index.mjs CHANGED
@@ -359,6 +359,20 @@ function DeleteRoundIcon({ height = 21, width = 20, color = "var(--matchid-error
359
359
 
360
360
  // src/assets/icon/FacebookIcon.tsx
361
361
  import { jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
362
+ function FacebookIcon({
363
+ size = 40
364
+ }) {
365
+ return /* @__PURE__ */ jsxs12("svg", { width: size, height: size, viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
366
+ /* @__PURE__ */ jsx20("rect", { width: "40", height: "40", rx: "8", fill: "#1877F2" }),
367
+ /* @__PURE__ */ jsx20(
368
+ "path",
369
+ {
370
+ d: "M27.7852 28.9688L28.6719 23.1875H23.125V19.4375C23.125 17.8555 23.8984 16.3125 26.3828 16.3125H28.9062V11.3906C28.9062 11.3906 26.6172 11 24.4297 11C19.8594 11 16.875 13.7695 16.875 18.7813V23.1875H11.7969V28.9688H16.875V42.9453C17.8945 43.1055 18.9375 43.1875 20 43.1875C21.0625 43.1875 22.1055 43.1055 23.125 42.9453V28.9688H27.7852Z",
371
+ fill: "white"
372
+ }
373
+ )
374
+ ] });
375
+ }
362
376
 
363
377
  // src/assets/icon/GithubIcon.tsx
364
378
  import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
@@ -370,8 +384,8 @@ function GithubIcon({
370
384
  /* @__PURE__ */ jsx21(
371
385
  "path",
372
386
  {
373
- "fill-rule": "evenodd",
374
- "clip-rule": "evenodd",
387
+ fillRule: "evenodd",
388
+ clipRule: "evenodd",
375
389
  d: "M19.6836 7C16.434 7.00169 13.2909 8.15263 10.8165 10.247C8.34197 12.3414 6.69741 15.2427 6.17684 18.4321C5.65627 21.6215 6.29363 24.8911 7.97496 27.6561C9.6563 30.4211 12.272 32.5013 15.3542 33.5248C16.0343 33.651 16.2904 33.2295 16.2904 32.8712C16.2904 32.5128 16.2768 31.4738 16.2723 30.3379C12.4642 31.1606 11.6596 28.731 11.6596 28.731C11.0385 27.1533 10.1409 26.7386 10.1409 26.7386C8.89876 25.8957 10.2338 25.9115 10.2338 25.9115C11.6097 26.0084 12.3328 27.3156 12.3328 27.3156C13.5523 29.3958 15.5356 28.7941 16.3153 28.4425C16.4377 27.5613 16.7936 26.9618 17.1857 26.6214C14.1438 26.2789 10.9478 25.1114 10.9478 19.8961C10.929 18.5436 11.4338 17.2356 12.3577 16.2428C12.2172 15.9002 11.748 14.5164 12.4914 12.6367C12.4914 12.6367 13.6407 12.2716 16.2564 14.0318C18.5 13.4217 20.8672 13.4217 23.1108 14.0318C25.7243 12.2716 26.8712 12.6367 26.8712 12.6367C27.617 14.5119 27.1478 15.8957 27.0072 16.2428C27.9341 17.2358 28.4399 18.546 28.4194 19.9007C28.4194 25.1272 25.2166 26.2789 22.1701 26.6147C22.6597 27.0384 23.0972 27.8655 23.0972 29.1367C23.0972 30.9577 23.0814 32.4227 23.0814 32.8712C23.0814 33.234 23.3284 33.6577 24.022 33.5248C27.1047 32.5012 29.7206 30.4206 31.4019 27.6551C33.0832 24.8896 33.7202 21.6196 33.1991 18.4299C32.6779 15.2402 31.0325 12.3389 28.5572 10.2449C26.0819 8.15081 22.9381 7.00062 19.6881 7H19.6836Z",
376
390
  fill: "white"
377
391
  }
@@ -502,12 +516,16 @@ function Modal({
502
516
  children,
503
517
  isOpen,
504
518
  width = 480,
519
+ zIndex = 100,
505
520
  className = ""
506
521
  }) {
507
522
  return isOpen ? /* @__PURE__ */ jsx26(
508
523
  "div",
509
524
  {
510
525
  className: "matchid-overlay",
526
+ style: {
527
+ zIndex
528
+ },
511
529
  children: /* @__PURE__ */ jsx26("div", { className: `matchid-modal ${className}`, style: {
512
530
  width
513
531
  }, children })
@@ -894,6 +912,34 @@ var getAuthInfoApi = () => {
894
912
  method: "GET"
895
913
  });
896
914
  };
915
+ var getWalletNonceApi = ({ address }) => {
916
+ return request_default({
917
+ url: `/api/v1/login/wallet/init`,
918
+ method: "POST",
919
+ data: { address }
920
+ });
921
+ };
922
+ var loginByWalletApi = ({ type, address, signature, message, connector_type, wallet_client_type }) => {
923
+ return request_default({
924
+ url: `/api/v1/login/wallet`,
925
+ method: "POST",
926
+ data: { type, address, signature, message, connector_type, wallet_client_type }
927
+ });
928
+ };
929
+ var getWalletInitApi = ({ address }) => {
930
+ return request_default({
931
+ url: `/api/v1/wallet/init`,
932
+ method: "POST",
933
+ data: { address }
934
+ });
935
+ };
936
+ var toBindWalletApi = ({ type, address, signature, message, connector_type, wallet_client_type }) => {
937
+ return request_default({
938
+ url: `/api/v1/wallet/bind`,
939
+ method: "POST",
940
+ data: { type, address, signature, message, connector_type, wallet_client_type }
941
+ });
942
+ };
897
943
 
898
944
  // src/hooks/eventManager.ts
899
945
  var EventManager = class {
@@ -944,6 +990,24 @@ function truncateAddress(address) {
944
990
  const end = address.slice(-2);
945
991
  return `${start}...${end}`;
946
992
  }
993
+ function firstUpperCase(str) {
994
+ return str.toString()[0].toUpperCase() + str.toString().slice(1);
995
+ }
996
+
997
+ // src/store/useModalStore.ts
998
+ import { create as create2 } from "zustand";
999
+ var useEVMModalStore = create2((set) => ({
1000
+ isOpen: false,
1001
+ type: "",
1002
+ open: (type) => set({ isOpen: true, type }),
1003
+ close: () => set({ isOpen: false })
1004
+ }));
1005
+ var useSOLModalStore = create2((set) => ({
1006
+ isOpen: false,
1007
+ type: "",
1008
+ open: (type) => set({ isOpen: true, type }),
1009
+ close: () => set({ isOpen: false })
1010
+ }));
947
1011
 
948
1012
  // src/hooks/useUserInfo.tsx
949
1013
  function useUserInfo() {
@@ -959,6 +1023,8 @@ function useUserInfo() {
959
1023
  endpoints
960
1024
  } = useLocalStore_default();
961
1025
  const { events, login } = useMatch();
1026
+ const { open: EVMOpen } = useEVMModalStore();
1027
+ const { open: SOLOpen } = useSOLModalStore();
962
1028
  const isLogin = useMemo(() => !!token, [token]);
963
1029
  const logout = async () => {
964
1030
  try {
@@ -987,12 +1053,7 @@ function useUserInfo() {
987
1053
  return loginByMethod("google");
988
1054
  };
989
1055
  const loginByWallet = async () => {
990
- return window.open(
991
- `${endpoints.auth}login/wallet?appid=${appid}`,
992
- // Replace with the actual authorization URL
993
- "_blank"
994
- // 'width=800,height=600'
995
- );
1056
+ return EVMOpen("login");
996
1057
  };
997
1058
  const loginByTelegram = async () => {
998
1059
  return window.open(
@@ -1004,8 +1065,10 @@ function useUserInfo() {
1004
1065
  };
1005
1066
  const loginMethod = async (method) => {
1006
1067
  switch (method) {
1007
- case "wallet":
1008
- return await loginByWallet();
1068
+ case "evm":
1069
+ return EVMOpen("login");
1070
+ case "sol":
1071
+ return SOLOpen("login");
1009
1072
  case "telegram":
1010
1073
  return await loginByTelegram();
1011
1074
  case "twitter":
@@ -1013,6 +1076,7 @@ function useUserInfo() {
1013
1076
  case "discord":
1014
1077
  case "github":
1015
1078
  case "linkedin":
1079
+ case "facebook":
1016
1080
  return await loginByMethod(method);
1017
1081
  default:
1018
1082
  throw new Error("unsupported method");
@@ -1062,11 +1126,7 @@ function useUserInfo() {
1062
1126
  if (!token) {
1063
1127
  throw new Error("You must login first");
1064
1128
  }
1065
- const authWindow = window.open(
1066
- `${endpoints.auth}bind/wallet?appid=${appid}&st=` + encodeURIComponent(encodeBase64(token)),
1067
- // Replace with the actual authorization URL
1068
- "_blank"
1069
- );
1129
+ return EVMOpen("bind");
1070
1130
  };
1071
1131
  const bindTelegram = async () => {
1072
1132
  if (!token) {
@@ -1087,9 +1147,14 @@ function useUserInfo() {
1087
1147
  throw new Error(res.message);
1088
1148
  };
1089
1149
  const bind = async (method) => {
1150
+ if (!token) {
1151
+ throw new Error("You must login first");
1152
+ }
1090
1153
  switch (method) {
1091
- case "wallet":
1092
- return await bindWallet();
1154
+ case "evm":
1155
+ return EVMOpen("bind");
1156
+ case "sol":
1157
+ return SOLOpen("bind");
1093
1158
  case "telegram":
1094
1159
  return await bindTelegram();
1095
1160
  case "twitter":
@@ -1153,8 +1218,8 @@ function useMatchEvents(handlers) {
1153
1218
  }
1154
1219
 
1155
1220
  // src/store/useStore.ts
1156
- import { create as create2 } from "zustand";
1157
- var useStore = create2((set) => ({
1221
+ import { create as create3 } from "zustand";
1222
+ var useStore = create3((set) => ({
1158
1223
  walletIframeInited: false,
1159
1224
  setWalletIframeInited: (inited) => set({ walletIframeInited: inited }),
1160
1225
  recoveryModal: {
@@ -1478,515 +1543,443 @@ function RecoveryModal({
1478
1543
  ] }) });
1479
1544
  }
1480
1545
 
1481
- // src/context/BusinessProvider.tsx
1482
- import { Fragment as Fragment2, jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
1483
- function BusinessProvider({ children }) {
1484
- const { overview, token } = useUserInfo();
1485
- const { recoveryModal } = useStore_default();
1486
- return /* @__PURE__ */ jsxs21(Fragment2, { children: [
1487
- /* @__PURE__ */ jsx32(PasswordModal, { isOpen: !!token && !!overview && !overview.address && !!overview.did, showClose: false }),
1488
- /* @__PURE__ */ jsx32(
1489
- RecoveryModal,
1490
- {
1491
- isOpen: !!token && !!overview && !!overview.address && recoveryModal.open,
1492
- onClose: recoveryModal.close,
1493
- onSuccess: recoveryModal.success
1494
- }
1495
- ),
1496
- children
1497
- ] });
1498
- }
1546
+ // src/components/EVMModal/index.tsx
1547
+ import { getDefaultConfig, RainbowKitProvider, useConnectModal } from "@rainbow-me/rainbowkit";
1548
+ import { useAccount, useAccountEffect, useChainId, useConfig, useDisconnect, WagmiProvider } from "wagmi";
1549
+ import {
1550
+ bitgetWallet,
1551
+ injectedWallet,
1552
+ metaMaskWallet,
1553
+ okxWallet,
1554
+ walletConnectWallet
1555
+ } from "@rainbow-me/rainbowkit/wallets";
1556
+ import { bsc } from "wagmi/chains";
1557
+
1558
+ // src/hooks/useEthersSigner.ts
1559
+ import * as React from "react";
1560
+ import { useWalletClient } from "wagmi";
1561
+ import { providers } from "ethers";
1562
+
1563
+ // node_modules/@wagmi/core/dist/esm/version.js
1564
+ var version = "2.16.3";
1565
+
1566
+ // node_modules/@wagmi/core/dist/esm/utils/getVersion.js
1567
+ var getVersion2 = () => `@wagmi/core@${version}`;
1568
+
1569
+ // node_modules/@wagmi/core/dist/esm/errors/base.js
1570
+ var __classPrivateFieldGet = function(receiver, state, kind, f) {
1571
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
1572
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
1573
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
1574
+ };
1575
+ var _BaseError_instances;
1576
+ var _BaseError_walk;
1577
+ var BaseError = class _BaseError extends Error {
1578
+ get docsBaseUrl() {
1579
+ return "https://wagmi.sh/core";
1580
+ }
1581
+ get version() {
1582
+ return getVersion2();
1583
+ }
1584
+ constructor(shortMessage, options = {}) {
1585
+ super();
1586
+ _BaseError_instances.add(this);
1587
+ Object.defineProperty(this, "details", {
1588
+ enumerable: true,
1589
+ configurable: true,
1590
+ writable: true,
1591
+ value: void 0
1592
+ });
1593
+ Object.defineProperty(this, "docsPath", {
1594
+ enumerable: true,
1595
+ configurable: true,
1596
+ writable: true,
1597
+ value: void 0
1598
+ });
1599
+ Object.defineProperty(this, "metaMessages", {
1600
+ enumerable: true,
1601
+ configurable: true,
1602
+ writable: true,
1603
+ value: void 0
1604
+ });
1605
+ Object.defineProperty(this, "shortMessage", {
1606
+ enumerable: true,
1607
+ configurable: true,
1608
+ writable: true,
1609
+ value: void 0
1610
+ });
1611
+ Object.defineProperty(this, "name", {
1612
+ enumerable: true,
1613
+ configurable: true,
1614
+ writable: true,
1615
+ value: "WagmiCoreError"
1616
+ });
1617
+ const details = options.cause instanceof _BaseError ? options.cause.details : options.cause?.message ? options.cause.message : options.details;
1618
+ const docsPath = options.cause instanceof _BaseError ? options.cause.docsPath || options.docsPath : options.docsPath;
1619
+ this.message = [
1620
+ shortMessage || "An error occurred.",
1621
+ "",
1622
+ ...options.metaMessages ? [...options.metaMessages, ""] : [],
1623
+ ...docsPath ? [
1624
+ `Docs: ${this.docsBaseUrl}${docsPath}.html${options.docsSlug ? `#${options.docsSlug}` : ""}`
1625
+ ] : [],
1626
+ ...details ? [`Details: ${details}`] : [],
1627
+ `Version: ${this.version}`
1628
+ ].join("\n");
1629
+ if (options.cause)
1630
+ this.cause = options.cause;
1631
+ this.details = details;
1632
+ this.docsPath = docsPath;
1633
+ this.metaMessages = options.metaMessages;
1634
+ this.shortMessage = shortMessage;
1635
+ }
1636
+ walk(fn) {
1637
+ return __classPrivateFieldGet(this, _BaseError_instances, "m", _BaseError_walk).call(this, this, fn);
1638
+ }
1639
+ };
1640
+ _BaseError_instances = /* @__PURE__ */ new WeakSet(), _BaseError_walk = function _BaseError_walk2(err, fn) {
1641
+ if (fn?.(err))
1642
+ return err;
1643
+ if (err.cause)
1644
+ return __classPrivateFieldGet(this, _BaseError_instances, "m", _BaseError_walk2).call(this, err.cause, fn);
1645
+ return err;
1646
+ };
1499
1647
 
1500
- // src/context/index.tsx
1501
- import { jsx as jsx33 } from "react/jsx-runtime";
1502
- var Providers = ({ children }) => {
1503
- return (
1504
- // <MpcWalletProvider>
1505
- /* @__PURE__ */ jsx33(BusinessProvider, { children })
1506
- );
1648
+ // node_modules/@wagmi/core/dist/esm/errors/config.js
1649
+ var ConnectorNotConnectedError = class extends BaseError {
1650
+ constructor() {
1651
+ super("Connector not connected.");
1652
+ Object.defineProperty(this, "name", {
1653
+ enumerable: true,
1654
+ configurable: true,
1655
+ writable: true,
1656
+ value: "ConnectorNotConnectedError"
1657
+ });
1658
+ }
1659
+ };
1660
+ var ConnectorAccountNotFoundError = class extends BaseError {
1661
+ constructor({ address, connector }) {
1662
+ super(`Account "${address}" not found for connector "${connector.name}".`);
1663
+ Object.defineProperty(this, "name", {
1664
+ enumerable: true,
1665
+ configurable: true,
1666
+ writable: true,
1667
+ value: "ConnectorAccountNotFoundError"
1668
+ });
1669
+ }
1670
+ };
1671
+ var ConnectorChainMismatchError = class extends BaseError {
1672
+ constructor({ connectionChainId, connectorChainId }) {
1673
+ super(`The current chain of the connector (id: ${connectorChainId}) does not match the connection's chain (id: ${connectionChainId}).`, {
1674
+ metaMessages: [
1675
+ `Current Chain ID: ${connectorChainId}`,
1676
+ `Expected Chain ID: ${connectionChainId}`
1677
+ ]
1678
+ });
1679
+ Object.defineProperty(this, "name", {
1680
+ enumerable: true,
1681
+ configurable: true,
1682
+ writable: true,
1683
+ value: "ConnectorChainMismatchError"
1684
+ });
1685
+ }
1686
+ };
1687
+ var ConnectorUnavailableReconnectingError = class extends BaseError {
1688
+ constructor({ connector }) {
1689
+ super(`Connector "${connector.name}" unavailable while reconnecting.`, {
1690
+ details: [
1691
+ "During the reconnection step, the only connector methods guaranteed to be available are: `id`, `name`, `type`, `uid`.",
1692
+ "All other methods are not guaranteed to be available until reconnection completes and connectors are fully restored.",
1693
+ "This error commonly occurs for connectors that asynchronously inject after reconnection has already started."
1694
+ ].join(" ")
1695
+ });
1696
+ Object.defineProperty(this, "name", {
1697
+ enumerable: true,
1698
+ configurable: true,
1699
+ writable: true,
1700
+ value: "ConnectorUnavailableReconnectingError"
1701
+ });
1702
+ }
1507
1703
  };
1508
- var context_default = Providers;
1509
1704
 
1510
- // src/hooks/useWalletInit.ts
1511
- import { useEffect as useEffect5, useState as useState5 } from "react";
1512
- var AppClientId2 = "react-sdk-" + getVersion();
1513
- function useWalletInit({
1514
- refreshOverview
1515
- }) {
1516
- const { endpoints } = useLocalStore_default();
1517
- const getWalletIframe = () => {
1518
- return document.getElementById("match-wallet");
1705
+ // node_modules/@wagmi/core/dist/esm/actions/getConnectorClient.js
1706
+ import { createClient, custom } from "viem";
1707
+ import { getAddress, parseAccount } from "viem/utils";
1708
+ async function getConnectorClient(config, parameters = {}) {
1709
+ let connection;
1710
+ if (parameters.connector) {
1711
+ const { connector: connector2 } = parameters;
1712
+ if (config.state.status === "reconnecting" && !connector2.getAccounts && !connector2.getChainId)
1713
+ throw new ConnectorUnavailableReconnectingError({ connector: connector2 });
1714
+ const [accounts, chainId2] = await Promise.all([
1715
+ connector2.getAccounts(),
1716
+ connector2.getChainId()
1717
+ ]);
1718
+ connection = {
1719
+ accounts,
1720
+ chainId: chainId2,
1721
+ connector: connector2
1722
+ };
1723
+ } else
1724
+ connection = config.state.connections.get(config.state.current);
1725
+ if (!connection)
1726
+ throw new ConnectorNotConnectedError();
1727
+ const chainId = parameters.chainId ?? connection.chainId;
1728
+ const connectorChainId = await connection.connector.getChainId();
1729
+ if (connectorChainId !== connection.chainId)
1730
+ throw new ConnectorChainMismatchError({
1731
+ connectionChainId: connection.chainId,
1732
+ connectorChainId
1733
+ });
1734
+ const connector = connection.connector;
1735
+ if (connector.getClient)
1736
+ return connector.getClient({ chainId });
1737
+ const account = parseAccount(parameters.account ?? connection.accounts[0]);
1738
+ account.address = getAddress(account.address);
1739
+ if (parameters.account && !connection.accounts.some((x) => x.toLowerCase() === account.address.toLowerCase()))
1740
+ throw new ConnectorAccountNotFoundError({
1741
+ address: account.address,
1742
+ connector
1743
+ });
1744
+ const chain = config.chains.find((chain2) => chain2.id === chainId);
1745
+ const provider = await connection.connector.getProvider({ chainId });
1746
+ return createClient({
1747
+ account,
1748
+ chain,
1749
+ name: "Connector Client",
1750
+ transport: (opts) => custom(provider)({ ...opts, retryCount: 0 })
1751
+ });
1752
+ }
1753
+
1754
+ // node_modules/@wagmi/core/dist/esm/exports/index.js
1755
+ import { custom as custom2, http, webSocket } from "viem";
1756
+
1757
+ // src/hooks/useEthersSigner.ts
1758
+ function clientToSigner(client) {
1759
+ const { account, chain, transport } = client;
1760
+ const network = {
1761
+ chainId: chain.id,
1762
+ name: chain.name,
1763
+ ensAddress: chain.contracts?.ensRegistry?.address
1519
1764
  };
1520
- const [walletInited, setWalletInited] = useState5(false);
1521
- const { appid, token, overview } = useLocalStore_default();
1522
- const { initWallet, generateWallet } = useWallet();
1765
+ const provider = new providers.Web3Provider(transport, network);
1766
+ const signer = provider.getSigner(account.address);
1767
+ return signer;
1768
+ }
1769
+ async function getEthersSigner(config, { chainId } = {}) {
1770
+ const client = await getConnectorClient(config, { chainId });
1771
+ return clientToSigner(client);
1772
+ }
1773
+
1774
+ // src/components/EVMModal/index.tsx
1775
+ import React4, { useEffect as useEffect10, useMemo as useMemo10, useState as useState14 } from "react";
1776
+ import { SiweMessage } from "siwe";
1777
+
1778
+ // src/components/index.tsx
1779
+ var components_exports = {};
1780
+ __export(components_exports, {
1781
+ Button: () => Button,
1782
+ EVMModal: () => EVMModal,
1783
+ EmailModal: () => EmailModal,
1784
+ Field: () => Field,
1785
+ Input: () => Input,
1786
+ LoginBox: () => LoginBox,
1787
+ LoginButton: () => LoginButton,
1788
+ LoginModal: () => LoginModal,
1789
+ LoginPanel: () => LoginPanel,
1790
+ Modal: () => Modal,
1791
+ ModalWithHeader: () => ModalWithHeader,
1792
+ PasswordModal: () => PasswordModal,
1793
+ Popover: () => Popover,
1794
+ SOLModal: () => SOLModal,
1795
+ UsernameModal: () => UsernameModal
1796
+ });
1797
+
1798
+ // src/components/EmailModal/index.tsx
1799
+ import { useEffect as useEffect7, useState as useState7 } from "react";
1800
+
1801
+ // src/components/EmailModal/StepEmail.tsx
1802
+ import { useEffect as useEffect5, useMemo as useMemo5, useState as useState5 } from "react";
1803
+ import { jsx as jsx32, jsxs as jsxs21 } from "react/jsx-runtime";
1804
+ function StepEmail(props) {
1805
+ const [emailVal, setEmailVal] = useState5("");
1523
1806
  useEffect5(() => {
1524
- if (endpoints.auth) {
1525
- if (!window.matchWalletMessageIdMap) {
1526
- window.matchWalletMessageIdMap = {};
1807
+ if (props.email) {
1808
+ setEmailVal(props.email);
1809
+ }
1810
+ }, []);
1811
+ const canContinue = useMemo5(() => {
1812
+ return isValidEmail(emailVal);
1813
+ }, [emailVal]);
1814
+ const onContinue = async () => {
1815
+ props.onContinue(emailVal);
1816
+ };
1817
+ return /* @__PURE__ */ jsxs21("div", { className: "matchid-email-email-box", children: [
1818
+ /* @__PURE__ */ jsx32(Field, { label: "Email Address", children: /* @__PURE__ */ jsx32(
1819
+ Input,
1820
+ {
1821
+ placeholder: "Enter Your Email Address",
1822
+ onChange: (e) => setEmailVal(e.target.value),
1823
+ value: emailVal
1527
1824
  }
1528
- const existingIframe = getWalletIframe();
1529
- if (!existingIframe) {
1530
- const iframe = document.createElement("iframe");
1531
- iframe.id = "match-wallet";
1532
- iframe.src = endpoints.auth + "wallet";
1533
- iframe.style.display = "none";
1534
- iframe.style.width = "0";
1535
- iframe.style.height = "0";
1536
- document.body.insertBefore(iframe, document.body.firstChild);
1537
- window.sendMatchWalletMessage = (method, data) => {
1538
- const messageId = Date.now().toString() + Math.random().toString().slice(6);
1539
- const message = {
1540
- method,
1541
- data,
1542
- messageId,
1543
- source: "matchid"
1544
- };
1545
- if (document.getElementById("match-wallet")) {
1546
- matchlog_default.log("matchid.sdk.sendMatchWalletMessage", message, endpoints.auth);
1547
- getWalletIframe()?.contentWindow?.postMessage(message, endpoints.auth);
1548
- return messageId;
1549
- }
1550
- console.error("not found iframe");
1551
- return false;
1552
- };
1553
- window.waitMatchUntilWalletMessage = async (method, data, timeout = 3e4) => {
1554
- return new Promise((resolve, reject) => {
1555
- const messageId = window.sendMatchWalletMessage(method, data);
1556
- if (!messageId) {
1557
- console.error("Can't find wallet message");
1558
- reject(new Error("Can't find wallet message"));
1559
- return;
1560
- }
1561
- window.matchWalletMessageIdMap[messageId] = { resolve, reject };
1562
- window.matchWalletMessageIdMap[messageId].timeout = setTimeout(() => {
1563
- console.error("Get wallet result timeout", {
1564
- messageId,
1565
- method,
1566
- data
1567
- });
1568
- delete window.matchWalletMessageIdMap[messageId];
1569
- reject(new Error("Get wallet result timeout"));
1570
- }, timeout);
1571
- });
1572
- };
1573
- } else {
1574
- if (existingIframe.src !== endpoints.auth + "wallet") {
1575
- setWalletInited(false);
1576
- existingIframe.src = endpoints.auth + "wallet";
1825
+ ) }),
1826
+ /* @__PURE__ */ jsx32(Button, { disabled: !canContinue, style: {
1827
+ marginTop: "64px"
1828
+ }, onClick: onContinue, size: "lg", block: true, highlight: true, children: "Continue" })
1829
+ ] });
1830
+ }
1831
+
1832
+ // src/components/EmailModal/StepVerify.tsx
1833
+ import { useEffect as useEffect6, useMemo as useMemo6, useRef, useState as useState6 } from "react";
1834
+
1835
+ // src/config/index.tsx
1836
+ var EMAIL_INTERVAL = 60;
1837
+ var EMAIL_CODE_LENGTH = 6;
1838
+
1839
+ // src/components/EmailModal/StepVerify.tsx
1840
+ import { jsx as jsx33, jsxs as jsxs22 } from "react/jsx-runtime";
1841
+ function StepVerify(props) {
1842
+ const { getLoginEmailCode, loginByEmail } = useUserInfo();
1843
+ const [error, setError] = useState6("");
1844
+ const [code, setCode] = useState6("");
1845
+ const [sending, setSending] = useState6(false);
1846
+ const [submitting, setSubmitting] = useState6(false);
1847
+ const sendTimeRef = useRef(0);
1848
+ const [sendBtnText, setSendBtnText] = useState6("Send");
1849
+ const intervalTime = EMAIL_INTERVAL;
1850
+ const codeLength = EMAIL_CODE_LENGTH;
1851
+ const intervalRef = useRef(null);
1852
+ const onSend = async () => {
1853
+ if (sendTimeRef.current > 0) {
1854
+ return;
1855
+ }
1856
+ try {
1857
+ setError("");
1858
+ setSending(true);
1859
+ sendTimeRef.current = intervalTime;
1860
+ await getLoginEmailCode(props.email);
1861
+ setSendBtnText(`${sendTimeRef.current}s`);
1862
+ intervalRef.current = setInterval(() => {
1863
+ sendTimeRef.current--;
1864
+ setSendBtnText(`${sendTimeRef.current}s`);
1865
+ if (sendTimeRef.current <= 0) {
1866
+ setSendBtnText("Resend");
1867
+ clearInterval(intervalRef.current);
1868
+ setSending(false);
1577
1869
  }
1578
- }
1870
+ }, 1e3);
1871
+ } catch (err) {
1872
+ console.error("Send email error", err);
1873
+ setError("Failed to send code:" + err.message);
1874
+ setSending(false);
1579
1875
  }
1580
- }, [endpoints.auth]);
1581
- useEffect5(() => {
1582
- const messageHandle = async (e) => {
1583
- if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
1584
- return;
1876
+ };
1877
+ useEffect6(() => {
1878
+ onSend();
1879
+ return () => {
1880
+ if (intervalRef.current) {
1881
+ clearInterval(intervalRef.current);
1585
1882
  }
1586
- const res = e.data;
1587
- if (res.source != "match-wallet") {
1588
- return;
1589
- }
1590
- matchlog_default.log("sdk.wallet.receive", e);
1591
- const messageId = res.messageId;
1592
- if (messageId == "init") {
1593
- matchlog_default.log("wallet init");
1594
- setWalletInited(true);
1595
- return;
1596
- }
1597
- if (messageId && window.matchWalletMessageIdMap[messageId]) {
1598
- const { resolve, reject, timeout } = window.matchWalletMessageIdMap[messageId];
1599
- delete window.matchWalletMessageIdMap[messageId];
1600
- clearTimeout(timeout);
1601
- if (res.status == "success") {
1602
- resolve(res.data);
1603
- } else {
1604
- console.error("qwe-waller-error", res);
1605
- reject(new Error(res.data.message));
1606
- }
1607
- }
1608
- };
1609
- window.addEventListener("message", messageHandle);
1610
- return () => {
1611
- window.removeEventListener("message", messageHandle);
1612
- };
1613
- }, []);
1614
- useEffect5(() => {
1615
- if (token && overview && overview.did && walletInited) {
1616
- const did = overview.did.split(":")[2];
1617
- const newUserInit = async () => {
1618
- await window.waitMatchUntilWalletMessage(
1619
- "initCore",
1620
- {
1621
- AppId: appid,
1622
- AppClientId: AppClientId2,
1623
- UserId: did,
1624
- AccessToken: token,
1625
- Address: ""
1626
- }
1627
- );
1628
- };
1629
- if (!overview.address) {
1630
- newUserInit();
1631
- } else {
1632
- initWallet({
1633
- address: overview.address,
1634
- did
1635
- });
1636
- }
1637
- }
1638
- }, [overview, token, walletInited]);
1639
- return {
1640
- walletInited
1641
- };
1642
- }
1643
-
1644
- // src/hooks/useInit.tsx
1645
- import { useEffect as useEffect6, useRef } from "react";
1646
- function useInit({
1647
- theme,
1648
- appid,
1649
- events,
1650
- endpoints
1651
- }) {
1652
- const {
1653
- setAppid,
1654
- setEndpoints,
1655
- setToken,
1656
- setMid,
1657
- token,
1658
- setOverview,
1659
- setTheme
1660
- } = useLocalStore_default();
1661
- const overviewLoadingRef = useRef(false);
1662
- const searchParams = new URLSearchParams(window.location.search);
1663
- const matchToken = searchParams.get("matchToken");
1664
- const realEndpoints = endpoints || env_default.endpoints;
1665
- useEffect6(() => {
1666
- setTheme(theme);
1667
- }, [theme]);
1668
- useEffect6(() => {
1669
- setAppid(appid);
1670
- }, [appid]);
1671
- useEffect6(() => {
1672
- setEndpoints(realEndpoints);
1673
- }, [realEndpoints]);
1674
- useEffect6(() => {
1675
- if (matchToken) {
1676
- const tokenData = JSON.parse(atob(matchToken));
1677
- if (tokenData && tokenData.mid && tokenData.token) {
1678
- login({
1679
- mid: tokenData.mid,
1680
- token: "Bearer " + tokenData.token
1681
- });
1682
- }
1683
- }
1684
- }, [matchToken]);
1685
- useEffect6(() => {
1686
- const onLoginMessage = (event) => {
1687
- const res = event.data;
1688
- if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
1689
- login({
1690
- mid: res.data.mid,
1691
- token: res.data.token || `${res.data.token_type} ${res.data.access_token}`
1692
- });
1693
- } else if (res.event == "bind") {
1694
- eventManager_default.emit("onBind", res.data);
1695
- if (events && events.onBind) {
1696
- events.onBind(res.data);
1697
- }
1698
- }
1699
- };
1700
- window.addEventListener("message", onLoginMessage);
1701
- return () => {
1702
- window.removeEventListener("message", onLoginMessage);
1703
1883
  };
1704
1884
  }, []);
1705
- const loadOverview = async () => {
1706
- matchlog_default.log("loadOverview");
1707
- if (overviewLoadingRef.current) {
1885
+ const canContinue = useMemo6(() => {
1886
+ return code.length === codeLength;
1887
+ }, [code]);
1888
+ const onContinue = async () => {
1889
+ if (submitting) {
1708
1890
  return;
1709
1891
  }
1710
- overviewLoadingRef.current = true;
1711
1892
  try {
1712
- const res = await getOverviewInfoApi();
1713
- setOverview(res.data);
1714
- return res.data;
1715
- } catch (err) {
1716
- console.error("overview error", err);
1717
- } finally {
1718
- overviewLoadingRef.current = false;
1719
- }
1720
- };
1721
- useEffect6(() => {
1722
- if (token) {
1723
- loadOverview();
1724
- }
1725
- }, [token]);
1726
- const login = async ({ mid, token: token2 }) => {
1727
- setMid(mid);
1728
- setToken(token2);
1729
- const overview = await loadOverview();
1730
- eventManager_default.emit("onLogin", {
1731
- mid,
1732
- token: token2,
1733
- did: overview?.did
1734
- });
1735
- if (events && events?.onLogin) {
1736
- events.onLogin({
1737
- mid,
1738
- token: token2,
1739
- did: overview?.did
1893
+ setError("");
1894
+ setSubmitting(true);
1895
+ const res = await loginByEmail({
1896
+ email: props.email,
1897
+ code
1740
1898
  });
1899
+ if (res) {
1900
+ props.onSuccess && props.onSuccess();
1901
+ }
1902
+ setSubmitting(false);
1903
+ } catch (err) {
1904
+ console.error("Verify email code error", err);
1905
+ setError(err.message);
1906
+ setSubmitting(false);
1741
1907
  }
1742
1908
  };
1743
- return {
1744
- loadOverview,
1745
- login,
1746
- endpoints: realEndpoints
1747
- };
1909
+ return /* @__PURE__ */ jsxs22("div", { className: "matchid-email-verify-box", children: [
1910
+ /* @__PURE__ */ jsxs22("div", { className: "matchid-email-verify-header", children: [
1911
+ /* @__PURE__ */ jsx33("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx33(EmailLineIcon, {}) }),
1912
+ /* @__PURE__ */ jsxs22("div", { className: "matchid-email-verify-header-content", children: [
1913
+ /* @__PURE__ */ jsx33("div", { className: "matchid-email-verify-header-value", children: props.email }),
1914
+ /* @__PURE__ */ jsx33("div", { className: "matchid-email-verify-header-tips", children: "We have sent a verification code to your email" })
1915
+ ] })
1916
+ ] }),
1917
+ /* @__PURE__ */ jsx33(Field, { label: "Verification Code", error, children: /* @__PURE__ */ jsx33(
1918
+ Input,
1919
+ {
1920
+ placeholder: "Enter the code",
1921
+ maxLength: codeLength,
1922
+ onChange: (e) => setCode(e.target.value),
1923
+ value: code,
1924
+ after: /* @__PURE__ */ jsx33(
1925
+ Button,
1926
+ {
1927
+ highlight: true,
1928
+ disabled: sending,
1929
+ style: {
1930
+ height: "100%",
1931
+ borderTopLeftRadius: 0,
1932
+ borderBottomLeftRadius: 0,
1933
+ borderTopRightRadius: "inherit",
1934
+ borderBottomRightRadius: "inherit",
1935
+ width: "80px"
1936
+ },
1937
+ onClick: onSend,
1938
+ children: sendBtnText
1939
+ }
1940
+ )
1941
+ }
1942
+ ) }),
1943
+ /* @__PURE__ */ jsx33(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: "Continue" })
1944
+ ] });
1748
1945
  }
1749
1946
 
1750
- // src/MatchContext.tsx
1751
- import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
1947
+ // src/components/EmailModal/index.tsx
1752
1948
  import { jsx as jsx34 } from "react/jsx-runtime";
1753
- var queryClient = new QueryClient();
1754
- var MatchContext = createContext(void 0);
1755
- var MatchProvider = ({ children, appid, events, theme = "light", endpoints }) => {
1756
- const { loadOverview, login, endpoints: realEndPoints } = useInit({
1757
- theme,
1758
- appid,
1759
- events,
1760
- endpoints
1761
- });
1762
- useWalletInit({
1763
- refreshOverview: loadOverview
1764
- });
1765
- return /* @__PURE__ */ jsx34(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx34(
1766
- MatchContext.Provider,
1949
+ function EmailModal({
1950
+ isOpen = false,
1951
+ width = 480,
1952
+ onClose,
1953
+ onBack,
1954
+ onLogin
1955
+ }) {
1956
+ const [step, setStep] = useState7("input");
1957
+ const [emailVal, setEmailVal] = useState7("");
1958
+ useEffect7(() => {
1959
+ if (!isOpen) {
1960
+ setStep("input");
1961
+ setEmailVal("");
1962
+ }
1963
+ }, [isOpen]);
1964
+ return /* @__PURE__ */ jsx34(
1965
+ ModalWithHeader,
1767
1966
  {
1768
- value: {
1769
- appid,
1770
- endpoints: realEndPoints,
1771
- events,
1772
- login,
1773
- theme
1774
- },
1775
- children: /* @__PURE__ */ jsx34(context_default, { children })
1967
+ isOpen,
1968
+ width,
1969
+ onClose,
1970
+ title: "Email",
1971
+ onBack: step == "verify" ? () => setStep("input") : onBack,
1972
+ children: step === "input" ? /* @__PURE__ */ jsx34(StepEmail, { email: emailVal, onContinue: (email) => {
1973
+ setEmailVal(email);
1974
+ setStep("verify");
1975
+ } }) : /* @__PURE__ */ jsx34(StepVerify, { email: emailVal, onSuccess: onLogin })
1776
1976
  }
1777
- ) });
1778
- };
1779
- var useMatch = () => {
1780
- const context = useContext(MatchContext);
1781
- if (context === void 0) {
1782
- throw new Error("useMatch must be used within a MatchProvider");
1783
- }
1784
- return context;
1785
- };
1786
-
1787
- // src/components/index.tsx
1788
- var components_exports = {};
1789
- __export(components_exports, {
1790
- Button: () => Button,
1791
- EmailModal: () => EmailModal,
1792
- Field: () => Field,
1793
- Input: () => Input,
1794
- LoginBox: () => LoginBox,
1795
- LoginButton: () => LoginButton,
1796
- LoginModal: () => LoginModal,
1797
- LoginPanel: () => LoginPanel,
1798
- Modal: () => Modal,
1799
- ModalWithHeader: () => ModalWithHeader,
1800
- PasswordModal: () => PasswordModal,
1801
- Popover: () => Popover,
1802
- UsernameModal: () => UsernameModal
1803
- });
1804
-
1805
- // src/components/EmailModal/index.tsx
1806
- import { useEffect as useEffect10, useState as useState9 } from "react";
1807
-
1808
- // src/components/EmailModal/StepEmail.tsx
1809
- import { useEffect as useEffect8, useMemo as useMemo4, useState as useState7 } from "react";
1810
- import { jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
1811
- function StepEmail(props) {
1812
- const [emailVal, setEmailVal] = useState7("");
1813
- useEffect8(() => {
1814
- if (props.email) {
1815
- setEmailVal(props.email);
1816
- }
1817
- }, []);
1818
- const canContinue = useMemo4(() => {
1819
- return isValidEmail(emailVal);
1820
- }, [emailVal]);
1821
- const onContinue = async () => {
1822
- props.onContinue(emailVal);
1823
- };
1824
- return /* @__PURE__ */ jsxs22("div", { className: "matchid-email-email-box", children: [
1825
- /* @__PURE__ */ jsx35(Field, { label: "Email Address", children: /* @__PURE__ */ jsx35(
1826
- Input,
1827
- {
1828
- placeholder: "Enter Your Email Address",
1829
- onChange: (e) => setEmailVal(e.target.value),
1830
- value: emailVal
1831
- }
1832
- ) }),
1833
- /* @__PURE__ */ jsx35(Button, { disabled: !canContinue, style: {
1834
- marginTop: "64px"
1835
- }, onClick: onContinue, size: "lg", block: true, highlight: true, children: "Continue" })
1836
- ] });
1837
- }
1838
-
1839
- // src/components/EmailModal/StepVerify.tsx
1840
- import { useEffect as useEffect9, useMemo as useMemo5, useRef as useRef3, useState as useState8 } from "react";
1841
-
1842
- // src/config/index.tsx
1843
- var EMAIL_INTERVAL = 60;
1844
- var EMAIL_CODE_LENGTH = 6;
1845
-
1846
- // src/components/EmailModal/StepVerify.tsx
1847
- import { jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
1848
- function StepVerify(props) {
1849
- const { getLoginEmailCode, loginByEmail } = useUserInfo();
1850
- const [error, setError] = useState8("");
1851
- const [code, setCode] = useState8("");
1852
- const [sending, setSending] = useState8(false);
1853
- const [submitting, setSubmitting] = useState8(false);
1854
- const sendTimeRef = useRef3(0);
1855
- const [sendBtnText, setSendBtnText] = useState8("Send");
1856
- const intervalTime = EMAIL_INTERVAL;
1857
- const codeLength = EMAIL_CODE_LENGTH;
1858
- const intervalRef = useRef3(null);
1859
- const onSend = async () => {
1860
- if (sendTimeRef.current > 0) {
1861
- return;
1862
- }
1863
- try {
1864
- setError("");
1865
- setSending(true);
1866
- sendTimeRef.current = intervalTime;
1867
- await getLoginEmailCode(props.email);
1868
- setSendBtnText(`${sendTimeRef.current}s`);
1869
- intervalRef.current = setInterval(() => {
1870
- sendTimeRef.current--;
1871
- setSendBtnText(`${sendTimeRef.current}s`);
1872
- if (sendTimeRef.current <= 0) {
1873
- setSendBtnText("Resend");
1874
- clearInterval(intervalRef.current);
1875
- setSending(false);
1876
- }
1877
- }, 1e3);
1878
- } catch (err) {
1879
- console.error("Send email error", err);
1880
- setError("Failed to send code:" + err.message);
1881
- setSending(false);
1882
- }
1883
- };
1884
- useEffect9(() => {
1885
- onSend();
1886
- return () => {
1887
- if (intervalRef.current) {
1888
- clearInterval(intervalRef.current);
1889
- }
1890
- };
1891
- }, []);
1892
- const canContinue = useMemo5(() => {
1893
- return code.length === codeLength;
1894
- }, [code]);
1895
- const onContinue = async () => {
1896
- if (submitting) {
1897
- return;
1898
- }
1899
- try {
1900
- setError("");
1901
- setSubmitting(true);
1902
- const res = await loginByEmail({
1903
- email: props.email,
1904
- code
1905
- });
1906
- if (res) {
1907
- props.onSuccess && props.onSuccess();
1908
- }
1909
- setSubmitting(false);
1910
- } catch (err) {
1911
- console.error("Verify email code error", err);
1912
- setError(err.message);
1913
- setSubmitting(false);
1914
- }
1915
- };
1916
- return /* @__PURE__ */ jsxs23("div", { className: "matchid-email-verify-box", children: [
1917
- /* @__PURE__ */ jsxs23("div", { className: "matchid-email-verify-header", children: [
1918
- /* @__PURE__ */ jsx36("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx36(EmailLineIcon, {}) }),
1919
- /* @__PURE__ */ jsxs23("div", { className: "matchid-email-verify-header-content", children: [
1920
- /* @__PURE__ */ jsx36("div", { className: "matchid-email-verify-header-value", children: props.email }),
1921
- /* @__PURE__ */ jsx36("div", { className: "matchid-email-verify-header-tips", children: "We have sent a verification code to your email" })
1922
- ] })
1923
- ] }),
1924
- /* @__PURE__ */ jsx36(Field, { label: "Verification Code", error, children: /* @__PURE__ */ jsx36(
1925
- Input,
1926
- {
1927
- placeholder: "Enter the code",
1928
- maxLength: codeLength,
1929
- onChange: (e) => setCode(e.target.value),
1930
- value: code,
1931
- after: /* @__PURE__ */ jsx36(
1932
- Button,
1933
- {
1934
- highlight: true,
1935
- disabled: sending,
1936
- style: {
1937
- height: "100%",
1938
- borderTopLeftRadius: 0,
1939
- borderBottomLeftRadius: 0,
1940
- borderTopRightRadius: "inherit",
1941
- borderBottomRightRadius: "inherit",
1942
- width: "80px"
1943
- },
1944
- onClick: onSend,
1945
- children: sendBtnText
1946
- }
1947
- )
1948
- }
1949
- ) }),
1950
- /* @__PURE__ */ jsx36(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: "Continue" })
1951
- ] });
1952
- }
1953
-
1954
- // src/components/EmailModal/index.tsx
1955
- import { jsx as jsx37 } from "react/jsx-runtime";
1956
- function EmailModal({
1957
- isOpen = false,
1958
- width = 480,
1959
- onClose,
1960
- onBack,
1961
- onLogin
1962
- }) {
1963
- const [step, setStep] = useState9("input");
1964
- const [emailVal, setEmailVal] = useState9("");
1965
- useEffect10(() => {
1966
- if (!isOpen) {
1967
- setStep("input");
1968
- setEmailVal("");
1969
- }
1970
- }, [isOpen]);
1971
- return /* @__PURE__ */ jsx37(
1972
- ModalWithHeader,
1973
- {
1974
- isOpen,
1975
- width,
1976
- onClose,
1977
- title: "Email",
1978
- onBack: step == "verify" ? () => setStep("input") : onBack,
1979
- children: step === "input" ? /* @__PURE__ */ jsx37(StepEmail, { email: emailVal, onContinue: (email) => {
1980
- setEmailVal(email);
1981
- setStep("verify");
1982
- } }) : /* @__PURE__ */ jsx37(StepVerify, { email: emailVal, onSuccess: onLogin })
1983
- }
1984
- );
1985
- }
1977
+ );
1978
+ }
1986
1979
 
1987
1980
  // src/components/Popover/index.tsx
1988
- import { useState as useState10 } from "react";
1989
- import { jsx as jsx38, jsxs as jsxs24 } from "react/jsx-runtime";
1981
+ import { useState as useState8 } from "react";
1982
+ import { jsx as jsx35, jsxs as jsxs23 } from "react/jsx-runtime";
1990
1983
  function Popover({
1991
1984
  children,
1992
1985
  content,
@@ -1995,8 +1988,8 @@ function Popover({
1995
1988
  className = "",
1996
1989
  gap = "20px"
1997
1990
  }) {
1998
- const [active, setActive] = useState10(false);
1999
- return /* @__PURE__ */ jsxs24(
1991
+ const [active, setActive] = useState8(false);
1992
+ return /* @__PURE__ */ jsxs23(
2000
1993
  "div",
2001
1994
  {
2002
1995
  onClick: () => {
@@ -2007,31 +2000,114 @@ function Popover({
2007
2000
  className: `matchid-popover-box matchid-popover-${position} matchid-popover-${type} ${className} ${type == "click" && active ? "matchid-popover-click-active" : ""}`,
2008
2001
  children: [
2009
2002
  children,
2010
- /* @__PURE__ */ jsx38("div", { style: {
2003
+ /* @__PURE__ */ jsx35("div", { style: {
2011
2004
  paddingTop: gap
2012
- }, children: /* @__PURE__ */ jsx38("div", { className: `matchid-popover-content`, children: content }) })
2005
+ }, children: /* @__PURE__ */ jsx35("div", { className: `matchid-popover-content`, children: content }) })
2013
2006
  ]
2014
2007
  }
2015
2008
  );
2016
2009
  }
2017
2010
 
2018
2011
  // src/components/LoginBox/index.tsx
2019
- import { useMemo as useMemo6, useState as useState11 } from "react";
2020
- import { Fragment as Fragment3, jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
2012
+ import { useMemo as useMemo7, useState as useState9 } from "react";
2013
+
2014
+ // src/assets/icon/SOLIcon.tsx
2015
+ import { jsx as jsx36, jsxs as jsxs24 } from "react/jsx-runtime";
2016
+ function SOLIcon({
2017
+ size = 40
2018
+ }) {
2019
+ return /* @__PURE__ */ jsxs24("svg", { xmlns: "http://www.w3.org/2000/svg", width: size, height: size, viewBox: "0 0 40 40", fill: "none", children: [
2020
+ /* @__PURE__ */ jsx36("rect", { width: "40", height: "40", rx: "8", fill: "black" }),
2021
+ /* @__PURE__ */ jsx36("rect", { x: "4", y: "4", width: "32", height: "32", rx: "16", fill: "black" }),
2022
+ /* @__PURE__ */ jsx36(
2023
+ "path",
2024
+ {
2025
+ d: "M12.4047 24.5841C12.5405 24.4483 12.7272 24.3691 12.9252 24.3691H30.8822C31.2103 24.3691 31.3744 24.7652 31.1424 24.9971L27.5952 28.5444C27.4594 28.6802 27.2727 28.7594 27.0747 28.7594H9.11766C8.78952 28.7594 8.62545 28.3634 8.85741 28.1314L12.4047 24.5841Z",
2026
+ fill: "url(#paint0_linear_92_7813)"
2027
+ }
2028
+ ),
2029
+ /* @__PURE__ */ jsx36(
2030
+ "path",
2031
+ {
2032
+ d: "M12.4047 11.34C12.5461 11.2042 12.7328 11.125 12.9252 11.125H30.8822C31.2103 11.125 31.3744 11.521 31.1424 11.753L27.5952 15.3003C27.4594 15.436 27.2727 15.5152 27.0747 15.5152H9.11766C8.78952 15.5152 8.62545 15.1192 8.85741 14.8873L12.4047 11.34Z",
2033
+ fill: "url(#paint1_linear_92_7813)"
2034
+ }
2035
+ ),
2036
+ /* @__PURE__ */ jsx36(
2037
+ "path",
2038
+ {
2039
+ d: "M27.5952 17.9201C27.4594 17.7843 27.2727 17.7051 27.0747 17.7051H9.11766C8.78952 17.7051 8.62545 18.1011 8.85741 18.3331L12.4047 21.8803C12.5405 22.0161 12.7272 22.0953 12.9252 22.0953H30.8822C31.2103 22.0953 31.3744 21.6993 31.1424 21.4673L27.5952 17.9201Z",
2040
+ fill: "url(#paint2_linear_92_7813)"
2041
+ }
2042
+ ),
2043
+ /* @__PURE__ */ jsxs24("defs", { children: [
2044
+ /* @__PURE__ */ jsxs24(
2045
+ "linearGradient",
2046
+ {
2047
+ id: "paint0_linear_92_7813",
2048
+ x1: "29.1668",
2049
+ y1: "9.00583",
2050
+ x2: "16.7391",
2051
+ y2: "32.8098",
2052
+ gradientUnits: "userSpaceOnUse",
2053
+ children: [
2054
+ /* @__PURE__ */ jsx36("stop", { "stop-color": "#00FFA3" }),
2055
+ /* @__PURE__ */ jsx36("stop", { offset: "1", stopColor: "#DC1FFF" })
2056
+ ]
2057
+ }
2058
+ ),
2059
+ /* @__PURE__ */ jsxs24(
2060
+ "linearGradient",
2061
+ {
2062
+ id: "paint1_linear_92_7813",
2063
+ x1: "23.7327",
2064
+ y1: "6.16893",
2065
+ x2: "11.305",
2066
+ y2: "29.9729",
2067
+ gradientUnits: "userSpaceOnUse",
2068
+ children: [
2069
+ /* @__PURE__ */ jsx36("stop", { stopColor: "#00FFA3" }),
2070
+ /* @__PURE__ */ jsx36("stop", { offset: "1", "stop-color": "#DC1FFF" })
2071
+ ]
2072
+ }
2073
+ ),
2074
+ /* @__PURE__ */ jsxs24(
2075
+ "linearGradient",
2076
+ {
2077
+ id: "paint2_linear_92_7813",
2078
+ x1: "26.4324",
2079
+ y1: "7.57879",
2080
+ x2: "14.0048",
2081
+ y2: "31.3828",
2082
+ gradientUnits: "userSpaceOnUse",
2083
+ children: [
2084
+ /* @__PURE__ */ jsx36("stop", { stopColor: "#00FFA3" }),
2085
+ /* @__PURE__ */ jsx36("stop", { offset: "1", stopColor: "#DC1FFF" })
2086
+ ]
2087
+ }
2088
+ )
2089
+ ] })
2090
+ ] });
2091
+ }
2092
+
2093
+ // src/components/LoginBox/index.tsx
2094
+ import { Fragment as Fragment2, jsx as jsx37, jsxs as jsxs25 } from "react/jsx-runtime";
2021
2095
  function LoginBox({
2022
2096
  methods,
2023
2097
  inModal = false
2024
2098
  }) {
2025
- const [emailOpen, setEmailOpen] = useState11(false);
2099
+ const [emailOpen, setEmailOpen] = useState9(false);
2026
2100
  const { login } = useUserInfo();
2027
2101
  const defaultMethods = [
2028
- "wallet",
2102
+ "evm",
2103
+ // 'sol',
2029
2104
  "google",
2030
2105
  "email",
2031
2106
  "telegram",
2032
2107
  "twitter"
2108
+ // 'facebook',
2033
2109
  ];
2034
- const methodList = useMemo6(() => {
2110
+ const methodList = useMemo7(() => {
2035
2111
  return methods || defaultMethods;
2036
2112
  }, [methods]);
2037
2113
  const LoginItem = ({
@@ -2041,59 +2117,69 @@ function LoginBox({
2041
2117
  }) => {
2042
2118
  return /* @__PURE__ */ jsxs25("div", { className: "matchid-login-method", onClick, children: [
2043
2119
  /* @__PURE__ */ jsxs25("div", { className: "matchid-login-method-content", children: [
2044
- /* @__PURE__ */ jsx39("div", { className: "matchid-login-method-icon", children: icon }),
2045
- /* @__PURE__ */ jsx39("span", { className: "matchid-login-method-name", children: name })
2120
+ /* @__PURE__ */ jsx37("div", { className: "matchid-login-method-icon", children: icon }),
2121
+ /* @__PURE__ */ jsx37("span", { className: "matchid-login-method-name", children: name })
2046
2122
  ] }),
2047
- /* @__PURE__ */ jsx39(ArrowRightIcon, { className: "matchid-login-method-arrow", size: 20, color: "var(--matchid-arrow-color)" })
2123
+ /* @__PURE__ */ jsx37(ArrowRightIcon, { className: "matchid-login-method-arrow", size: 20, color: "var(--matchid-arrow-color)" })
2048
2124
  ] });
2049
2125
  };
2050
2126
  const methodMap = {
2051
- wallet: {
2052
- icon: /* @__PURE__ */ jsx39(WalletIcon, {}),
2053
- name: "Wallet",
2054
- onClick: () => login("wallet")
2127
+ evm: {
2128
+ icon: /* @__PURE__ */ jsx37(WalletIcon, {}),
2129
+ name: "EVM",
2130
+ onClick: () => login("evm")
2055
2131
  },
2056
2132
  email: {
2057
- icon: /* @__PURE__ */ jsx39(EmailIcon, {}),
2133
+ icon: /* @__PURE__ */ jsx37(EmailIcon, {}),
2058
2134
  name: "Email",
2059
2135
  onClick: () => {
2060
2136
  setEmailOpen(true);
2061
2137
  }
2062
2138
  },
2063
2139
  google: {
2064
- icon: /* @__PURE__ */ jsx39(GoogleIcon, {}),
2140
+ icon: /* @__PURE__ */ jsx37(GoogleIcon, {}),
2065
2141
  name: "Google",
2066
2142
  onClick: () => login("google")
2067
2143
  },
2068
2144
  twitter: {
2069
- icon: /* @__PURE__ */ jsx39(XIcon, {}),
2145
+ icon: /* @__PURE__ */ jsx37(XIcon, {}),
2070
2146
  name: "X",
2071
2147
  onClick: () => login("twitter")
2072
2148
  },
2073
2149
  telegram: {
2074
- icon: /* @__PURE__ */ jsx39(TelegramIcon, {}),
2150
+ icon: /* @__PURE__ */ jsx37(TelegramIcon, {}),
2075
2151
  name: "Telegram",
2076
2152
  onClick: () => login("telegram")
2077
2153
  },
2078
2154
  github: {
2079
- icon: /* @__PURE__ */ jsx39(GithubIcon, {}),
2155
+ icon: /* @__PURE__ */ jsx37(GithubIcon, {}),
2080
2156
  name: "Github",
2081
2157
  onClick: () => login("github")
2082
2158
  },
2083
2159
  discord: {
2084
- icon: /* @__PURE__ */ jsx39(DiscordIcon, {}),
2160
+ icon: /* @__PURE__ */ jsx37(DiscordIcon, {}),
2085
2161
  name: "Discord",
2086
2162
  onClick: () => login("discord")
2087
2163
  },
2088
2164
  linkedin: {
2089
- icon: /* @__PURE__ */ jsx39(LinkedinIcon, {}),
2165
+ icon: /* @__PURE__ */ jsx37(LinkedinIcon, {}),
2090
2166
  name: "Linkedin",
2091
2167
  onClick: () => login("linkedin")
2168
+ },
2169
+ facebook: {
2170
+ icon: /* @__PURE__ */ jsx37(FacebookIcon, {}),
2171
+ name: "Facebook",
2172
+ onClick: () => login("facebook")
2173
+ },
2174
+ sol: {
2175
+ icon: /* @__PURE__ */ jsx37(SOLIcon, {}),
2176
+ name: "SOL",
2177
+ onClick: () => login("sol")
2092
2178
  }
2093
2179
  };
2094
- return /* @__PURE__ */ jsxs25(Fragment3, { children: [
2095
- (!inModal || !emailOpen) && /* @__PURE__ */ jsx39("div", { className: "matchid-login-box", children: methodList.map((m) => {
2096
- return /* @__PURE__ */ jsx39(
2180
+ return /* @__PURE__ */ jsxs25(Fragment2, { children: [
2181
+ (!inModal || !emailOpen) && /* @__PURE__ */ jsx37("div", { className: "matchid-login-box", children: methodList.map((m) => {
2182
+ return /* @__PURE__ */ jsx37(
2097
2183
  LoginItem,
2098
2184
  {
2099
2185
  icon: methodMap[m]?.icon,
@@ -2103,7 +2189,7 @@ function LoginBox({
2103
2189
  m
2104
2190
  );
2105
2191
  }) }),
2106
- /* @__PURE__ */ jsx39(
2192
+ /* @__PURE__ */ jsx37(
2107
2193
  EmailModal,
2108
2194
  {
2109
2195
  isOpen: emailOpen,
@@ -2119,10 +2205,10 @@ function LoginBox({
2119
2205
  }
2120
2206
 
2121
2207
  // src/components/LoginButton/index.tsx
2122
- import { useState as useState13 } from "react";
2208
+ import { useState as useState11 } from "react";
2123
2209
 
2124
2210
  // src/components/LoginPanel/index.tsx
2125
- import { jsx as jsx40, jsxs as jsxs26 } from "react/jsx-runtime";
2211
+ import { jsx as jsx38, jsxs as jsxs26 } from "react/jsx-runtime";
2126
2212
  function LoginPanel({
2127
2213
  header,
2128
2214
  onClose,
@@ -2131,42 +2217,42 @@ function LoginPanel({
2131
2217
  return /* @__PURE__ */ jsxs26("div", { className: "matchid-login-panel", children: [
2132
2218
  header ? header : /* @__PURE__ */ jsxs26("div", { className: "matchid-login-panel-header", children: [
2133
2219
  /* @__PURE__ */ jsxs26("div", { className: "matchid-login-panel-header-content", children: [
2134
- /* @__PURE__ */ jsx40("div", { className: "matchid-login-panel-header-title", children: "Log in / Sign up" }),
2135
- /* @__PURE__ */ jsx40("div", { className: "matchid-login-panel-header-subtilte", children: "You can use the following methods" })
2220
+ /* @__PURE__ */ jsx38("div", { className: "matchid-login-panel-header-title", children: "Log in / Sign up" }),
2221
+ /* @__PURE__ */ jsx38("div", { className: "matchid-login-panel-header-subtilte", children: "You can use the following methods" })
2136
2222
  ] }),
2137
- onClose && /* @__PURE__ */ jsx40("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx40(CloseRoundIcon, {}) })
2223
+ onClose && /* @__PURE__ */ jsx38("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx38(CloseRoundIcon, {}) })
2138
2224
  ] }),
2139
- /* @__PURE__ */ jsx40("div", { className: "matchid-login-panel-divide" }),
2140
- /* @__PURE__ */ jsx40(LoginBox, { ...props })
2225
+ /* @__PURE__ */ jsx38("div", { className: "matchid-login-panel-divide" }),
2226
+ /* @__PURE__ */ jsx38(LoginBox, { ...props })
2141
2227
  ] });
2142
2228
  }
2143
2229
 
2144
2230
  // src/components/LoginModal/index.tsx
2145
- import { jsx as jsx41 } from "react/jsx-runtime";
2231
+ import { jsx as jsx39 } from "react/jsx-runtime";
2146
2232
  function LoginModal({
2147
2233
  isOpen = false,
2148
2234
  width = 480,
2149
2235
  ...props
2150
2236
  }) {
2151
2237
  const { isLogin } = useUserInfo();
2152
- return /* @__PURE__ */ jsx41(
2238
+ return /* @__PURE__ */ jsx39(
2153
2239
  Modal,
2154
2240
  {
2155
2241
  isOpen: isOpen && !isLogin,
2156
2242
  width,
2157
- children: /* @__PURE__ */ jsx41(LoginPanel, { ...props, inModal: true })
2243
+ children: /* @__PURE__ */ jsx39(LoginPanel, { ...props, inModal: true })
2158
2244
  }
2159
2245
  );
2160
2246
  }
2161
2247
 
2162
2248
  // src/components/UserPopover/index.tsx
2163
- import { useState as useState12 } from "react";
2249
+ import { useState as useState10 } from "react";
2164
2250
 
2165
2251
  // src/assets/icon/ProfileIcon.tsx
2166
- import { jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
2252
+ import { jsx as jsx40, jsxs as jsxs27 } from "react/jsx-runtime";
2167
2253
  function ProfileIcon({ size = 24, color = "black", ...props }) {
2168
2254
  return /* @__PURE__ */ jsxs27("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
2169
- /* @__PURE__ */ jsx42(
2255
+ /* @__PURE__ */ jsx40(
2170
2256
  "path",
2171
2257
  {
2172
2258
  fillRule: "evenodd",
@@ -2175,7 +2261,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
2175
2261
  fill: color
2176
2262
  }
2177
2263
  ),
2178
- /* @__PURE__ */ jsx42(
2264
+ /* @__PURE__ */ jsx40(
2179
2265
  "path",
2180
2266
  {
2181
2267
  fillRule: "evenodd",
@@ -2188,10 +2274,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
2188
2274
  }
2189
2275
 
2190
2276
  // src/components/UserPopover/index.tsx
2191
- import { jsx as jsx43, jsxs as jsxs28 } from "react/jsx-runtime";
2277
+ import { jsx as jsx41, jsxs as jsxs28 } from "react/jsx-runtime";
2192
2278
  function UserContent() {
2193
2279
  const { logout, address, username } = useUserInfo();
2194
- const [logouting, setLogouting] = useState12(false);
2280
+ const [logouting, setLogouting] = useState10(false);
2195
2281
  const onLogout = async () => {
2196
2282
  if (logouting) return;
2197
2283
  try {
@@ -2212,28 +2298,28 @@ function UserContent() {
2212
2298
  return /* @__PURE__ */ jsxs28("div", { className: "matchid-user-popover-item", onClick, children: [
2213
2299
  /* @__PURE__ */ jsxs28("div", { className: `matchid-user-popover-item-content`, children: [
2214
2300
  icon,
2215
- /* @__PURE__ */ jsx43("div", { className: "matchid-user-popover-item-text", children })
2301
+ /* @__PURE__ */ jsx41("div", { className: "matchid-user-popover-item-text", children })
2216
2302
  ] }),
2217
2303
  rightIcon
2218
2304
  ] });
2219
2305
  };
2220
2306
  const UserDivider = () => {
2221
- return /* @__PURE__ */ jsx43("div", { className: `matchid-user-popover-divider` });
2307
+ return /* @__PURE__ */ jsx41("div", { className: `matchid-user-popover-divider` });
2222
2308
  };
2223
- const [usernameOpen, setUsernameOpen] = useState12(false);
2309
+ const [usernameOpen, setUsernameOpen] = useState10(false);
2224
2310
  const [copied, setCopied] = useCopyClipboard();
2225
2311
  return /* @__PURE__ */ jsxs28("div", { className: "matchid-user-popover-content", children: [
2226
2312
  /* @__PURE__ */ jsxs28("div", { className: "matchid-user-popover-list", children: [
2227
- /* @__PURE__ */ jsx43(UserItem, { onClick: () => {
2313
+ /* @__PURE__ */ jsx41(UserItem, { onClick: () => {
2228
2314
  setCopied(address);
2229
- }, icon: copied ? /* @__PURE__ */ jsx43(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx43(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx43(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
2230
- /* @__PURE__ */ jsx43(UserDivider, {}),
2231
- /* @__PURE__ */ jsx43(UserItem, { onClick: () => {
2315
+ }, icon: copied ? /* @__PURE__ */ jsx41(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx41(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx41(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address) }),
2316
+ /* @__PURE__ */ jsx41(UserDivider, {}),
2317
+ /* @__PURE__ */ jsx41(UserItem, { onClick: () => {
2232
2318
  setUsernameOpen(true);
2233
- }, icon: /* @__PURE__ */ jsx43(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx43(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || "Set a username" })
2319
+ }, icon: /* @__PURE__ */ jsx41(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx41(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || "Set a username" })
2234
2320
  ] }),
2235
- /* @__PURE__ */ jsx43(Button, { onClick: onLogout, loading: logouting, children: "Disconnect" }),
2236
- /* @__PURE__ */ jsx43(UsernameModal, { isOpen: usernameOpen, onClose: () => {
2321
+ /* @__PURE__ */ jsx41(Button, { onClick: onLogout, loading: logouting, children: "Disconnect" }),
2322
+ /* @__PURE__ */ jsx41(UsernameModal, { isOpen: usernameOpen, onClose: () => {
2237
2323
  setUsernameOpen(false);
2238
2324
  }, onSuccess: () => {
2239
2325
  setUsernameOpen(false);
@@ -2244,11 +2330,11 @@ function UserPopover({
2244
2330
  children,
2245
2331
  ...props
2246
2332
  }) {
2247
- return /* @__PURE__ */ jsx43(Popover, { ...props, content: /* @__PURE__ */ jsx43(UserContent, {}), children });
2333
+ return /* @__PURE__ */ jsx41(Popover, { ...props, content: /* @__PURE__ */ jsx41(UserContent, {}), children });
2248
2334
  }
2249
2335
 
2250
2336
  // src/components/LoginButton/index.tsx
2251
- import { Fragment as Fragment4, jsx as jsx44, jsxs as jsxs29 } from "react/jsx-runtime";
2337
+ import { Fragment as Fragment3, jsx as jsx42, jsxs as jsxs29 } from "react/jsx-runtime";
2252
2338
  function LoginButton({
2253
2339
  loginRender,
2254
2340
  methods,
@@ -2259,34 +2345,34 @@ function LoginButton({
2259
2345
  ...props
2260
2346
  }) {
2261
2347
  const { isLogin, username } = useUserInfo();
2262
- const [loginOpen, setLoginOpen] = useState13(false);
2348
+ const [loginOpen, setLoginOpen] = useState11(false);
2263
2349
  if (!isLogin) {
2264
- return /* @__PURE__ */ jsxs29(Fragment4, { children: [
2265
- /* @__PURE__ */ jsx44(LoginModal, { methods, isOpen: loginOpen, onClose: () => setLoginOpen(false) }),
2350
+ return /* @__PURE__ */ jsxs29(Fragment3, { children: [
2351
+ /* @__PURE__ */ jsx42(LoginModal, { methods, isOpen: loginOpen, onClose: () => setLoginOpen(false) }),
2266
2352
  /* @__PURE__ */ jsxs29(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
2267
- /* @__PURE__ */ jsx44(UnLoginIcon_default, {}),
2268
- /* @__PURE__ */ jsx44("span", { children: "Login" })
2353
+ /* @__PURE__ */ jsx42(UnLoginIcon_default, {}),
2354
+ /* @__PURE__ */ jsx42("span", { children: "Login" })
2269
2355
  ] })
2270
2356
  ] });
2271
2357
  }
2272
- return loginRender ? { loginRender } : /* @__PURE__ */ jsx44(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs29(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
2273
- /* @__PURE__ */ jsx44(LoginIcon_default, {}),
2274
- /* @__PURE__ */ jsx44("span", { children: username ? truncateAddress(username) : "MatchID User" })
2358
+ return loginRender ? { loginRender } : /* @__PURE__ */ jsx42(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs29(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
2359
+ /* @__PURE__ */ jsx42(LoginIcon_default, {}),
2360
+ /* @__PURE__ */ jsx42("span", { children: username ? truncateAddress(username) : "MatchID User" })
2275
2361
  ] }) });
2276
2362
  }
2277
2363
 
2278
2364
  // src/components/UsernameModal/index.tsx
2279
- import { useEffect as useEffect11, useMemo as useMemo7, useState as useState14 } from "react";
2365
+ import { useEffect as useEffect8, useMemo as useMemo8, useState as useState12 } from "react";
2280
2366
 
2281
2367
  // src/assets/icon/InfoRoundIcon.tsx
2282
- import { jsx as jsx45, jsxs as jsxs30 } from "react/jsx-runtime";
2368
+ import { jsx as jsx43, jsxs as jsxs30 } from "react/jsx-runtime";
2283
2369
  function InfoRoundIcon({
2284
2370
  size,
2285
2371
  color = "#6E6E6E",
2286
2372
  ...props
2287
2373
  }) {
2288
2374
  return /* @__PURE__ */ jsxs30("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
2289
- /* @__PURE__ */ jsx45("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx45(
2375
+ /* @__PURE__ */ jsx43("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx43(
2290
2376
  "path",
2291
2377
  {
2292
2378
  fillRule: "evenodd",
@@ -2295,19 +2381,19 @@ function InfoRoundIcon({
2295
2381
  fill: color
2296
2382
  }
2297
2383
  ) }),
2298
- /* @__PURE__ */ jsx45("defs", { children: /* @__PURE__ */ jsx45("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx45("rect", { width: "16", height: "16", fill: "white" }) }) })
2384
+ /* @__PURE__ */ jsx43("defs", { children: /* @__PURE__ */ jsx43("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx43("rect", { width: "16", height: "16", fill: "white" }) }) })
2299
2385
  ] });
2300
2386
  }
2301
2387
 
2302
2388
  // src/components/UsernameModal/index.tsx
2303
- import { jsx as jsx46, jsxs as jsxs31 } from "react/jsx-runtime";
2389
+ import { jsx as jsx44, jsxs as jsxs31 } from "react/jsx-runtime";
2304
2390
  var ValidItem = ({
2305
2391
  success = false,
2306
2392
  text
2307
2393
  }) => {
2308
2394
  return /* @__PURE__ */ jsxs31("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
2309
- success ? /* @__PURE__ */ jsx46(CheckRoundIcon, { size: 16 }) : /* @__PURE__ */ jsx46(InfoRoundIcon, { size: 16 }),
2310
- /* @__PURE__ */ jsx46("span", { children: text })
2395
+ success ? /* @__PURE__ */ jsx44(CheckRoundIcon, { size: 16 }) : /* @__PURE__ */ jsx44(InfoRoundIcon, { size: 16 }),
2396
+ /* @__PURE__ */ jsx44("span", { children: text })
2311
2397
  ] });
2312
2398
  };
2313
2399
  function UsernameModal({
@@ -2318,22 +2404,22 @@ function UsernameModal({
2318
2404
  }) {
2319
2405
  const { username, refreshOverview } = useUserInfo();
2320
2406
  const { isLogin } = useUserInfo();
2321
- const [val, setVal] = useState14(username);
2322
- const [error, setError] = useState14("");
2323
- useEffect11(() => {
2407
+ const [val, setVal] = useState12(username);
2408
+ const [error, setError] = useState12("");
2409
+ useEffect8(() => {
2324
2410
  if (isOpen) {
2325
2411
  setVal(username);
2326
2412
  setError("");
2327
2413
  }
2328
2414
  }, [isOpen]);
2329
- const isValid = useMemo7(() => {
2415
+ const isValid = useMemo8(() => {
2330
2416
  return isValidUsername(val);
2331
2417
  }, [val]);
2332
- const isLength = useMemo7(() => {
2418
+ const isLength = useMemo8(() => {
2333
2419
  return val.length >= 2 && val.length <= 32;
2334
2420
  }, [val]);
2335
2421
  const isSafe = isValid && isLength;
2336
- const [isSubmitting, setIsSubmitting] = useState14(false);
2422
+ const [isSubmitting, setIsSubmitting] = useState12(false);
2337
2423
  const onSubmit = async () => {
2338
2424
  if (isSubmitting) return;
2339
2425
  try {
@@ -2353,8 +2439,8 @@ function UsernameModal({
2353
2439
  setIsSubmitting(false);
2354
2440
  }
2355
2441
  };
2356
- return /* @__PURE__ */ jsx46(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || (username ? "Edit User Name" : "Set User Name"), children: /* @__PURE__ */ jsxs31("div", { className: "matchid-username-box", children: [
2357
- /* @__PURE__ */ jsx46(Field, { label: "User Name", error, children: /* @__PURE__ */ jsx46(
2442
+ return /* @__PURE__ */ jsx44(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || (username ? "Edit User Name" : "Set User Name"), children: /* @__PURE__ */ jsxs31("div", { className: "matchid-username-box", children: [
2443
+ /* @__PURE__ */ jsx44(Field, { label: "User Name", error, children: /* @__PURE__ */ jsx44(
2358
2444
  Input,
2359
2445
  {
2360
2446
  placeholder: "Enter Your User Name",
@@ -2366,24 +2452,816 @@ function UsernameModal({
2366
2452
  }
2367
2453
  ) }),
2368
2454
  /* @__PURE__ */ jsxs31("div", { className: "matchid-valid", children: [
2369
- /* @__PURE__ */ jsx46(
2455
+ /* @__PURE__ */ jsx44(
2370
2456
  ValidItem,
2371
2457
  {
2372
2458
  success: isValid,
2373
2459
  text: "Name can be composed of numbers and letters as well as characters"
2374
2460
  }
2375
2461
  ),
2376
- /* @__PURE__ */ jsx46(ValidItem, { success: isLength, text: "No less than 2 characters" })
2462
+ /* @__PURE__ */ jsx44(ValidItem, { success: isLength, text: "No less than 2 characters" })
2377
2463
  ] }),
2378
- /* @__PURE__ */ jsx46(Button, { disabled: !isSafe, loading: isSubmitting, style: {
2464
+ /* @__PURE__ */ jsx44(Button, { disabled: !isSafe, loading: isSubmitting, style: {
2379
2465
  marginTop: "64px"
2380
2466
  }, onClick: onSubmit, size: "lg", block: true, highlight: true, children: "Confirm" }),
2381
- /* @__PURE__ */ jsx46(Button, { style: {
2467
+ /* @__PURE__ */ jsx44(Button, { style: {
2382
2468
  marginTop: "24px"
2383
2469
  }, onClick: props.onClose, size: "lg", block: true, children: "Next Time" })
2384
2470
  ] }) });
2385
2471
  }
2386
2472
 
2473
+ // src/components/SOLModal/index.tsx
2474
+ import React3, { useEffect as useEffect9, useMemo as useMemo9, useState as useState13 } from "react";
2475
+ import { clusterApiUrl } from "@solana/web3.js";
2476
+ import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
2477
+ import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
2478
+
2479
+ // node_modules/@solana/wallet-adapter-base/lib/esm/types.js
2480
+ var WalletAdapterNetwork;
2481
+ (function(WalletAdapterNetwork2) {
2482
+ WalletAdapterNetwork2["Mainnet"] = "mainnet-beta";
2483
+ WalletAdapterNetwork2["Testnet"] = "testnet";
2484
+ WalletAdapterNetwork2["Devnet"] = "devnet";
2485
+ })(WalletAdapterNetwork || (WalletAdapterNetwork = {}));
2486
+
2487
+ // src/components/SOLModal/index.tsx
2488
+ import {
2489
+ PhantomWalletAdapter,
2490
+ SolflareWalletAdapter,
2491
+ WalletConnectWalletAdapter,
2492
+ AlphaWalletAdapter,
2493
+ AvanaWalletAdapter,
2494
+ BitgetWalletAdapter,
2495
+ BitpieWalletAdapter,
2496
+ CloverWalletAdapter,
2497
+ Coin98WalletAdapter,
2498
+ CoinbaseWalletAdapter,
2499
+ CoinhubWalletAdapter,
2500
+ FractalWalletAdapter,
2501
+ HuobiWalletAdapter,
2502
+ HyperPayWalletAdapter,
2503
+ KeystoneWalletAdapter,
2504
+ KrystalWalletAdapter,
2505
+ LedgerWalletAdapter,
2506
+ MathWalletAdapter,
2507
+ NekoWalletAdapter,
2508
+ NightlyWalletAdapter,
2509
+ NufiWalletAdapter,
2510
+ OntoWalletAdapter,
2511
+ ParticleAdapter,
2512
+ SafePalWalletAdapter,
2513
+ SaifuWalletAdapter,
2514
+ SalmonWalletAdapter,
2515
+ SkyWalletAdapter,
2516
+ SolongWalletAdapter,
2517
+ SpotWalletAdapter,
2518
+ TokenaryWalletAdapter,
2519
+ TokenPocketWalletAdapter,
2520
+ TorusWalletAdapter,
2521
+ TrezorWalletAdapter,
2522
+ TrustWalletAdapter,
2523
+ XDEFIWalletAdapter
2524
+ } from "@solana/wallet-adapter-wallets";
2525
+ import "@solana/wallet-adapter-react-ui/styles.css";
2526
+
2527
+ // src/assets/wallet.ts
2528
+ 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==";
2529
+ var walletConnectedImage = "data:image/png;base64,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";
2530
+ var walletConnectingImage = "data:image/png;base64,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";
2531
+ var walletConnectImage = "data:image/png;base64,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";
2532
+ var walletSigningImage = "data:image/png;base64,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";
2533
+
2534
+ // src/components/SOLModal/index.tsx
2535
+ import { jsx as jsx45, jsxs as jsxs32 } from "react/jsx-runtime";
2536
+ function WalletContent({
2537
+ onSuccess,
2538
+ type
2539
+ }) {
2540
+ const { setVisible, visible } = useWalletModal();
2541
+ const wallet = useWallet2();
2542
+ const { events, login } = useMatch();
2543
+ const [status, setStatus] = useState13("");
2544
+ const statusRef = React3.useRef(status);
2545
+ const [error, setError] = useState13("");
2546
+ useEffect9(() => {
2547
+ const init = async () => {
2548
+ await wallet.disconnect();
2549
+ setVisible(true);
2550
+ };
2551
+ init();
2552
+ }, []);
2553
+ useEffect9(() => {
2554
+ if (wallet.connected) {
2555
+ console.log("wallet.connected", wallet.connected);
2556
+ toLoginInWallet();
2557
+ }
2558
+ }, [wallet.connected]);
2559
+ const toLoginInWallet = async () => {
2560
+ if (statusRef.current) return;
2561
+ const address = wallet.publicKey?.toBase58() || "";
2562
+ try {
2563
+ setStatus("nonce");
2564
+ statusRef.current = "nonce";
2565
+ const res = type == "bind" ? await getWalletInitApi({ address }) : await getWalletNonceApi({ address });
2566
+ if (!isSuccess(res)) {
2567
+ throw new Error(res.message);
2568
+ }
2569
+ const nonce = res.code >= 0 ? res.data.nonce : null;
2570
+ if (nonce) {
2571
+ setStatus("signer");
2572
+ statusRef.current = "signer";
2573
+ const message = "By signing, you are proving you own this wallet and logging in. This does not initiate a transaction or cost any fees.Nonce:" + res.data.nonce;
2574
+ const encodedMessage = new TextEncoder().encode(message);
2575
+ const signedMessage = await wallet.signMessage(encodedMessage);
2576
+ let obj = {
2577
+ type: "SOL",
2578
+ address,
2579
+ signature: Buffer.from(signedMessage).toString("base64"),
2580
+ message,
2581
+ connector_type: "SOL",
2582
+ wallet_client_type: wallet.wallet?.adapter.name || ""
2583
+ };
2584
+ const res1 = type == "bind" ? await toBindWalletApi(obj) : await loginByWalletApi(obj);
2585
+ if (res1) {
2586
+ if (!isSuccess(res1)) {
2587
+ throw new Error(res1.message);
2588
+ }
2589
+ matchlog_default.log(res1);
2590
+ setStatus("success");
2591
+ statusRef.current = "success";
2592
+ if (type == "bind") {
2593
+ events.onBind && events.onBind({
2594
+ type: "sol"
2595
+ });
2596
+ eventManager_default.emit("onBind", {
2597
+ type: "sol"
2598
+ });
2599
+ } else {
2600
+ await login({
2601
+ mid: res1.data.mid,
2602
+ token: `${res1.data.token_type} ${res1.data.access_token}`
2603
+ });
2604
+ }
2605
+ onSuccess && onSuccess();
2606
+ }
2607
+ }
2608
+ } catch (error2) {
2609
+ setStatus("error");
2610
+ setError(error2.message);
2611
+ statusRef.current = "";
2612
+ }
2613
+ };
2614
+ const pageData = useMemo9(() => {
2615
+ if (status == "success") {
2616
+ return {
2617
+ btnText: "Disconnect Wallet",
2618
+ btnClick: async () => {
2619
+ await wallet.disconnect();
2620
+ },
2621
+ text: "Wallet connection successful!",
2622
+ statusImage: walletConnectedImage
2623
+ };
2624
+ }
2625
+ if (status == "error") {
2626
+ return {
2627
+ text: error,
2628
+ btnText: "Reconnect Wallet",
2629
+ btnClick: async () => {
2630
+ setError("");
2631
+ await wallet.disconnect();
2632
+ setVisible(true);
2633
+ },
2634
+ statusImage: walletErrorImage,
2635
+ isError: true
2636
+ };
2637
+ }
2638
+ if (status == "nonce") {
2639
+ return {
2640
+ btnLoading: true,
2641
+ text: "Connecting",
2642
+ statusImage: walletConnectingImage
2643
+ };
2644
+ }
2645
+ if (status == "signer") {
2646
+ return {
2647
+ btnLoading: true,
2648
+ text: "Signing",
2649
+ statusImage: walletSigningImage
2650
+ };
2651
+ }
2652
+ if (visible) {
2653
+ return {
2654
+ btnLoading: true,
2655
+ text: "Connecting",
2656
+ statusImage: walletConnectingImage
2657
+ };
2658
+ }
2659
+ return {
2660
+ btnText: "Connect Wallet",
2661
+ btnClick: () => {
2662
+ setVisible(true);
2663
+ },
2664
+ text: "Please Connect your wallet",
2665
+ statusImage: walletConnectImage
2666
+ };
2667
+ }, [visible, wallet.connected, status, error, wallet.publicKey]);
2668
+ return /* @__PURE__ */ jsx45("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs32("div", { className: `matchid-wallet-box`, children: [
2669
+ /* @__PURE__ */ jsxs32("div", { className: `matchid-wallet-content`, children: [
2670
+ /* @__PURE__ */ jsx45("img", { src: pageData.statusImage }),
2671
+ /* @__PURE__ */ jsx45("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
2672
+ ] }),
2673
+ /* @__PURE__ */ jsx45(
2674
+ Button,
2675
+ {
2676
+ block: true,
2677
+ size: "lg",
2678
+ onClick: pageData.btnClick,
2679
+ loading: pageData.btnLoading,
2680
+ disabled: pageData.btnDisabled,
2681
+ children: pageData.btnText
2682
+ }
2683
+ )
2684
+ ] }) });
2685
+ }
2686
+ var wallets = [
2687
+ new PhantomWalletAdapter(),
2688
+ new SolflareWalletAdapter(),
2689
+ new WalletConnectWalletAdapter({
2690
+ network: WalletAdapterNetwork.Mainnet,
2691
+ options: {
2692
+ relayUrl: "wss://relay.walletconnect.com"
2693
+ }
2694
+ }),
2695
+ new AlphaWalletAdapter(),
2696
+ new AvanaWalletAdapter(),
2697
+ new BitgetWalletAdapter(),
2698
+ new BitpieWalletAdapter(),
2699
+ new CloverWalletAdapter(),
2700
+ new Coin98WalletAdapter(),
2701
+ new CoinbaseWalletAdapter(),
2702
+ new CoinhubWalletAdapter(),
2703
+ new FractalWalletAdapter(),
2704
+ new HuobiWalletAdapter(),
2705
+ new HyperPayWalletAdapter(),
2706
+ new KeystoneWalletAdapter(),
2707
+ new KrystalWalletAdapter(),
2708
+ new LedgerWalletAdapter(),
2709
+ new MathWalletAdapter(),
2710
+ new NekoWalletAdapter(),
2711
+ new NightlyWalletAdapter(),
2712
+ new NufiWalletAdapter(),
2713
+ new OntoWalletAdapter(),
2714
+ new ParticleAdapter(),
2715
+ new SafePalWalletAdapter(),
2716
+ new SaifuWalletAdapter(),
2717
+ new SalmonWalletAdapter(),
2718
+ new SkyWalletAdapter(),
2719
+ new SolongWalletAdapter(),
2720
+ new SpotWalletAdapter(),
2721
+ new TokenaryWalletAdapter(),
2722
+ new TokenPocketWalletAdapter(),
2723
+ new TorusWalletAdapter(),
2724
+ new TrezorWalletAdapter(),
2725
+ new TrustWalletAdapter(),
2726
+ new XDEFIWalletAdapter()
2727
+ ];
2728
+ function SOLModal({
2729
+ type = "login",
2730
+ onSuccess,
2731
+ ...props
2732
+ }) {
2733
+ return /* @__PURE__ */ jsx45(ModalWithHeader, { ...props, title: props.title || firstUpperCase(type + " SOL Wallet"), children: /* @__PURE__ */ jsx45(ConnectionProvider, { endpoint: clusterApiUrl("devnet"), children: /* @__PURE__ */ jsx45(WalletProvider, { wallets, autoConnect: true, children: /* @__PURE__ */ jsx45(WalletModalProvider, { children: /* @__PURE__ */ jsx45(WalletContent, { onSuccess, type }) }) }) }) });
2734
+ }
2735
+
2736
+ // src/components/EVMModal/index.tsx
2737
+ import "@rainbow-me/rainbowkit/styles.css";
2738
+ import { jsx as jsx46, jsxs as jsxs33 } from "react/jsx-runtime";
2739
+ var wagmiConfig = getDefaultConfig({
2740
+ appName: "MatchID",
2741
+ projectId: "9ac6ea7e07860f04616fb311b447dee9",
2742
+ wallets: [
2743
+ {
2744
+ groupName: "Recommended",
2745
+ wallets: [
2746
+ metaMaskWallet,
2747
+ walletConnectWallet,
2748
+ okxWallet,
2749
+ bitgetWallet,
2750
+ injectedWallet
2751
+ ]
2752
+ }
2753
+ ],
2754
+ chains: [bsc]
2755
+ });
2756
+ function WalletContent2({
2757
+ onSuccess,
2758
+ type
2759
+ }) {
2760
+ const config = useConfig();
2761
+ const { openConnectModal, connectModalOpen } = useConnectModal();
2762
+ const { address } = useAccount();
2763
+ const { disconnect } = useDisconnect({ config });
2764
+ const chainId = useChainId();
2765
+ const { events, login } = useMatch();
2766
+ const [status, setStatus] = useState14("");
2767
+ const statusRef = React4.useRef(status);
2768
+ const [error, setError] = useState14("");
2769
+ useEffect10(() => {
2770
+ if (openConnectModal) {
2771
+ disconnect();
2772
+ openConnectModal && openConnectModal();
2773
+ }
2774
+ return () => {
2775
+ address && disconnect();
2776
+ };
2777
+ }, [openConnectModal]);
2778
+ useAccountEffect({
2779
+ onDisconnect() {
2780
+ matchlog_default.log("onDisconnect");
2781
+ setStatus("");
2782
+ statusRef.current = "";
2783
+ },
2784
+ onConnect(data) {
2785
+ matchlog_default.log("onConnect", data, status);
2786
+ setStatus("");
2787
+ statusRef.current = "";
2788
+ toLoginInWallet(data);
2789
+ }
2790
+ });
2791
+ const toLoginInWallet = async (data) => {
2792
+ if (statusRef.current) return;
2793
+ try {
2794
+ const signer = await getEthersSigner(config);
2795
+ if (!signer || !chainId || !data.address) return;
2796
+ setStatus("nonce");
2797
+ statusRef.current = "nonce";
2798
+ const res = type == "bind" ? await getWalletInitApi({ address: data.address }) : await getWalletNonceApi({ address: data.address });
2799
+ if (!isSuccess(res)) {
2800
+ throw new Error(res.message);
2801
+ }
2802
+ const domain = window.location.host;
2803
+ const origin = window.location.origin;
2804
+ const nonce = res.code >= 0 ? res.data.nonce : null;
2805
+ if (nonce) {
2806
+ setStatus("signer");
2807
+ statusRef.current = "signer";
2808
+ const params = {
2809
+ domain,
2810
+ address: data.address,
2811
+ statement: "By signing, you are proving you own this wallet and logging in. This does not initiate a transaction or cost any fees.",
2812
+ uri: origin,
2813
+ nonce,
2814
+ version: "1",
2815
+ chainId
2816
+ };
2817
+ const message = new SiweMessage({ ...params });
2818
+ const signature = await signer.signMessage(message.prepareMessage());
2819
+ let obj = {
2820
+ type: "EVM",
2821
+ address: data.address,
2822
+ signature,
2823
+ message: `${message.prepareMessage()}`,
2824
+ connector_type: data.connector.type || "",
2825
+ wallet_client_type: data.connector.name || ""
2826
+ };
2827
+ const res2 = type == "bind" ? await toBindWalletApi(obj) : await loginByWalletApi(obj);
2828
+ if (res2) {
2829
+ if (!isSuccess(res2)) {
2830
+ throw new Error(res2.message);
2831
+ }
2832
+ matchlog_default.log(res2);
2833
+ setStatus("success");
2834
+ statusRef.current = "success";
2835
+ if (type == "bind") {
2836
+ events.onBind && events.onBind({
2837
+ type: "evm"
2838
+ });
2839
+ eventManager_default.emit("onBind", {
2840
+ type: "evm"
2841
+ });
2842
+ } else {
2843
+ await login({
2844
+ mid: res2.data.mid,
2845
+ token: `${res2.data.token_type} ${res2.data.access_token}`
2846
+ });
2847
+ }
2848
+ onSuccess && onSuccess();
2849
+ }
2850
+ }
2851
+ } catch (error2) {
2852
+ setStatus("error");
2853
+ setError(error2.message);
2854
+ statusRef.current = "";
2855
+ }
2856
+ };
2857
+ const pageData = useMemo10(() => {
2858
+ if (status == "success") {
2859
+ return {
2860
+ btnText: "Disconnect Wallet",
2861
+ btnClick: () => {
2862
+ disconnect();
2863
+ },
2864
+ text: "Wallet connection successful!",
2865
+ statusImage: walletConnectedImage
2866
+ };
2867
+ }
2868
+ if (status == "error") {
2869
+ return {
2870
+ text: error,
2871
+ btnText: "Reconnect Wallet",
2872
+ btnClick: async () => {
2873
+ setError("");
2874
+ disconnect();
2875
+ openConnectModal && openConnectModal();
2876
+ },
2877
+ statusImage: walletErrorImage,
2878
+ isError: true
2879
+ };
2880
+ }
2881
+ if (status == "nonce") {
2882
+ return {
2883
+ btnLoading: true,
2884
+ text: "Connecting",
2885
+ statusImage: walletConnectingImage
2886
+ };
2887
+ }
2888
+ if (status == "signer") {
2889
+ return {
2890
+ btnLoading: true,
2891
+ text: "Signing",
2892
+ statusImage: walletSigningImage
2893
+ };
2894
+ }
2895
+ if (connectModalOpen) {
2896
+ return {
2897
+ btnLoading: true,
2898
+ text: "Connecting",
2899
+ statusImage: walletConnectingImage
2900
+ };
2901
+ }
2902
+ return {
2903
+ btnText: "Connect Wallet",
2904
+ btnClick: () => {
2905
+ openConnectModal && openConnectModal();
2906
+ },
2907
+ text: "Please Connect your wallet",
2908
+ statusImage: walletConnectImage
2909
+ };
2910
+ }, [connectModalOpen, status, error, address]);
2911
+ return /* @__PURE__ */ jsx46("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs33("div", { className: `matchid-wallet-box`, children: [
2912
+ /* @__PURE__ */ jsxs33("div", { className: `matchid-wallet-content`, children: [
2913
+ /* @__PURE__ */ jsx46("img", { src: pageData.statusImage }),
2914
+ /* @__PURE__ */ jsx46("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
2915
+ ] }),
2916
+ /* @__PURE__ */ jsx46(
2917
+ Button,
2918
+ {
2919
+ block: true,
2920
+ size: "lg",
2921
+ onClick: pageData.btnClick,
2922
+ loading: pageData.btnLoading,
2923
+ disabled: pageData.btnDisabled,
2924
+ children: pageData.btnText
2925
+ }
2926
+ )
2927
+ ] }) });
2928
+ }
2929
+ function EVMModal({
2930
+ type = "login",
2931
+ onSuccess,
2932
+ ...props
2933
+ }) {
2934
+ return /* @__PURE__ */ jsx46(ModalWithHeader, { ...props, title: props.title || firstUpperCase(type + " EVM Wallet"), children: /* @__PURE__ */ jsx46(WagmiProvider, { config: wagmiConfig, children: /* @__PURE__ */ jsx46(RainbowKitProvider, { children: /* @__PURE__ */ jsx46(WalletContent2, { onSuccess, type }) }) }) });
2935
+ }
2936
+
2937
+ // src/context/BusinessProvider.tsx
2938
+ import { Fragment as Fragment4, jsx as jsx47, jsxs as jsxs34 } from "react/jsx-runtime";
2939
+ function BusinessProvider({ children }) {
2940
+ const { overview, token } = useUserInfo();
2941
+ const { recoveryModal } = useStore_default();
2942
+ const { type: EVMType, isOpen: EVMIsOpen, close: EVMClose } = useEVMModalStore();
2943
+ const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
2944
+ return /* @__PURE__ */ jsxs34(Fragment4, { children: [
2945
+ /* @__PURE__ */ jsx47(PasswordModal, { isOpen: !!token && !!overview && !overview.address && !!overview.did, showClose: false }),
2946
+ /* @__PURE__ */ jsx47(
2947
+ RecoveryModal,
2948
+ {
2949
+ isOpen: !!token && !!overview && !!overview.address && recoveryModal.open,
2950
+ onClose: recoveryModal.close,
2951
+ onSuccess: recoveryModal.success
2952
+ }
2953
+ ),
2954
+ /* @__PURE__ */ jsx47(
2955
+ EVMModal,
2956
+ {
2957
+ isOpen: EVMIsOpen && (EVMType == "login" && !overview && !token || EVMType == "bind" && !!token && !!overview),
2958
+ onClose: EVMClose,
2959
+ type: EVMType,
2960
+ onSuccess: EVMClose,
2961
+ zIndex: 199
2962
+ }
2963
+ ),
2964
+ /* @__PURE__ */ jsx47(
2965
+ SOLModal,
2966
+ {
2967
+ isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
2968
+ onClose: SOLClose,
2969
+ type: SOLType,
2970
+ onSuccess: SOLClose,
2971
+ zIndex: 199
2972
+ }
2973
+ ),
2974
+ children
2975
+ ] });
2976
+ }
2977
+
2978
+ // src/context/index.tsx
2979
+ import { jsx as jsx48 } from "react/jsx-runtime";
2980
+ var Providers = ({ children }) => {
2981
+ return (
2982
+ // <MpcWalletProvider>
2983
+ /* @__PURE__ */ jsx48(BusinessProvider, { children })
2984
+ );
2985
+ };
2986
+ var context_default = Providers;
2987
+
2988
+ // src/hooks/useWalletInit.ts
2989
+ import { useEffect as useEffect11, useState as useState15 } from "react";
2990
+ var AppClientId2 = "react-sdk-" + getVersion();
2991
+ function useWalletInit({
2992
+ refreshOverview
2993
+ }) {
2994
+ const { endpoints } = useLocalStore_default();
2995
+ const getWalletIframe = () => {
2996
+ return document.getElementById("match-wallet");
2997
+ };
2998
+ const [walletInited, setWalletInited] = useState15(false);
2999
+ const { appid, token, overview } = useLocalStore_default();
3000
+ const { initWallet, generateWallet } = useWallet();
3001
+ useEffect11(() => {
3002
+ if (endpoints.auth) {
3003
+ if (!window.matchWalletMessageIdMap) {
3004
+ window.matchWalletMessageIdMap = {};
3005
+ }
3006
+ const existingIframe = getWalletIframe();
3007
+ if (!existingIframe) {
3008
+ const iframe = document.createElement("iframe");
3009
+ iframe.id = "match-wallet";
3010
+ iframe.src = endpoints.auth + "wallet";
3011
+ iframe.style.display = "none";
3012
+ iframe.style.width = "0";
3013
+ iframe.style.height = "0";
3014
+ document.body.insertBefore(iframe, document.body.firstChild);
3015
+ window.sendMatchWalletMessage = (method, data) => {
3016
+ const messageId = Date.now().toString() + Math.random().toString().slice(6);
3017
+ const message = {
3018
+ method,
3019
+ data,
3020
+ messageId,
3021
+ source: "matchid"
3022
+ };
3023
+ if (document.getElementById("match-wallet")) {
3024
+ matchlog_default.log("matchid.sdk.sendMatchWalletMessage", message, endpoints.auth);
3025
+ getWalletIframe()?.contentWindow?.postMessage(message, endpoints.auth);
3026
+ return messageId;
3027
+ }
3028
+ console.error("not found iframe");
3029
+ return false;
3030
+ };
3031
+ window.waitMatchUntilWalletMessage = async (method, data, timeout = 3e4) => {
3032
+ return new Promise((resolve, reject) => {
3033
+ const messageId = window.sendMatchWalletMessage(method, data);
3034
+ if (!messageId) {
3035
+ console.error("Can't find wallet message");
3036
+ reject(new Error("Can't find wallet message"));
3037
+ return;
3038
+ }
3039
+ window.matchWalletMessageIdMap[messageId] = { resolve, reject };
3040
+ window.matchWalletMessageIdMap[messageId].timeout = setTimeout(() => {
3041
+ console.error("Get wallet result timeout", {
3042
+ messageId,
3043
+ method,
3044
+ data
3045
+ });
3046
+ delete window.matchWalletMessageIdMap[messageId];
3047
+ reject(new Error("Get wallet result timeout"));
3048
+ }, timeout);
3049
+ });
3050
+ };
3051
+ } else {
3052
+ if (existingIframe.src !== endpoints.auth + "wallet") {
3053
+ setWalletInited(false);
3054
+ existingIframe.src = endpoints.auth + "wallet";
3055
+ }
3056
+ }
3057
+ }
3058
+ }, [endpoints.auth]);
3059
+ useEffect11(() => {
3060
+ const messageHandle = async (e) => {
3061
+ if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
3062
+ return;
3063
+ }
3064
+ const res = e.data;
3065
+ if (res.source != "match-wallet") {
3066
+ return;
3067
+ }
3068
+ matchlog_default.log("sdk.wallet.receive", e);
3069
+ const messageId = res.messageId;
3070
+ if (messageId == "init") {
3071
+ matchlog_default.log("wallet init");
3072
+ setWalletInited(true);
3073
+ return;
3074
+ }
3075
+ if (messageId && window.matchWalletMessageIdMap[messageId]) {
3076
+ const { resolve, reject, timeout } = window.matchWalletMessageIdMap[messageId];
3077
+ delete window.matchWalletMessageIdMap[messageId];
3078
+ clearTimeout(timeout);
3079
+ if (res.status == "success") {
3080
+ resolve(res.data);
3081
+ } else {
3082
+ console.error("qwe-waller-error", res);
3083
+ reject(new Error(res.data.message));
3084
+ }
3085
+ }
3086
+ };
3087
+ window.addEventListener("message", messageHandle);
3088
+ return () => {
3089
+ window.removeEventListener("message", messageHandle);
3090
+ };
3091
+ }, []);
3092
+ useEffect11(() => {
3093
+ if (token && overview && overview.did && walletInited) {
3094
+ const did = overview.did.split(":")[2];
3095
+ const newUserInit = async () => {
3096
+ await window.waitMatchUntilWalletMessage(
3097
+ "initCore",
3098
+ {
3099
+ AppId: appid,
3100
+ AppClientId: AppClientId2,
3101
+ UserId: did,
3102
+ AccessToken: token,
3103
+ Address: ""
3104
+ }
3105
+ );
3106
+ };
3107
+ if (!overview.address) {
3108
+ newUserInit();
3109
+ } else {
3110
+ initWallet({
3111
+ address: overview.address,
3112
+ did
3113
+ });
3114
+ }
3115
+ }
3116
+ }, [overview, token, walletInited]);
3117
+ return {
3118
+ walletInited
3119
+ };
3120
+ }
3121
+
3122
+ // src/hooks/useInit.tsx
3123
+ import { useEffect as useEffect12, useRef as useRef2 } from "react";
3124
+ function useInit({
3125
+ theme,
3126
+ appid,
3127
+ events,
3128
+ endpoints
3129
+ }) {
3130
+ const {
3131
+ setAppid,
3132
+ setEndpoints,
3133
+ setToken,
3134
+ setMid,
3135
+ token,
3136
+ setOverview,
3137
+ setTheme
3138
+ } = useLocalStore_default();
3139
+ const overviewLoadingRef = useRef2(false);
3140
+ const searchParams = new URLSearchParams(window.location.search);
3141
+ const matchToken = searchParams.get("matchToken");
3142
+ const realEndpoints = endpoints || env_default.endpoints;
3143
+ useEffect12(() => {
3144
+ setTheme(theme);
3145
+ }, [theme]);
3146
+ useEffect12(() => {
3147
+ setAppid(appid);
3148
+ }, [appid]);
3149
+ useEffect12(() => {
3150
+ setEndpoints(realEndpoints);
3151
+ }, [realEndpoints]);
3152
+ useEffect12(() => {
3153
+ if (matchToken) {
3154
+ const tokenData = JSON.parse(atob(matchToken));
3155
+ if (tokenData && tokenData.mid && tokenData.token) {
3156
+ login({
3157
+ mid: tokenData.mid,
3158
+ token: "Bearer " + tokenData.token
3159
+ });
3160
+ }
3161
+ }
3162
+ }, [matchToken]);
3163
+ useEffect12(() => {
3164
+ const onLoginMessage = (event) => {
3165
+ const res = event.data;
3166
+ if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
3167
+ login({
3168
+ mid: res.data.mid,
3169
+ token: res.data.token || `${res.data.token_type} ${res.data.access_token}`
3170
+ });
3171
+ } else if (res.event == "bind") {
3172
+ eventManager_default.emit("onBind", res.data);
3173
+ if (events && events.onBind) {
3174
+ events.onBind(res.data);
3175
+ }
3176
+ }
3177
+ };
3178
+ window.addEventListener("message", onLoginMessage);
3179
+ return () => {
3180
+ window.removeEventListener("message", onLoginMessage);
3181
+ };
3182
+ }, []);
3183
+ const loadOverview = async () => {
3184
+ matchlog_default.log("loadOverview");
3185
+ if (overviewLoadingRef.current) {
3186
+ return;
3187
+ }
3188
+ overviewLoadingRef.current = true;
3189
+ try {
3190
+ const res = await getOverviewInfoApi();
3191
+ setOverview(res.data);
3192
+ return res.data;
3193
+ } catch (err) {
3194
+ console.error("overview error", err);
3195
+ } finally {
3196
+ overviewLoadingRef.current = false;
3197
+ }
3198
+ };
3199
+ useEffect12(() => {
3200
+ if (token) {
3201
+ loadOverview();
3202
+ }
3203
+ }, [token]);
3204
+ const login = async ({ mid, token: token2 }) => {
3205
+ setMid(mid);
3206
+ setToken(token2);
3207
+ const overview = await loadOverview();
3208
+ eventManager_default.emit("onLogin", {
3209
+ mid,
3210
+ token: token2,
3211
+ did: overview?.did
3212
+ });
3213
+ if (events && events?.onLogin) {
3214
+ events.onLogin({
3215
+ mid,
3216
+ token: token2,
3217
+ did: overview?.did
3218
+ });
3219
+ }
3220
+ };
3221
+ return {
3222
+ loadOverview,
3223
+ login,
3224
+ endpoints: realEndpoints
3225
+ };
3226
+ }
3227
+
3228
+ // src/MatchContext.tsx
3229
+ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
3230
+ import { jsx as jsx49 } from "react/jsx-runtime";
3231
+ var queryClient = new QueryClient();
3232
+ var MatchContext = createContext(void 0);
3233
+ var MatchProvider = ({ children, appid, events, theme = "light", endpoints }) => {
3234
+ const { loadOverview, login, endpoints: realEndPoints } = useInit({
3235
+ theme,
3236
+ appid,
3237
+ events,
3238
+ endpoints
3239
+ });
3240
+ useWalletInit({
3241
+ refreshOverview: loadOverview
3242
+ });
3243
+ return /* @__PURE__ */ jsx49(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx49(
3244
+ MatchContext.Provider,
3245
+ {
3246
+ value: {
3247
+ appid,
3248
+ endpoints: realEndPoints,
3249
+ events,
3250
+ login,
3251
+ theme
3252
+ },
3253
+ children: /* @__PURE__ */ jsx49(context_default, { children })
3254
+ }
3255
+ ) });
3256
+ };
3257
+ var useMatch = () => {
3258
+ const context = useContext(MatchContext);
3259
+ if (context === void 0) {
3260
+ throw new Error("useMatch must be used within a MatchProvider");
3261
+ }
3262
+ return context;
3263
+ };
3264
+
2387
3265
  // src/hooks/api/index.ts
2388
3266
  var api_exports = {};
2389
3267
  __export(api_exports, {