@matchain/matchid-sdk-react 0.1.48-alpha.10 → 0.1.48-alpha.3

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.
Files changed (70) hide show
  1. package/dist/assets/icon/index.d.mts +2 -11
  2. package/dist/assets/icon/index.d.ts +2 -11
  3. package/dist/assets/icon/index.js +2 -93
  4. package/dist/assets/icon/index.js.map +1 -1
  5. package/dist/assets/icon/index.mjs +1 -9
  6. package/dist/{chunk-LHNKZISB.mjs → chunk-A5D3NKTK.mjs} +4 -91
  7. package/dist/chunk-A5D3NKTK.mjs.map +1 -0
  8. package/dist/{chunk-MXBUBTKR.mjs → chunk-LNSJ3ZXG.mjs} +5 -11
  9. package/dist/chunk-LNSJ3ZXG.mjs.map +1 -0
  10. package/dist/{chunk-YGFOHQU6.mjs → chunk-LPQROHSB.mjs} +2 -2
  11. package/dist/{chunk-2LRK5L4Z.mjs → chunk-V3WGYFWQ.mjs} +449 -1399
  12. package/dist/chunk-V3WGYFWQ.mjs.map +1 -0
  13. package/dist/components/index.d.mts +3 -3
  14. package/dist/components/index.d.ts +3 -3
  15. package/dist/components/index.js +448 -1689
  16. package/dist/components/index.js.map +1 -1
  17. package/dist/components/index.mjs +3 -12
  18. package/dist/hooks/api/index.d.mts +2 -2
  19. package/dist/hooks/api/index.d.ts +2 -2
  20. package/dist/hooks/api/index.js +185 -265
  21. package/dist/hooks/api/index.js.map +1 -1
  22. package/dist/hooks/api/index.mjs +4 -5
  23. package/dist/hooks/index.d.mts +2 -3
  24. package/dist/hooks/index.d.ts +2 -3
  25. package/dist/hooks/index.js +177 -1516
  26. package/dist/hooks/index.js.map +1 -1
  27. package/dist/hooks/index.mjs +3 -10
  28. package/dist/{index-NzZ-mfGZ.d.mts → index-B-s1k4Da.d.mts} +2 -5
  29. package/dist/{index-BxPB2IQ2.d.ts → index-B8DYrhSW.d.mts} +8 -29
  30. package/dist/{index-DAEvA2P4.d.ts → index-BHvCA7F9.d.ts} +4 -28
  31. package/dist/{index-BEwCPHZr.d.mts → index-BZrddrq-.d.mts} +4 -28
  32. package/dist/{index-BQPieWF9.d.ts → index-BvLpvebq.d.mts} +3 -4
  33. package/dist/{index-C9s2Ea9O.d.ts → index-Bzcc-y8m.d.ts} +1 -1
  34. package/dist/{index-CE20hVl1.d.mts → index-Cwx2p8th.d.ts} +8 -29
  35. package/dist/{index-BsmYcQQU.d.mts → index-DCeOyAw8.d.ts} +3 -4
  36. package/dist/{index-88JSE0j2.d.ts → index-DG_gyw1q.d.ts} +2 -5
  37. package/dist/index-DKyt0for.d.mts +181 -0
  38. package/dist/{index-DZ-eQkIA.d.mts → index-DbG5IjhP.d.mts} +1 -1
  39. package/dist/index-TkB89QxX.d.ts +181 -0
  40. package/dist/index.css +4 -468
  41. package/dist/index.d.mts +7 -8
  42. package/dist/index.d.ts +7 -8
  43. package/dist/index.js +1079 -2172
  44. package/dist/index.js.map +1 -1
  45. package/dist/index.mjs +10 -11
  46. package/dist/types/index.d.mts +1 -1
  47. package/dist/types/index.d.ts +1 -1
  48. package/dist/{types-BZoVuUty.d.mts → types-CHkU0WHZ.d.mts} +33 -48
  49. package/dist/{types-BZoVuUty.d.ts → types-CHkU0WHZ.d.ts} +33 -48
  50. package/dist/ui/index.d.mts +3 -3
  51. package/dist/ui/index.d.ts +3 -3
  52. package/dist/ui/index.js +62 -80
  53. package/dist/ui/index.js.map +1 -1
  54. package/dist/ui/index.mjs +2 -2
  55. package/example/src/pages/Wallet/components/MatchWallet.tsx +10 -24
  56. package/package.json +1 -7
  57. package/dist/chunk-2LRK5L4Z.mjs.map +0 -1
  58. package/dist/chunk-5JHHHLG4.mjs +0 -136
  59. package/dist/chunk-5JHHHLG4.mjs.map +0 -1
  60. package/dist/chunk-LHNKZISB.mjs.map +0 -1
  61. package/dist/chunk-MXBUBTKR.mjs.map +0 -1
  62. package/dist/index-DIxrMLXq.d.ts +0 -3295
  63. package/dist/index-P71uc8y5.d.mts +0 -3295
  64. package/dist/utils/index.d.mts +0 -26
  65. package/dist/utils/index.d.ts +0 -26
  66. package/dist/utils/index.js +0 -181
  67. package/dist/utils/index.js.map +0 -1
  68. package/dist/utils/index.mjs +0 -30
  69. package/dist/utils/index.mjs.map +0 -1
  70. /package/dist/{chunk-YGFOHQU6.mjs.map → chunk-LPQROHSB.mjs.map} +0 -0
@@ -1,5 +1,4 @@
1
1
  import {
2
- AlphaAvatar,
3
2
  Button,
4
3
  Field,
5
4
  HashPanel_default,
@@ -13,16 +12,7 @@ import {
13
12
  matchlog_default,
14
13
  useDownMd,
15
14
  useLayout_exports
16
- } from "./chunk-MXBUBTKR.mjs";
17
- import {
18
- NumberFormatter,
19
- encodeBase64,
20
- getAppClientId,
21
- getVersion,
22
- isValidEmail,
23
- isValidUsername,
24
- truncateAddress
25
- } from "./chunk-5JHHHLG4.mjs";
15
+ } from "./chunk-LNSJ3ZXG.mjs";
26
16
  import {
27
17
  ArrowDownIcon,
28
18
  ArrowRightIcon,
@@ -42,7 +32,6 @@ import {
42
32
  FacebookIcon,
43
33
  GithubIcon,
44
34
  GoogleIcon,
45
- InfoLineIcon,
46
35
  LeatherIcon,
47
36
  LinkedinIcon,
48
37
  LoginIcon_default,
@@ -54,7 +43,6 @@ import {
54
43
  TelegramIcon,
55
44
  TonLightIcon,
56
45
  TonLightIcon2,
57
- TransferIcon,
58
46
  TronLinkIcon,
59
47
  UnLoginIcon_default,
60
48
  UnisatIcon,
@@ -62,7 +50,7 @@ import {
62
50
  XIcon,
63
51
  XverseIcon,
64
52
  YoutubeIcon
65
- } from "./chunk-LHNKZISB.mjs";
53
+ } from "./chunk-A5D3NKTK.mjs";
66
54
  import {
67
55
  __export
68
56
  } from "./chunk-J5LGTIGS.mjs";
@@ -86,19 +74,42 @@ __export(components_exports, {
86
74
  SOLModal: () => SOLModal,
87
75
  TONModal: () => TONModal,
88
76
  TRONModal: () => TRONModal,
89
- TokenDetail: () => TokenDetail,
90
- TokenSend: () => TokenSend,
91
- TokenSendList: () => TokenSendList,
92
77
  UsernameModal: () => UsernameModal,
93
- WalletAsset: () => WalletAsset,
94
78
  WalletModal: () => WalletModal
95
79
  });
96
80
 
97
81
  // src/components/EmailModal/index.tsx
98
- import { useEffect as useEffect14, useState as useState13 } from "react";
82
+ import { useEffect as useEffect13, useState as useState12 } from "react";
99
83
 
100
84
  // src/components/EmailModal/StepEmail.tsx
101
85
  import { useEffect, useMemo, useState } from "react";
86
+
87
+ // src/utils/index.ts
88
+ var getVersion = () => {
89
+ return "0.0.2";
90
+ };
91
+ function encodeBase64(input) {
92
+ return btoa(unescape(encodeURIComponent(input)));
93
+ }
94
+ var isValidEmail = (email) => {
95
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
96
+ };
97
+ var isValidUsername = (username) => {
98
+ return /^[a-zA-Z0-9_-]+$/.test(username);
99
+ };
100
+ function truncateAddress(address2) {
101
+ if (address2.length <= 6) {
102
+ return address2;
103
+ }
104
+ const start = address2.slice(0, 4);
105
+ const end = address2.slice(-2);
106
+ return `${start}...${end}`;
107
+ }
108
+ function getAppClientId() {
109
+ return "react-sdk-" + getVersion();
110
+ }
111
+
112
+ // src/components/EmailModal/StepEmail.tsx
102
113
  import { FormattedMessage, useIntl } from "react-intl";
103
114
  import { jsx, jsxs } from "react/jsx-runtime";
104
115
  function StepEmail(props) {
@@ -514,13 +525,6 @@ var getWalletChainListApi = () => {
514
525
  method: "POST"
515
526
  });
516
527
  };
517
- var getWalletNftListApi = (data) => {
518
- return request_default({
519
- url: `/api/v1/wallet/nfts`,
520
- method: "POST",
521
- data
522
- });
523
- };
524
528
 
525
529
  // src/store/useLocalStore.ts
526
530
  var persistedState = persist(
@@ -554,7 +558,7 @@ var persistedState = persist(
554
558
  setToken: (token) => set({ token }),
555
559
  setAppid: (appid) => set({ appid }),
556
560
  setMid: (mid) => set({ mid }),
557
- logout: () => set({ token: "", did: "", mid: "", address: "", overview: null, assets: [] }),
561
+ logout: () => set({ token: "", did: "", mid: "", address: "", overview: null }),
558
562
  setTheme: (theme) => set({ theme }),
559
563
  setEndpoints: (endpoints) => set({ endpoints }),
560
564
  address: "",
@@ -566,9 +570,7 @@ var persistedState = persist(
566
570
  },
567
571
  setWallet: (wallet) => set({ wallet }),
568
572
  chainId: 698,
569
- setChainId: (chainId) => set({ chainId }),
570
- assets: [],
571
- setAssets: (assets) => set({ assets })
573
+ setChainId: (chainId) => set({ chainId })
572
574
  }),
573
575
  { name: "match-local" }
574
576
  );
@@ -590,13 +592,10 @@ __export(hooks_exports, {
590
592
  useMatchChain: () => useMatchChain,
591
593
  useMatchEvents: () => useMatchEvents,
592
594
  useMatchWallet: () => useMatchWallet,
593
- useMatchWalletAssetList: () => useMatchWalletAssetList,
594
- useMatchWalletAssets: () => useMatchWalletAssets,
595
595
  useMatchWalletRecords: () => useMatchWalletRecords,
596
596
  useModal: () => useModal,
597
597
  useReceipt: () => useReceipt,
598
598
  useToast: () => useToast,
599
- useTransaction: () => useTransaction,
600
599
  useUserInfo: () => useUserInfo,
601
600
  useWallet: () => useWallet
602
601
  });
@@ -669,81 +668,108 @@ import { createWalletClient } from "viem";
669
668
  import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
670
669
  import { encodeDeployData } from "viem";
671
670
 
