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

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-YGFOHQU6.mjs → chunk-6HRRPZPM.mjs} +2 -2
  7. package/dist/{chunk-LHNKZISB.mjs → chunk-A5D3NKTK.mjs} +4 -91
  8. package/dist/chunk-A5D3NKTK.mjs.map +1 -0
  9. package/dist/{chunk-2LRK5L4Z.mjs → chunk-D6IUBR7S.mjs} +446 -1442
  10. package/dist/chunk-D6IUBR7S.mjs.map +1 -0
  11. package/dist/{chunk-MXBUBTKR.mjs → chunk-LNSJ3ZXG.mjs} +5 -11
  12. package/dist/chunk-LNSJ3ZXG.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 +171 -1563
  26. package/dist/hooks/index.js.map +1 -1
  27. package/dist/hooks/index.mjs +3 -12
  28. package/dist/index-BHVMQGZj.d.mts +173 -0
  29. package/dist/{index-BxPB2IQ2.d.ts → index-BIgM4fy0.d.mts} +8 -29
  30. package/dist/{index-NzZ-mfGZ.d.mts → index-BVatQlwF.d.mts} +2 -5
  31. package/dist/{index-DZ-eQkIA.d.mts → index-Bb7IkjUW.d.mts} +1 -1
  32. package/dist/{index-CE20hVl1.d.mts → index-BwD1ij0H.d.ts} +8 -29
  33. package/dist/{index-BQPieWF9.d.ts → index-C2-M-aBb.d.ts} +3 -4
  34. package/dist/{index-DAEvA2P4.d.ts → index-CGs_yTFg.d.ts} +4 -28
  35. package/dist/{index-C9s2Ea9O.d.ts → index-CKiK4KHj.d.ts} +1 -1
  36. package/dist/{index-BsmYcQQU.d.mts → index-DamklTOJ.d.mts} +3 -4
  37. package/dist/index-DgAnNnit.d.ts +173 -0
  38. package/dist/{index-BEwCPHZr.d.mts → index-M7ZB3yR5.d.mts} +4 -28
  39. package/dist/{index-88JSE0j2.d.ts → index-RfA22r-Z.d.ts} +2 -5
  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 +1004 -2142
  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-DQq17lf4.d.mts} +33 -48
  49. package/dist/{types-BZoVuUty.d.ts → types-DQq17lf4.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-6HRRPZPM.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,9 @@ __export(hooks_exports, {
590
592
  useMatchChain: () => useMatchChain,
591
593
  useMatchEvents: () => useMatchEvents,
592
594
  useMatchWallet: () => useMatchWallet,
593
- useMatchWalletAssetList: () => useMatchWalletAssetList,
594
- useMatchWalletAssets: () => useMatchWalletAssets,
595
- useMatchWalletRecords: () => useMatchWalletRecords,
596
595
  useModal: () => useModal,
597
596
  useReceipt: () => useReceipt,
598
597
  useToast: () => useToast,
599
- useTransaction: () => useTransaction,
600
598
  useUserInfo: () => useUserInfo,
601
599
  useWallet: () => useWallet
602
600
  });
@@ -669,81 +667,108 @@ import { createWalletClient } from "viem";
669
667
  import { useEffect as useEffect3, useMemo as useMemo2 } from "react";
670
668
  import { encodeDeployData } from "viem";
671
669
 
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;
670
+ // src/store/useModalStore.ts
671
+ import { create as create3 } from "zustand";
672
+
673
+ // src/hooks/useConfig.tsx
674
+ import { jsx as jsx2 } from "react/jsx-runtime";
675
+ var DEFAULT_WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
676
+ var WALLET_METHODS = ["evm", "sol", "btc", "tron", "ton"];
677
+ function useWalletConfig() {
678
+ const isDownMd = useDownMd();
679
+ const walletMap = {
680
+ evm: {
681
+ icon: /* @__PURE__ */ jsx2(EVMDarkIcon, { size: isDownMd ? 36 : 40 }),
682
+ activeIcon: /* @__PURE__ */ jsx2(EVMLightIcon, { size: isDownMd ? 36 : 40 }),
683
+ name: "EVM",
684
+ method: "evm"
685
+ },
686
+ sol: {
687
+ icon: /* @__PURE__ */ jsx2(SOLDarkIcon, { size: isDownMd ? 36 : 40 }),
688
+ activeIcon: /* @__PURE__ */ jsx2(SOLLightIcon, { size: isDownMd ? 36 : 40 }),
689
+ name: "SOL",
690
+ method: "sol"
691
+ },
692
+ btc: {
693
+ icon: /* @__PURE__ */ jsx2(BTCDarkIcon, { size: isDownMd ? 36 : 40 }),
694
+ activeIcon: /* @__PURE__ */ jsx2(BTCLightIcon, { size: isDownMd ? 36 : 40 }),
695
+ name: "BTC",
696
+ method: "btc"
697
+ },
698
+ tron: {
699
+ icon: /* @__PURE__ */ jsx2(TRXDarkIcon, { size: isDownMd ? 36 : 40 }),
700
+ activeIcon: /* @__PURE__ */ jsx2(TRXLightIcon, { size: isDownMd ? 36 : 40 }),
701
+ name: "TRON",
702
+ method: "tron"
703
+ },
704
+ ton: {
705
+ icon: /* @__PURE__ */ jsx2(TonLightIcon, { size: isDownMd ? 36 : 40 }),
706
+ activeIcon: /* @__PURE__ */ jsx2(TonLightIcon2, { size: isDownMd ? 36 : 40 }),
707
+ name: "TON",
708
+ method: "ton"
709
+ }
710
+ };
711
+ return {
712
+ walletMap
713
+ };
738
714
  }
739
715
 
716
+ // src/store/useModalStore.ts
717
+ var useSOLModalStore = create3((set) => ({
718
+ isOpen: false,
719
+ type: "",
720
+ open: (type) => set({ isOpen: true, type }),
721
+ close: () => set({ isOpen: false })
722
+ }));
723
+ var useTRONModalStore = create3((set) => ({
724
+ isOpen: false,
725
+ type: "",
726
+ open: (type) => set({ isOpen: true, type }),
727
+ close: () => set({ isOpen: false })
728
+ }));
729
+ var useTONModalStore = create3((set) => ({
730
+ isOpen: false,
731
+ type: "",
732
+ open: (type) => set({ isOpen: true, type }),
733
+ close: () => set({ isOpen: false })
734
+ }));
735
+ var useBTCModalStore = create3((set) => ({
736
+ isOpen: false,
737
+ type: "",
738
+ open: (type) => set({ isOpen: true, type }),
739
+ close: () => set({ isOpen: false })
740
+ }));
741
+ var useCEXBindModalStore = create3((set) => ({
742
+ type: "",
743
+ isOpen: false,
744
+ open: (type) => set({ isOpen: true, type }),
745
+ close: () => set({ isOpen: false })
746
+ }));
747
+ var useHashPanelStore = create3((set) => ({
748
+ isOpen: false,
749
+ hash: null,
750
+ chain: null,
751
+ open: (params) => set({
752
+ isOpen: true,
753
+ hash: params?.hash || null,
754
+ chain: params?.chain || null
755
+ }),
756
+ close: () => set({ isOpen: false })
757
+ }));
758
+ var useWalletModalStore = create3((set) => ({
759
+ isOpen: false,
760
+ type: "",
761
+ methods: [],
762
+ open: (type, methods = DEFAULT_WALLET_METHODS) => set({ isOpen: true, type, methods }),
763
+ close: () => set({ isOpen: false })
764
+ }));
765
+
740
766
  // src/hooks/useWallet.tsx
741
- import { jsx as jsx3 } from "react/jsx-runtime";
742
767
  var AppClientId = "react-sdk-" + getVersion();
743
768
  function useWallet() {
744
769
  const { address: address2, wallet: walletConfig } = useLocalStore_default();
745
770
  const { walletReady } = useStore_default();
746
- const modal = useModal();
771
+ const { open: openHashPanel } = useHashPanelStore();
747
772
  const isRecovered = async () => {
748
773
  const res = await window.matchProvider.waitUntilWalletMessage({
749
774
  method: "isRecovered"
@@ -887,11 +912,13 @@ function useWallet() {
887
912
  prepareTransactionRequest
888
913
  }
889
914
  });
915
+ openHashPanel();
890
916
  const txHash = await obj.sendRawTransaction({
891
917
  serializedTransaction
892
918
  });
893
- modal.show((props) => {
894
- return /* @__PURE__ */ jsx3(HashPanel_default, { isOpen: true, onClose: props.close, zIndex: props.zIndex, hash: txHash, chain: _chain });
919
+ openHashPanel({
920
+ hash: txHash,
921
+ chain: _chain
895
922
  });
896
923
  clearInterval(window.matchProvider.transactionMessageIntervalMap[transactionId].interval);
897
924
  delete window.matchProvider.transactionMessageIntervalMap[transactionId];
@@ -944,10 +971,10 @@ function useWallet() {
944
971
 
945
972
  // src/hooks/useCopyClipboard.ts
946
973
  import copy from "copy-to-clipboard";
947
- import { useCallback as useCallback2, useEffect as useEffect4, useState as useState4 } from "react";
974
+ import { useCallback, useEffect as useEffect4, useState as useState3 } from "react";
948
975
  function useCopyClipboard(timeout = 500) {
949
- const [isCopied, setIsCopied] = useState4(false);
950
- const staticCopy = useCallback2((text) => {
976
+ const [isCopied, setIsCopied] = useState3(false);
977
+ const staticCopy = useCallback((text) => {
951
978
  const didCopy = copy(text);
952
979
  setIsCopied(didCopy);
953
980
  }, []);
@@ -965,6 +992,48 @@ function useCopyClipboard(timeout = 500) {
965
992
  return [isCopied, staticCopy];
966
993
  }
967
994
 
995
+ // src/context/ModalContext.tsx
996
+ import { useState as useState4, useCallback as useCallback2, createContext, useContext } from "react";
997
+ import { createPortal } from "react-dom";
998
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
999
+ var ModalContext = createContext(null);
1000
+ function ModalProvider({ children }) {
1001
+ const [showModalState, setShowModalState] = useState4({
1002
+ visible: false,
1003
+ content: null
1004
+ });
1005
+ const closeShowModal = useCallback2(() => {
1006
+ setShowModalState({ visible: false, content: null });
1007
+ }, []);
1008
+ const show = useCallback2((content) => {
1009
+ setShowModalState({
1010
+ visible: true,
1011
+ content: content({ close: closeShowModal })
1012
+ });
1013
+ }, [closeShowModal]);
1014
+ const open = useCallback2((props) => {
1015
+ setShowModalState({
1016
+ visible: true,
1017
+ content: /* @__PURE__ */ jsx3(ModalDrawer, { showClose: true, isOpen: true, onClose: closeShowModal, title: props.title, children: /* @__PURE__ */ jsx3(props.content, { close: closeShowModal }) })
1018
+ });
1019
+ }, [closeShowModal]);
1020
+ const ShowModalComponent = showModalState.visible ? createPortal(
1021
+ showModalState.content,
1022
+ document.body
1023
+ ) : null;
1024
+ return /* @__PURE__ */ jsxs2(ModalContext.Provider, { value: { show, open }, children: [
1025
+ children,
1026
+ ShowModalComponent
1027
+ ] });
1028
+ }
1029
+ function useModal() {
1030
+ const context = useContext(ModalContext);
1031
+ if (!context) {
1032
+ throw new Error("useModal must be used within a ModalProvider");
1033
+ }
1034
+ return context;
1035
+ }
1036
+
968
1037
  // src/context/ToastContext.tsx
969
1038
  import { useState as useState5, useCallback as useCallback3, createContext as createContext2, useContext as useContext2 } from "react";
970
1039
  import { createPortal as createPortal2 } from "react-dom";
@@ -1024,16 +1093,14 @@ __export(wallet_exports, {
1024
1093
  useAssetListQuery: () => useAssetListQuery,
1025
1094
  useChainListQuery: () => useChainListQuery,
1026
1095
  useImportTokenListQuery: () => useImportTokenListQuery,
1027
- useWalletAssetListQuery: () => useWalletAssetListQuery,
1028
1096
  useWalletChainListQuery: () => useWalletChainListQuery,
1029
- useWalletNftListQuery: () => useWalletNftListQuery,
1030
1097
  userImportTokenApi: () => userImportTokenApi
1031
1098
  });
1032
1099
  import { useQuery } from "@tanstack/react-query";
1033
1100
  function useChainListQuery(options) {
1034
1101
  const { isLogin, token } = useUserInfo();
1035
1102
  return useQuery({
1036
- queryKey: ["match-user-chain-list", token],
1103
+ queryKey: ["match-chain-list", token],
1037
1104
  queryFn: async () => {
1038
1105
  const res = await getUserChainListApi();
1039
1106
  if (!isSuccess(res)) {
@@ -1051,7 +1118,7 @@ function useAssetListQuery({
1051
1118
  }) {
1052
1119
  const { isLogin, token } = useUserInfo();
1053
1120
  return useQuery({
1054
- queryKey: ["match-user-asset-list", token, chainId],
1121
+ queryKey: ["match-wallet-asset-list", token, chainId],
1055
1122
  queryFn: async () => {
1056
1123
  const res = await getUserWalletAssetApi({ chain_id: chainId.toString() });
1057
1124
  if (!isSuccess(res)) {
@@ -1069,7 +1136,7 @@ function useImportTokenListQuery({
1069
1136
  }) {
1070
1137
  const { isLogin, token } = useUserInfo();
1071
1138
  return useQuery({
1072
- queryKey: ["match-user-import-token-list", token, chainId],
1139
+ queryKey: ["match-wallet-import-token-list", token, chainId],
1073
1140
  queryFn: async () => {
1074
1141
  const res = await getUserImportTokenListApi({ chain_id: chainId.toString() });
1075
1142
  if (!isSuccess(res)) {
@@ -1096,54 +1163,9 @@ function useWalletChainListQuery(options) {
1096
1163
  ...options
1097
1164
  });
1098
1165
  }
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
1166
 
1144
1167
  // src/hooks/useMatchChain.tsx
1145
1168
  import { useMemo as useMemo3, useState as useState6 } from "react";
1146
- import { createPublicClient, http } from "viem";
1147
1169
  import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
1148
1170
  function useMatchChain() {
1149
1171
  const chainListQuery = useChainListQuery();
@@ -1203,481 +1225,71 @@ function useMatchChain() {
1203
1225
  content: ChangeNetwork
1204
1226
  });
1205
1227
  };
1206
- const publicClient = useMemo3(() => {
1207
- if (!chain) {
1208
- return null;
1209
- }
1210
- return createPublicClient({
1211
- chain,
1212
- transport: http()
1213
- });
1214
- }, [chain]);
1215
1228
  return {
1216
1229
  list: chainListQuery.data,
1217
1230
  chainId,
1218
1231
  setChainId,
1219
1232
  chain,
1220
1233
  explorerLink,
1221
- showChangeNetwork,
1222
- publicClient
1234
+ showChangeNetwork
1223
1235
  };
1224
1236
  }
1225
1237
 
1226
1238
  // src/hooks/useMatchWallet.tsx
1227
1239
  import { QRCode } from "react-qrcode";
1228
- import { useEffect as useEffect6, useMemo as useMemo4, useRef, useState as useState7 } from "react";
1229
-
1230
- // example/src/config/contract.ts
1231
- var address = "0x4143e29770fd63e24bb1f32d50bf8a590e34de4b";
1232
-
1233
- // 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";
1240
+ import { useEffect as useEffect6, useState as useState7 } from "react";
1243
1241
  import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
1244
- var ReceiveModal = () => {
1245
- const chain = useMatchChain();
1242
+ function useMatchWallet() {
1243
+ const modal = useModal();
1246
1244
  const { address: address2 } = useWallet();
1245
+ const chain = useMatchChain();
1247
1246
  const [copied, setCopied] = useCopyClipboard();
1248
1247
  const toast = useToast();
1249
1248
  const onCopy = () => {
1250
1249
  setCopied(address2);
1251
1250
  toast.success("Copied!");
1252
1251
  };
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
1252
  const showReceiveModal = () => {
1253
+ const chainLink = chain.explorerLink("address/" + address2);
1254
+ const ReceiveModal = () => {
1255
+ return /* @__PURE__ */ jsxs5("div", { className: `matchid-receive-modal`, children: [
1256
+ /* @__PURE__ */ jsxs5("div", { className: "matchid-receive-container", children: [
1257
+ /* @__PURE__ */ jsx6("div", { className: `matchid-receive-text`, children: "Receive by scanning the QR code" }),
1258
+ /* @__PURE__ */ jsx6("div", { className: `matchid-qr-container`, children: /* @__PURE__ */ jsx6(
1259
+ QRCode,
1260
+ {
1261
+ margin: "0",
1262
+ className: `matchid-qr-code`,
1263
+ value: address2
1264
+ }
1265
+ ) }),
1266
+ /* @__PURE__ */ jsx6(
1267
+ "a",
1268
+ {
1269
+ href: chainLink,
1270
+ target: "_blank",
1271
+ className: `matchid-receive-link`,
1272
+ children: address2
1273
+ }
1274
+ )
1275
+ ] }),
1276
+ /* @__PURE__ */ jsx6(Button, { size: "lg", onClick: onCopy, block: true, highlight: true, disabled: copied, children: "Copy Address" })
1277
+ ] });
1278
+ };
1439
1279
  modal.open({
1440
1280
  title: "Receive",
1441
1281
  content: ReceiveModal
1442
1282
  });
1443
1283
  };
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
- return {
1457
- showReceiveModal,
1458
- showImportTokenModal,
1459
- showSendListModal
1460
- };
1461
- }
1462
- function useMatchWalletRecords({
1463
- pageSize = 50
1464
- }) {
1465
- const [hasMore, setHasMore] = useState7(true);
1466
- const [items, setItems] = useState7([]);
1467
- const { chainId } = useMatchChain();
1468
- const hasMoreRef = useRef(hasMore);
1469
- const fetchMoreData = async () => {
1470
- if (!hasMoreRef.current) {
1471
- return;
1472
- }
1473
- const chainIdStr = chainId ? chainId.toString() : "";
1474
- const res = await getUserWalletTransactionsApi({
1475
- chain_id: chainIdStr,
1476
- limit: pageSize,
1477
- offset: items.length
1478
- });
1479
- if (isSuccess(res)) {
1480
- if (res.data && res.data.transactions.length > 0) {
1481
- setItems(items.concat(res.data.transactions));
1482
- }
1483
- hasMoreRef.current = res.data && res.data.transactions.length >= pageSize;
1484
- setHasMore(res.data && res.data.transactions.length >= pageSize);
1485
- }
1486
- };
1487
- const onInit = async () => {
1488
- setItems([]);
1489
- setHasMore(true);
1490
- hasMoreRef.current = true;
1491
- fetchMoreData();
1492
- };
1493
- useEffect6(() => {
1494
- if (chainId && address) {
1495
- onInit();
1496
- }
1497
- }, [chainId, address]);
1498
1284
  return {
1499
- items,
1500
- fetchMoreData,
1501
- hasMore
1502
- };
1503
- }
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
1285
+ showReceiveModal
1674
1286
  };
1675
1287
  }
1676
1288
 
1677
1289
  // src/hooks/useReceipt.tsx
1678
1290
  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";
1291
+ import { useQuery as useQuery2 } from "@tanstack/react-query";
1292
+ import { createPublicClient, defineChain, http } from "viem";
1681
1293
  var CACHE_TTL = 86400 * 30 * 1e3;
1682
1294
  var MAX_CACHE_SIZE = 500;
1683
1295
  var STORAGE_KEY = "match_receipt_logs";
@@ -1785,7 +1397,7 @@ function useReceipt({
1785
1397
  const cache = useReceiptCache();
1786
1398
  const chain = list?.find((item) => item.id === chainId);
1787
1399
  const [shouldRefetch, setShouldRefetch] = useState8(true);
1788
- const query = useQuery3({
1400
+ const query = useQuery2({
1789
1401
  queryKey: ["match-tx-receipt", hash, chain],
1790
1402
  queryFn: async () => {
1791
1403
  if (!chain || !hash) return false;
@@ -1794,11 +1406,12 @@ function useReceipt({
1794
1406
  return cache.get(cacheKey);
1795
1407
  }
1796
1408
  try {
1797
- const publicClient = createPublicClient2({
1409
+ const publicClient = createPublicClient({
1410
+ //@ts-ignore
1798
1411
  chain: defineChain(chain),
1799
- transport: http2()
1412
+ transport: http()
1800
1413
  });
1801
- const receipt = await publicClient.getTransactionReceipt({ hash });
1414
+ const receipt = await publicClient.getTransaction({ hash });
1802
1415
  if (!receipt) {
1803
1416
  return false;
1804
1417
  }
@@ -1814,243 +1427,14 @@ function useReceipt({
1814
1427
  if (query.data) {
1815
1428
  setShouldRefetch(false);
1816
1429
  }
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
- };
1430
+ }, [query.data]);
1431
+ return query;
2009
1432
  }
2010
1433
 
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
1434
  // src/components/CEXBindModal/index.tsx
2051
- import { useEffect as useEffect9, useMemo as useMemo5, useState as useState10 } from "react";
1435
+ import { useEffect as useEffect8, useMemo as useMemo5, useState as useState9 } from "react";
2052
1436
  import { FormattedMessage as FormattedMessage2, useIntl as useIntl2 } from "react-intl";
2053
- import { jsx as jsx8, jsxs as jsxs6 } from "react/jsx-runtime";
1437
+ import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
2054
1438
  function CEXBindModal({
2055
1439
  onClose,
2056
1440
  type,
@@ -2059,16 +1443,16 @@ function CEXBindModal({
2059
1443
  }) {
2060
1444
  const intl = useIntl2();
2061
1445
  const { events } = useMatch();
2062
- const [APIPassphrase, setAPIPassphrase] = useState10("");
1446
+ const [APIPassphrase, setAPIPassphrase] = useState9("");
2063
1447
  const { refreshOverview } = useUserInfo();
2064
- const [loading, setLoading] = useState10(false);
2065
- const [key, setKey] = useState10("");
2066
- const [secret, setSecret] = useState10("");
2067
- const [error, setError] = useState10("");
1448
+ const [loading, setLoading] = useState9(false);
1449
+ const [key, setKey] = useState9("");
1450
+ const [secret, setSecret] = useState9("");
1451
+ const [error, setError] = useState9("");
2068
1452
  const needPassphrase = useMemo5(() => {
2069
1453
  return ["bitget", "okx"].includes(type.toLowerCase());
2070
1454
  }, [type]);
2071
- useEffect9(() => {
1455
+ useEffect8(() => {
2072
1456
  if (isOpen) {
2073
1457
  setSecret("");
2074
1458
  setKey("");
@@ -2105,20 +1489,20 @@ function CEXBindModal({
2105
1489
  setLoading(false);
2106
1490
  }
2107
1491
  };
2108
- return /* @__PURE__ */ jsx8(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
1492
+ return /* @__PURE__ */ jsx7(ModalWithHeader, { showClose: true, isOpen, onClose, title: intl.formatMessage({
2109
1493
  id: "CEXBindTitle"
2110
1494
  }, {
2111
1495
  type
2112
1496
  }), ...props, children: /* @__PURE__ */ jsxs6("div", { className: "matchid-cex-modal", children: [
2113
1497
  /* @__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" }) })
1498
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindAttention" }) }),
1499
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips1" }) }),
1500
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips2" }) }),
1501
+ /* @__PURE__ */ jsx7("p", { children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "CEXBindTips3" }) })
2118
1502
  ] }),
2119
- /* @__PURE__ */ jsx8(Field, { label: intl.formatMessage({
1503
+ /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2120
1504
  id: "CEXBindApiKey"
2121
- }), children: /* @__PURE__ */ jsx8(
1505
+ }), children: /* @__PURE__ */ jsx7(
2122
1506
  Input,
2123
1507
  {
2124
1508
  value: key,
@@ -2126,9 +1510,9 @@ function CEXBindModal({
2126
1510
  placeholder: "**** **** ****"
2127
1511
  }
2128
1512
  ) }),
2129
- /* @__PURE__ */ jsx8(Field, { label: intl.formatMessage({
1513
+ /* @__PURE__ */ jsx7(Field, { label: intl.formatMessage({
2130
1514
  id: "CEXBindApiSecretKey"
2131
- }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx8(
1515
+ }), error: !needPassphrase && error, children: /* @__PURE__ */ jsx7(
2132
1516
  Input,
2133
1517
  {
2134
1518
  value: secret,
@@ -2136,9 +1520,9 @@ function CEXBindModal({
2136
1520
  placeholder: "**** **** ****"
2137
1521
  }
2138
1522
  ) }),
2139
- needPassphrase && /* @__PURE__ */ jsx8(Field, { error, label: intl.formatMessage({
1523
+ needPassphrase && /* @__PURE__ */ jsx7(Field, { error, label: intl.formatMessage({
2140
1524
  id: "CEXBindApiPassphrase"
2141
- }), children: /* @__PURE__ */ jsx8(
1525
+ }), children: /* @__PURE__ */ jsx7(
2142
1526
  Input,
2143
1527
  {
2144
1528
  value: APIPassphrase,
@@ -2146,7 +1530,7 @@ function CEXBindModal({
2146
1530
  placeholder: "**** **** ****"
2147
1531
  }
2148
1532
  ) }),
2149
- /* @__PURE__ */ jsx8(
1533
+ /* @__PURE__ */ jsx7(
2150
1534
  Button,
2151
1535
  {
2152
1536
  onClick: SubmitApi,
@@ -2154,14 +1538,14 @@ function CEXBindModal({
2154
1538
  block: true,
2155
1539
  loading,
2156
1540
  disabled: !key || !secret,
2157
- children: /* @__PURE__ */ jsx8(FormattedMessage2, { id: "continue" })
1541
+ children: /* @__PURE__ */ jsx7(FormattedMessage2, { id: "continue" })
2158
1542
  }
2159
1543
  )
2160
1544
  ] }) });
2161
1545
  }
2162
1546
 
2163
1547
  // src/context/BusinessProvider.tsx
2164
- import { Fragment, jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1548
+ import { Fragment, jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
2165
1549
  function BusinessProvider({ children }) {
2166
1550
  const { overview, token } = useUserInfo();
2167
1551
  const { type: SOLType, isOpen: SOLIsOpen, close: SOLClose } = useSOLModalStore();
@@ -2170,12 +1554,13 @@ function BusinessProvider({ children }) {
2170
1554
  const { type: BTCType, isOpen: BTCIsOpen, close: BTCClose } = useBTCModalStore();
2171
1555
  const { type: CEXType, isOpen: CEXIsOpen, close: CEXClose } = useCEXBindModalStore();
2172
1556
  const WalletModalStore = useWalletModalStore();
1557
+ const { close: HashPanelClose, ...hashPanelProps } = useHashPanelStore();
2173
1558
  const walletModalClose = (func) => {
2174
1559
  WalletModalStore.close();
2175
1560
  func();
2176
1561
  };
2177
1562
  return /* @__PURE__ */ jsxs7(Fragment, { children: [
2178
- /* @__PURE__ */ jsx9(
1563
+ /* @__PURE__ */ jsx8(
2179
1564
  SOLModal,
2180
1565
  {
2181
1566
  isOpen: SOLIsOpen && (SOLType == "login" && !overview && !token || SOLType == "bind" && !!token && !!overview),
@@ -2185,7 +1570,7 @@ function BusinessProvider({ children }) {
2185
1570
  zIndex: 199
2186
1571
  }
2187
1572
  ),
2188
- /* @__PURE__ */ jsx9(
1573
+ /* @__PURE__ */ jsx8(
2189
1574
  TRONModal,
2190
1575
  {
2191
1576
  isOpen: TRONIsOpen && (TRONType == "login" && !overview && !token || TRONType == "bind" && !!token && !!overview),
@@ -2195,7 +1580,7 @@ function BusinessProvider({ children }) {
2195
1580
  zIndex: 199
2196
1581
  }
2197
1582
  ),
2198
- /* @__PURE__ */ jsx9(
1583
+ /* @__PURE__ */ jsx8(
2199
1584
  TONModal,
2200
1585
  {
2201
1586
  isOpen: TONIsOpen && (TONType == "login" && !overview && !token || TONType == "bind" && !!token && !!overview),
@@ -2205,7 +1590,7 @@ function BusinessProvider({ children }) {
2205
1590
  zIndex: 199
2206
1591
  }
2207
1592
  ),
2208
- /* @__PURE__ */ jsx9(
1593
+ /* @__PURE__ */ jsx8(
2209
1594
  BTCModal,
2210
1595
  {
2211
1596
  isOpen: BTCIsOpen && (BTCType == "login" && !overview && !token || BTCType == "bind" && !!token && !!overview),
@@ -2215,7 +1600,7 @@ function BusinessProvider({ children }) {
2215
1600
  zIndex: 199
2216
1601
  }
2217
1602
  ),
2218
- /* @__PURE__ */ jsx9(
1603
+ /* @__PURE__ */ jsx8(
2219
1604
  CEXBindModal,
2220
1605
  {
2221
1606
  isOpen: CEXIsOpen && (!!token && !!overview),
@@ -2224,7 +1609,8 @@ function BusinessProvider({ children }) {
2224
1609
  zIndex: 199
2225
1610
  }
2226
1611
  ),
2227
- /* @__PURE__ */ jsx9(
1612
+ /* @__PURE__ */ jsx8(HashPanel_default, { onClose: HashPanelClose, ...hashPanelProps }),
1613
+ /* @__PURE__ */ jsx8(
2228
1614
  WalletModal,
2229
1615
  {
2230
1616
  isOpen: WalletModalStore.isOpen && (WalletModalStore.type == "login" && !overview && !token || WalletModalStore.type == "bind" && !!token && !!overview),
@@ -2239,14 +1625,14 @@ function BusinessProvider({ children }) {
2239
1625
  }
2240
1626
 
2241
1627
  // src/context/index.tsx
2242
- import { jsx as jsx10 } from "react/jsx-runtime";
1628
+ import { jsx as jsx9 } from "react/jsx-runtime";
2243
1629
  var Providers = ({ children }) => {
2244
- return /* @__PURE__ */ jsx10(ToastProvider, { children: /* @__PURE__ */ jsx10(ModalProvider, { children: /* @__PURE__ */ jsx10(BusinessProvider, { children }) }) });
1630
+ return /* @__PURE__ */ jsx9(ToastProvider, { children: /* @__PURE__ */ jsx9(ModalProvider, { children: /* @__PURE__ */ jsx9(BusinessProvider, { children }) }) });
2245
1631
  };
2246
1632
  var context_default = Providers;
2247
1633
 
2248
1634
  // src/hooks/useWalletInit.ts
2249
- import { useEffect as useEffect10, useRef as useRef2 } from "react";
1635
+ import { useEffect as useEffect9, useRef } from "react";
2250
1636
 
2251
1637
  // src/utils/wallet.ts
2252
1638
  var sendMessage = ({ method, data, resolve, reject, timeout }) => {
@@ -2279,11 +1665,11 @@ function useWalletInit({
2279
1665
  }) {
2280
1666
  const { endpoints, token, overview, setWallet, wallet, appid, locale, refreshOverview } = useLocalStore_default();
2281
1667
  const { setWalletReady, walletReady } = useStore_default();
2282
- const iframeReadyRef = useRef2(walletReady);
2283
- useEffect10(() => {
1668
+ const iframeReadyRef = useRef(walletReady);
1669
+ useEffect9(() => {
2284
1670
  setWallet(config);
2285
1671
  }, [config]);
2286
- useEffect10(() => {
1672
+ useEffect9(() => {
2287
1673
  matchlog_default.log("sdk.mpc.status", walletReady, iframeReadyRef.current);
2288
1674
  iframeReadyRef.current = walletReady;
2289
1675
  if (iframeReadyRef.current) {
@@ -2300,7 +1686,7 @@ function useWalletInit({
2300
1686
  onReady();
2301
1687
  }
2302
1688
  }, [walletReady]);
2303
- useEffect10(() => {
1689
+ useEffect9(() => {
2304
1690
  if (!endpoints.auth || !appid || !token || !config) {
2305
1691
  const existingIframe = getWalletIframe();
2306
1692
  if (existingIframe) {
@@ -2400,7 +1786,7 @@ function useWalletInit({
2400
1786
  }
2401
1787
  }
2402
1788
  }, [endpoints.auth, appid, token, config]);
2403
- useEffect10(() => {
1789
+ useEffect9(() => {
2404
1790
  const messageHandle = async (e) => {
2405
1791
  if (e.origin !== endpoints.auth.substring(0, endpoints.auth.length - 1)) {
2406
1792
  return;
@@ -2481,7 +1867,7 @@ function useWalletInit({
2481
1867
  }
2482
1868
 
2483
1869
  // src/hooks/useInit.tsx
2484
- import { useEffect as useEffect11, useRef as useRef3 } from "react";
1870
+ import { useEffect as useEffect10, useRef as useRef2 } from "react";
2485
1871
  function useInit({
2486
1872
  theme,
2487
1873
  appid,
@@ -2501,23 +1887,23 @@ function useInit({
2501
1887
  locale: realLocale
2502
1888
  } = useLocalStore_default();
2503
1889
  const walletModalStore = useWalletModalStore();
2504
- const overviewLoadingRef = useRef3(false);
1890
+ const overviewLoadingRef = useRef2(false);
2505
1891
  const searchParams = new URLSearchParams(window.location.search);
2506
1892
  const matchToken = searchParams.get("matchToken");
2507
1893
  const realEndpoints = endpoints || env_default.endpoints;
2508
- useEffect11(() => {
1894
+ useEffect10(() => {
2509
1895
  setTheme(theme);
2510
1896
  }, [theme]);
2511
- useEffect11(() => {
1897
+ useEffect10(() => {
2512
1898
  setAppid(appid);
2513
1899
  }, [appid]);
2514
- useEffect11(() => {
1900
+ useEffect10(() => {
2515
1901
  setEndpoints(realEndpoints);
2516
1902
  }, [realEndpoints]);
2517
- useEffect11(() => {
1903
+ useEffect10(() => {
2518
1904
  setLocale(locale || "en");
2519
1905
  }, [locale]);
2520
- useEffect11(() => {
1906
+ useEffect10(() => {
2521
1907
  if (matchToken) {
2522
1908
  const tokenData = JSON.parse(atob(matchToken));
2523
1909
  if (tokenData && tokenData.mid && tokenData.token) {
@@ -2528,7 +1914,7 @@ function useInit({
2528
1914
  }
2529
1915
  }
2530
1916
  }, [matchToken]);
2531
- useEffect11(() => {
1917
+ useEffect10(() => {
2532
1918
  const onLoginMessage = (event) => {
2533
1919
  const res = event.data;
2534
1920
  if (res.event === "login" && res.data && (res.data.token || res.data.token_type && res.data.access_token)) {
@@ -2565,7 +1951,7 @@ function useInit({
2565
1951
  overviewLoadingRef.current = false;
2566
1952
  }
2567
1953
  };
2568
- useEffect11(() => {
1954
+ useEffect10(() => {
2569
1955
  if (token) {
2570
1956
  loadOverview();
2571
1957
  }
@@ -3081,7 +2467,7 @@ var messages = {
3081
2467
  };
3082
2468
 
3083
2469
  // src/MatchContext.tsx
3084
- import { jsx as jsx11 } from "react/jsx-runtime";
2470
+ import { jsx as jsx10 } from "react/jsx-runtime";
3085
2471
  var queryClient = new QueryClient();
3086
2472
  var MatchContext = createContext3(void 0);
3087
2473
  var MatchProvider = ({
@@ -3103,7 +2489,7 @@ var MatchProvider = ({
3103
2489
  useWalletInit({
3104
2490
  config: wallet
3105
2491
  });
3106
- return /* @__PURE__ */ jsx11(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx11(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx11(
2492
+ return /* @__PURE__ */ jsx10(IntlProvider, { locale: realLocale, messages: messages[realLocale], children: /* @__PURE__ */ jsx10(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx10(
3107
2493
  MatchContext.Provider,
3108
2494
  {
3109
2495
  value: {
@@ -3114,7 +2500,7 @@ var MatchProvider = ({
3114
2500
  theme,
3115
2501
  locale: realLocale
3116
2502
  },
3117
- children: /* @__PURE__ */ jsx11(context_default, { children })
2503
+ children: /* @__PURE__ */ jsx10(context_default, { children })
3118
2504
  }
3119
2505
  ) }) });
3120
2506
  };
@@ -3380,23 +2766,29 @@ function useUserInfo() {
3380
2766
  }
3381
2767
 
3382
2768
  // src/components/EmailModal/StepVerify.tsx
3383
- import { useEffect as useEffect13, useMemo as useMemo7, useRef as useRef4, useState as useState12 } from "react";
2769
+ import { useEffect as useEffect12, useMemo as useMemo7, useRef as useRef3, useState as useState11 } from "react";
2770
+
2771
+ // src/config/index.tsx
2772
+ var EMAIL_INTERVAL = 60;
2773
+ var EMAIL_CODE_LENGTH = 6;
2774
+
2775
+ // src/components/EmailModal/StepVerify.tsx
3384
2776
  import { FormattedMessage as FormattedMessage3, useIntl as useIntl3 } from "react-intl";
3385
- import { jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
2777
+ import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
3386
2778
  function StepVerify(props) {
3387
2779
  const intl = useIntl3();
3388
2780
  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({
2781
+ const [error, setError] = useState11("");
2782
+ const [code, setCode] = useState11("");
2783
+ const [sending, setSending] = useState11(false);
2784
+ const [submitting, setSubmitting] = useState11(false);
2785
+ const sendTimeRef = useRef3(0);
2786
+ const [sendBtnText, setSendBtnText] = useState11(intl.formatMessage({
3395
2787
  id: "send"
3396
2788
  }));
3397
2789
  const intervalTime = EMAIL_INTERVAL;
3398
2790
  const codeLength = EMAIL_CODE_LENGTH;
3399
- const intervalRef = useRef4(null);
2791
+ const intervalRef = useRef3(null);
3400
2792
  const isDownMd = useDownMd();
3401
2793
  const onSend = async () => {
3402
2794
  if (sendTimeRef.current > 0) {
@@ -3427,7 +2819,7 @@ function StepVerify(props) {
3427
2819
  setSending(false);
3428
2820
  }
3429
2821
  };
3430
- useEffect13(() => {
2822
+ useEffect12(() => {
3431
2823
  onSend();
3432
2824
  return () => {
3433
2825
  if (intervalRef.current) {
@@ -3461,15 +2853,15 @@ function StepVerify(props) {
3461
2853
  };
3462
2854
  return /* @__PURE__ */ jsxs8("div", { className: "matchid-email-verify-box", children: [
3463
2855
  /* @__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 }) }),
2856
+ /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-icon", children: /* @__PURE__ */ jsx11(EmailLineIcon, { size: isDownMd ? 19 : 24 }) }),
3465
2857
  /* @__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" }) })
2858
+ /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-value", children: props.email }),
2859
+ /* @__PURE__ */ jsx11("div", { className: "matchid-email-verify-header-tips", children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "sendEmailTips" }) })
3468
2860
  ] })
3469
2861
  ] }),
3470
- /* @__PURE__ */ jsx12(Field, { label: intl.formatMessage({
2862
+ /* @__PURE__ */ jsx11(Field, { label: intl.formatMessage({
3471
2863
  id: "verificationCode"
3472
- }), error, children: /* @__PURE__ */ jsx12(
2864
+ }), error, children: /* @__PURE__ */ jsx11(
3473
2865
  Input,
3474
2866
  {
3475
2867
  placeholder: intl.formatMessage({
@@ -3479,7 +2871,7 @@ function StepVerify(props) {
3479
2871
  maxLength: codeLength,
3480
2872
  onChange: (e) => setCode(e.target.value),
3481
2873
  value: code,
3482
- after: /* @__PURE__ */ jsx12(
2874
+ after: /* @__PURE__ */ jsx11(
3483
2875
  Button,
3484
2876
  {
3485
2877
  highlight: true,
@@ -3498,13 +2890,13 @@ function StepVerify(props) {
3498
2890
  )
3499
2891
  }
3500
2892
  ) }),
3501
- /* @__PURE__ */ jsx12(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx12(FormattedMessage3, { id: "continue" }) })
2893
+ /* @__PURE__ */ jsx11(Button, { disabled: !canContinue, highlight: true, block: true, size: "lg", onClick: onContinue, children: /* @__PURE__ */ jsx11(FormattedMessage3, { id: "continue" }) })
3502
2894
  ] });
3503
2895
  }
3504
2896
 
3505
2897
  // src/components/EmailModal/index.tsx
3506
2898
  import { useIntl as useIntl4 } from "react-intl";
3507
- import { jsx as jsx13 } from "react/jsx-runtime";
2899
+ import { jsx as jsx12 } from "react/jsx-runtime";
3508
2900
  function EmailModal({
3509
2901
  isOpen = false,
3510
2902
  width = 480,
@@ -3512,16 +2904,16 @@ function EmailModal({
3512
2904
  onBack,
3513
2905
  onLogin
3514
2906
  }) {
3515
- const [step, setStep] = useState13("input");
3516
- const [emailVal, setEmailVal] = useState13("");
2907
+ const [step, setStep] = useState12("input");
2908
+ const [emailVal, setEmailVal] = useState12("");
3517
2909
  const intl = useIntl4();
3518
- useEffect14(() => {
2910
+ useEffect13(() => {
3519
2911
  if (!isOpen) {
3520
2912
  setStep("input");
3521
2913
  setEmailVal("");
3522
2914
  }
3523
2915
  }, [isOpen]);
3524
- return /* @__PURE__ */ jsx13(
2916
+ return /* @__PURE__ */ jsx12(
3525
2917
  ModalWithHeader,
3526
2918
  {
3527
2919
  isOpen,
@@ -3531,22 +2923,22 @@ function EmailModal({
3531
2923
  id: "email"
3532
2924
  }),
3533
2925
  onBack: step == "verify" ? () => setStep("input") : onBack,
3534
- children: step === "input" ? /* @__PURE__ */ jsx13(StepEmail, { email: emailVal, onContinue: (email) => {
2926
+ children: step === "input" ? /* @__PURE__ */ jsx12(StepEmail, { email: emailVal, onContinue: (email) => {
3535
2927
  setEmailVal(email);
3536
2928
  setStep("verify");
3537
- } }) : /* @__PURE__ */ jsx13(StepVerify, { email: emailVal, onSuccess: onLogin })
2929
+ } }) : /* @__PURE__ */ jsx12(StepVerify, { email: emailVal, onSuccess: onLogin })
3538
2930
  }
3539
2931
  );
3540
2932
  }
3541
2933
 
3542
2934
  // src/components/LoginBox/index.tsx
3543
- import { useMemo as useMemo8, useState as useState14 } from "react";
2935
+ import { useMemo as useMemo8, useState as useState13 } from "react";
3544
2936
  import { FormattedMessage as FormattedMessage4, useIntl as useIntl5 } from "react-intl";
3545
2937
 
3546
2938
  // src/hooks/useAppConfig.ts
3547
- import { useQuery as useQuery5 } from "@tanstack/react-query";
2939
+ import { useQuery as useQuery3 } from "@tanstack/react-query";
3548
2940
  function useAppConfig() {
3549
- const query = useQuery5({
2941
+ const query = useQuery3({
3550
2942
  queryKey: ["appConfig"],
3551
2943
  queryFn: async () => {
3552
2944
  const res = await getAppConfigApi();
@@ -3564,7 +2956,7 @@ function useAppConfig() {
3564
2956
  }
3565
2957
 
3566
2958
  // src/components/LoginBox/index.tsx
3567
- import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
2959
+ import { Fragment as Fragment2, jsx as jsx13, jsxs as jsxs9 } from "react/jsx-runtime";
3568
2960
  var RecommendItem = ({
3569
2961
  icon,
3570
2962
  name,
@@ -3576,17 +2968,17 @@ var RecommendItem = ({
3576
2968
  return /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method", children: [
3577
2969
  /* @__PURE__ */ jsxs9("div", { className: "matchid-login-recommend-method-item", onClick, children: [
3578
2970
  /* @__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 })
2971
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-method-icon", children: icon }),
2972
+ /* @__PURE__ */ jsx13("span", { className: "matchid-login-recommend-method-name", children: name })
3581
2973
  ] }),
3582
- footer ? footer : children ? /* @__PURE__ */ jsx14(
2974
+ footer ? footer : children ? /* @__PURE__ */ jsx13(
3583
2975
  ArrowDownIcon,
3584
2976
  {
3585
2977
  className: `matchid-login-recommend-method-arrow ${showChildren ? "matchid-login-recommend-method-arrow-active" : ""}`,
3586
2978
  size: 20,
3587
2979
  color: "var(--matchid-arrow-color)"
3588
2980
  }
3589
- ) : /* @__PURE__ */ jsx14(
2981
+ ) : /* @__PURE__ */ jsx13(
3590
2982
  ArrowRightIcon,
3591
2983
  {
3592
2984
  className: "matchid-login-recommend-method-arrow",
@@ -3595,7 +2987,7 @@ var RecommendItem = ({
3595
2987
  }
3596
2988
  )
3597
2989
  ] }),
3598
- children && /* @__PURE__ */ jsx14(
2990
+ children && /* @__PURE__ */ jsx13(
3599
2991
  "div",
3600
2992
  {
3601
2993
  className: `matchid-login-recommend-method-popover ${showChildren ? "matchid-login-recommend-method-popover-active" : ""}`,
@@ -3653,62 +3045,62 @@ function LoginBox({
3653
3045
  walletMethods: walletMethodList
3654
3046
  };
3655
3047
  }, [config.platform, recommendMethods, methods, walletMethods]);
3656
- const [emailOpen, setEmailOpen] = useState14(false);
3048
+ const [emailOpen, setEmailOpen] = useState13(false);
3657
3049
  const { login } = useUserInfo();
3658
- const [showWallet, setShowWallet] = useState14(false);
3050
+ const [showWallet, setShowWallet] = useState13(false);
3659
3051
  const intl = useIntl5();
3660
3052
  const isDownMd = useDownMd();
3661
3053
  const methodMap = {
3662
3054
  wallet: {
3663
- icon: /* @__PURE__ */ jsx14(WalletIcon, { size: isDownMd ? 36 : 40 }),
3055
+ icon: /* @__PURE__ */ jsx13(WalletIcon, { size: isDownMd ? 36 : 40 }),
3664
3056
  name: intl.formatMessage({ id: "wallet" }),
3665
3057
  onClick: () => setShowWallet(!showWallet),
3666
3058
  type: "wallet"
3667
3059
  },
3668
3060
  email: {
3669
- icon: /* @__PURE__ */ jsx14(EmailIcon, { size: isDownMd ? 36 : 40 }),
3061
+ icon: /* @__PURE__ */ jsx13(EmailIcon, { size: isDownMd ? 36 : 40 }),
3670
3062
  name: intl.formatMessage({ id: "email" }),
3671
3063
  onClick: () => {
3672
3064
  setEmailOpen(true);
3673
3065
  }
3674
3066
  },
3675
3067
  google: {
3676
- icon: /* @__PURE__ */ jsx14(GoogleIcon, { size: isDownMd ? 36 : 40 }),
3068
+ icon: /* @__PURE__ */ jsx13(GoogleIcon, { size: isDownMd ? 36 : 40 }),
3677
3069
  name: "Google",
3678
3070
  onClick: () => login("google")
3679
3071
  },
3680
3072
  twitter: {
3681
- icon: /* @__PURE__ */ jsx14(XIcon, { size: isDownMd ? 36 : 40 }),
3073
+ icon: /* @__PURE__ */ jsx13(XIcon, { size: isDownMd ? 36 : 40 }),
3682
3074
  name: "X",
3683
3075
  onClick: () => login("twitter")
3684
3076
  },
3685
3077
  telegram: {
3686
- icon: /* @__PURE__ */ jsx14(TelegramIcon, { size: isDownMd ? 36 : 40 }),
3078
+ icon: /* @__PURE__ */ jsx13(TelegramIcon, { size: isDownMd ? 36 : 40 }),
3687
3079
  name: "Telegram",
3688
3080
  onClick: () => login("telegram")
3689
3081
  },
3690
3082
  github: {
3691
- icon: /* @__PURE__ */ jsx14(GithubIcon, { size: isDownMd ? 36 : 40 }),
3083
+ icon: /* @__PURE__ */ jsx13(GithubIcon, { size: isDownMd ? 36 : 40 }),
3692
3084
  name: "Github",
3693
3085
  onClick: () => login("github")
3694
3086
  },
3695
3087
  discord: {
3696
- icon: /* @__PURE__ */ jsx14(DiscordIcon, { size: isDownMd ? 36 : 40 }),
3088
+ icon: /* @__PURE__ */ jsx13(DiscordIcon, { size: isDownMd ? 36 : 40 }),
3697
3089
  name: "Discord",
3698
3090
  onClick: () => login("discord")
3699
3091
  },
3700
3092
  linkedin: {
3701
- icon: /* @__PURE__ */ jsx14(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
3093
+ icon: /* @__PURE__ */ jsx13(LinkedinIcon, { size: isDownMd ? 36 : 40 }),
3702
3094
  name: "LinkedIn",
3703
3095
  onClick: () => login("linkedin")
3704
3096
  },
3705
3097
  facebook: {
3706
- icon: /* @__PURE__ */ jsx14(FacebookIcon, { size: isDownMd ? 36 : 40 }),
3098
+ icon: /* @__PURE__ */ jsx13(FacebookIcon, { size: isDownMd ? 36 : 40 }),
3707
3099
  name: "Facebook",
3708
3100
  onClick: () => login("facebook")
3709
3101
  },
3710
3102
  youtube: {
3711
- icon: /* @__PURE__ */ jsx14(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
3103
+ icon: /* @__PURE__ */ jsx13(YoutubeIcon, { size: isDownMd ? 36 : 40 }),
3712
3104
  name: "Youtube",
3713
3105
  onClick: () => login("youtube")
3714
3106
  }
@@ -3716,8 +3108,8 @@ function LoginBox({
3716
3108
  const { walletMap } = useWalletConfig();
3717
3109
  return /* @__PURE__ */ jsxs9(Fragment2, { children: [
3718
3110
  (!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(
3111
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-list", children: methodConfig.recommendMethods.map((m) => {
3112
+ return /* @__PURE__ */ jsx13(
3721
3113
  RecommendItem,
3722
3114
  {
3723
3115
  icon: methodMap[m]?.icon,
@@ -3725,8 +3117,8 @@ function LoginBox({
3725
3117
  onClick: methodMap[m]?.onClick,
3726
3118
  showChildren: m == "wallet" && showWallet,
3727
3119
  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) => {
3120
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-divider" }),
3121
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-list", children: methodConfig.walletMethods.map((n) => {
3730
3122
  const m2 = walletMap[n];
3731
3123
  return /* @__PURE__ */ jsxs9(
3732
3124
  "div",
@@ -3737,15 +3129,15 @@ function LoginBox({
3737
3129
  },
3738
3130
  children: [
3739
3131
  /* @__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(
3132
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-recommend-wallet-item-icon", children: m2.icon }),
3133
+ /* @__PURE__ */ jsx13(
3742
3134
  "div",
3743
3135
  {
3744
3136
  className: "matchid-login-recommend-wallet-item-hover-icon",
3745
3137
  children: m2.activeIcon
3746
3138
  }
3747
3139
  ),
3748
- /* @__PURE__ */ jsx14(
3140
+ /* @__PURE__ */ jsx13(
3749
3141
  "span",
3750
3142
  {
3751
3143
  className: "matchid-login-recommend-wallet-item-name",
@@ -3753,7 +3145,7 @@ function LoginBox({
3753
3145
  }
3754
3146
  )
3755
3147
  ] }),
3756
- /* @__PURE__ */ jsx14(
3148
+ /* @__PURE__ */ jsx13(
3757
3149
  ArrowRightIcon,
3758
3150
  {
3759
3151
  className: "matchid-login-recommend-wallet-item-arrow",
@@ -3772,9 +3164,9 @@ function LoginBox({
3772
3164
  );
3773
3165
  }) }),
3774
3166
  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(
3167
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-other-text", children: /* @__PURE__ */ jsx13(FormattedMessage4, { id: "otherLoginMethods" }) }),
3168
+ /* @__PURE__ */ jsx13("div", { className: "matchid-login-method-box", children: methodConfig.methods.map((m) => {
3169
+ return /* @__PURE__ */ jsx13(
3778
3170
  "div",
3779
3171
  {
3780
3172
  className: "matchid-login-method-item",
@@ -3787,7 +3179,7 @@ function LoginBox({
3787
3179
  }) })
3788
3180
  ] })
3789
3181
  ] }),
3790
- /* @__PURE__ */ jsx14(
3182
+ /* @__PURE__ */ jsx13(
3791
3183
  EmailModal,
3792
3184
  {
3793
3185
  isOpen: emailOpen,
@@ -3803,11 +3195,11 @@ function LoginBox({
3803
3195
  }
3804
3196
 
3805
3197
  // src/components/LoginButton/index.tsx
3806
- import { useState as useState16 } from "react";
3198
+ import { useState as useState15 } from "react";
3807
3199
 
3808
3200
  // src/components/LoginPanel/index.tsx
3809
3201
  import { FormattedMessage as FormattedMessage5 } from "react-intl";
3810
- import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
3202
+ import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
3811
3203
  function LoginPanel({
3812
3204
  header,
3813
3205
  onClose,
@@ -3817,42 +3209,42 @@ function LoginPanel({
3817
3209
  return /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel", children: [
3818
3210
  header ? header : /* @__PURE__ */ jsxs10("div", { className: "matchid-login-panel-header", children: [
3819
3211
  /* @__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" }) })
3212
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-title", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTitle" }) }),
3213
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-subtilte", children: /* @__PURE__ */ jsx14(FormattedMessage5, { id: "loginTips" }) })
3822
3214
  ] }),
3823
- onClose && /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx15(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
3215
+ onClose && /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-header-close", onClick: onClose, children: /* @__PURE__ */ jsx14(CloseRoundIcon, { size: isDownMd ? 24 : 30 }) })
3824
3216
  ] }),
3825
- /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-divide" }),
3826
- /* @__PURE__ */ jsx15("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx15(LoginBox, { ...props }) })
3217
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-divide" }),
3218
+ /* @__PURE__ */ jsx14("div", { className: "matchid-login-panel-box", children: /* @__PURE__ */ jsx14(LoginBox, { ...props }) })
3827
3219
  ] });
3828
3220
  }
3829
3221
 
3830
3222
  // src/components/LoginModal/index.tsx
3831
- import { jsx as jsx16 } from "react/jsx-runtime";
3223
+ import { jsx as jsx15 } from "react/jsx-runtime";
3832
3224
  function LoginModal({
3833
3225
  isOpen = false,
3834
3226
  width = 480,
3835
3227
  ...props
3836
3228
  }) {
3837
3229
  const { isLogin } = useUserInfo();
3838
- return /* @__PURE__ */ jsx16(
3230
+ return /* @__PURE__ */ jsx15(
3839
3231
  Modal,
3840
3232
  {
3841
3233
  isOpen: isOpen && !isLogin,
3842
3234
  width,
3843
- children: /* @__PURE__ */ jsx16(LoginPanel, { ...props, inModal: true })
3235
+ children: /* @__PURE__ */ jsx15(LoginPanel, { ...props, inModal: true })
3844
3236
  }
3845
3237
  );
3846
3238
  }
3847
3239
 
3848
3240
  // src/components/UserPopover/index.tsx
3849
- import { useState as useState15 } from "react";
3241
+ import { useState as useState14 } from "react";
3850
3242
 
3851
3243
  // src/assets/icon/ProfileIcon.tsx
3852
- import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
3244
+ import { jsx as jsx16, jsxs as jsxs11 } from "react/jsx-runtime";
3853
3245
  function ProfileIcon({ size = 24, color = "black", ...props }) {
3854
3246
  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(
3247
+ /* @__PURE__ */ jsx16(
3856
3248
  "path",
3857
3249
  {
3858
3250
  fillRule: "evenodd",
@@ -3861,7 +3253,7 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3861
3253
  fill: color
3862
3254
  }
3863
3255
  ),
3864
- /* @__PURE__ */ jsx17(
3256
+ /* @__PURE__ */ jsx16(
3865
3257
  "path",
3866
3258
  {
3867
3259
  fillRule: "evenodd",
@@ -3875,10 +3267,10 @@ function ProfileIcon({ size = 24, color = "black", ...props }) {
3875
3267
 
3876
3268
  // src/components/UserPopover/index.tsx
3877
3269
  import { FormattedMessage as FormattedMessage6, useIntl as useIntl6 } from "react-intl";
3878
- import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
3270
+ import { jsx as jsx17, jsxs as jsxs12 } from "react/jsx-runtime";
3879
3271
  function UserContent() {
3880
3272
  const { logout, address: address2, username } = useUserInfo();
3881
- const [logouting, setLogouting] = useState15(false);
3273
+ const [logouting, setLogouting] = useState14(false);
3882
3274
  const onLogout = async () => {
3883
3275
  if (logouting) return;
3884
3276
  try {
@@ -3899,31 +3291,31 @@ function UserContent() {
3899
3291
  return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-item", onClick, children: [
3900
3292
  /* @__PURE__ */ jsxs12("div", { className: `matchid-user-popover-item-content`, children: [
3901
3293
  icon,
3902
- /* @__PURE__ */ jsx18("div", { className: "matchid-user-popover-item-text", children })
3294
+ /* @__PURE__ */ jsx17("div", { className: "matchid-user-popover-item-text", children })
3903
3295
  ] }),
3904
3296
  rightIcon
3905
3297
  ] });
3906
3298
  };
3907
3299
  const UserDivider = () => {
3908
- return /* @__PURE__ */ jsx18("div", { className: `matchid-user-popover-divider` });
3300
+ return /* @__PURE__ */ jsx17("div", { className: `matchid-user-popover-divider` });
3909
3301
  };
3910
- const [usernameOpen, setUsernameOpen] = useState15(false);
3302
+ const [usernameOpen, setUsernameOpen] = useState14(false);
3911
3303
  const [copied, setCopied] = useCopyClipboard();
3912
3304
  const intl = useIntl6();
3913
3305
  return /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-content", children: [
3914
3306
  /* @__PURE__ */ jsxs12("div", { className: "matchid-user-popover-list", children: [
3915
- /* @__PURE__ */ jsx18(UserItem, { onClick: () => {
3307
+ /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
3916
3308
  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: () => {
3309
+ }, 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) }),
3310
+ /* @__PURE__ */ jsx17(UserDivider, {}),
3311
+ /* @__PURE__ */ jsx17(UserItem, { onClick: () => {
3920
3312
  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({
3313
+ }, 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
3314
  id: "setUsername"
3923
3315
  }) })
3924
3316
  ] }),
3925
- /* @__PURE__ */ jsx18(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx18(FormattedMessage6, { id: "disconnect" }) }),
3926
- /* @__PURE__ */ jsx18(UsernameModal, { isOpen: usernameOpen, onClose: () => {
3317
+ /* @__PURE__ */ jsx17(Button, { onClick: onLogout, loading: logouting, children: /* @__PURE__ */ jsx17(FormattedMessage6, { id: "disconnect" }) }),
3318
+ /* @__PURE__ */ jsx17(UsernameModal, { isOpen: usernameOpen, onClose: () => {
3927
3319
  setUsernameOpen(false);
3928
3320
  }, onSuccess: () => {
3929
3321
  setUsernameOpen(false);
@@ -3934,12 +3326,12 @@ function UserPopover({
3934
3326
  children,
3935
3327
  ...props
3936
3328
  }) {
3937
- return /* @__PURE__ */ jsx18(Popover, { ...props, content: /* @__PURE__ */ jsx18(UserContent, {}), children });
3329
+ return /* @__PURE__ */ jsx17(Popover, { ...props, content: /* @__PURE__ */ jsx17(UserContent, {}), children });
3938
3330
  }
3939
3331
 
3940
3332
  // src/components/LoginButton/index.tsx
3941
3333
  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";
3334
+ import { Fragment as Fragment3, jsx as jsx18, jsxs as jsxs13 } from "react/jsx-runtime";
3943
3335
  function LoginButton({
3944
3336
  loginRender,
3945
3337
  methods,
@@ -3953,10 +3345,10 @@ function LoginButton({
3953
3345
  }) {
3954
3346
  const intl = useIntl7();
3955
3347
  const { isLogin, username } = useUserInfo();
3956
- const [loginOpen, setLoginOpen] = useState16(false);
3348
+ const [loginOpen, setLoginOpen] = useState15(false);
3957
3349
  if (!isLogin) {
3958
3350
  return /* @__PURE__ */ jsxs13(Fragment3, { children: [
3959
- /* @__PURE__ */ jsx19(
3351
+ /* @__PURE__ */ jsx18(
3960
3352
  LoginModal,
3961
3353
  {
3962
3354
  methods,
@@ -3967,30 +3359,53 @@ function LoginButton({
3967
3359
  }
3968
3360
  ),
3969
3361
  /* @__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" }) })
3362
+ /* @__PURE__ */ jsx18(UnLoginIcon_default, {}),
3363
+ /* @__PURE__ */ jsx18("span", { children: /* @__PURE__ */ jsx18(FormattedMessage7, { id: "login" }) })
3972
3364
  ] })
3973
3365
  ] });
3974
3366
  }
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({
3367
+ 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: [
3368
+ /* @__PURE__ */ jsx18(LoginIcon_default, {}),
3369
+ /* @__PURE__ */ jsx18("span", { children: username ? truncateAddress(username) : "MatchID " + intl.formatMessage({
3978
3370
  id: "user"
3979
3371
  }) })
3980
3372
  ] }) });
3981
3373
  }
3982
3374
 
3983
3375
  // src/components/UsernameModal/index.tsx
3984
- import { useEffect as useEffect15, useMemo as useMemo9, useState as useState17 } from "react";
3376
+ import { useEffect as useEffect14, useMemo as useMemo9, useState as useState16 } from "react";
3377
+
3378
+ // src/assets/icon/InfoRoundIcon.tsx
3379
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
3380
+ function InfoRoundIcon({
3381
+ size,
3382
+ color = "#6E6E6E",
3383
+ ...props
3384
+ }) {
3385
+ return /* @__PURE__ */ jsxs14("svg", { width: size, height: size, viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", ...props, children: [
3386
+ /* @__PURE__ */ jsx19("g", { clipPath: "url(#clip0_418_7746)", children: /* @__PURE__ */ jsx19(
3387
+ "path",
3388
+ {
3389
+ fillRule: "evenodd",
3390
+ clipRule: "evenodd",
3391
+ 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",
3392
+ fill: color
3393
+ }
3394
+ ) }),
3395
+ /* @__PURE__ */ jsx19("defs", { children: /* @__PURE__ */ jsx19("clipPath", { id: "clip0_418_7746", children: /* @__PURE__ */ jsx19("rect", { width: "16", height: "16", fill: "white" }) }) })
3396
+ ] });
3397
+ }
3398
+
3399
+ // src/components/UsernameModal/index.tsx
3985
3400
  import { FormattedMessage as FormattedMessage8, useIntl as useIntl8 } from "react-intl";
3986
- import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
3401
+ import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
3987
3402
  var ValidItem = ({
3988
3403
  success = false,
3989
3404
  text
3990
3405
  }) => {
3991
3406
  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 }),
3407
+ return /* @__PURE__ */ jsxs15("div", { className: `matchid-valid-status-item matchid-valid-status-${success ? "success" : "error"}`, children: [
3408
+ success ? /* @__PURE__ */ jsx20(CheckRoundIcon, { size: isDownMd ? 12 : 16 }) : /* @__PURE__ */ jsx20(InfoRoundIcon, { size: isDownMd ? 12 : 16 }),
3994
3409
  /* @__PURE__ */ jsx20("span", { children: text })
3995
3410
  ] });
3996
3411
  };
@@ -4002,10 +3417,10 @@ function UsernameModal({
4002
3417
  }) {
4003
3418
  const { username, refreshOverview } = useUserInfo();
4004
3419
  const { isLogin } = useUserInfo();
4005
- const [val, setVal] = useState17(username);
4006
- const [error, setError] = useState17("");
3420
+ const [val, setVal] = useState16(username);
3421
+ const [error, setError] = useState16("");
4007
3422
  const isDownMd = useDownMd();
4008
- useEffect15(() => {
3423
+ useEffect14(() => {
4009
3424
  if (isOpen) {
4010
3425
  setVal(username);
4011
3426
  setError("");
@@ -4018,7 +3433,7 @@ function UsernameModal({
4018
3433
  return val.length >= 2 && val.length <= 32;
4019
3434
  }, [val]);
4020
3435
  const isSafe = isValid && isLength;
4021
- const [isSubmitting, setIsSubmitting] = useState17(false);
3436
+ const [isSubmitting, setIsSubmitting] = useState16(false);
4022
3437
  const onSubmit = async () => {
4023
3438
  if (isSubmitting) return;
4024
3439
  try {
@@ -4041,7 +3456,7 @@ function UsernameModal({
4041
3456
  const intl = useIntl8();
4042
3457
  return /* @__PURE__ */ jsx20(ModalWithHeader, { isOpen: isOpen && isLogin, ...props, title: title || intl.formatMessage({
4043
3458
  id: username ? "editUsernameTitle" : "setUsernameTitle"
4044
- }), children: /* @__PURE__ */ jsxs14("div", { className: "matchid-username-box", children: [
3459
+ }), children: /* @__PURE__ */ jsxs15("div", { className: "matchid-username-box", children: [
4045
3460
  /* @__PURE__ */ jsx20(Field, { label: intl.formatMessage({
4046
3461
  id: "username"
4047
3462
  }), error, children: /* @__PURE__ */ jsx20(
@@ -4057,7 +3472,7 @@ function UsernameModal({
4057
3472
  value: val
4058
3473
  }
4059
3474
  ) }),
4060
- /* @__PURE__ */ jsxs14("div", { className: "matchid-valid", children: [
3475
+ /* @__PURE__ */ jsxs15("div", { className: "matchid-valid", children: [
4061
3476
  /* @__PURE__ */ jsx20(
4062
3477
  ValidItem,
4063
3478
  {
@@ -4081,7 +3496,7 @@ function UsernameModal({
4081
3496
  }
4082
3497
 
4083
3498
  // src/components/SOLModal/index.tsx
4084
- import React7, { useEffect as useEffect16, useState as useState18 } from "react";
3499
+ import React7, { useEffect as useEffect15, useState as useState17 } from "react";
4085
3500
  import { clusterApiUrl } from "@solana/web3.js";
4086
3501
  import { useWallet as useWallet2, WalletProvider, ConnectionProvider } from "@solana/wallet-adapter-react";
4087
3502
  import { WalletModalProvider, useWalletModal } from "@solana/wallet-adapter-react-ui";
@@ -4145,7 +3560,7 @@ var walletConnectImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEA
4145
3560
  var walletSigningImage = "data:image/png;base64,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";
4146
3561
 
4147
3562
  // src/components/WalletModalContent/index.tsx
4148
- import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
3563
+ import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
4149
3564
  function WalletModalContent({
4150
3565
  status,
4151
3566
  error,
@@ -4215,8 +3630,8 @@ function WalletModalContent({
4215
3630
  statusImage: walletConnectImage
4216
3631
  };
4217
3632
  }, [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: [
3633
+ return /* @__PURE__ */ jsx21("div", { className: "matchid-wallet-container", children: /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-box`, children: [
3634
+ /* @__PURE__ */ jsxs16("div", { className: `matchid-wallet-content`, children: [
4220
3635
  /* @__PURE__ */ jsx21("img", { src: pageData.statusImage }),
4221
3636
  /* @__PURE__ */ jsx21("div", { className: pageData.isError ? "text-[#F7585E]" : "", children: pageData.text })
4222
3637
  ] }),
@@ -4243,17 +3658,17 @@ function WalletContent({
4243
3658
  const { setVisible, visible } = useWalletModal();
4244
3659
  const wallet = useWallet2();
4245
3660
  const { events, login } = useMatch();
4246
- const [status, setStatus] = useState18("");
3661
+ const [status, setStatus] = useState17("");
4247
3662
  const statusRef = React7.useRef(status);
4248
- const [error, setError] = useState18("");
4249
- useEffect16(() => {
3663
+ const [error, setError] = useState17("");
3664
+ useEffect15(() => {
4250
3665
  const init = async () => {
4251
3666
  await wallet.disconnect();
4252
3667
  setVisible(true);
4253
3668
  };
4254
3669
  init();
4255
3670
  }, []);
4256
- useEffect16(() => {
3671
+ useEffect15(() => {
4257
3672
  if (wallet.connected) {
4258
3673
  console.log("wallet.connected", wallet.connected);
4259
3674
  toLoginInWallet();
@@ -4389,7 +3804,7 @@ function SOLModal(props) {
4389
3804
  }
4390
3805
 
4391
3806
  // src/components/TRONModal/index.tsx
4392
- import React8, { useEffect as useEffect18, useMemo as useMemo11, useState as useState20 } from "react";
3807
+ import React8, { useEffect as useEffect17, useMemo as useMemo11, useState as useState19 } from "react";
4393
3808
  import { useIntl as useIntl10 } from "react-intl";
4394
3809
 
4395
3810
  // src/lib/tron/TronLinkAdapter.ts
@@ -4423,7 +3838,7 @@ var TronLinkAdapter = class {
4423
3838
  };
4424
3839
 
4425
3840
  // src/hooks/useTRONWallet.ts
4426
- import { useEffect as useEffect17, useState as useState19 } from "react";
3841
+ import { useEffect as useEffect16, useState as useState18 } from "react";
4427
3842
 
4428
3843
  // src/lib/tron/BitgetAdapter.ts
4429
3844
  var BitgetAdapter = class {
@@ -4468,9 +3883,9 @@ var OKXAdapter = class {
4468
3883
  // src/hooks/useTRONWallet.ts
4469
3884
  var useTRONWallet = () => {
4470
3885
  const wallets2 = [new TronLinkAdapter(), new BitgetAdapter(), new OKXAdapter()];
4471
- const [installedWallets, setInstalledWallets] = useState19([]);
4472
- const [address2, setAddress] = useState19(null);
4473
- useEffect17(() => {
3886
+ const [installedWallets, setInstalledWallets] = useState18([]);
3887
+ const [address2, setAddress] = useState18(null);
3888
+ useEffect16(() => {
4474
3889
  const getInstalled = async () => {
4475
3890
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
4476
3891
  wallet: wallet2,
@@ -4480,11 +3895,11 @@ var useTRONWallet = () => {
4480
3895
  };
4481
3896
  getInstalled();
4482
3897
  }, []);
4483
- const [wallet, chooseWallet] = useState19(null);
3898
+ const [wallet, chooseWallet] = useState18(null);
4484
3899
  const onConnect = async () => {
4485
3900
  setAddress(await wallet.connect());
4486
3901
  };
4487
- useEffect17(() => {
3902
+ useEffect16(() => {
4488
3903
  if (!wallet) {
4489
3904
  setAddress(null);
4490
3905
  }
@@ -4500,7 +3915,7 @@ var useTRONWallet = () => {
4500
3915
  };
4501
3916
 
4502
3917
  // src/components/TRONModal/index.tsx
4503
- import { jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
3918
+ import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
4504
3919
  function TRONConnectModal({
4505
3920
  type = "login",
4506
3921
  onSuccess,
@@ -4515,9 +3930,9 @@ function TRONConnectModal({
4515
3930
  okx: /* @__PURE__ */ jsx23(OKXIcon, { size: isDownMd ? 36 : 40 })
4516
3931
  };
4517
3932
  const { events, login } = useMatch();
4518
- const [status, setStatus] = useState20("");
3933
+ const [status, setStatus] = useState19("");
4519
3934
  const statusRef = React8.useRef(status);
4520
- const [error, setError] = useState20("");
3935
+ const [error, setError] = useState19("");
4521
3936
  const connected = useMemo11(() => {
4522
3937
  return !!address2;
4523
3938
  }, [address2]);
@@ -4586,7 +4001,7 @@ function TRONConnectModal({
4586
4001
  statusRef.current = "";
4587
4002
  }
4588
4003
  };
4589
- useEffect18(() => {
4004
+ useEffect17(() => {
4590
4005
  if (wallet) {
4591
4006
  console.log("onConnect");
4592
4007
  onConnect();
@@ -4594,12 +4009,12 @@ function TRONConnectModal({
4594
4009
  setStatus("");
4595
4010
  }
4596
4011
  }, [wallet]);
4597
- useEffect18(() => {
4012
+ useEffect17(() => {
4598
4013
  if (address2) {
4599
4014
  toLoginInWallet();
4600
4015
  }
4601
4016
  }, [address2]);
4602
- useEffect18(() => {
4017
+ useEffect17(() => {
4603
4018
  if (!props.isOpen) {
4604
4019
  disconnect();
4605
4020
  }
@@ -4621,7 +4036,7 @@ function TRONConnectModal({
4621
4036
  setVisible: () => {
4622
4037
  }
4623
4038
  }
4624
- ) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs16("div", { className: "matchid-login-recommend-list", children: [
4039
+ ) : /* @__PURE__ */ jsx23("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
4625
4040
  installedWallets.map((wallet2) => {
4626
4041
  return /* @__PURE__ */ jsx23(
4627
4042
  RecommendItem,
@@ -4657,7 +4072,7 @@ function TRONModal(props) {
4657
4072
  }
4658
4073
 
4659
4074
  // src/components/TONModal/index.tsx
4660
- import React9, { useEffect as useEffect19, useState as useState21 } from "react";
4075
+ import React9, { useEffect as useEffect18, useState as useState20 } from "react";
4661
4076
  import { useIntl as useIntl11 } from "react-intl";
4662
4077
  import {
4663
4078
  TonConnectUIProvider,
@@ -4672,15 +4087,15 @@ function WalletContent2({
4672
4087
  type
4673
4088
  }) {
4674
4089
  const { events, login } = useMatch();
4675
- const [connected, setConnected] = useState21(false);
4090
+ const [connected, setConnected] = useState20(false);
4676
4091
  const wallet = useTonWallet();
4677
4092
  const userFriendlyAddress = useTonAddress();
4678
4093
  const [tonConnectUI] = useTonConnectUI();
4679
4094
  const { state, open, close } = useTonConnectModal();
4680
- const [status, setStatus] = useState21("");
4095
+ const [status, setStatus] = useState20("");
4681
4096
  const statusRef = React9.useRef(status);
4682
- const [error, setError] = useState21("");
4683
- useEffect19(() => {
4097
+ const [error, setError] = useState20("");
4098
+ useEffect18(() => {
4684
4099
  const init = async () => {
4685
4100
  if (wallet) {
4686
4101
  await tonConnectUI.disconnect();
@@ -4753,7 +4168,7 @@ function WalletContent2({
4753
4168
  }
4754
4169
  });
4755
4170
  }, []);
4756
- useEffect19(() => {
4171
+ useEffect18(() => {
4757
4172
  if (wallet) {
4758
4173
  setConnected(true);
4759
4174
  console.log("Wallet connected:", wallet);
@@ -4764,7 +4179,7 @@ function WalletContent2({
4764
4179
  setStatus("");
4765
4180
  }
4766
4181
  }, [wallet]);
4767
- useEffect19(() => {
4182
+ useEffect18(() => {
4768
4183
  console.log({
4769
4184
  state,
4770
4185
  wallet
@@ -4844,7 +4259,7 @@ function TONModal(props) {
4844
4259
  }
4845
4260
 
4846
4261
  // src/components/BTCModal/index.tsx
4847
- import React10, { useEffect as useEffect21, useMemo as useMemo12, useState as useState23 } from "react";
4262
+ import React10, { useEffect as useEffect20, useMemo as useMemo12, useState as useState22 } from "react";
4848
4263
  import { useIntl as useIntl12 } from "react-intl";
4849
4264
 
4850
4265
  // src/lib/btc/UnisatAdapter.ts
@@ -4999,12 +4414,12 @@ var LeatherAdapter = class {
4999
4414
  };
5000
4415
 
5001
4416
  // src/hooks/useBTCWallet.ts
5002
- import { useEffect as useEffect20, useState as useState22 } from "react";
4417
+ import { useEffect as useEffect19, useState as useState21 } from "react";
5003
4418
  var useBTCWallet = () => {
5004
4419
  const wallets2 = [new UnisatAdapter(), new XverseAdapter(), new LeatherAdapter()];
5005
- const [installedWallets, setInstalledWallets] = useState22([]);
5006
- const [address2, setAddress] = useState22(null);
5007
- useEffect20(() => {
4420
+ const [installedWallets, setInstalledWallets] = useState21([]);
4421
+ const [address2, setAddress] = useState21(null);
4422
+ useEffect19(() => {
5008
4423
  const getInstalled = async () => {
5009
4424
  const installed = await Promise.all(wallets2.map((wallet2) => wallet2.isInstalled().then((isInstalled) => ({
5010
4425
  wallet: wallet2,
@@ -5014,11 +4429,11 @@ var useBTCWallet = () => {
5014
4429
  };
5015
4430
  getInstalled();
5016
4431
  }, []);
5017
- const [wallet, chooseWallet] = useState22(null);
4432
+ const [wallet, chooseWallet] = useState21(null);
5018
4433
  const onConnect = async () => {
5019
4434
  setAddress(await wallet.connect());
5020
4435
  };
5021
- useEffect20(() => {
4436
+ useEffect19(() => {
5022
4437
  if (!wallet) {
5023
4438
  setAddress(null);
5024
4439
  }
@@ -5034,7 +4449,7 @@ var useBTCWallet = () => {
5034
4449
  };
5035
4450
 
5036
4451
  // src/components/BTCModal/index.tsx
5037
- import { jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
4452
+ import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
5038
4453
  function BTCConnectModal({
5039
4454
  type = "login",
5040
4455
  onSuccess,
@@ -5049,9 +4464,9 @@ function BTCConnectModal({
5049
4464
  xverse: /* @__PURE__ */ jsx25(XverseIcon, { size: isDownMd ? 36 : 40 })
5050
4465
  };
5051
4466
  const { events, login } = useMatch();
5052
- const [status, setStatus] = useState23("");
4467
+ const [status, setStatus] = useState22("");
5053
4468
  const statusRef = React10.useRef(status);
5054
- const [error, setError] = useState23("");
4469
+ const [error, setError] = useState22("");
5055
4470
  const connected = useMemo12(() => {
5056
4471
  return !!address2;
5057
4472
  }, [address2]);
@@ -5116,7 +4531,7 @@ function BTCConnectModal({
5116
4531
  statusRef.current = "";
5117
4532
  }
5118
4533
  };
5119
- useEffect21(() => {
4534
+ useEffect20(() => {
5120
4535
  if (wallet) {
5121
4536
  console.log("onConnect");
5122
4537
  try {
@@ -5129,12 +4544,12 @@ function BTCConnectModal({
5129
4544
  setStatus("");
5130
4545
  }
5131
4546
  }, [wallet]);
5132
- useEffect21(() => {
4547
+ useEffect20(() => {
5133
4548
  if (address2) {
5134
4549
  toLoginInWallet();
5135
4550
  }
5136
4551
  }, [address2]);
5137
- useEffect21(() => {
4552
+ useEffect20(() => {
5138
4553
  if (!props.isOpen) {
5139
4554
  disconnect();
5140
4555
  }
@@ -5163,7 +4578,7 @@ function BTCConnectModal({
5163
4578
  setVisible: () => {
5164
4579
  }
5165
4580
  }
5166
- ) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs17("div", { className: "matchid-login-recommend-list", children: [
4581
+ ) : /* @__PURE__ */ jsx25("div", { className: "matchid-login-box", children: /* @__PURE__ */ jsxs18("div", { className: "matchid-login-recommend-list", children: [
5167
4582
  installedWallets.map((wallet2) => {
5168
4583
  return /* @__PURE__ */ jsx25(
5169
4584
  RecommendItem,
@@ -5242,409 +4657,6 @@ function WalletModal(props) {
5242
4657
  return props.isOpen && /* @__PURE__ */ jsx26(WalletConnectModal, { ...props });
5243
4658
  }
5244
4659
 
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
4660
  export {
5649
4661
  isSuccess,
5650
4662
  getBindListApi,
@@ -5658,9 +4670,9 @@ export {
5658
4670
  mintPassportNftApi,
5659
4671
  useUserInfo,
5660
4672
  useMatchEvents,
5661
- useModal,
5662
4673
  useWallet,
5663
4674
  useCopyClipboard,
4675
+ useModal,
5664
4676
  useToast,
5665
4677
  wallet_exports,
5666
4678
  useMatchChain,
@@ -5675,19 +4687,11 @@ export {
5675
4687
  TONModal,
5676
4688
  BTCModal,
5677
4689
  WalletModal,
5678
- WalletAsset,
5679
- TokenSend,
5680
- TokenDetail,
5681
- TokenSendList,
5682
4690
  components_exports,
5683
4691
  useMatchWallet,
5684
- useMatchWalletRecords,
5685
- useMatchWalletAssets,
5686
- useMatchWalletAssetList,
5687
4692
  useReceipt,
5688
- useTransaction,
5689
4693
  hooks_exports,
5690
4694
  MatchProvider,
5691
4695
  useMatch
5692
4696
  };
5693
- //# sourceMappingURL=chunk-2LRK5L4Z.mjs.map
4697
+ //# sourceMappingURL=chunk-D6IUBR7S.mjs.map