672
- // src/context/ModalContext.tsx
673
- import { useState as useState2, useCallback, createContext, useContext } from "react";
674
- import { createPortal } from "react-dom";
675
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
676
- var ModalContext = createContext(null);
677
- function ModalProvider({ children }) {
678
- const [modalState, setModalState] = useState2({
679
- modals: [],
680
- highestZIndex: 100
681
- });
682
- const getNextIndex = useCallback(() => {
683
- return Math.max(...modalState.modals.map((modal) => modal.index), 0) + 1 || 100;
684
- }, [modalState]);
685
- const closeModal = useCallback((index) => {
686
- setModalState((prevState) => ({
687
- modals: prevState.modals.filter((modal) => modal.index !== index),
688
- highestZIndex: prevState.highestZIndex
689
- }));
690
- }, []);
691
- const show = useCallback((content, index) => {
692
- setModalState((prevState) => {
693
- const modalIndex = index !== void 0 ? index : getNextIndex();
694
- const newZIndex = prevState.highestZIndex + 1;
695
- return {
696
- modals: [...prevState.modals, {
697
- visible: true,
698
- index: modalIndex,
699
- zIndex: newZIndex,
700
- content: content({ close: () => closeModal(modalIndex), zIndex: newZIndex })
701
- }],
702
- highestZIndex: newZIndex
703
- };
704
- });
705
- }, [getNextIndex, closeModal]);
706
- const open = useCallback((props) => {
707
- setModalState((prevState) => {
708
- const modalIndex = props.index !== void 0 ? props.index : getNextIndex();
709
- const newZIndex = prevState.highestZIndex + 1;
710
- return {
711
- modals: [...prevState.modals, {
712
- visible: true,
713
- index: modalIndex,
714
- zIndex: newZIndex,
715
- content: /* @__PURE__ */ jsx2(ModalDrawer, { showClose: true, isOpen: true, onClose: () => closeModal(modalIndex), title: props.title, zIndex: newZIndex, onBack: props.onBack, children: /* @__PURE__ */ jsx2(props.content, { close: () => closeModal(modalIndex), zIndex: newZIndex }) })
716
- }],
717
- highestZIndex: newZIndex
718
- };
719
- });
720
- }, [getNextIndex, closeModal]);
721
- const modalElements = modalState.modals.sort((a, b) => b.zIndex - a.zIndex).map(
722
- (modal) => modal.visible ? createPortal(
723
- modal.content,
724
- document.body
725
- ) : null
726
- );
727
- return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
728
- children,
729
- modalElements
730
- ] });
731
- }
732
- function useModal() {
733
- const context = useContext(ModalContext);
734
- if (!context) {
735
- throw new Error("useModal must be used within a ModalProvider");
736
- }
737
- return context;
671
+ // src/store/useModalStore.ts
672
+ import { create as create3 } from "zustand";
673
+
674
+ // src/hooks/useConfig.tsx
675
+ import { jsx as jsx2 } from "react/jsx-runtime";
676
+ var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
677
+ var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
678
+ function useWalletConfig() {
679
+ const isDownMd = useDownMd();
680
+ const walletMap = {
681
+ evm: {
682
+ icon: /* @__PURE__ */ jsx2(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
683
+ activeIcon: /* @__PURE__ */ jsx2(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
684
+ name: "EVM",
685
+ method: "evm"
686
+ },
687
+ sol: {
688
+ icon: /* @__PURE__ */ jsx2(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
689
+ activeIcon: /* @__PURE__ */ jsx2(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
690
+ name: "SOL",
691
+ method: "sol"
692
+ },
693
+ btc: {
694
+ icon: /* @__PURE__ */ jsx2(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
695
+ activeIcon: /* @__PURE__ */ jsx2(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
696
+ name: "BTC",
697
+ method: "btc"
698
+ },
699
+ tron: {
700
+ icon: /* @__PURE__ */ jsx2(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
701
+ activeIcon: /* @__PURE__ */ jsx2(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
702
+ name: "TRON",
703
+ method: "tron"
704
+ },
705
+ ton: {
706
+ icon: /* @__PURE__ */ jsx2(TonLightIcon, { size: isDownMd ? 36 : 40 }),
707
+ activeIcon: /* @__PURE__ */ jsx2(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
708
+ name: "TON",
709
+ method: "ton"
710
+ }
711
+ };
712
+ return {
713
+ walletMap
714
+ };
738
715
  }
739
716
 
717
+ // src/store/useModalStore.ts
718
+ var useSOLModalStore = create3((set) => ({
719
+ isOpen: false,
720
+ type: "",
721
+ open: (type) => set({ isOpen: true, type }),
722
+ close: () => set({ isOpen: false })
723
+ }));
724
+ var useTRONModalStore = create3((set) => ({
725
+ isOpen: false,
726
+ type: "",
727
+ open: (type) => set({ isOpen: true, type }),
728
+ close: () => set({ isOpen: false })
729
+ }));
730
+ var useTONModalStore = create3((set) => ({
731
+ isOpen: false,
732
+ type: "",
733
+ open: (type) => set({ isOpen: true, type }),
734
+ close: () => set({ isOpen: false })
735
+ }));
736
+ var useBTCModalStore = create3((set) => ({
737
+ isOpen: false,
738
+ type: "",
739
+ open: (type) => set({ isOpen: true, type }),
740
+ close: () => set({ isOpen: false })
741
+ }));
742
+ var useCEXBindModalStore = create3((set) => ({
743
+ type: "",
744
+ isOpen: false,
745
+ open: (type) => set({ isOpen: true, type }),
746
+ close: () => set({ isOpen: false })
747
+ }));
748
+ var useHashPanelStore = create3((set) => ({
749
+ isOpen: false,
750
+ hash: null,
751
+ chain: null,
752
+ open: (params) => set({
753
+ isOpen: true,
754
+ hash: params?.hash || null,
755
+ chain: params?.chain || null
756
+ }),
757
+ close: () => set({ isOpen: false })
758
+ }));
759
+ var useWalletModalStore = create3((set) => ({
760
+ isOpen: false,
761
+ type: "",
762
+ methods: [],
763
+ open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
764
+ close: () => set({ isOpen: false })
765
+ }));
766
+
740
767
  // src/hooks/useWallet.tsx
741
- import { jsx as jsx3 } from "react/jsx-runtime";
742
768
  var AppClientId = "react-sdk-" + getVersion();
743
769
  function useWallet() {
744
770
  const { address: address2, wallet: walletConfig } = useLocalStore_default();
745
771
  const { walletReady } = useStore_default();
746
- const modal = useModal();
772
+ const { open: openHashPanel } = useHashPanelStore();
747
773
  const isRecovered = async () => {
748
774
  const res = await window.matchProvider.waitUntilWalletMessage({
749
775
  method: "isRecovered"
@@ -887,11 +913,13 @@ function useWallet() {
887
913
  prepareTransactionRequest
888
914
  }
889
915
  });
916
+ openHashPanel();
890
917
  const txHash = await obj.sendRawTransaction({
891
918
  serializedTransaction
892
919
  });
893
- modal.show((props) => {
894
- return /* @__PURE__ */ jsx3(HashPanel_default, { isOpen: true, onClose: props.close, zIndex: props.zIndex, hash: txHash, chain: _chain });
920
+ openHashPanel({
921
+ hash: txHash,
922
+ chain: _chain
895
923
  });
896
924
  clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
897
925
  delete window.matchProvider.transactionMessageIntervalMap[transactionId];
@@ -944,10 +972,10 @@ function useWallet() {
944
972
 
945
973
  // src/hooks/useCopyClipboard.ts
946
974
  import copy from "copy-to-clipboard";
947
- import { useCallback as useCallback2, useEffect as useEffect4, useState as useState4 } from "react";
975
+ import { useCallback, useEffect as useEffect4, useState as useState3 } from "react";
948
976
  function useCopyClipboard(timeout = 500) {
949
- const [isCopied, setIsCopied] = useState4(false);
950
- const staticCopy = useCallback2((text) => {
977
+ const [isCopied, setIsCopied] = useState3(false);
978
+ const staticCopy = useCallback((text) => {
951
979
  const didCopy = copy(text);
952
980
  setIsCopied(didCopy);
953
981
  }, []);
@@ -965,6 +993,48 @@ function useCopyClipboard(timeout = 500) {
965
993
  return [isCopied, staticCopy];
966
994
  }
967
995
 
996
+ // src/context/ModalContext.tsx
997
+ import { useState as useState4, useCallback as useCallback2, createContext, useContext } from "react";
998
+ import { createPortal } from "react-dom";
999
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
1000
+ var ModalContext = createContext(null);
1001
+ function ModalProvider({ children }) {
1002
+ const [showModalState, setShowModalState] = useState4({
1003
+ visible: false,
1004
+ content: null
1005
+ });
1006
+ const closeShowModal = useCallback2(() => {
1007
+ setShowModalState({ visible: false, content: null });
1008
+ }, []);
1009
+ const show = useCallback2((content) => {
1010
+ setShowModalState({
1011
+ visible: true,
1012
+ content: content({ close: closeShowModal })
1013
+ });
1014
+ }, [closeShowModal]);
1015
+ const open = useCallback2((props) => {
1016
+ setShowModalState({
1017
+ visible: true,
1018
+ content: /* @__PURE__ */ jsx3(ModalDrawer, { showClose: true, isOpen: true, onClose: closeShowModal, title: props.title, children: /* @__PURE__ */ jsx3(props.content, { close: closeShowModal }) })
1019
+ });
1020
+ }, [closeShowModal]);
1021
+ const ShowModalComponent = showModalState.visible ? createPortal(
1022
+ showModalState.content,
1023
+ document.body
1024
+ ) : null;
1025
+ return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
1026
+ children,
1027
+ ShowModalComponent
1028
+ ] });
1029
+ }
1030
+ function useModal() {
1031
+ const context = useContext(ModalContext);
1032
+ if (!context) {
1033
+ throw new Error("useModal must be used within a ModalProvider");
1034
+ }
1035
+ return context;
1036
+ }
1037
+
968
1038
  // src/context/ToastContext.tsx
969
1039
  import { useState as useState5, useCallback as useCallback3, createContext as createContext2, useContext as useContext2 } from "react";
970
1040
  import { createPortal as createPortal2 } from "react-dom";
@@ -1024,16 +1094,14 @@ __export(wallet_exports, {
1024
1094
  useAssetListQuery: () => useAssetListQuery,
1025
1095
  useChainListQuery: () => useChainListQuery,
1026
1096
  useImportTokenListQuery: () => useImportTokenListQuery,
1027
- useWalletAssetListQuery: () => useWalletAssetListQuery,
1028
1097
  useWalletChainListQuery: () => useWalletChainListQuery,
1029
- useWalletNftListQuery: () => useWalletNftListQuery,
1030
1098
  userImportTokenApi: () => userImportTokenApi
1031
1099
  });
1032
1100
  import { useQuery } from "@tanstack/react-query";
1033
1101
  function useChainListQuery(options) {
1034
1102
  const { isLogin, token } = useUserInfo();
1035
1103
  return useQuery({
1036
- queryKey: ["match-user-chain-list", token],
1104
+ queryKey: ["match-chain-list", token],
1037
1105
  queryFn: async () => {
1038
1106
  const res = await getUserChainListApi();
1039
1107
  if (!isSuccess(res)) {
@@ -1051,7 +1119,7 @@ function useAssetListQuery({
1051
1119
  }) {
1052
1120
  const { isLogin, token } = useUserInfo();
1053
1121
  return useQuery({
1054
- queryKey: ["match-user-asset-list", token, chainId],
1122
+ queryKey: ["match-wallet-asset-list", token, chainId],
1055
1123
  queryFn: async () => {
1056
1124
  const res = await getUserWalletAssetApi({ chain_id: chainId.toString() });
1057
1125
  if (!isSuccess(res)) {
@@ -1069,7 +1137,7 @@ function useImportTokenListQuery({
1069
1137
  }) {
1070
1138
  const { isLogin, token } = useUserInfo();
1071
1139
  return useQuery({
1072
- queryKey: ["match-user-import-token-list", token, chainId],
1140
+ queryKey: ["match-wallet-import-token-list", token, chainId],
1073
1141
  queryFn: async () => {
1074
1142
  const res = await getUserImportTokenListApi({ chain_id: chainId.toString() });
1075
1143
  if (!isSuccess(res)) {
@@ -1096,54 +1164,9 @@ function useWalletChainListQuery(options) {
1096
1164
  ...options
1097
1165
  });
1098
1166
  }
1099
- function useWalletNftListQuery({
1100
- chainId,
1101
- address: address2,
1102
- ...options
1103
- }) {
1104
- const { isLogin, token } = useUserInfo();
1105
- return useQuery({
1106
- queryKey: ["match-wallet-nft-list", token, chainId, address2],
1107
- queryFn: async () => {
1108
- const res = await getWalletNftListApi({
1109
- chain_id: chainId.toString(),
1110
- address: address2
1111
- });
1112
- if (!isSuccess(res)) {
1113
- return [];
1114
- }
1115
- return res.data;
1116
- },
1117
- enabled: isLogin,
1118
- ...options
1119
- });
1120
- }
1121
- function useWalletAssetListQuery({
1122
- chainId,
1123
- address: address2,
1124
- ...options
1125
- }) {
1126
- const { isLogin, token } = useUserInfo();
1127
- return useQuery({
1128
- queryKey: ["match-wallet-asset-list", token, chainId, address2],
1129
- queryFn: async () => {
1130
- const res = await getWalletAssetListApi({
1131
- chain_id: chainId,
1132
- address: address2
1133
- });
1134
- if (!isSuccess(res)) {
1135
- return null;
1136
- }
1137
- return res.data;
1138
- },
1139
- enabled: isLogin,
1140
- ...options
1141
- });
1142
- }
1143
1167
 
1144
1168
  // src/hooks/useMatchChain.tsx
1145
1169
  import { useMemo as useMemo3, useState as useState6 } from "react";
1146
- import { createPublicClient, http } from "viem";
1147
1170
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1148
1171
  function useMatchChain() {
1149
1172
  const chainListQuery = useChainListQuery();
@@ -1203,274 +1226,82 @@ function useMatchChain() {
1203
1226
  content: ChangeNetwork
1204
1227
  });
1205
1228
  };
1206
- const publicClient = useMemo3(() => {
1207
- if (!chain) {
1208
- return null;
1209
- }
1210
- return createPublicClient({
1211
- chain,
1212
- transport: http()
1213
- });
1214
- }, [chain]);
1215
1229
  return {
1216
1230
  list: chainListQuery.data,
1217
1231
  chainId,
1218
1232
  setChainId,
1219
1233
  chain,
1220
1234
  explorerLink,
1221
- showChangeNetwork,
1222
- publicClient
1235
+ showChangeNetwork
1223
1236
  };
1224
1237
  }
1225
1238
 
1226
1239
  // src/hooks/useMatchWallet.tsx
1227
1240
  import { QRCode } from "react-qrcode";
1228
- import { useEffect as useEffect6, useMemo as useMemo4, useRef, useState as useState7 } from "react";
1241
+ import { useEffect as useEffect6, useState as useState7 } from "react";
1229
1242
 
1230
1243
  // example/src/config/contract.ts
1231
1244
  var address = "0x4143e29770fd63e24bb1f32d50bf8a590e34de4b";
1232
1245
 
1233
1246
  // src/hooks/useMatchWallet.tsx
1234
- import { useQuery as useQuery2, useQueryClient } from "@tanstack/react-query";
1235
-
1236
- // src/config/index.tsx
1237
- var EMAIL_INTERVAL = 60;
1238
- var EMAIL_CODE_LENGTH = 6;
1239
- var NATIVE_TOKEN_ADDRESS = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
1240
-
1241
- // src/hooks/useMatchWallet.tsx
1242
- import { formatUnits } from "viem";
1243
1247
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
1244
- var ReceiveModal = () => {
1245
- const chain = useMatchChain();
1248
+ function useMatchWallet() {
1249
+ const modal = useModal();
1246
1250
  const { address: address2 } = useWallet();
1251
+ const chain = useMatchChain();
1247
1252
  const [copied, setCopied] = useCopyClipboard();
1248
1253
  const toast = useToast();
1249
1254
  const onCopy = () => {
1250
1255
  setCopied(address2);
1251
1256
  toast.success("Copied!");
1252
1257
  };
1253
- const chainLink = chain.explorerLink("address/" + address2);
1254
- return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
1255
- /* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
1256
- /* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
1257
- /* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
1258
- QRCode,
1259
- {
1260
- margin: "0",
1261
- className: `matchid-qr-code`,
1262
- value: address2
1263
- }
1264
- ) }),
1265
- /* @__PURE__ */ jsx6(
1266
- "a",
1267
- {
1268
- href: chainLink,
1269
- target: "_blank",
1270
- className: `matchid-receive-link`,
1271
- children: address2
1272
- }
1273
- )
1274
- ] }),
1275
- /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
1276
- ] });
1277
- };
1278
- var ImportTokenModal = ({ close }) => {
1279
- const { token } = useUserInfo();
1280
- const [address2, setAddress] = useState7("");
1281
- const [symbol, setSymbol] = useState7("");
1282
- const [decimals, setDecimals] = useState7("");
1283
- const [error, setError] = useState7({});
1284
- const { publicClient, chainId } = useMatchChain();
1285
- const getContractInfo = async () => {
1286
- if (!publicClient) return;
1287
- const erc20Abi = [
1288
- {
1289
- name: "decimals",
1290
- type: "function",
1291
- stateMutability: "view",
1292
- inputs: [],
1293
- outputs: [{ name: "decimals", type: "uint8" }]
1294
- },
1295
- {
1296
- name: "symbol",
1297
- type: "function",
1298
- stateMutability: "view",
1299
- inputs: [],
1300
- outputs: [{ name: "symbol", type: "string" }]
1301
- }
1302
- ];
1303
- const calls = [
1304
- {
1305
- address: address2,
1306
- abi: erc20Abi,
1307
- functionName: "symbol",
1308
- args: []
1309
- },
1310
- {
1311
- address: address2,
1312
- abi: erc20Abi,
1313
- functionName: "decimals",
1314
- args: []
1315
- }
1316
- ];
1317
- try {
1318
- const results = await publicClient.multicall({ contracts: calls });
1319
- console.log("results", results);
1320
- if (!symbol && results[0]?.status == "success") {
1321
- setSymbol(results[0]?.result);
1322
- }
1323
- if (!decimals && results[1]?.status == "success") {
1324
- setDecimals((results[1]?.result).toString());
1325
- }
1326
- } catch (error2) {
1327
- setError({
1328
- address: error2.message
1329
- });
1330
- }
1331
- };
1332
- useEffect6(() => {
1333
- if (address2.length === 42) {
1334
- const reg = /^0x[0-9a-fA-F]{40}$/;
1335
- if (!reg.test(address2)) {
1336
- setError({
1337
- ...error,
1338
- address: "Invalid address"
1339
- });
1340
- } else {
1341
- setError({
1342
- ...error,
1343
- address: ""
1344
- });
1345
- publicClient && getContractInfo();
1346
- }
1347
- }
1348
- }, [address2, publicClient]);
1349
- const [loading, setLoading] = useState7(false);
1350
- const toast = useToast();
1351
- const queryClient2 = useQueryClient();
1352
- const onImport = async () => {
1353
- setLoading(true);
1354
- try {
1355
- const res = await userImportTokenApi({
1356
- chain_id: chainId?.toString() || "",
1357
- symbol,
1358
- address: address2,
1359
- decimals
1360
- });
1361
- if (isSuccess(res)) {
1362
- toast.success("Imported successfully");
1363
- queryClient2.invalidateQueries({
1364
- queryKey: ["match-import-token-list", token, chainId]
1365
- });
1366
- close();
1367
- } else {
1368
- toast.error(res.message);
1369
- }
1370
- } catch (error2) {
1371
- toast.error(error2.message);
1372
- } finally {
1373
- setLoading(false);
1374
- }
1375
- };
1376
- const canImport = useMemo4(() => {
1377
- if (!address2) {
1378
- return false;
1379
- }
1380
- if (!symbol) {
1381
- return false;
1382
- }
1383
- if (decimals.length === 0) {
1384
- return false;
1385
- }
1386
- const reg = /^0x[0-9a-fA-F]{40}$/;
1387
- if (!reg.test(address2)) {
1388
- return false;
1389
- }
1390
- return true;
1391
- }, [error, address2, symbol, decimals]);
1392
- return /* @__PURE__ */ jsxs5("div", { className: `matchid-import-token`, children: [
1393
- /* @__PURE__ */ jsxs5("div", { className: "matchid-import-token-form", children: [
1394
- /* @__PURE__ */ jsx6(Field, { label: "Token Smart Contract", error: error.address, children: /* @__PURE__ */ jsx6(
1395
- Input,
1396
- {
1397
- placeholder: "Enter the Token Smart Contract",
1398
- value: address2,
1399
- onChange: (e) => setAddress(e.target.value),
1400
- maxLength: 42
1401
- }
1402
- ) }),
1403
- /* @__PURE__ */ jsx6(Field, { label: "Token Symbol", error: error.symbol, children: /* @__PURE__ */ jsx6(
1404
- Input,
1405
- {
1406
- placeholder: "Enter the Token Symbol",
1407
- value: symbol,
1408
- onChange: (e) => setSymbol(e.target.value),
1409
- maxLength: 16
1410
- }
1411
- ) }),
1412
- /* @__PURE__ */ jsx6(Field, { label: "Decimals", error: error.decimals, children: /* @__PURE__ */ jsx6(
1413
- Input,
1414
- {
1415
- placeholder: "Enter the Decimals",
1416
- type: "number",
1417
- value: decimals,
1418
- onChange: (e) => setDecimals(e.target.value)
1419
- }
1420
- ) })
1421
- ] }),
1422
- /* @__PURE__ */ jsx6(
1423
- Button,
1424
- {
1425
- size: "lg",
1426
- onClick: onImport,
1427
- block: true,
1428
- loading,
1429
- disabled: !canImport,
1430
- highlight: true,
1431
- children: "Import"
1432
- }
1433
- )
1434
- ] });
1435
- };
1436
- function useMatchWallet() {
1437
- const modal = useModal();
1438
1258
  const showReceiveModal = () => {
1259
+ const chainLink = chain.explorerLink("address/" + address2);
1260
+ const ReceiveModal = () => {
1261
+ return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
1262
+ /* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
1263
+ /* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
1264
+ /* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
1265
+ QRCode,
1266
+ {
1267
+ margin: "0",
1268
+ className: `matchid-qr-code`,
1269
+ value: address2
1270
+ }
1271
+ ) }),
1272
+ /* @__PURE__ */ jsx6(
1273
+ "a",
1274
+ {
1275
+ href: chainLink,
1276
+ target: "_blank",
1277
+ className: `matchid-receive-link`,
1278
+ children: address2
1279
+ }
1280
+ )
1281
+ ] }),
1282
+ /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
1283
+ ] });
1284
+ };
1439
1285
  modal.open({
1440
1286
  title: "Receive",
1441
1287
  content: ReceiveModal
1442
1288
  });
1443
1289
  };
1444
- const showImportTokenModal = () => {
1445
- modal.open({
1446
- title: "Customized Token",
1447
- content: ImportTokenModal
1448
- });
1449
- };
1450
- const showSendListModal = () => {
1451
- modal.open({
1452
- title: "Send",
1453
- content: TokenSendList
1454
- });
1455
- };
1456
1290
  return {
1457
- showReceiveModal,
1458
- showImportTokenModal,
1459
- showSendListModal
1291
+ showReceiveModal
1460
1292
  };
1461
1293
  }
1462
1294
  function useMatchWalletRecords({
1463
- pageSize = 50
1295
+ pageSize = 10
1464
1296
  }) {
1465
1297
  const [hasMore, setHasMore] = useState7(true);
1466
1298
  const [items, setItems] = useState7([]);
1467
1299
  const { chainId } = useMatchChain();
1468
- const hasMoreRef = useRef(hasMore);
1300
+ const chainIdStr = chainId.toString() || "";
1469
1301
  const fetchMoreData = async () => {
1470
- if (!hasMoreRef.current) {
1302
+ if (!hasMore) {
1471
1303
  return;
1472
1304
  }
1473
- const chainIdStr = chainId ? chainId.toString() : "";
1474
1305
  const res = await getUserWalletTransactionsApi({
1475
1306
  chain_id: chainIdStr,
1476
1307
  limit: pageSize,
@@ -1480,14 +1311,12 @@ function useMatchWalletRecords({
1480
1311
  if (res.data && res.data.transactions.length > 0) {
1481
1312
  setItems(items.concat(res.data.transactions));
1482
1313
  }
1483
- hasMoreRef.current = res.data && res.data.transactions.length >= pageSize;
1484
1314
  setHasMore(res.data && res.data.transactions.length >= pageSize);
1485
1315
  }
1486
1316
  };
1487
1317
  const onInit = async () => {
1488
1318
  setItems([]);
1489
1319
  setHasMore(true);
1490
- hasMoreRef.current = true;
1491
1320
  fetchMoreData();
1492
1321
  };
1493
1322
  useEffect6(() => {
@@ -1501,183 +1330,11 @@ function useMatchWalletRecords({
1501
1330
  hasMore
1502
1331
  };
1503
1332
  }
1504
- function useMatchWalletAssets() {
1505
- const { chainId } = useMatchChain();
1506
- const importTokenQuery = useImportTokenListQuery({
1507
- chainId: chainId || 0
1508
- });
1509
- const assetListQuery = useAssetListQuery({
1510
- chainId: chainId || 0
1511
- });
1512
- const mergedAssets = useMemo4(() => {
1513
- if (!assetListQuery.data && !importTokenQuery.data) return [];
1514
- const assetList = (assetListQuery.data || []).map((asset) => ({
1515
- ...asset,
1516
- isAuto: true
1517
- }));
1518
- const importTokens = (importTokenQuery.data || []).map((token) => ({
1519
- ...token,
1520
- isCustom: true
1521
- }));
1522
- const assetMap = /* @__PURE__ */ new Map();
1523
- assetList.forEach((asset) => {
1524
- const key = `${asset.chain_id}-${asset.address.toLowerCase()}`;
1525
- assetMap.set(key, asset);
1526
- });
1527
- importTokens.forEach((token) => {
1528
- const key = `${token.chain_id}-${token.address.toLowerCase()}`;
1529
- if (assetMap.has(key)) {
1530
- const existing = assetMap.get(key);
1531
- assetMap.set(key, {
1532
- ...existing,
1533
- symbol: token.symbol,
1534
- decimals: token.decimals,
1535
- isCustom: true,
1536
- isAuto: existing.isAuto ?? false
1537
- });
1538
- } else {
1539
- assetMap.set(key, token);
1540
- }
1541
- });
1542
- return Array.from(assetMap.values()).sort((a, b) => {
1543
- return (b.isAuto ? 1 : 0) - (a.isAuto ? 1 : 0);
1544
- });
1545
- }, [assetListQuery.data, importTokenQuery.data]);
1546
- return {
1547
- importTokenQuery,
1548
- assetListQuery,
1549
- mergedAssets
1550
- };
1551
- }
1552
- var MULTICALL_LIMIT = 100;
1553
- function useMatchWalletAssetList({
1554
- list
1555
- }) {
1556
- const { publicClient, chain } = useMatchChain();
1557
- const { address: address2 } = useWallet();
1558
- const { assets, setAssets } = useLocalStore_default();
1559
- const nativeToken = list.find((asset) => asset.address.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase()) || {
1560
- chain_id: chain?.id || "",
1561
- address: NATIVE_TOKEN_ADDRESS,
1562
- decimals: 18,
1563
- symbol: chain?.nativeCurrency.symbol,
1564
- name: chain?.nativeCurrency.name,
1565
- balance: 0
1566
- };
1567
- const nativeBalanceQuery = useQuery2({
1568
- queryKey: ["nativeBalance", nativeToken?.chain_id],
1569
- queryFn: async () => {
1570
- if (!nativeToken || !publicClient) return null;
1571
- try {
1572
- return await publicClient.getBalance({
1573
- address: address2
1574
- });
1575
- } catch (error) {
1576
- console.error("Native Token Balance Error:", error);
1577
- return null;
1578
- }
1579
- },
1580
- enabled: !!nativeToken && !!publicClient,
1581
- refetchInterval: 15e3,
1582
- // Refresh every 15 seconds
1583
- retry: 3
1584
- // Retry up to 3 times if failed
1585
- });
1586
- const erc20Tokens = useMemo4(() => list.filter((asset) => asset.address !== NATIVE_TOKEN_ADDRESS), [list]);
1587
- const erc20Abi = [
1588
- {
1589
- "constant": true,
1590
- "inputs": [
1591
- {
1592
- "name": "_owner",
1593
- "type": "address"
1594
- }
1595
- ],
1596
- "name": "balanceOf",
1597
- "outputs": [
1598
- {
1599
- "name": "balance",
1600
- "type": "uint256"
1601
- }
1602
- ],
1603
- "payable": false,
1604
- "stateMutability": "view",
1605
- "type": "function"
1606
- }
1607
- ];
1608
- const erc20BalanceQuery = useQuery2({
1609
- queryKey: ["erc20Balances", erc20Tokens.map((token) => token.address)],
1610
- queryFn: async () => {
1611
- if (!erc20Tokens.length || !publicClient) return [];
1612
- const calls = erc20Tokens.map((token) => ({
1613
- address: token.address,
1614
- abi: erc20Abi,
1615
- functionName: "balanceOf",
1616
- args: [address2]
1617
- }));
1618
- let balances = [];
1619
- for (let i = 0; i < calls.length; i += MULTICALL_LIMIT) {
1620
- const batchCalls = calls.slice(i, i + MULTICALL_LIMIT);
1621
- try {
1622
- const results = await publicClient.multicall({ contracts: batchCalls });
1623
- balances.push(...results);
1624
- } catch (error) {
1625
- console.error("MultiCall Error:", error);
1626
- }
1627
- }
1628
- return balances;
1629
- },
1630
- enabled: erc20Tokens.length > 0 && !!publicClient,
1631
- refetchInterval: 15e3,
1632
- // Refresh every 15 seconds
1633
- retry: 3
1634
- });
1635
- const enrichedAssets = useMemo4(() => {
1636
- if (!list) return [];
1637
- const erc20Balances = erc20BalanceQuery.data || [];
1638
- return list.map((asset) => {
1639
- let balanceValue = "0";
1640
- let balance = 0;
1641
- const decimals = typeof asset.decimals === "string" ? parseInt(asset.decimals) : asset.decimals;
1642
- if (asset.address === NATIVE_TOKEN_ADDRESS) {
1643
- balanceValue = nativeBalanceQuery.data?.toString() || "0";
1644
- balance = nativeBalanceQuery.data ? Number(formatUnits(nativeBalanceQuery.data, decimals)) : 0;
1645
- } else {
1646
- const index = erc20Tokens.findIndex((t) => t.address === asset.address);
1647
- if (index !== -1 && erc20Balances[index] && erc20Balances[index].status === "success") {
1648
- balance = Number(formatUnits(erc20Balances[index].result, decimals));
1649
- balanceValue = erc20Balances[index].result?.toString() || "0";
1650
- }
1651
- }
1652
- const value = asset.isAuto ? balance * (asset.price || 0) : 0;
1653
- return { ...asset, balance, value, balanceValue };
1654
- });
1655
- }, [list, nativeBalanceQuery.data, erc20BalanceQuery.data]);
1656
- useEffect6(() => {
1657
- const list2 = enrichedAssets.sort((a, b) => {
1658
- if (a.address === NATIVE_TOKEN_ADDRESS) return -1;
1659
- if (b.address === NATIVE_TOKEN_ADDRESS) return 1;
1660
- if (a.isAuto && b.isAuto) return b.value - a.value;
1661
- if (a.isAuto) return -1;
1662
- if (b.isAuto) return 1;
1663
- if (a.isCustom && !a.isAuto && a.balance > 0) return -1;
1664
- if (b.isCustom && !b.isAuto && b.balance > 0) return 1;
1665
- return 0;
1666
- });
1667
- setAssets(list2);
1668
- }, [enrichedAssets]);
1669
- return {
1670
- list: assets,
1671
- isLoading: nativeBalanceQuery.isLoading || erc20BalanceQuery.isLoading,
1672
- nativeBalance: nativeBalanceQuery.data,
1673
- erc20Balances: erc20BalanceQuery.data
1674
- };
1675
- }
1676
1333
 
1677
1334
  // src/hooks/useReceipt.tsx
1678
1335
  import { useState as useState8, useCallback as useCallback4, useEffect as useEffect7 } from "react";
1679
- import { useQuery as useQuery3 } from "@tanstack/react-query";
1680
- import { createPublicClient as createPublicClient2, defineChain, http as http2 } from "viem";
1336
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
1337
+ import { createPublicClient, defineChain, http } from "viem";
1681
1338
  var CACHE_TTL = 86400 * 30 * 1e3;
1682
1339
  var MAX_CACHE_SIZE = 500;
1683
1340
  var STORAGE_KEY = "match_receipt_logs";
@@ -1785,7 +1442,7 @@ function useReceipt({
1785
1442
  const cache = useReceiptCache();
1786
1443
  const chain = list?.find((item) => item.id === chainId);
1787
1444
  const [shouldRefetch, setShouldRefetch] = useState8(true);
1788
- const query = useQuery3({
1445
+ const query = useQuery2({
1789
1446
  queryKey: ["match-tx-receipt", hash, chain],
1790
1447
  queryFn: async () => {
1791
1448
  if (!chain || !hash) return false;
@@ -1794,11 +1451,12 @@ function useReceipt({
1794
1451
  return cache.get(cacheKey);
1795
1452
  }
1796
1453
  try {
1797
- const publicClient = createPublicClient2({
1454
+ const publicClient = createPublicClient({
1455
+ //@ts-ignore
1798
1456
  chain: defineChain(chain),
1799
- transport: http2()
1457
+ transport: http()
1800
1458
  });
1801
- const receipt = await publicClient.getTransactionReceipt({ hash });
1459
+ const receipt = await publicClient.getTransaction({ hash });
1802
1460
  if (!receipt) {
1803
1461
  return false;
1804
1462
  }
@@ -1814,243 +1472,14 @@ function useReceipt({
1814
1472
  if (query.data) {
1815
1473
  setShouldRefetch(false);
1816
1474
  }
1817
- }, [query.data]);
1818
- return query;
1819
- }
1820
-
1821
- // src/hooks/useTransaction.tsx
1822
- import { useState as useState9, useCallback as useCallback5, useEffect as useEffect8 } from "react";
1823
- import { useQuery as useQuery4 } from "@tanstack/react-query";
1824
- import { createPublicClient as createPublicClient3, defineChain as defineChain2, http as http3 } from "viem";
1825
- var CACHE_TTL2 = 86400 * 30 * 1e3;
1826
- var MAX_CACHE_SIZE2 = 500;
1827
- var STORAGE_KEY2 = "match_transaction_logs";
1828
- function useTransactionCache() {
1829
- const [cache, setCache] = useState9(/* @__PURE__ */ new Map());
1830
- const isLocalStorageAvailable = (() => {
1831
- try {
1832
- const testKey = "__test__";
1833
- localStorage.setItem(testKey, "1");
1834
- localStorage.removeItem(testKey);
1835
- return true;
1836
- } catch (e) {
1837
- return false;
1838
- }
1839
- })();
1840
- useEffect8(() => {
1841
- if (isLocalStorageAvailable) {
1842
- try {
1843
- const storedData = localStorage.getItem(STORAGE_KEY2);
1844
- if (storedData) {
1845
- try {
1846
- const parsed = JSON.parse(storedData);
1847
- const now = Date.now();
1848
- const validEntries = Object.entries(parsed).filter(([_, entry]) => typeof entry === "object" && entry !== null && "timestamp" in entry && now - entry.timestamp <= CACHE_TTL2).map(([key, entry]) => [key, entry]);
1849
- setCache(new Map(validEntries));
1850
- } catch (e) {
1851
- console.error("Failed to parse cache from localStorage:", e);
1852
- }
1853
- }
1854
- } catch (e) {
1855
- console.error("Failed to load cache from localStorage:", e);
1856
- }
1857
- }
1858
- }, []);
1859
- const updateLocalStorage = useCallback5((updatedCache) => {
1860
- if (isLocalStorageAvailable) {
1861
- try {
1862
- const storedData = localStorage.getItem(STORAGE_KEY2);
1863
- let parsed = {};
1864
- if (storedData) {
1865
- parsed = JSON.parse(storedData);
1866
- }
1867
- updatedCache.forEach((entry, key) => {
1868
- parsed[key] = entry;
1869
- });
1870
- localStorage.setItem(STORAGE_KEY2, JSON.stringify(parsed));
1871
- } catch (e) {
1872
- console.error("Failed to update localStorage:", e);
1873
- }
1874
- }
1875
- }, []);
1876
- const set = useCallback5((key, value) => {
1877
- const now = Date.now();
1878
- const newCache = new Map(cache);
1879
- newCache.forEach((entry, k) => {
1880
- if (now - entry.timestamp > CACHE_TTL2) {
1881
- newCache.delete(k);
1882
- }
1883
- });
1884
- if (newCache.size >= MAX_CACHE_SIZE2) {
1885
- const firstKey = newCache.keys().next().value;
1886
- if (firstKey !== void 0) {
1887
- newCache.delete(firstKey);
1888
- }
1889
- }
1890
- newCache.set(key, { value, timestamp: now });
1891
- setCache(newCache);
1892
- updateLocalStorage(newCache);
1893
- }, [cache, updateLocalStorage]);
1894
- const get = useCallback5((key) => {
1895
- const entry = cache.get(key);
1896
- if (entry) {
1897
- if (Date.now() - entry.timestamp > CACHE_TTL2) {
1898
- const newCache = new Map(cache);
1899
- newCache.delete(key);
1900
- setCache(newCache);
1901
- updateLocalStorage(newCache);
1902
- return void 0;
1903
- }
1904
- return entry.value;
1905
- }
1906
- return void 0;
1907
- }, [cache, updateLocalStorage]);
1908
- const del = useCallback5((key) => {
1909
- if (cache.has(key)) {
1910
- const newCache = new Map(cache);
1911
- newCache.delete(key);
1912
- setCache(newCache);
1913
- updateLocalStorage(newCache);
1914
- }
1915
- }, [cache, updateLocalStorage]);
1916
- const clear = useCallback5(() => {
1917
- setCache(/* @__PURE__ */ new Map());
1918
- if (isLocalStorageAvailable) {
1919
- localStorage.removeItem(STORAGE_KEY2);
1920
- }
1921
- }, [isLocalStorageAvailable]);
1922
- return { set, get, del, clear };
1923
- }
1924
- function useTransaction({
1925
- chainId,
1926
- hash
1927
- }) {
1928
- const { list } = useMatchChain();
1929
- const cache = useTransactionCache();
1930
- const chain = list?.find((item) => item.id === chainId);
1931
- const [shouldRefetch, setShouldRefetch] = useState9(true);
1932
- const query = useQuery4({
1933
- queryKey: ["match-tx-transaction", hash, chain],
1934
- queryFn: async () => {
1935
- if (!chain || !hash) return false;
1936
- const cacheKey = `${chain.id}-${hash}`;
1937
- if (cache.get(cacheKey)) {
1938
- return cache.get(cacheKey);
1939
- }
1940
- try {
1941
- const publicClient = createPublicClient3({
1942
- chain: defineChain2(chain),
1943
- transport: http3()
1944
- });
1945
- const transaction = await publicClient.getTransaction({ hash });
1946
- if (!transaction) {
1947
- return false;
1948
- }
1949
- cache.set(cacheKey, transaction);
1950
- return transaction;
1951
- } catch (e) {
1952
- return false;
1953
- }
1954
- },
1955
- refetchInterval: shouldRefetch ? 1e4 : false
1956
- });
1957
- useEffect8(() => {
1958
- if (query.data) {
1959
- setShouldRefetch(false);
1960
- }
1961
- }, [query.data]);
1962
- return query;
1963
- }
1964
-
1965
- // src/store/useModalStore.ts
1966
- import { create as create3 } from "zustand";
1967
-
1968
- // src/hooks/useConfig.tsx
1969
- import { jsx as jsx7 } from "react/jsx-runtime";
1970
- var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
1971
- var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
1972
- function useWalletConfig() {
1973
- const isDownMd = useDownMd();
1974
- const walletMap = {
1975
- evm: {
1976
- icon: /* @__PURE__ */ jsx7(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
1977
- activeIcon: /* @__PURE__ */ jsx7(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
1978
- name: "EVM",
1979
- method: "evm"
1980
- },
1981
- sol: {
1982
- icon: /* @__PURE__ */ jsx7(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
1983
- activeIcon: /* @__PURE__ */ jsx7(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
1984
- name: "SOL",
1985
- method: "sol"
1986
- },
1987
- btc: {
1988
- icon: /* @__PURE__ */ jsx7(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
1989
- activeIcon: /* @__PURE__ */ jsx7(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
1990
- name: "BTC",
1991
- method: "btc"
1992
- },
1993
- tron: {
1994
- icon: /* @__PURE__ */ jsx7(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
1995
- activeIcon: /* @__PURE__ */ jsx7(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
1996
- name: "TRON",
1997
- method: "tron"
1998
- },
1999
- ton: {
2000
- icon: /* @__PURE__ */ jsx7(TonLightIcon, { size: isDownMd ? 36 : 40 }),
2001
- activeIcon: /* @__PURE__ */ jsx7(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
2002
- name: "TON",
2003
- method: "ton"
2004
- }
2005
- };
2006
- return {
2007
- walletMap
2008
- };
1475
+ }, [query.data]);
1476
+ return query;
2009
1477
  }
2010
1478
 
2011
- // src/store/useModalStore.ts
2012
- var useSOLModalStore = create3((set) => ({
2013
- isOpen: false,
2014
- type: "",
2015
- open: (type) => set({ isOpen: true, type }),
2016
- close: () => set({ isOpen: false })
2017
- }));
2018
- var useTRONModalStore = create3((set) => ({
2019
- isOpen: false,
2020
- type: "",
2021
- open: (type) => set({ isOpen: true, type }),
2022
- close: () => set({ isOpen: false })
2023
- }));
2024
- var useTONModalStore = create3((set) => ({
2025
- isOpen: false,
2026
- type: "",
2027
- open: (type) => set({ isOpen: true, type }),
2028
- close: () => set({ isOpen: false })
2029
- }));
2030
- var useBTCModalStore = create3((set) => ({
2031
- isOpen: false,
2032
- type: "",
2033
- open: (type) => set({ isOpen: true, type }),
2034
- close: () => set({ isOpen: false })
2035
- }));
2036
- var useCEXBindModalStore = create3((set) => ({
2037
- type: "",
2038
- isOpen: false,
2039
- open: (type) => set({ isOpen: true, type }),
2040
- close: () => set({ isOpen: false })
2041
- }));
2042
- var useWalletModalStore = create3((set) => ({
2043
- isOpen: false,
2044
- type: "",
2045
- methods: [],
2046
- open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
2047
- close: () => set({ isOpen: false })
2048
- }));
2049
-
2050
1479
  // src/components/CEXBindModal/index.tsx
2051
- import { useEffect as useEffect9, useMemo as useMemo5, useState as useState10 } from "react";
1480
+ import { useEffect as useEffect8, useMemo as useMemo5, useState as useState9 } from "react";
2052
1481
  import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
2053
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1482
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
2054
1483
  function CEXBindModal({
2055
1484
  onClose,
2056
1485
  type,
@@ -2059,16 +1488,16 @@ function CEXBindModal({
2059
1488
  }) {
2060
1489
  const intl = useIntl2();
2061
1490
  const { events } = useMatch();
2062
- const [APIPassphrase, setAPIPassphrase] = useState10("");
1491
+ const [APIPassphrase, setAPIPassphrase] = useState9("");
2063
1492
  const { refreshOverview } = useUserInfo();
2064
- const [loading, setLoading] = useState10(false);
2065
- const [key, setKey] = useState10("");
2066
- const [secret, setSecret] = useState10("");
2067
- const [error, setError] = useState10("");
1493
+ const [loading, setLoading] = useState9(false);
1494
+ const [key, setKey] = useState9("");
1495
+ const [secret, setSecret] = useState9("");
1496
+ const [error, setError] = useState9("");
2068
1497
  const needPassphrase = useMemo5(() => {
2069
1498
  return ["bitget", "okx"].includes(type.toLowerCase());
2070
1499
  }, [type]);
2071
- useEffect9(() => {
1500
+ useEffect8(() => {
2072
1501
  if (isOpen) {
2073
1502
  setSecret("");
2074
1503
  setKey("");
@@ -2105,20 +1534,20 @@ function CEXBindModal({
2105
1534
  setLoading(false);
2106
1535
  }
2107
1536
  };
2108
- return /* @__PURE__ */ jsx8(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
1537
+ return /* @__PURE__ */ jsx7(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
2109
1538
  id: "CEXBindTitle"
2110
1539
  }, {
2111
1540
  type
2112
1541
  }), ...props, children: /* @__PURE__ */ jsxs6("div", { className: "matchid-cex-modal", children: [
2113
1542
  /* @__PURE__ */ jsxs6("div", { children: [
2114
- /* @__PURE__ */ jsx8("p", { children: /* @__PURE__ */ jsx8(FormattedMessage2, { id: "CEXBindAttention" }) }),
2115
- /* @__PURE__ */ jsx8("p", { children: /* @__PURE__ */ jsx8(FormattedMessage2, { id: "CEXBindTips1" }) }),
2116
- /* @__PURE__ */ jsx8("p", { children: /* @__PURE__ */ jsx8(FormattedMessage2, { id: "CEXBindTips2" }) }),
2117
- /* @__PURE__ */ jsx8("p", { children: /* @__PURE__ */ jsx8(FormattedMessage2, { id: "CEXBindTips3" }) })
1543
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindAttention" }) }),
1544
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips1" }) }),
1545
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips2" }) }),
1546
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips3" }) })
2118
1547
  ] }),
2119
- /* @__PURE__ */ jsx8(Field, { label: intl.formatMessage({
1548
+ /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2120
1549
  id: "CEXBindApiKey"
2121
- }), children: /* @__PURE__ */ jsx8(
1550
+ }), children: /* @__PURE__ */ jsx7(
2122
1551
  Input,
2123
1552
  {
2124
1553
  value: key,
@@ -2126,9 +1555,9 @@ function CEXBindModal({
2126
1555
  placeholder: "**** **** ****"
2127
1556
  }
2128
1557
  ) }),
2129
- /* @__PURE__ */ jsx8(Field, { label: intl.formatMessage({
1558
+ /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2130
1559
  id: "CEXBindApiSecretKey"
2131
- }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx8(
1560
+ }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx7(
2132
1561
  Input,
2133
1562
  {
2134
1563
  value: secret,
@@ -2136,9 +1565,9 @@ function CEXBindModal({
2136
1565
  placeholder: "**** **** ****"
2137
1566
  }
2138
1567
  ) }),
2139
- needPassphrase && /* @__PURE__ */ jsx8(Field, { error, label: intl.formatMessage({
1568
+ needPassphrase && /* @__PURE__ */ jsx7(Field, { error, label: intl.formatMessage({
2140
1569
  id: "CEXBindApiPassphrase"
2141
- }), children: /* @__PURE__ */ jsx8(
1570
+ }), children: /* @__PURE__ */ jsx7(
2142
1571
  Input,
2143
1572
  {
2144
1573
  value: APIPassphrase,
@@ -2146,7 +1575,7 @@ function CEXBindModal({
2146
1575
  placeholder: "**** **** ****"
2147
1576
  }
2148
1577
  ) }),
2149
- /* @__PURE__ */ jsx8(
1578
+ /* @__PURE__ */ jsx7(
2150
1579
  Button,
2151
1580
  {
2152
1581
  onClick: SubmitApi,
@@ -2154,14 +1583,14 @@ function CEXBindModal({
2154
1583
  block: true,
2155
1584
  loading,
2156
1585
  disabled: !key || !secret,
2157
- children: /* @__PURE__ */ jsx8(FormattedMessage2, { id: "continue" })
1586
+ children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "continue" })
2158
1587
  }
2159
1588
  )
2160
1589
  ] }) });
2161
1590
  }
2162
1591
 
2163
1592
  // src/context/BusinessProvider.tsx
2164
- import { Fragment, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1593
+ import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
2165
1594
  function BusinessProvider({ children }) {
2166
1595
  const { overview, token } = useUserInfo();
2167
1596
  const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
@@ -2170,12 +1599,13 @@ function BusinessProvider({ children }) {
2170
1599
  const { type: BTCType, isOpen: BTCIsOpen, close: BTCClose } = useBTCModalStore();
2171
1600
  const { type: CEXType, isOpen: CEXIsOpen, close: CEXClose } = useCEXBindModalStore();
2172
1601
  const WalletModalStore = useWalletModalStore();
1602
+ const { close: HashPanelClose, ...hashPanelProps } = useHashPanelStore();
2173
1603
  const walletModalClose = (func) => {
2174
1604
  WalletModalStore.close();
2175
1605
  func();
2176
1606
  };
2177
1607
  return /* @__PURE__ */ jsxs7(Fragment, { children: [
2178
- /* @__PURE__ */ jsx9(
1608
+ /* @__PURE__ */ jsx8(
2179
1609
  SOLModal,
2180
1610
  {
2181
1611
  isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
@@ -2185,7 +1615,7 @@ function BusinessProvider({ children }) {
2185
1615
  zIndex: 199
2186
1616
  }
2187
1617
  ),
2188
- /* @__PURE__ */ jsx9(
1618
+ /* @__PURE__ */ jsx8(
2189
1619
  TRONModal,
2190
1620
  {
2191
1621
  isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
@@ -2195,7 +1625,7 @@ function BusinessProvider({ children }) {
2195
1625
  zIndex: 199
2196
1626
  }
2197
1627
  ),
2198
- /* @__PURE__ */ jsx9(
1628
+ /* @__PURE__ */ jsx8(
2199
1629
  TONModal,
2200
1630
  {
2201
1631
  isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
@@ -2205,7 +1635,7 @@ function BusinessProvider({ children }) {
2205
1635
  zIndex: 199
2206
1636
  }
2207
1637
  ),
2208
- /* @__PURE__ */ jsx9(
1638
+ /* @__PURE__ */ jsx8(
2209
1639
  BTCModal,
2210
1640
  {
2211
1641
  isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
@@ -2215,7 +1645,7 @@ function BusinessProvider({ children }) {
2215
1645
  zIndex: 199
2216
1646
  }
2217
1647
  ),
2218
- /* @__PURE__ */ jsx9(
1648
+ /* @__PURE__ */ jsx8(
2219
1649
  CEXBindModal,
2220
1650
  {
2221
1651
  isOpen: CEXIsOpen && (!!token && !!overview),
@@ -2224,7 +1654,8 @@ function BusinessProvider({ children }) {
2224
1654
  zIndex: 199
2225
1655
  }
2226
1656
  ),
2227
- /* @__PURE__ */ jsx9(
1657
+ /* @__PURE__ */ jsx8(HashPanel_default, { onClose: HashPanelClose, ...hashPanelProps }),
1658
+ /* @__PURE__ */ jsx8(
2228
1659
  WalletModal,
2229
1660
  {
2230
1661
  isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
@@ -2239,14 +1670,14 @@ function BusinessProvider({ children }) {
2239
1670
  }
2240
1671
 
2241
1672
  // src/context/index.tsx
2242
- import { jsx as jsx10 } from "react/jsx-runtime";
1673
+ import { jsx as jsx9 } from "react/jsx-runtime";
2243
1674
  var Providers = ({ children }) => {
2244
- return /* @__PURE__ */ jsx10(ToastProvider, { children: /* @__PURE__ */ jsx10(ModalProvider, { children: /* @__PURE__ */ jsx10(BusinessProvider, { children }) }) });
1675
+ return /* @__PURE__ */ jsx9(ToastProvider, { children: /* @__PURE__ */ jsx9(ModalProvider, { children: /* @__PURE__ */ jsx9(BusinessProvider, { children }) }) });
2245
1676
  };
2246
1677
  var context_default = Providers;
2247
1678
 
2248
1679
  // src/hooks/useWalletInit.ts
2249
- import { useEffect as useEffect10, useRef as useRef2 } from "react";
1680
+ import { useEffect as useEffect9, useRef } from "react";
2250
1681
 
2251
1682
  // src/utils/wallet.ts
2252
1683
  var sendMessage = ({ method, data, resolve, reject, timeout }) => {
@@ -2279,11 +1710,11 @@ function useWalletInit({
2279
1710
  }) {
2280
1711
  const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
2281
1712
  const { setWalletReady, walletReady } = useStore_default();
2282
- const iframeReadyRef = useRef2(walletReady);
2283
- useEffect10(() => {
1713
+ const iframeReadyRef = useRef(walletReady);
1714
+ useEffect9(() => {
2284
1715
  setWallet(config);
2285
1716
  }, [config]);
2286
- useEffect10(() => {
1717
+ useEffect9(() => {
2287
1718
  matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
2288
1719
  iframeReadyRef.current = walletReady;
2289
1720
  if (iframeReadyRef.current) {
@@ -2300,7 +1731,7 @@ function useWalletInit({
2300
1731
  onReady();
2301
1732
  }
2302
1733
  }, [walletReady]);
2303
- useEffect10(() => {
1734
+ useEffect9(() => {
2304
1735
  if (!endpoints.auth || !appid || !token || !config) {
2305
1736
  const existingIframe = getWalletIframe();
2306
1737
  if (existingIframe) {
@@ -2400,7 +1831,7 @@ function useWalletInit({
2400
1831
  }
2401
1832
  }
2402
1833
  }, [endpoints.auth, appid, token, config]);
2403
- useEffect10(() => {
1834
+ useEffect9(() => {
2404
1835
  const messageHandle = async (e) => {
2405
1836
  if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
2406
1837
  return;
@@ -2481,7 +1912,7 @@ function useWalletInit({
2481
1912
  }
2482
1913
 
2483
1914
  // src/hooks/useInit.tsx
2484
- import { useEffect as useEffect11, useRef as useRef3 } from "react";
1915
+ import { useEffect as useEffect10, useRef as useRef2 } from "react";
2485
1916
  function useInit({
2486
1917
  theme,
2487
1918
  appid,
@@ -2501,23 +1932,23 @@ function useInit({
2501
1932
  locale: realLocale
2502
1933
  } = useLocalStore_default();
2503
1934
  const walletModalStore = useWalletModalStore();
2504
- const overviewLoadingRef = useRef3(false);
1935
+ const overviewLoadingRef = useRef2(false);
2505
1936
  const searchParams = new URLSearchParams(window.location.search);
2506
1937
  const matchToken = searchParams.get("matchToken");
2507
1938
  const realEndpoints = endpoints || env_default.endpoints;
2508
- useEffect11(() => {
1939
+ useEffect10(() => {
2509
1940
  setTheme(theme);
2510
1941
  }, [theme]);
2511
- useEffect11(() => {
1942
+ useEffect10(() => {
2512
1943
  setAppid(appid);
2513
1944
  }, [appid]);
2514
- useEffect11(() => {
1945
+ useEffect10(() => {
2515
1946
  setEndpoints(realEndpoints);
2516
1947
  }, [realEndpoints]);
2517
- useEffect11(() => {
1948
+ useEffect10(() => {
2518
1949
  setLocale(locale || "en");
2519
1950
  }, [locale]);
2520
- useEffect11(() => {
1951
+ useEffect10(() => {
2521
1952
  if (matchToken) {
2522
1953
  const tokenData = JSON.parse(atob(matchToken));
2523
1954
  if (tokenData && tokenData.mid && tokenData.token) {
@@ -2528,7 +1959,7 @@ function useInit({
2528
1959
  }
2529
1960
  }
2530
1961
  }, [matchToken]);
2531
- useEffect11(() => {
1962
+ useEffect10(() => {
2532
1963
  const onLoginMessage = (event) => {
2533
1964
  const res = event.data;
2534
1965
  if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
@@ -2565,7 +1996,7 @@ function useInit({
2565
1996
  overviewLoadingRef.current = false;
2566
1997
  }
2567
1998
  };
2568
- useEffect11(() => {
1999
+ useEffect10(() => {
2569
2000
  if (token) {
2570
2001
  loadOverview();
2571
2002
  }
@@ -3081,7 +2512,7 @@ var messages = {
3081
2512
  };
3082
2513
 
3083
2514
  // src/MatchContext.tsx
3084
- import { jsx as jsx11 } from "react/jsx-runtime";
2515
+ import { jsx as jsx10 } from "react/jsx-runtime";
3085
2516
  var queryClient = new QueryClient();
3086
2517
  var MatchContext = createContext3(void 0);
3087
2518
  var MatchProvider = ({
@@ -3103,7 +2534,7 @@ var MatchProvider = ({
3103
2534
  useWalletInit({
3104
2535
  config: wallet
3105
2536
  });
3106
- return /* @__PURE__ */ jsx11(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx11(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx11(
2537
+ return /* @__PURE__ */ jsx10(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx10(
3107
2538
  MatchContext.Provider,
3108
2539
  {
3109
2540
  value: {
@@ -3114,7 +2545,7 @@ var MatchProvider = ({
3114
2545
  theme,
3115
2546
  locale: realLocale
3116
2547
  },
3117
- children: /* @__PURE__ */ jsx11(context_default, { children })
2548
+ children: /* @__PURE__ */ jsx10(context_default, { children })
3118
2549
  }
3119
2550
  ) }) });
3120
2551
  };
@@ -3380,23 +2811,29 @@ function useUserInfo() {
3380
2811
  }
3381
2812
 
3382
2813
  // src/components/EmailModal/StepVerify.tsx
3383
- import { useEffect as useEffect13, useMemo as useMemo7, useRef as useRef4, useState as useState12 } from "react";
2814
+ import { useEffect as useEffect12, useMemo as useMemo7, useRef as useRef3, useState as useState11 } from "react";
2815
+
2816
+ // src/config/index.tsx
2817
+ var EMAIL_INTERVAL = 60;
2818
+ var EMAIL_CODE_LENGTH = 6;
2819
+
2820
+ // src/components/EmailModal/StepVerify.tsx
3384
2821
  import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
3385
- import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
2822
+ import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
3386
2823
  function StepVerify(props) {
3387
2824
  const intl = useIntl3();
3388
2825
  const { getLoginEmailCode, loginByEmail } = useUserInfo();
3389
- const [error, setError] = useState12("");
3390
- const [code, setCode] = useState12("");
3391
- const [sending, setSending] = useState12(false);
3392
- const [submitting, setSubmitting] = useState12(false);
3393
- const sendTimeRef = useRef4(0);
3394
- const [sendBtnText, setSendBtnText] = useState12(intl.formatMessage({
2826
+ const [error, setError] = useState11("");
2827
+ const [code, setCode] = useState11("");
2828
+ const [sending, setSending] = useState11(false);
2829
+ const [submitting, setSubmitting] = useState11(false);
2830
+ const sendTimeRef = useRef3(0);
2831
+ const [sendBtnText, setSendBtnText] = useState11(intl.formatMessage({
3395
2832
  id: "send"
3396
2833
  }));
3397
2834
  const intervalTime = EMAIL_INTERVAL;
3398
2835
  const codeLength = EMAIL_CODE_LENGTH;
3399
- const intervalRef = useRef4(null);
2836
+ const intervalRef = useRef3(null);
3400
2837
  const isDownMd = useDownMd();
3401
2838
  const onSend = async () => {
3402
2839
  if (sendTimeRef.current > 0) {
@@ -3427,7 +2864,7 @@ function StepVerify(props) {
3427
2864
  setSending(false);
3428
2865
  }
3429
2866
  };
3430
- useEffect13(() => {
2867
+ useEffect12(() => {
3431
2868
  onSend();
3432
2869
  return () => {
3433
2870
  if (intervalRef.current) {
@@ -3461,15 +2898,15 @@ function StepVerify(props) {
3461
2898
  };
3462
2899
  return /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-box", children: [
3463
2900
  /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header", children: [
3464
- /* @__PURE__ */ jsx12("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx12(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
2901
+ /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx11(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
3465
2902
  /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-header-content", children: [
3466
- /* @__PURE__ */ jsx12("div", { className: "matchid-email-verify-header-value", children: props.email }),
3467
- /* @__PURE__ */ jsx12("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx12(FormattedMessage3, { id: "sendEmailTips" }) })
2903
+ /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-value", children: props.email }),
2904
+ /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "sendEmailTips" }) })
3468
2905
  ] })
3469
2906
  ] }),
3470
- /* @__PURE__ */ jsx12(Field, { label: intl.formatMessage({
2907
+ /* @__PURE__ */ jsx11(Field, { label: intl.formatMessage({
3471
2908
  id: "verificationCode"
3472
- }), error, children: /* @__PURE__ */ jsx12(
2909
+ }), error, children: /* @__PURE__ */ jsx11(
3473
2910
  Input,
3474
2911
  {
3475
2912
  placeholder: intl.formatMessage({
@@ -3479,7 +2916,7 @@ function StepVerify(props) {
3479
2916
  maxLength: codeLength,
3480
2917
  onChange: (e) => setCode(e.target.value),
3481
2918
  value: code,
3482
- after: /* @__PURE__ */ jsx12(
2919
+ after: /* @__PURE__ */ jsx11(
3483
2920
  Button,
3484
2921
  {
3485
2922
  highlight: true,
@@ -3498,13 +2935,13 @@ function StepVerify(props) {
3498
2935
  )
3499
2936
  }
3500
2937
  ) }),
3501
- /* @__PURE__ */ jsx12(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx12(FormattedMessage3, { id: "continue" }) })
2938
+ /* @__PURE__ */ jsx11(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "continue" }) })
3502
2939
  ] });
3503
2940
  }
3504
2941
 
3505
2942
  // src/components/EmailModal/index.tsx
3506
2943
  import { useIntl as useIntl4 } from "react-intl";
3507
- import { jsx as jsx13 } from "react/jsx-runtime";
2944
+ import { jsx as jsx12 } from "react/jsx-runtime";
3508
2945
  function EmailModal({
3509
2946
  isOpen = false,
3510
2947
  width = 480,
@@ -3512,16 +2949,16 @@ function EmailModal({
3512
2949
  onBack,
3513
2950
  onLogin
3514
2951
  }) {
3515
- const [step, setStep] = useState13("input");
3516
- const [emailVal, setEmailVal] = useState13("");
2952
+ const [step, setStep] = useState12("input");
2953
+ const [emailVal, setEmailVal] = useState12("");
3517
2954
  const intl = useIntl4();
3518
- useEffect14(() => {
2955
+ useEffect13(() => {
3519
2956
  if (!isOpen) {
3520
2957
  setStep("input");
3521
2958
  setEmailVal("");
3522
2959
  }
3523
2960
  }, [isOpen]);
3524
- return /* @__PURE__ */ jsx13(
2961
+ return /* @__PURE__ */ jsx12(
3525
2962
  ModalWithHeader,
3526
2963
  {
3527
2964
  isOpen,
@@ -3531,22 +2968,22 @@ function EmailModal({
3531
2968
  id: "email"
3532
2969
  }),
3533
2970
  onBack: step == "verify" ? () => setStep("input") : onBack,
3534
- children: step === "input" ? /* @__PURE__ */ jsx13(StepEmail, { email: emailVal, onContinue: (email) => {
2971
+ children: step === "input" ? /* @__PURE__ */ jsx12(StepEmail, { email: emailVal, onContinue: (email) => {
3535
2972
  setEmailVal(email);
3536
2973
  setStep("verify");
3537
- } }) : /* @__PURE__ */ jsx13(StepVerify, { email: emailVal, onSuccess: onLogin })
2974
+ } }) : /* @__PURE__ */ jsx12(StepVerify, { email: emailVal, onSuccess: onLogin })
3538
2975
  }
3539
2976
  );
3540
2977
  }
3541
2978
 
3542
2979
  // src/components/LoginBox/index.tsx
3543
- import { useMemo as useMemo8, useState as useState14 } from "react";
2980
+ import { useMemo as useMemo8, useState as useState13 } from "react";
3544
2981
  import { FormattedMessage as FormattedMessage4, useIntl as useIntl5 } from "react-intl";
3545
2982
 
3546
2983
  // src/hooks/useAppConfig.ts
3547
- import { useQuery as useQuery5 } from "@tanstack/react-query";
2984
+ import { useQuery as useQuery3 } from "@tanstack/react-query";
3548
2985
  function useAppConfig() {
3549
- const query = useQuery5({
2986
+ const query = useQuery3({
3550
2987
  queryKey: ["appConfig"],
3551
2988
  queryFn: async () => {
3552
2989
  const res = await getAppConfigApi();
@@ -3564,7 +3001,7 @@ function useAppConfig() {
3564
3001
  }
3565
3002
 
3566
3003
  // src/components/LoginBox/index.tsx
3567
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
3004
+ import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
3568
3005
  var RecommendItem = ({
3569
3006
  icon,
3570
3007
  name,
@@ -3576,17 +3013,17 @@ var RecommendItem = ({
3576
3013
  return /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method", children: [
3577
3014
  /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-item", onClick, children: [
3578
3015
  /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-content", children: [
3579
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-recommend-method-icon", children: icon }),
3580
- /* @__PURE__ */ jsx14("span", { className: "matchid-login-recommend-method-name", children: name })
3016
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-method-icon", children: icon }),
3017
+ /* @__PURE__ */ jsx13("span", { className: "matchid-login-recommend-method-name", children: name })
3581
3018
  ] }),
3582
- footer ? footer : children ? /* @__PURE__ */ jsx14(
3019
+ footer ? footer : children ? /* @__PURE__ */ jsx13(
3583
3020
  ArrowDownIcon,
3584
3021
  {
3585
3022
  className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
3586
3023
  size: 20,
3587
3024
  color: "var(--matchid-arrow-color)"
3588
3025
  }
3589
- ) : /* @__PURE__ */ jsx14(
3026
+ ) : /* @__PURE__ */ jsx13(
3590
3027
  ArrowRightIcon,
3591
3028
  {
3592
3029
  className: "matchid-login-recommend-method-arrow",
@@ -3595,7 +3032,7 @@ var RecommendItem = ({
3595
3032
  }
3596
3033
  )
3597
3034
  ] }),
3598
- children && /* @__PURE__ */ jsx14(
3035
+ children && /* @__PURE__ */ jsx13(
3599
3036
  "div",
3600
3037
  {
3601
3038
  className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
@@ -3653,62 +3090,62 @@ function LoginBox({
3653
3090
  walletMethods: walletMethodList
3654
3091
  };
3655
3092
  }, [config.platform, recommendMethods, methods, walletMethods]);
3656
- const [emailOpen, setEmailOpen] = useState14(false);
3093
+ const [emailOpen, setEmailOpen] = useState13(false);
3657
3094
  const { login } = useUserInfo();
3658
- const [showWallet, setShowWallet] = useState14(false);
3095
+ const [showWallet, setShowWallet] = useState13(false);
3659
3096
  const intl = useIntl5();
3660
3097
  const isDownMd = useDownMd();
3661
3098
  const methodMap = {
3662
3099
  wallet: {
3663
- icon: /* @__PURE__ */ jsx14(WalletIcon, { size: isDownMd ? 36 : 40 }),
3100
+ icon: /* @__PURE__ */ jsx13(WalletIcon, { size: isDownMd ? 36 : 40 }),
3664
3101
  name: intl.formatMessage({ id: "wallet" }),
3665
3102
  onClick: () => setShowWallet(!showWallet),
3666
3103
  type: "wallet"
3667
3104
  },
3668
3105
  email: {
3669
- icon: /* @__PURE__ */ jsx14(EmailIcon, { size: isDownMd ? 36 : 40 }),
3106
+ icon: /* @__PURE__ */ jsx13(EmailIcon, { size: isDownMd ? 36 : 40 }),
3670
3107
  name: intl.formatMessage({ id: "email" }),
3671
3108
  onClick: () => {
3672
3109
  setEmailOpen(true);
3673
3110
  }
3674
3111
  },
3675
3112
  google: {
3676
- icon: /* @__PURE__ */ jsx14(GoogleIcon, { size: isDownMd ? 36 : 40 }),
3113
+ icon: /* @__PURE__ */ jsx13(GoogleIcon, { size: isDownMd ? 36 : 40 }),
3677
3114
  name: "Google",
3678
3115
  onClick: () => login("google")
3679
3116
  },
3680
3117
  twitter: {
3681
- icon: /* @__PURE__ */ jsx14(XIcon, { size: isDownMd ? 36 : 40 }),
3118
+ icon: /* @__PURE__ */ jsx13(XIcon, { size: isDownMd ? 36 : 40 }),
3682
3119
  name: "X",
3683
3120
  onClick: () => login("twitter")
3684
3121
  },
3685
3122
  telegram: {
3686
- icon: /* @__PURE__ */ jsx14(TelegramIcon, { size: isDownMd ? 36 : 40 }),
3123
+ icon: /* @__PURE__ */ jsx13(TelegramIcon, { size: isDownMd ? 36 : 40 }),
3687
3124
  name: "Telegram",
3688
3125
  onClick: () => login("telegram")
3689
3126
  },
3690
3127
  github: {
3691
- icon: /* @__PURE__ */ jsx14(GithubIcon, { size: isDownMd ? 36 : 40 }),
3128
+ icon: /* @__PURE__ */ jsx13(GithubIcon, { size: isDownMd ? 36 : 40 }),
3692
3129
  name: "Github",
3693
3130
  onClick: () => login("github")
3694
3131
  },
3695
3132
  discord: {
3696
- icon: /* @__PURE__ */ jsx14(DiscordIcon, { size: isDownMd ? 36 : 40 }),
3133
+ icon: /* @__PURE__ */ jsx13(DiscordIcon, { size: isDownMd ? 36 : 40 }),
3697
3134
  name: "Discord",
3698
3135
  onClick: () => login("discord")
3699
3136
  },
3700
3137
  linkedin: {
3701
- icon: /* @__PURE__ */ jsx14(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
3138
+ icon: /* @__PURE__ */ jsx13(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
3702
3139
  name: "LinkedIn",
3703
3140
  onClick: () => login("linkedin")
3704
3141
  },
3705
3142
  facebook: {
3706
- icon: /* @__PURE__ */ jsx14(FacebookIcon, { size: isDownMd ? 36 : 40 }),
3143
+ icon: /* @__PURE__ */ jsx13(FacebookIcon, { size: isDownMd ? 36 : 40 }),
3707
3144
  name: "Facebook",
3708
3145
  onClick: () => login("facebook")
3709
3146
  },
3710
3147
  youtube: {
3711
- icon: /* @__PURE__ */ jsx14(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
3148
+ icon: /* @__PURE__ */ jsx13(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
3712
3149
  name: "Youtube",
3713
3150
  onClick: () => login("youtube")
3714
3151
  }
@@ -3716,8 +3153,8 @@ function LoginBox({
3716
3153
  const { walletMap } = useWalletConfig();
3717
3154
  return /* @__PURE__ */ jsxs9(Fragment2, { children: [
3718
3155
  (!inModal || !emailOpen) && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-box", children: [
3719
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
3720
- return /* @__PURE__ */ jsx14(
3156
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
3157
+ return /* @__PURE__ */ jsx13(
3721
3158
  RecommendItem,
3722
3159
  {
3723
3160
  icon: methodMap[m]?.icon,
@@ -3725,8 +3162,8 @@ function LoginBox({
3725
3162
  onClick: methodMap[m]?.onClick,
3726
3163
  showChildren: m == "wallet" && showWallet,
3727
3164
  children: m == "wallet" && /* @__PURE__ */ jsxs9(Fragment2, { children: [
3728
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-recommend-wallet-divider" }),
3729
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
3165
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-divider" }),
3166
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
3730
3167
  const m2 = walletMap[n];
3731
3168
  return /* @__PURE__ */ jsxs9(
3732
3169
  "div",
@@ -3737,15 +3174,15 @@ function LoginBox({
3737
3174
  },
3738
3175
  children: [
3739
3176
  /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-wallet-item-content", children: [
3740
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
3741
- /* @__PURE__ */ jsx14(
3177
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
3178
+ /* @__PURE__ */ jsx13(
3742
3179
  "div",
3743
3180
  {
3744
3181
  className: "matchid-login-recommend-wallet-item-hover-icon",
3745
3182
  children: m2.activeIcon
3746
3183
  }
3747
3184
  ),
3748
- /* @__PURE__ */ jsx14(
3185
+ /* @__PURE__ */ jsx13(
3749
3186
  "span",
3750
3187
  {
3751
3188
  className: "matchid-login-recommend-wallet-item-name",
@@ -3753,7 +3190,7 @@ function LoginBox({
3753
3190
  }
3754
3191
  )
3755
3192
  ] }),
3756
- /* @__PURE__ */ jsx14(
3193
+ /* @__PURE__ */ jsx13(
3757
3194
  ArrowRightIcon,
3758
3195
  {
3759
3196
  className: "matchid-login-recommend-wallet-item-arrow",
@@ -3772,9 +3209,9 @@ function LoginBox({
3772
3209
  );
3773
3210
  }) }),
3774
3211
  methodConfig.methods.length > 0 && /* @__PURE__ */ jsxs9("div", { className: "matchid-login-other", children: [
3775
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx14(FormattedMessage4, { id: "otherLoginMethods" }) }),
3776
- /* @__PURE__ */ jsx14("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
3777
- return /* @__PURE__ */ jsx14(
3212
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx13(FormattedMessage4, { id: "otherLoginMethods" }) }),
3213
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
3214
+ return /* @__PURE__ */ jsx13(
3778
3215
  "div",
3779
3216
  {
3780
3217
  className: "matchid-login-method-item",
@@ -3787,7 +3224,7 @@ function LoginBox({
3787
3224
  }) })
3788
3225
  ] })
3789
3226
  ] }),
3790
- /* @__PURE__ */ jsx14(
3227
+ /* @__PURE__ */ jsx13(
3791
3228
  EmailModal,
3792
3229
  {
3793
3230
  isOpen: emailOpen,
@@ -3803,11 +3240,11 @@ function LoginBox({
3803
3240
  }
3804
3241
 
3805
3242
  // src/components/LoginButton/index.tsx
3806
- import { useState as useState16 } from "react";
3243
+ import { useState as useState15 } from "react";
3807
3244
 
3808
3245
  // src/components/LoginPanel/index.tsx
3809
3246
  import { FormattedMessage as FormattedMessage5 } from "react-intl";
3810
- import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
3247
+ import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
3811
3248
  function LoginPanel({
3812
3249
  header,
3813
3250
  onClose,
@@ -3817,42 +3254,42 @@ function LoginPanel({
3817
3254
  return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel", children: [
3818
3255
  header ? header : /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header", children: [
3819
3256
  /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header-content", children: [
3820
- /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx15(FormattedMessage5, { id: "loginTitle" }) }),
3821
- /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx15(FormattedMessage5, { id: "loginTips" }) })
3257
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTitle" }) }),
3258
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTips" }) })
3822
3259
  ] }),
3823
- onClose && /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx15(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
3260
+ onClose && /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx14(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
3824
3261
  ] }),
3825
- /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-divide" }),
3826
- /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx15(LoginBox, { ...props }) })
3262
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-divide" }),
3263
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx14(LoginBox, { ...props }) })
3827
3264
  ] });
3828
3265
  }
3829
3266
 
3830
3267
  // src/components/LoginModal/index.tsx
3831
- import { jsx as jsx16 } from "react/jsx-runtime";
3268
+ import { jsx as jsx15 } from "react/jsx-runtime";
3832
3269
  function LoginModal({
3833
3270
  isOpen = false,
3834
3271
  width = 480,
3835
3272
  ...props
3836
3273
  }) {
3837
3274
  const { isLogin } = useUserInfo();
3838
- return /* @__PURE__ */ jsx16(
3275
+ return /* @__PURE__ */ jsx15(
3839
3276
  Modal,
3840
3277
  {
3841
3278
  isOpen: isOpen && !isLogin,
3842
3279
  width,
3843
- children: /* @__PURE__ */ jsx16(LoginPanel, { ...props, inModal: true })
3280
+ children: /* @__PURE__ */ jsx15(LoginPanel, { ...props, inModal: true })
3844
3281
  }
3845
3282
  );
3846
3283
  }
3847
3284
 
3848
3285
  // src/components/UserPopover/index.tsx
3849
- import { useState as useState15 } from "react";
3286
+ import { useState as useState14 } from "react";
3850
3287
 
3851
3288
  // src/assets/icon/ProfileIcon.tsx
3852
- import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
3289
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
3853
3290
  function ProfileIcon({ size = 24, color = "black", ...props }) {
3854
3291
  return /* @__PURE__ */ jsxs11("svg", { width: size, height: size, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
3855
- /* @__PURE__ */ jsx17(
3292
+ /* @__PURE__ */ jsx16(
3856
3293
  "path",
3857
3294
  {
3858
3295
  fillRule: "evenodd",
@@ -3861,7 +3298,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3861
3298
  fill: color
3862
3299
  }
3863
3300
  ),
3864
- /* @__PURE__ */ jsx17(
3301
+ /* @__PURE__ */ jsx16(
3865
3302
  "path",
3866
3303
  {
3867
3304
  fillRule: "evenodd",
@@ -3875,10 +3312,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3875
3312
 
3876
3313
  // src/components/UserPopover/index.tsx
3877
3314
  import { FormattedMessage as FormattedMessage6, useIntl as useIntl6 } from "react-intl";
3878
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
3315
+ import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
3879
3316
  function UserContent() {
3880
3317
  const { logout, address: address2, username } = useUserInfo();
3881
- const [logouting, setLogouting] = useState15(false);
3318
+ const [logouting, setLogouting] = useState14(false);
3882
3319
  const onLogout = async () => {
3883
3320
  if (logouting) return;
3884
3321
  try {
@@ -3899,31 +3336,31 @@ function UserContent() {
3899
3336
  return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-item", onClick, children: [
3900
3337
  /* @__PURE__ */ jsxs12("div", { className: `matchid-user-popover-item-content`, children: [
3901
3338
  icon,
3902
- /* @__PURE__ */ jsx18("div", { className: "matchid-user-popover-item-text", children })
3339
+ /* @__PURE__ */ jsx17("div", { className: "matchid-user-popover-item-text", children })
3903
3340
  ] }),
3904
3341
  rightIcon
3905
3342
  ] });
3906
3343
  };
3907
3344
  const UserDivider = () => {
3908
- return /* @__PURE__ */ jsx18("div", { className: `matchid-user-popover-divider` });
3345
+ return /* @__PURE__ */ jsx17("div", { className: `matchid-user-popover-divider` });
3909
3346
  };
3910
- const [usernameOpen, setUsernameOpen] = useState15(false);
3347
+ const [usernameOpen, setUsernameOpen] = useState14(false);
3911
3348
  const [copied, setCopied] = useCopyClipboard();
3912
3349
  const intl = useIntl6();
3913
3350
  return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-content", children: [
3914
3351
  /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-list", children: [
3915
- /* @__PURE__ */ jsx18(UserItem, { onClick: () => {
3352
+ /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
3916
3353
  setCopied(address2);
3917
- }, icon: copied ? /* @__PURE__ */ jsx18(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx18(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx18(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address2) }),
3918
- /* @__PURE__ */ jsx18(UserDivider, {}),
3919
- /* @__PURE__ */ jsx18(UserItem, { onClick: () => {
3354
+ }, icon: copied ? /* @__PURE__ */ jsx17(CheckIcon, { size: 20, color: "#0ecb81" }) : /* @__PURE__ */ jsx17(CopyIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx17(CheckIcon, { size: 20, color: "var(--icon-color)" }), children: truncateAddress(address2) }),
3355
+ /* @__PURE__ */ jsx17(UserDivider, {}),
3356
+ /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
3920
3357
  setUsernameOpen(true);
3921
- }, icon: /* @__PURE__ */ jsx18(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx18(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
3358
+ }, icon: /* @__PURE__ */ jsx17(ProfileIcon, { size: 20, color: "var(--icon-color)" }), rightIcon: /* @__PURE__ */ jsx17(ArrowRightIcon, { size: 20, color: "var(--icon-color)" }), children: username || intl.formatMessage({
3922
3359
  id: "setUsername"
3923
3360
  }) })
3924
3361
  ] }),
3925
- /* @__PURE__ */ jsx18(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx18(FormattedMessage6, { id: "disconnect" }) }),
3926
- /* @__PURE__ */ jsx18(UsernameModal, { isOpen: usernameOpen, onClose: () => {
3362
+ /* @__PURE__ */ jsx17(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx17(FormattedMessage6, { id: "disconnect" }) }),
3363
+ /* @__PURE__ */ jsx17(UsernameModal, { isOpen: usernameOpen, onClose: () => {
3927
3364
  setUsernameOpen(false);
3928
3365
  }, onSuccess: () => {
3929
3366
  setUsernameOpen(false);
@@ -3934,12 +3371,12 @@ function UserPopover({
3934
3371
  children,
3935
3372
  ...props
3936
3373
  }) {
3937
- return /* @__PURE__ */ jsx18(Popover, { ...props, content: /* @__PURE__ */ jsx18(UserContent, {}), children });
3374
+ return /* @__PURE__ */ jsx17(Popover, { ...props, content: /* @__PURE__ */ jsx17(UserContent, {}), children });
3938
3375
  }
3939
3376
 
3940
3377
  // src/components/LoginButton/index.tsx
3941
3378
  import { FormattedMessage as FormattedMessage7, useIntl as useIntl7 } from "react-intl";
3942
- import { Fragment as Fragment3, jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
3379
+ import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
3943
3380
  function LoginButton({
3944
3381
  loginRender,
3945
3382
  methods,
@@ -3953,10 +3390,10 @@ function LoginButton({
3953
3390
  }) {
3954
3391
  const intl = useIntl7();
3955
3392
  const { isLogin, username } = useUserInfo();
3956
- const [loginOpen, setLoginOpen] = useState16(false);
3393
+ const [loginOpen, setLoginOpen] = useState15(false);
3957
3394
  if (!isLogin) {
3958
3395
  return /* @__PURE__ */ jsxs13(Fragment3, { children: [
3959
- /* @__PURE__ */ jsx19(
3396
+ /* @__PURE__ */ jsx18(
3960
3397
  LoginModal,
3961
3398
  {
3962
3399
  methods,
@@ -3967,30 +3404,53 @@ function LoginButton({
3967
3404
  }
3968
3405
  ),
3969
3406
  /* @__PURE__ */ jsxs13(Button, { className: "matchid-unlogin-btn", ...props, highlight: true, onClick: () => setLoginOpen(true), children: [
3970
- /* @__PURE__ */ jsx19(UnLoginIcon_default, {}),
3971
- /* @__PURE__ */ jsx19("span", { children: /* @__PURE__ */ jsx19(FormattedMessage7, { id: "login" }) })
3407
+ /* @__PURE__ */ jsx18(UnLoginIcon_default, {}),
3408
+ /* @__PURE__ */ jsx18("span", { children: /* @__PURE__ */ jsx18(FormattedMessage7, { id: "login" }) })
3972
3409
  ] })
3973
3410
  ] });
3974
3411
  }
3975
- return loginRender ? /* @__PURE__ */ jsx19(Fragment3, { children: loginRender }) : /* @__PURE__ */ jsx19(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs13(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
3976
- /* @__PURE__ */ jsx19(LoginIcon_default, {}),
3977
- /* @__PURE__ */ jsx19("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
3412
+ return loginRender ? /* @__PURE__ */ jsx18(Fragment3, { children: loginRender }) : /* @__PURE__ */ jsx18(UserPopover, { position: popoverPosition, type: popoverType, gap: popoverGap, children: /* @__PURE__ */ jsxs13(Button, { onClick: onLoginClick, className: "matchid-login-btn", ...props, children: [
3413
+ /* @__PURE__ */ jsx18(LoginIcon_default, {}),
3414
+ /* @__PURE__ */ jsx18("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
3978
3415
  id: "user"
3979
3416
  }) })
3980
3417
  ] }) });
3981
3418
  }
3982
3419
 
3983
3420
  // src/components/UsernameModal/index.tsx
3984
- import { useEffect as useEffect15, useMemo as useMemo9, useState as useState17 } from "react";
3421
+ import { useEffect as useEffect14, useMemo as useMemo9, useState as useState16 } from "react";
3422
+
3423
+ // src/assets/icon/InfoRoundIcon.tsx
3424
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
3425
+ function InfoRoundIcon({
3426
+ size,
3427
+ color = "#6E6E6E",
3428
+ ...props
3429
+ }) {
3430
+ return /* @__PURE__ */ jsxs14("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3431
+ /* @__PURE__ */ jsx19("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx19(
3432
+ "path",
3433
+ {
3434
+ fillRule: "evenodd",
3435
+ clipRule: "evenodd",
3436
+ d: "M7.99984 0.666504C3.94975 0.666504 0.666504 3.94975 0.666504 7.99984C0.666504 12.0499 3.94975 15.3332 7.99984 15.3332C12.0499 15.3332 15.3332 12.0499 15.3332 7.99984C15.3332 3.94975 12.0499 0.666504 7.99984 0.666504ZM1.99984 7.99984C1.99984 4.68613 4.68613 1.99984 7.99984 1.99984C11.3135 1.99984 13.9998 4.68613 13.9998 7.99984C13.9998 11.3135 11.3135 13.9998 7.99984 13.9998C4.68613 13.9998 1.99984 11.3135 1.99984 7.99984ZM8.6665 7.33317C8.6665 6.96498 8.36803 6.6665 7.99984 6.6665C7.63165 6.6665 7.33317 6.96498 7.33317 7.33317V11.3332C7.33317 11.7014 7.63165 11.9998 7.99984 11.9998C8.36803 11.9998 8.6665 11.7014 8.6665 11.3332V7.33317ZM7.99984 5.33317C8.36803 5.33317 8.6665 5.03469 8.6665 4.6665C8.6665 4.29831 8.36803 3.99984 7.99984 3.99984C7.63165 3.99984 7.33317 4.29831 7.33317 4.6665C7.33317 5.03469 7.63165 5.33317 7.99984 5.33317Z",
3437
+ fill: color
3438
+ }
3439
+ ) }),
3440
+ /* @__PURE__ */ jsx19("defs", { children: /* @__PURE__ */ jsx19("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx19("rect", { width: "16", height: "16", fill: "white" }) }) })
3441
+ ] });
3442
+ }
3443
+
3444
+ // src/components/UsernameModal/index.tsx
3985
3445
  import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
3986
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
3446
+ import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
3987
3447
  var ValidItem = ({
3988
3448
  success = false,
3989
3449
  text
3990
3450
  }) => {
3991
3451
  const isDownMd = useDownMd();
3992
- return /* @__PURE__ */ jsxs14("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
3993
- success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(InfoLineIcon, { size: isDownMd ? 12 : 16 }),
3452
+ return /* @__PURE__ */ jsxs15("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
3453
+ success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
3994
3454
  /* @__PURE__ */ jsx20("span", { children: text })
3995
3455
  ] });
3996
3456
  };
@@ -4002,10 +3462,10 @@ function UsernameModal({
4002
3462
  }) {
4003
3463
  const { username, refreshOverview } = useUserInfo();
4004
3464
  const { isLogin } = useUserInfo();
4005
- const [val, setVal] = useState17(username);
4006
- const [error, setError] = useState17("");
3465
+ const [val, setVal] = useState16(username);
3466
+ const [error, setError] = useState16("");
4007
3467
  const isDownMd = useDownMd();
4008
- useEffect15(() => {
3468
+ useEffect14(() => {
4009
3469
  if (isOpen) {
4010
3470
  setVal(username);
4011
3471
  setError("");
@@ -4018,7 +3478,7 @@ function UsernameModal({
4018
3478
  return val.length >= 2 && val.length <= 32;
4019
3479
  }, [val]);
4020
3480
  const isSafe = isValid && isLength;
4021
- const [isSubmitting, setIsSubmitting] = useState17(false);
3481
+ const [isSubmitting, setIsSubmitting] = useState16(false);
4022
3482
  const onSubmit = async () => {
4023
3483
  if (isSubmitting) return;
4024
3484
  try {
@@ -4041,7 +3501,7 @@ function UsernameModal({
4041
3501
  const intl = useIntl8();
4042
3502
  return /* @__PURE__ */ jsx20(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
4043
3503
  id: username ? "editUsernameTitle" : "setUsernameTitle"
4044
- }), children: /* @__PURE__ */ jsxs14("div", { className: "matchid-username-box", children: [
3504
+ }), children: /* @__PURE__ */ jsxs15("div", { className: "matchid-username-box", children: [
4045
3505
  /* @__PURE__ */ jsx20(Field, { label: intl.formatMessage({
4046
3506
  id: "username"
4047
3507
  }), error, children: /* @__PURE__ */ jsx20(
@@ -4057,7 +3517,7 @@ function UsernameModal({
4057
3517
  value: val
4058
3518
  }
4059
3519
  ) }),
4060
- /* @__PURE__ */ jsxs14("div", { className: "matchid-valid", children: [
3520
+ /* @__PURE__ */ jsxs15("div", { className: "matchid-valid", children: [
4061
3521
  /* @__PURE__ */ jsx20(
4062
3522
  ValidItem,
4063
3523
  {
@@ -4081,7 +3541,7 @@ function UsernameModal({
4081
3541
  }
4082
3542
 
4083
3543
  // src/components/SOLModal/index.tsx
4084
- import React7, { useEffect as useEffect16, useState as useState18 } from "react";
3544
+ import React7, { useEffect as useEffect15, useState as useState17 } from "react";
4085
3545
  import { clusterApiUrl } from "@solana/web3.js";
4086
3546
  import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
4087
3547
  import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
@@ -4145,7 +3605,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
4145
3605
  var walletSigningImage = "data:image/png;base64,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";
4146
3606
 
4147
3607
  // src/components/WalletModalContent/index.tsx
4148
- import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
3608
+ import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
4149
3609
  function WalletModalContent({
4150
3610
  status,
4151
3611
  error,
@@ -4215,8 +3675,8 @@ function WalletModalContent({
4215
3675
  statusImage: walletConnectImage
4216
3676
  };
4217
3677
  }, [visible, connected, status, error, address2]);
4218
- return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs15("div", { className: `matchid-wallet-box`, children: [
4219
- /* @__PURE__ */ jsxs15("div", { className: `matchid-wallet-content`, children: [
3678
+ return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
3679
+ /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-content`, children: [
4220
3680
  /* @__PURE__ */ jsx21("img", { src: pageData.statusImage }),
4221
3681
  /* @__PURE__ */ jsx21("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
4222
3682
  ] }),
@@ -4243,17 +3703,17 @@ function WalletContent({
4243
3703
  const { setVisible, visible } = useWalletModal();
4244
3704
  const wallet = useWallet2();
4245
3705
  const { events, login } = useMatch();
4246
- const [status, setStatus] = useState18("");
3706
+ const [status, setStatus] = useState17("");
4247
3707
  const statusRef = React7.useRef(status);
4248
- const [error, setError] = useState18("");
4249
- useEffect16(() => {
3708
+ const [error, setError] = useState17("");
3709
+ useEffect15(() => {
4250
3710
  const init = async () => {
4251
3711
  await wallet.disconnect();
4252
3712
  setVisible(true);
4253
3713
  };
4254
3714
  init();
4255
3715
  }, []);
4256
- useEffect16(() => {
3716
+ useEffect15(() => {
4257
3717
  if (wallet.connected) {
4258
3718
  console.log("wallet.connected", wallet.connected);
4259
3719
  toLoginInWallet();
@@ -4389,7 +3849,7 @@ function SOLModal(props) {
4389
3849
  }
4390
3850
 
4391
3851
  // src/components/TRONModal/index.tsx
4392
- import React8, { useEffect as useEffect18, useMemo as useMemo11, useState as useState20 } from "react";
3852
+ import React8, { useEffect as useEffect17, useMemo as useMemo11, useState as useState19 } from "react";
4393
3853
  import { useIntl as useIntl10 } from "react-intl";
4394
3854
 
4395
3855
  // src/lib/tron/TronLinkAdapter.ts
@@ -4423,7 +3883,7 @@ var TronLinkAdapter = class {
4423
3883
  };
4424
3884
 
4425
3885
  // src/hooks/useTRONWallet.ts
4426
- import { useEffect as useEffect17, useState as useState19 } from "react";
3886
+ import { useEffect as useEffect16, useState as useState18 } from "react";
4427
3887
 
4428
3888
  // src/lib/tron/BitgetAdapter.ts
4429
3889
  var BitgetAdapter = class {
@@ -4468,9 +3928,9 @@ var OKXAdapter = class {
4468
3928
  // src/hooks/useTRONWallet.ts
4469
3929
  var useTRONWallet = () => {
4470
3930
  const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
4471
- const [installedWallets, setInstalledWallets] = useState19([]);
4472
- const [address2, setAddress] = useState19(null);
4473
- useEffect17(() => {
3931
+ const [installedWallets, setInstalledWallets] = useState18([]);
3932
+ const [address2, setAddress] = useState18(null);
3933
+ useEffect16(() => {
4474
3934
  const getInstalled = async () => {
4475
3935
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
4476
3936
  wallet: wallet2,
@@ -4480,11 +3940,11 @@ var useTRONWallet = () => {
4480
3940
  };
4481
3941
  getInstalled();
4482
3942
  }, []);
4483
- const [wallet, chooseWallet] = useState19(null);
3943
+ const [wallet, chooseWallet] = useState18(null);
4484
3944
  const onConnect = async () => {
4485
3945
  setAddress(await wallet.connect());
4486
3946
  };
4487
- useEffect17(() => {
3947
+ useEffect16(() => {
4488
3948
  if (!wallet) {
4489
3949
  setAddress(null);
4490
3950
  }
@@ -4500,7 +3960,7 @@ var useTRONWallet = () => {
4500
3960
  };
4501
3961
 
4502
3962
  // src/components/TRONModal/index.tsx
4503
- import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
3963
+ import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
4504
3964
  function TRONConnectModal({
4505
3965
  type = "login",
4506
3966
  onSuccess,
@@ -4515,9 +3975,9 @@ function TRONConnectModal({
4515
3975
  okx: /* @__PURE__ */ jsx23(OKXIcon, { size: isDownMd ? 36 : 40 })
4516
3976
  };
4517
3977
  const { events, login } = useMatch();
4518
- const [status, setStatus] = useState20("");
3978
+ const [status, setStatus] = useState19("");
4519
3979
  const statusRef = React8.useRef(status);
4520
- const [error, setError] = useState20("");
3980
+ const [error, setError] = useState19("");
4521
3981
  const connected = useMemo11(() => {
4522
3982
  return !!address2;
4523
3983
  }, [address2]);
@@ -4586,7 +4046,7 @@ function TRONConnectModal({
4586
4046
  statusRef.current = "";
4587
4047
  }
4588
4048
  };
4589
- useEffect18(() => {
4049
+ useEffect17(() => {
4590
4050
  if (wallet) {
4591
4051
  console.log("onConnect");
4592
4052
  onConnect();
@@ -4594,12 +4054,12 @@ function TRONConnectModal({
4594
4054
  setStatus("");
4595
4055
  }
4596
4056
  }, [wallet]);
4597
- useEffect18(() => {
4057
+ useEffect17(() => {
4598
4058
  if (address2) {
4599
4059
  toLoginInWallet();
4600
4060
  }
4601
4061
  }, [address2]);
4602
- useEffect18(() => {
4062
+ useEffect17(() => {
4603
4063
  if (!props.isOpen) {
4604
4064
  disconnect();
4605
4065
  }
@@ -4621,7 +4081,7 @@ function TRONConnectModal({
4621
4081
  setVisible: () => {
4622
4082
  }
4623
4083
  }
4624
- ) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs16("div", { className: "matchid-login-recommend-list", children: [
4084
+ ) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
4625
4085
  installedWallets.map((wallet2) => {
4626
4086
  return /* @__PURE__ */ jsx23(
4627
4087
  RecommendItem,
@@ -4657,7 +4117,7 @@ function TRONModal(props) {
4657
4117
  }
4658
4118
 
4659
4119
  // src/components/TONModal/index.tsx
4660
- import React9, { useEffect as useEffect19, useState as useState21 } from "react";
4120
+ import React9, { useEffect as useEffect18, useState as useState20 } from "react";
4661
4121
  import { useIntl as useIntl11 } from "react-intl";
4662
4122
  import {
4663
4123
  TonConnectUIProvider,
@@ -4672,15 +4132,15 @@ function WalletContent2({
4672
4132
  type
4673
4133
  }) {
4674
4134
  const { events, login } = useMatch();
4675
- const [connected, setConnected] = useState21(false);
4135
+ const [connected, setConnected] = useState20(false);
4676
4136
  const wallet = useTonWallet();
4677
4137
  const userFriendlyAddress = useTonAddress();
4678
4138
  const [tonConnectUI] = useTonConnectUI();
4679
4139
  const { state, open, close } = useTonConnectModal();
4680
- const [status, setStatus] = useState21("");
4140
+ const [status, setStatus] = useState20("");
4681
4141
  const statusRef = React9.useRef(status);
4682
- const [error, setError] = useState21("");
4683
- useEffect19(() => {
4142
+ const [error, setError] = useState20("");
4143
+ useEffect18(() => {
4684
4144
  const init = async () => {
4685
4145
  if (wallet) {
4686
4146
  await tonConnectUI.disconnect();
@@ -4753,7 +4213,7 @@ function WalletContent2({
4753
4213
  }
4754
4214
  });
4755
4215
  }, []);
4756
- useEffect19(() => {
4216
+ useEffect18(() => {
4757
4217
  if (wallet) {
4758
4218
  setConnected(true);
4759
4219
  console.log("Wallet connected:", wallet);
@@ -4764,7 +4224,7 @@ function WalletContent2({
4764
4224
  setStatus("");
4765
4225
  }
4766
4226
  }, [wallet]);
4767
- useEffect19(() => {
4227
+ useEffect18(() => {
4768
4228
  console.log({
4769
4229
  state,
4770
4230
  wallet
@@ -4844,7 +4304,7 @@ function TONModal(props) {
4844
4304
  }
4845
4305
 
4846
4306
  // src/components/BTCModal/index.tsx
4847
- import React10, { useEffect as useEffect21, useMemo as useMemo12, useState as useState23 } from "react";
4307
+ import React10, { useEffect as useEffect20, useMemo as useMemo12, useState as useState22 } from "react";
4848
4308
  import { useIntl as useIntl12 } from "react-intl";
4849
4309
 
4850
4310
  // src/lib/btc/UnisatAdapter.ts
@@ -4999,12 +4459,12 @@ var LeatherAdapter = class {
4999
4459
  };
5000
4460
 
5001
4461
  // src/hooks/useBTCWallet.ts
5002
- import { useEffect as useEffect20, useState as useState22 } from "react";
4462
+ import { useEffect as useEffect19, useState as useState21 } from "react";
5003
4463
  var useBTCWallet = () => {
5004
4464
  const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
5005
- const [installedWallets, setInstalledWallets] = useState22([]);
5006
- const [address2, setAddress] = useState22(null);
5007
- useEffect20(() => {
4465
+ const [installedWallets, setInstalledWallets] = useState21([]);
4466
+ const [address2, setAddress] = useState21(null);
4467
+ useEffect19(() => {
5008
4468
  const getInstalled = async () => {
5009
4469
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
5010
4470
  wallet: wallet2,
@@ -5014,11 +4474,11 @@ var useBTCWallet = () => {
5014
4474
  };
5015
4475
  getInstalled();
5016
4476
  }, []);
5017
- const [wallet, chooseWallet] = useState22(null);
4477
+ const [wallet, chooseWallet] = useState21(null);
5018
4478
  const onConnect = async () => {
5019
4479
  setAddress(await wallet.connect());
5020
4480
  };
5021
- useEffect20(() => {
4481
+ useEffect19(() => {
5022
4482
  if (!wallet) {
5023
4483
  setAddress(null);
5024
4484
  }
@@ -5034,7 +4494,7 @@ var useBTCWallet = () => {
5034
4494
  };
5035
4495
 
5036
4496
  // src/components/BTCModal/index.tsx
5037
- import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
4497
+ import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
5038
4498
  function BTCConnectModal({
5039
4499
  type = "login",
5040
4500
  onSuccess,
@@ -5049,9 +4509,9 @@ function BTCConnectModal({
5049
4509
  xverse: /* @__PURE__ */ jsx25(XverseIcon, { size: isDownMd ? 36 : 40 })
5050
4510
  };
5051
4511
  const { events, login } = useMatch();
5052
- const [status, setStatus] = useState23("");
4512
+ const [status, setStatus] = useState22("");
5053
4513
  const statusRef = React10.useRef(status);
5054
- const [error, setError] = useState23("");
4514
+ const [error, setError] = useState22("");
5055
4515
  const connected = useMemo12(() => {
5056
4516
  return !!address2;
5057
4517
  }, [address2]);
@@ -5116,7 +4576,7 @@ function BTCConnectModal({
5116
4576
  statusRef.current = "";
5117
4577
  }
5118
4578
  };
5119
- useEffect21(() => {
4579
+ useEffect20(() => {
5120
4580
  if (wallet) {
5121
4581
  console.log("onConnect");
5122
4582
  try {
@@ -5129,12 +4589,12 @@ function BTCConnectModal({
5129
4589
  setStatus("");
5130
4590
  }
5131
4591
  }, [wallet]);
5132
- useEffect21(() => {
4592
+ useEffect20(() => {
5133
4593
  if (address2) {
5134
4594
  toLoginInWallet();
5135
4595
  }
5136
4596
  }, [address2]);
5137
- useEffect21(() => {
4597
+ useEffect20(() => {
5138
4598
  if (!props.isOpen) {
5139
4599
  disconnect();
5140
4600
  }
@@ -5163,7 +4623,7 @@ function BTCConnectModal({
5163
4623
  setVisible: () => {
5164
4624
  }
5165
4625
  }
5166
- ) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
4626
+ ) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
5167
4627
  installedWallets.map((wallet2) => {
5168
4628
  return /* @__PURE__ */ jsx25(
5169
4629
  RecommendItem,
@@ -5242,409 +4702,6 @@ function WalletModal(props) {
5242
4702
  return props.isOpen && /* @__PURE__ */ jsx26(WalletConnectModal, { ...props });
5243
4703
  }
5244
4704
 
5245
- // src/components/AlphaAvatar/index.tsx
5246
- import { useEffect as useEffect22, useState as useState24 } from "react";
5247
- import { jsx as jsx27 } from "react/jsx-runtime";
5248
- function AlphaAvatar2({ name, size = 40, className = "" }) {
5249
- const [avatar, setAvatar] = useState24(void 0);
5250
- useEffect22(() => {
5251
- if (name) {
5252
- const char = name[0].toUpperCase();
5253
- if (char.match(/[a-zA-Z]/)) {
5254
- setAvatar(char);
5255
- }
5256
- }
5257
- }, [name]);
5258
- return /* @__PURE__ */ jsx27("div", { className: `matchid-alpha-avatar ${className}`, style: {
5259
- width: size,
5260
- height: size,
5261
- fontSize: Math.ceil(size / 2)
5262
- }, children: avatar });
5263
- }
5264
-
5265
- // src/components/WalletAsset/index.tsx
5266
- import { jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
5267
- function WalletAsset({
5268
- onAssetClick
5269
- }) {
5270
- const walletAssets = useMatchWalletAssets();
5271
- const matchWalletAssetList = useMatchWalletAssetList({
5272
- list: walletAssets.mergedAssets
5273
- });
5274
- const { list } = useMatchChain();
5275
- return /* @__PURE__ */ jsx28("div", { className: "matchid-wallet-asset-list", children: matchWalletAssetList.list.map((n, index) => {
5276
- const clickFunc = onAssetClick && onAssetClick(n);
5277
- const chain = list?.find((m) => m.id.toString() === n.chain_id);
5278
- const getFooterColor = () => {
5279
- if (!n.price_change_24h) {
5280
- return "";
5281
- }
5282
- if (n.price_change_24h > 0) {
5283
- return "matchid-wallet-asset-up";
5284
- }
5285
- if (n.price_change_24h < 0) {
5286
- return "matchid-wallet-asset-down";
5287
- }
5288
- return "";
5289
- };
5290
- return /* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-item`, onClick: clickFunc, style: {
5291
- cursor: clickFunc ? "pointer" : "default"
5292
- }, children: [
5293
- /* @__PURE__ */ jsxs18("div", { className: "matchid-wallet-asset-logo", children: [
5294
- n.icon ? /* @__PURE__ */ jsx28("img", { src: n.icon, alt: n.symbol, className: `matchid-wallet-asset-icon` }) : /* @__PURE__ */ jsx28(AlphaAvatar2, { className: `matchid-wallet-asset-icon`, size: 40, name: n.symbol || n.name || "" }),
5295
- chain?.iconUrl && /* @__PURE__ */ jsx28("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-wallet-asset-chain` })
5296
- ] }),
5297
- /* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-info`, children: [
5298
- /* @__PURE__ */ jsx28("div", { className: `matchid-wallet-asset-name`, children: n.symbol }),
5299
- "price" in n && /* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-content`, children: [
5300
- /* @__PURE__ */ jsx28("div", { className: "matchid-wallet-asset-price", children: /* @__PURE__ */ jsx28(NumberFormatter, { value: n.price, prefix: "$ ", tFixNum: 2 }) }),
5301
- /* @__PURE__ */ jsx28("div", { className: "matchid-wallet-asset-value", children: /* @__PURE__ */ jsx28(NumberFormatter, { value: n.value, prefix: "$ ", tFixNum: 2 }) })
5302
- ] }),
5303
- /* @__PURE__ */ jsxs18("div", { className: `matchid-wallet-asset-footer`, children: [
5304
- /* @__PURE__ */ jsx28("div", { className: `matchid-wallet-asset-balance`, children: /* @__PURE__ */ jsx28(NumberFormatter, { value: n.balance, tFixNum: 3 }) }),
5305
- "price_change_24h" in n && /* @__PURE__ */ jsx28("div", { className: `matchid-wallet-asset-change ${getFooterColor()}`, children: /* @__PURE__ */ jsx28(NumberFormatter, { prefix: `${(n?.price_change_24h || 0) < 0 ? "-" : "+"} `, value: Math.abs(n.price_change_24h || 0), suffix: "%", tFixNum: 3 }) })
5306
- ] })
5307
- ] })
5308
- ] }, index);
5309
- }) });
5310
- }
5311
-
5312
- // src/components/TokenSend/index.tsx
5313
- import { useEffect as useEffect23, useMemo as useMemo14, useState as useState25 } from "react";
5314
- import { defineChain as defineChain3, encodeFunctionData as encodeFunctionData3, http as http4, parseUnits } from "viem";
5315
- import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
5316
- function Input2({
5317
- onChange,
5318
- placeholder,
5319
- value,
5320
- maxLength,
5321
- type,
5322
- error,
5323
- size = "df"
5324
- }) {
5325
- return /* @__PURE__ */ jsxs19("div", { className: `matchid-token-input-box ${"matchid-token-input-" + size}`, children: [
5326
- /* @__PURE__ */ jsx29(
5327
- "input",
5328
- {
5329
- placeholder,
5330
- onChange,
5331
- maxLength,
5332
- type,
5333
- value,
5334
- className: `matchid-token-input ${error ? "matchid-token-input-error" : ""}`
5335
- }
5336
- ),
5337
- error && /* @__PURE__ */ jsx29("div", { className: "matchid-token-input-error-text", children: error })
5338
- ] });
5339
- }
5340
- function TokenSend({
5341
- onClose,
5342
- zIndex,
5343
- token,
5344
- onBack
5345
- }) {
5346
- const { list: chainList } = useMatchChain();
5347
- const { createWalletClient: createWalletClient2 } = useWallet();
5348
- const isNative = token.address.toLowerCase() == NATIVE_TOKEN_ADDRESS;
5349
- const chain = useMemo14(() => {
5350
- return chainList?.find((m) => m.id.toString() === token.chain_id);
5351
- }, [chainList, token.chain_id]);
5352
- const walletClient = useMemo14(() => {
5353
- return createWalletClient2({
5354
- // @ts-ignore
5355
- chain: defineChain3(chain),
5356
- transport: http4()
5357
- });
5358
- }, [chain]);
5359
- const [amount, setAmount] = useState25("");
5360
- const [address2, setAddress] = useState25("");
5361
- const [loading, setLoading] = useState25(false);
5362
- const [sending, setSending] = useState25(false);
5363
- const [txError, setTxError] = useState25("");
5364
- const transaction = useMemo14(() => {
5365
- if (!amount || !address2) {
5366
- return;
5367
- }
5368
- const abi = [
5369
- {
5370
- "constant": false,
5371
- "inputs": [
5372
- {
5373
- "name": "_to",
5374
- "type": "address"
5375
- },
5376
- {
5377
- "name": "_value",
5378
- "type": "uint256"
5379
- }
5380
- ],
5381
- "name": "transfer",
5382
- "outputs": [
5383
- {
5384
- "name": "",
5385
- "type": "bool"
5386
- }
5387
- ],
5388
- "payable": false,
5389
- "stateMutability": "nonpayable",
5390
- "type": "function"
5391
- }
5392
- ];
5393
- const viemChain = defineChain3(chain);
5394
- const to = isNative ? address2 : token.address;
5395
- const value = isNative ? parseUnits(amount, parseInt(token?.decimals || "18")) : BigInt(0);
5396
- const data = isNative ? "0x" : encodeFunctionData3({
5397
- abi,
5398
- functionName: "transfer",
5399
- args: [address2, parseUnits(amount, parseInt(token?.decimals || "18"))]
5400
- });
5401
- return {
5402
- to,
5403
- value,
5404
- data,
5405
- chain: viemChain
5406
- };
5407
- }, [amount, address2]);
5408
- const onCal = async () => {
5409
- try {
5410
- setLoading(true);
5411
- await walletClient?.prepareTransactionRequest(transaction);
5412
- } catch (error2) {
5413
- console.error(error2);
5414
- setTxError(error2.details || error2.message);
5415
- } finally {
5416
- setLoading(false);
5417
- }
5418
- };
5419
- const error = useMemo14(() => {
5420
- setTxError("");
5421
- let amountError = "";
5422
- let addressError = "";
5423
- if (amount) {
5424
- if (parseFloat(amount) <= 0) {
5425
- amountError = "Amount must be greater than 0.";
5426
- } else if ("balance" in token && parseFloat(amount) > (token.balance || 0)) {
5427
- amountError = "Insufficient balance.";
5428
- }
5429
- }
5430
- if (address2) {
5431
- if (address2.length < 42) {
5432
- addressError = "Invalid address.";
5433
- } else {
5434
- const reg = /^0x[a-fA-F0-9]{40}$/;
5435
- if (!reg.test(address2)) {
5436
- addressError = "Invalid address.";
5437
- }
5438
- }
5439
- }
5440
- if (amount && address2 && !amountError && !addressError && walletClient) {
5441
- onCal();
5442
- }
5443
- return {
5444
- amount: amountError,
5445
- address: addressError
5446
- };
5447
- }, [amount, token, chain, address2, walletClient]);
5448
- const onChangeAmount = (e) => {
5449
- const value = e.target.value;
5450
- if (value.match(/^\d*\.?\d*$/)) {
5451
- setAmount(value);
5452
- }
5453
- };
5454
- const canSend = useMemo14(() => {
5455
- return !error.amount && !error.address && amount && address2;
5456
- }, [error]);
5457
- const onNext = async () => {
5458
- setSending(true);
5459
- if (transaction) {
5460
- await walletClient?.sendTransaction(transaction);
5461
- }
5462
- onClose();
5463
- };
5464
- useEffect23(() => {
5465
- const receiveMessage = (event) => {
5466
- if (event.data) {
5467
- if (event.data.source == "match-wallet") {
5468
- if (event.data.method == "sendTransaction" && event.data.messageId == "openIframe") {
5469
- onBack();
5470
- setSending(false);
5471
- }
5472
- }
5473
- }
5474
- };
5475
- window.addEventListener("message", receiveMessage);
5476
- return () => {
5477
- window.removeEventListener("message", receiveMessage);
5478
- };
5479
- }, []);
5480
- return /* @__PURE__ */ jsx29(ModalDrawer, { isOpen: true, onClose, zIndex, title: "Send", onBack, children: /* @__PURE__ */ jsxs19("div", { className: `matchid-token-send-box`, children: [
5481
- /* @__PURE__ */ jsxs19("div", { className: "matchid-token-send-content", children: [
5482
- /* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-content`, children: [
5483
- /* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-header`, children: [
5484
- /* @__PURE__ */ jsx29("div", { className: `matchid-token-amount-title`, children: "Amount" }),
5485
- /* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-chain`, children: [
5486
- token.icon ? /* @__PURE__ */ jsx29(
5487
- "img",
5488
- {
5489
- src: token?.icon,
5490
- alt: token?.symbol,
5491
- className: `matchid-token-amount-chain-icon`
5492
- }
5493
- ) : /* @__PURE__ */ jsx29(AlphaAvatar, { name: token.symbol || token.name || "", size: 16 }),
5494
- /* @__PURE__ */ jsx29("span", { children: token?.symbol })
5495
- ] })
5496
- ] }),
5497
- /* @__PURE__ */ jsx29(
5498
- Input2,
5499
- {
5500
- type: "text",
5501
- onChange: onChangeAmount,
5502
- placeholder: "Enter the Amount.",
5503
- value: amount,
5504
- maxLength: 40,
5505
- error: error.amount || txError
5506
- }
5507
- ),
5508
- /* @__PURE__ */ jsxs19("div", { className: `matchid-token-amount-footer`, children: [
5509
- /* @__PURE__ */ jsx29("div", { className: `matchid-token-amount-title`, children: "Balance:" }),
5510
- /* @__PURE__ */ jsx29("div", { className: `matchid-token-amount-value`, children: /* @__PURE__ */ jsx29(NumberFormatter, { value: token.balance, tFixNum: 10, suffix: " " + token.symbol }) })
5511
- ] }),
5512
- /* @__PURE__ */ jsx29(TransferIcon, { className: "matchid-token-amount-transfer" })
5513
- ] }),
5514
- /* @__PURE__ */ jsxs19("div", { className: `matchid-token-address-content`, children: [
5515
- /* @__PURE__ */ jsx29("div", { className: `matchid-token-address-header`, children: /* @__PURE__ */ jsx29("div", { className: `matchid-token-address-title`, children: "Received wallet address" }) }),
5516
- /* @__PURE__ */ jsx29(
5517
- Input2,
5518
- {
5519
- type: "text",
5520
- size: "sm",
5521
- onChange: (e) => setAddress(e.target.value),
5522
- placeholder: "Enter the Received wallet address.",
5523
- value: address2,
5524
- maxLength: 42,
5525
- error: error.address
5526
- }
5527
- )
5528
- ] })
5529
- ] }),
5530
- /* @__PURE__ */ jsx29(
5531
- Button,
5532
- {
5533
- size: "lg",
5534
- block: true,
5535
- highlight: true,
5536
- disabled: !canSend || !!txError,
5537
- onClick: onNext,
5538
- loading: loading || sending,
5539
- children: "Next"
5540
- }
5541
- )
5542
- ] }) });
5543
- }
5544
-
5545
- // src/components/TokenDetail/index.tsx
5546
- import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
5547
- function TokenDetail({
5548
- onClose,
5549
- token
5550
- }) {
5551
- const { list: chainList } = useMatchChain();
5552
- const modal = useModal();
5553
- const chain = chainList?.find((m) => m.id.toString() === token.chain_id);
5554
- const onSend = () => {
5555
- modal.show((props) => {
5556
- return /* @__PURE__ */ jsx30(TokenSend, { onClose: () => {
5557
- props.close();
5558
- onClose();
5559
- }, onBack: props.close, zIndex: props.zIndex, token });
5560
- });
5561
- };
5562
- return /* @__PURE__ */ jsx30(ModalDrawer, { isOpen: true, title: "Token Details", onClose, children: /* @__PURE__ */ jsxs20("div", { className: `matchid-token-detail`, children: [
5563
- /* @__PURE__ */ jsxs20("div", { className: `matchid-token-main`, children: [
5564
- /* @__PURE__ */ jsxs20("div", { className: `matchid-token-info`, children: [
5565
- /* @__PURE__ */ jsxs20("div", { className: `matchid-token-logo`, children: [
5566
- token.icon ? /* @__PURE__ */ jsx30("img", { src: token.icon, alt: token.symbol, className: `matchid-token-icon` }) : /* @__PURE__ */ jsx30(AlphaAvatar, { className: `matchid-token-icon`, size: 48, name: token.symbol || token.name || "" }),
5567
- chain?.iconUrl && /* @__PURE__ */ jsx30("img", { src: chain.iconUrl, alt: chain.name, className: `matchid-token-chain` })
5568
- ] }),
5569
- /* @__PURE__ */ jsxs20("div", { className: `matchid-token-name`, children: [
5570
- token.balance,
5571
- " ",
5572
- token.symbol
5573
- ] })
5574
- ] }),
5575
- token.address.toLowerCase() != NATIVE_TOKEN_ADDRESS && /* @__PURE__ */ jsxs20("div", { className: `matchid-token-contract`, children: [
5576
- /* @__PURE__ */ jsx30("div", { className: "matchid-token-contract-title", children: "Contract address" }),
5577
- /* @__PURE__ */ jsx30("div", { className: "matchid-token-contract-address", children: token.address })
5578
- ] })
5579
- ] }),
5580
- /* @__PURE__ */ jsx30(Button, { size: "lg", block: true, highlight: true, onClick: onSend, children: "Send" })
5581
- ] }) });
5582
- }
5583
-
5584
- // src/components/TokenSendList/index.tsx
5585
- import { useState as useState26 } from "react";
5586
- import { jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
5587
- function TokenSendList({ close }) {
5588
- const walletAssets = useMatchWalletAssets();
5589
- const matchWalletAssetList = useMatchWalletAssetList({
5590
- list: walletAssets.mergedAssets
5591
- });
5592
- const { list } = useMatchChain();
5593
- const [checked, setChecked] = useState26();
5594
- const modal = useModal();
5595
- const onNext = () => {
5596
- checked && modal.show((props) => {
5597
- return /* @__PURE__ */ jsx31(TokenSend, { onClose: () => {
5598
- props.close();
5599
- close();
5600
- }, onBack: props.close, zIndex: props.zIndex, token: checked });
5601
- });
5602
- };
5603
- return /* @__PURE__ */ jsxs21("div", { className: "matchid-token-send-list-box", children: [
5604
- /* @__PURE__ */ jsx31("div", { className: "matchid-token-send-list", children: matchWalletAssetList.list.map((n, index) => {
5605
- const chain = list?.find((m) => m.id.toString() === n.chain_id);
5606
- return /* @__PURE__ */ jsxs21(
5607
- "div",
5608
- {
5609
- className: `matchid-token-send-item ${checked?.address == n.address ? "matchid-token-send-chekced" : ""}`,
5610
- onClick: () => {
5611
- setChecked(n);
5612
- },
5613
- children: [
5614
- /* @__PURE__ */ jsx31(Radio, { checked: checked?.address == n.address }),
5615
- /* @__PURE__ */ jsxs21("div", { className: "matchid-token-send-content", children: [
5616
- /* @__PURE__ */ jsxs21("div", { className: "matchid-token-send-logo", children: [
5617
- n.icon ? /* @__PURE__ */ jsx31("img", { src: n.icon, alt: n.symbol, className: `matchid-token-send-icon` }) : /* @__PURE__ */ jsx31(
5618
- AlphaAvatar2,
5619
- {
5620
- className: `matchid-token-send-icon`,
5621
- size: 40,
5622
- name: n.symbol || n.name || ""
5623
- }
5624
- ),
5625
- chain?.iconUrl && /* @__PURE__ */ jsx31(
5626
- "img",
5627
- {
5628
- src: chain.iconUrl,
5629
- alt: chain.name,
5630
- className: `matchid-token-send-chain`
5631
- }
5632
- )
5633
- ] }),
5634
- /* @__PURE__ */ jsxs21("div", { className: `matchid-token-send-info`, children: [
5635
- /* @__PURE__ */ jsx31("div", { className: `matchid-token-send-name`, children: n.symbol }),
5636
- /* @__PURE__ */ jsx31("div", { className: `matchid-token-send-balance`, children: /* @__PURE__ */ jsx31(NumberFormatter, { value: n.balance, tFixNum: 2 }) })
5637
- ] })
5638
- ] })
5639
- ]
5640
- },
5641
- index
5642
- );
5643
- }) }),
5644
- /* @__PURE__ */ jsx31(Button, { size: "lg", highlight: true, block: true, disabled: !checked, onClick: onNext, children: "Next" })
5645
- ] });
5646
- }
5647
-
5648
4705
  export {
5649
4706
  isSuccess,
5650
4707
  getBindListApi,
@@ -5658,9 +4715,9 @@ export {
5658
4715
  mintPassportNftApi,
5659
4716
  useUserInfo,
5660
4717
  useMatchEvents,
5661
- useModal,
5662
4718
  useWallet,
5663
4719
  useCopyClipboard,
4720
+ useModal,
5664
4721
  useToast,
5665
4722
  wallet_exports,
5666
4723
  useMatchChain,
@@ -5675,19 +4732,12 @@ export {
5675
4732
  TONModal,
5676
4733
  BTCModal,
5677
4734
  WalletModal,
5678
- WalletAsset,
5679
- TokenSend,
5680
- TokenDetail,
5681
- TokenSendList,
5682
4735
  components_exports,
5683
4736
  useMatchWallet,
5684
4737
  useMatchWalletRecords,
5685
- useMatchWalletAssets,
5686
- useMatchWalletAssetList,
5687
4738
  useReceipt,
5688
- useTransaction,
5689
4739
  hooks_exports,
5690
4740
  MatchProvider,
5691
4741
  useMatch
5692
4742
  };
5693
- //# sourceMappingURL=chunk-2LRK5L4Z.mjs.map
4743
+ //# sourceMappingURL=chunk-V3WGYFWQ.mjs.map