@matchain/matchid-sdk-react 0.1.53-alpha.0 → 0.1.53-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/icon/index.d.mts +4 -144
- package/dist/assets/icon/index.d.ts +4 -144
- package/dist/assets/icon/index.js +54 -0
- package/dist/assets/icon/index.js.map +1 -1
- package/dist/assets/icon/index.mjs +5 -1
- package/dist/chunk-3CR66BEX.mjs +19 -0
- package/dist/chunk-3CR66BEX.mjs.map +1 -0
- package/dist/{chunk-LHNKZISB.mjs → chunk-FKXS2XRG.mjs} +114 -2
- package/dist/chunk-FKXS2XRG.mjs.map +1 -0
- package/dist/{chunk-HLUFAIFV.mjs → chunk-IZOOVZAD.mjs} +11 -6
- package/dist/chunk-IZOOVZAD.mjs.map +1 -0
- package/dist/{chunk-HYQ3T6WW.mjs → chunk-JX73EY6V.mjs} +2 -14
- package/dist/chunk-JX73EY6V.mjs.map +1 -0
- package/dist/{chunk-LRJDS2OK.mjs → chunk-NCVBLRAJ.mjs} +5750 -4942
- package/dist/chunk-NCVBLRAJ.mjs.map +1 -0
- package/dist/{chunk-FB5MHLWX.mjs → chunk-X5HGL3ZX.mjs} +45 -3
- package/dist/chunk-X5HGL3ZX.mjs.map +1 -0
- package/dist/components/index.d.mts +3 -3
- package/dist/components/index.d.ts +3 -3
- package/dist/components/index.js +1468 -591
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +11 -6
- package/dist/config/chains/index.mjs +2 -1
- package/dist/hooks/api/index.d.mts +3 -2
- package/dist/hooks/api/index.d.ts +3 -2
- package/dist/hooks/api/index.js +402 -148
- package/dist/hooks/api/index.js.map +1 -1
- package/dist/hooks/api/index.mjs +9 -8
- package/dist/hooks/index.d.mts +3 -2
- package/dist/hooks/index.d.ts +3 -2
- package/dist/hooks/index.js +638 -545
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +5 -4
- package/dist/index-BVfCh4l-.d.mts +203 -0
- package/dist/{index-CGx_yc95.d.mts → index-BaFmUVw-.d.mts} +1 -1
- package/dist/{index-BoIDCH41.d.ts → index-BgdY5xdW.d.ts} +41 -17
- package/dist/{index-CteYYAoN.d.mts → index-BrzFSkOe.d.mts} +41 -17
- package/dist/{index-CO1j3Cxc.d.ts → index-C0UKUm0h.d.ts} +25 -5
- package/dist/{index-BlYHNOxm.d.ts → index-CQmN0dN4.d.ts} +1 -1
- package/dist/index-D3Kp05kW.d.ts +203 -0
- package/dist/{index-BNNgBoTN.d.ts → index-D5WIVIkc.d.ts} +4 -2
- package/dist/{index-Ce5JlNJv.d.ts → index-D7S5DMUy.d.mts} +21 -8
- package/dist/{index-CqO8nMTh.d.mts → index-DC4F1u-w.d.mts} +25 -5
- package/dist/{index-0EM3dXJ4.d.mts → index-DQFQ39D9.d.ts} +21 -8
- package/dist/{index-C7InzeOC.d.ts → index-DjbH13zc.d.mts} +16 -14
- package/dist/{index-C29kl7io.d.mts → index-SOVt-ADK.d.mts} +4 -2
- package/dist/{index-Bsfb3Ysq.d.mts → index-zc2GEzJ9.d.ts} +16 -14
- package/dist/index.css +139 -16
- package/dist/index.d.mts +9 -8
- package/dist/index.d.ts +9 -8
- package/dist/index.js +1861 -920
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -8
- package/dist/request-B0CyrGFT.d.mts +15 -0
- package/dist/request-B0CyrGFT.d.ts +15 -0
- package/dist/types/index.d.mts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/{types-Cv5UhCIP.d.mts → types-VrV1kYga.d.mts} +10 -2
- package/dist/{types-Cv5UhCIP.d.ts → types-VrV1kYga.d.ts} +10 -2
- package/dist/ui/index.d.mts +3 -3
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.js +109 -61
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +8 -4
- package/dist/utils/index.d.mts +3 -2
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.js +10 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/index.mjs +3 -1
- package/example/package.json +5 -2
- package/example/src/App.tsx +42 -6
- package/example/src/pages/Contact/index.tsx +90 -0
- package/example/src/pages/UI/components/Tabs.tsx +18 -0
- package/example/src/pages/UI/index.tsx +2 -0
- package/example/src/pages/User/index.tsx +7 -1
- package/example/src/store/useLocalStore.ts +9 -0
- package/package.json +5 -5
- package/dist/chunk-FB5MHLWX.mjs.map +0 -1
- package/dist/chunk-HLUFAIFV.mjs.map +0 -1
- package/dist/chunk-HYQ3T6WW.mjs.map +0 -1
- package/dist/chunk-LHNKZISB.mjs.map +0 -1
- package/dist/chunk-LRJDS2OK.mjs.map +0 -1
- package/dist/chunk-YQHI5BIZ.mjs +0 -97
- package/dist/chunk-YQHI5BIZ.mjs.map +0 -1
- package/example/dist/assets/TransportWebHID-BwG9Tbw2.js +0 -1
- package/example/dist/assets/bignumber-FiRdtNkj.js +0 -10
- package/example/dist/assets/ccip-CJyR03AW.js +0 -1
- package/example/dist/assets/draggabilly-1Sl0icBA.js +0 -14
- package/example/dist/assets/index-BAfSBdWW.js +0 -1
- package/example/dist/assets/index-CYk2C9XJ.js +0 -1
- package/example/dist/assets/index-CcgesoWE.js +0 -179
- package/example/dist/assets/index-D5RU9xxK.js +0 -3
- package/example/dist/assets/index-D8N4Z5B5.js +0 -1677
- package/example/dist/assets/index-DATAk5xI.js +0 -569
- package/example/dist/assets/index-DN1wW-Mo.js +0 -3
- package/example/dist/assets/index-DxxLiL3_.js +0 -303
- package/example/dist/assets/index-Gy3FXGhr.css +0 -1
- package/example/dist/assets/index-RIWy1Hg7.js +0 -1
- package/example/dist/assets/inherits_browser-BlmhoU4v.js +0 -1
- package/example/dist/assets/solanaEmbed.esm-CNS-QKE2.js +0 -38
- package/example/dist/index.html +0 -14
package/dist/ui/index.mjs
CHANGED
|
@@ -11,9 +11,11 @@ import {
|
|
|
11
11
|
Overlay,
|
|
12
12
|
Popover,
|
|
13
13
|
Radio,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
Skeleton_default,
|
|
15
|
+
Switch,
|
|
16
|
+
Tabs
|
|
17
|
+
} from "../chunk-X5HGL3ZX.mjs";
|
|
18
|
+
import "../chunk-FKXS2XRG.mjs";
|
|
17
19
|
import "../chunk-J5LGTIGS.mjs";
|
|
18
20
|
export {
|
|
19
21
|
AlphaAvatar,
|
|
@@ -28,6 +30,8 @@ export {
|
|
|
28
30
|
Overlay,
|
|
29
31
|
Popover,
|
|
30
32
|
Radio,
|
|
31
|
-
|
|
33
|
+
Skeleton_default as Skeleton,
|
|
34
|
+
Switch,
|
|
35
|
+
Tabs
|
|
32
36
|
};
|
|
33
37
|
//# sourceMappingURL=index.mjs.map
|
package/dist/utils/index.d.mts
CHANGED
|
@@ -4,7 +4,7 @@ declare function decodeBase64(input: string): string;
|
|
|
4
4
|
declare const isValidEmail: (email: string) => boolean;
|
|
5
5
|
declare const isValidUsername: (username: string) => boolean;
|
|
6
6
|
declare const deepMerge: (target: any, source: any) => any;
|
|
7
|
-
declare function truncateAddress(address: string): string;
|
|
7
|
+
declare function truncateAddress(address: string, startLen?: number, endLen?: number): string;
|
|
8
8
|
declare function firstUpperCase(str: string): string;
|
|
9
9
|
declare function getAppClientId(): string;
|
|
10
10
|
interface NumberFormatterProps {
|
|
@@ -23,5 +23,6 @@ declare const NumberFormatter: React.FC<NumberFormatterProps>;
|
|
|
23
23
|
declare function formatAddress(address: string, pre?: number, after?: number): string;
|
|
24
24
|
declare const formatDate: (value: any, formatString?: string) => string;
|
|
25
25
|
declare const isInTgApp: () => boolean;
|
|
26
|
+
declare function bytesToBase64(bytes: Uint8Array): string;
|
|
26
27
|
|
|
27
|
-
export { NumberFormatter, decodeBase64, deepMerge, encodeBase64, firstUpperCase, formatAddress, formatDate, getAppClientId, getVersion, isInTgApp, isValidEmail, isValidUsername, truncateAddress };
|
|
28
|
+
export { NumberFormatter, bytesToBase64, decodeBase64, deepMerge, encodeBase64, firstUpperCase, formatAddress, formatDate, getAppClientId, getVersion, isInTgApp, isValidEmail, isValidUsername, truncateAddress };
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ declare function decodeBase64(input: string): string;
|
|
|
4
4
|
declare const isValidEmail: (email: string) => boolean;
|
|
5
5
|
declare const isValidUsername: (username: string) => boolean;
|
|
6
6
|
declare const deepMerge: (target: any, source: any) => any;
|
|
7
|
-
declare function truncateAddress(address: string): string;
|
|
7
|
+
declare function truncateAddress(address: string, startLen?: number, endLen?: number): string;
|
|
8
8
|
declare function firstUpperCase(str: string): string;
|
|
9
9
|
declare function getAppClientId(): string;
|
|
10
10
|
interface NumberFormatterProps {
|
|
@@ -23,5 +23,6 @@ declare const NumberFormatter: React.FC<NumberFormatterProps>;
|
|
|
23
23
|
declare function formatAddress(address: string, pre?: number, after?: number): string;
|
|
24
24
|
declare const formatDate: (value: any, formatString?: string) => string;
|
|
25
25
|
declare const isInTgApp: () => boolean;
|
|
26
|
+
declare function bytesToBase64(bytes: Uint8Array): string;
|
|
26
27
|
|
|
27
|
-
export { NumberFormatter, decodeBase64, deepMerge, encodeBase64, firstUpperCase, formatAddress, formatDate, getAppClientId, getVersion, isInTgApp, isValidEmail, isValidUsername, truncateAddress };
|
|
28
|
+
export { NumberFormatter, bytesToBase64, decodeBase64, deepMerge, encodeBase64, firstUpperCase, formatAddress, formatDate, getAppClientId, getVersion, isInTgApp, isValidEmail, isValidUsername, truncateAddress };
|
package/dist/utils/index.js
CHANGED
|
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
31
31
|
var utils_exports = {};
|
|
32
32
|
__export(utils_exports, {
|
|
33
33
|
NumberFormatter: () => NumberFormatter,
|
|
34
|
+
bytesToBase64: () => bytesToBase64,
|
|
34
35
|
decodeBase64: () => decodeBase64,
|
|
35
36
|
deepMerge: () => deepMerge,
|
|
36
37
|
encodeBase64: () => encodeBase64,
|
|
@@ -72,12 +73,12 @@ var deepMerge = (target, source) => {
|
|
|
72
73
|
}
|
|
73
74
|
return target;
|
|
74
75
|
};
|
|
75
|
-
function truncateAddress(address) {
|
|
76
|
-
if (address.length <=
|
|
76
|
+
function truncateAddress(address, startLen = 4, endLen = 4) {
|
|
77
|
+
if (address.length <= startLen + endLen) {
|
|
77
78
|
return address;
|
|
78
79
|
}
|
|
79
|
-
const start = address.slice(0,
|
|
80
|
-
const end = address.slice(-
|
|
80
|
+
const start = address.slice(0, startLen);
|
|
81
|
+
const end = address.slice(-endLen);
|
|
81
82
|
return `${start}...${end}`;
|
|
82
83
|
}
|
|
83
84
|
function firstUpperCase(str) {
|
|
@@ -167,9 +168,14 @@ var formatDate = (value, formatString = "YYYY-MM-DD HH:mm:ss") => {
|
|
|
167
168
|
var isInTgApp = () => {
|
|
168
169
|
return !!window.TelegramWebviewProxy;
|
|
169
170
|
};
|
|
171
|
+
function bytesToBase64(bytes) {
|
|
172
|
+
const binString = String.fromCodePoint(...bytes);
|
|
173
|
+
return btoa(binString);
|
|
174
|
+
}
|
|
170
175
|
// Annotate the CommonJS export names for ESM import in node:
|
|
171
176
|
0 && (module.exports = {
|
|
172
177
|
NumberFormatter,
|
|
178
|
+
bytesToBase64,
|
|
173
179
|
decodeBase64,
|
|
174
180
|
deepMerge,
|
|
175
181
|
encodeBase64,
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/index.tsx"],"sourcesContent":["import moment from 'moment';\n\nexport const getVersion = (): string => {\n return \"0.0.2\";\n};\n\nexport function encodeBase64(input: string) {\n return btoa(unescape(encodeURIComponent(input)));\n}\n\nexport function decodeBase64(input: string) {\n return decodeURIComponent(escape(atob(input)));\n}\n\nexport const isValidEmail = (email: string) => {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)\n}\nexport const isValidUsername = (username: string) => {\n //8-32 alpha number - _\n return /^[a-zA-Z0-9_-]+$/.test(username)\n}\n\nexport const deepMerge = (target: any, source: any): any => {\n for (const key in source) {\n if (source[key] instanceof Object && key in target) {\n target[key] = deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n};\n\nexport function truncateAddress(address: string): string {\n if (address.length <=
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.tsx"],"sourcesContent":["import moment from 'moment';\n\nexport const getVersion = (): string => {\n return \"0.0.2\";\n};\n\nexport function encodeBase64(input: string) {\n return btoa(unescape(encodeURIComponent(input)));\n}\n\nexport function decodeBase64(input: string) {\n return decodeURIComponent(escape(atob(input)));\n}\n\nexport const isValidEmail = (email: string) => {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)\n}\nexport const isValidUsername = (username: string) => {\n //8-32 alpha number - _\n return /^[a-zA-Z0-9_-]+$/.test(username)\n}\n\nexport const deepMerge = (target: any, source: any): any => {\n for (const key in source) {\n if (source[key] instanceof Object && key in target) {\n target[key] = deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n};\n\nexport function truncateAddress(address: string, startLen = 4, endLen = 4): string {\n if (address.length <= startLen + endLen) {\n return address;\n }\n const start = address.slice(0, startLen);\n const end = address.slice(-endLen);\n return `${start}...${end}`;\n}\n\n\nexport function firstUpperCase(str: string): string {\n return str.toString()[0].toUpperCase() + str.toString().slice(1);\n}\n\nexport function getAppClientId() {\n return \"react-sdk-\" + getVersion()\n}\n\n\nfunction convertScientificToDecimal(num: number) {\n let str = num.toFixed(12)\n str = str.replace(/0+$/, '')\n str = str.replace(/\\.$/, '')\n return str\n}\n\ninterface NumberFormatterProps {\n value: number | string | undefined\n prefix?: string\n suffix?: string\n separator?: boolean\n fixNum?: number //number >= 1 fix num\n tFixNum?: number //number < 1 fix num\n intClassName?: string\n decimalClassName?: string\n prefixClassName?: string\n className?: string\n}\n\nexport const NumberFormatter: React.FC<NumberFormatterProps> = ({\n value,\n prefix = '',\n suffix = '',\n separator = true,\n fixNum = 2,\n tFixNum = 4,\n intClassName = \"\",\n decimalClassName = \"\",\n prefixClassName = \"\",\n className = \"\"\n }) => {\n const numberValue =\n typeof value === 'number'\n ? convertScientificToDecimal(value)\n : value\n ? value\n : '0'\n\n const [intPart, decimalPart] = numberValue.toString().split('.')\n\n const intFormat = separator\n ? intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n : intPart\n\n if (Math.abs(parseFloat(numberValue)) >= 1) {\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intFormat}</span>\n {decimalPart ? (\n <span className={decimalClassName}>\n .{decimalPart.substring(0, fixNum)}\n </span>\n ) : (\n ''\n )}\n {suffix}\n </span>\n )\n }\n\n if (decimalPart) {\n let zeroCount = 0\n for (let i = 0; i < decimalPart.length; i++) {\n if (decimalPart[i] === '0') {\n zeroCount++\n } else {\n break\n }\n }\n if (zeroCount < tFixNum) {\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intFormat}</span>\n <span className={decimalClassName}>\n .{decimalPart.substring(0, tFixNum)}\n </span>\n {suffix}\n </span>\n )\n }\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intFormat}</span>\n <span className={decimalClassName}>\n .0<sub>{zeroCount}</sub>\n {decimalPart?.substring(zeroCount, zeroCount + tFixNum - 2)}\n </span>\n {suffix}\n </span>\n )\n }\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intPart}</span>\n {suffix}\n </span>\n )\n}\n\nexport function formatAddress(address: string, pre = 4, after = 5) {\n return `${address.substring(0, pre)}...${address.substring(address.length - after, address.length)}`\n}\n\nexport const formatDate = (value: any, formatString = 'YYYY-MM-DD HH:mm:ss') => {\n if (value) {\n return moment.unix(value).format(formatString)\n }\n return '--'\n}\nexport const isInTgApp = () => {\n return !!(window.TelegramWebviewProxy)\n}\n\nexport function bytesToBase64(bytes: Uint8Array) {\n const binString = String.fromCodePoint(...bytes);\n return btoa(binString);\n}"],"mappings":"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","names":["moment"]}
|
package/dist/utils/index.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
NumberFormatter,
|
|
3
|
+
bytesToBase64,
|
|
3
4
|
decodeBase64,
|
|
4
5
|
deepMerge,
|
|
5
6
|
encodeBase64,
|
|
@@ -12,10 +13,11 @@ import {
|
|
|
12
13
|
isValidEmail,
|
|
13
14
|
isValidUsername,
|
|
14
15
|
truncateAddress
|
|
15
|
-
} from "../chunk-
|
|
16
|
+
} from "../chunk-IZOOVZAD.mjs";
|
|
16
17
|
import "../chunk-J5LGTIGS.mjs";
|
|
17
18
|
export {
|
|
18
19
|
NumberFormatter,
|
|
20
|
+
bytesToBase64,
|
|
19
21
|
decodeBase64,
|
|
20
22
|
deepMerge,
|
|
21
23
|
encodeBase64,
|
package/example/package.json
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
"version": "1.0.0",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"dev": "vite",
|
|
6
|
+
"dev": "vite --host",
|
|
7
|
+
"main": "vite --port 5175 --host",
|
|
7
8
|
"build": "vite build",
|
|
8
9
|
"preview": "vite preview",
|
|
9
10
|
"sdk": "rm -rf node_modules && yarn install"
|
|
@@ -16,10 +17,12 @@
|
|
|
16
17
|
"viem": "../node_modules/viem",
|
|
17
18
|
"react": "../node_modules/react",
|
|
18
19
|
"react-dom": "../node_modules/react-dom/profiling",
|
|
20
|
+
"lodash": "../node_modules/lodash",
|
|
19
21
|
"axios": "../node_modules/axios",
|
|
20
22
|
"zustand": "../node_modules/zustand",
|
|
21
23
|
"react-router-dom": "../node_modules/react-router-dom",
|
|
22
|
-
"@types/react-router-dom": "../node_modules/@types/react-router-dom"
|
|
24
|
+
"@types/react-router-dom": "../node_modules/@types/react-router-dom",
|
|
25
|
+
"@types/lodash": "../node_modules/@types/lodash"
|
|
23
26
|
},
|
|
24
27
|
"dependencies": {
|
|
25
28
|
"@matchain/matchid-sdk-react": "../dist",
|
package/example/src/App.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import useLocalStore from "@/store/useLocalStore";
|
|
|
14
14
|
import {LoginButton} from "@matchain/matchid-sdk-react/components";
|
|
15
15
|
import UI from "@/pages/UI";
|
|
16
16
|
import TgApp from "@/pages/TgApp";
|
|
17
|
+
import Contact from "./pages/Contact";
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
function Nav() {
|
|
@@ -51,6 +52,12 @@ function Nav() {
|
|
|
51
52
|
url: '/wallet',
|
|
52
53
|
onActive: location.pathname === '/wallet',
|
|
53
54
|
hidden: !isLogin
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'Contact',
|
|
58
|
+
url: '/contact',
|
|
59
|
+
onActive: location.pathname === '/contact',
|
|
60
|
+
hidden: !isLogin
|
|
54
61
|
}
|
|
55
62
|
]
|
|
56
63
|
return list
|
|
@@ -59,7 +66,7 @@ function Nav() {
|
|
|
59
66
|
<nav className={`text-2xl mb-5 p-2 text-red-600 flex gap-10 flex-wrap`}>
|
|
60
67
|
{menus.map((menu) => {
|
|
61
68
|
return <Link key={menu.url} to={menu.url}
|
|
62
|
-
className={`text-2xl ${menu.onActive ? 'text-red-600' : 'text-gray-400'} ${menu.hidden?'hidden' :''}`}>{menu.name}</Link>
|
|
69
|
+
className={`text-2xl ${menu.onActive ? 'text-red-600' : 'text-gray-400'} ${menu.hidden ? 'hidden' : ''}`}>{menu.name}</Link>
|
|
63
70
|
})}
|
|
64
71
|
|
|
65
72
|
<LoginButton/>
|
|
@@ -69,10 +76,34 @@ function Nav() {
|
|
|
69
76
|
}
|
|
70
77
|
|
|
71
78
|
function RouterApp() {
|
|
72
|
-
const {
|
|
79
|
+
const {
|
|
80
|
+
appid,
|
|
81
|
+
setAppid,
|
|
82
|
+
locale,
|
|
83
|
+
setLocale,
|
|
84
|
+
endpoints,
|
|
85
|
+
setEndpoints,
|
|
86
|
+
setWalletType,
|
|
87
|
+
walletType,
|
|
88
|
+
backgroundColor,
|
|
89
|
+
setBackgroundColor,
|
|
90
|
+
color,
|
|
91
|
+
setColor
|
|
92
|
+
} = useLocalStore()
|
|
73
93
|
|
|
74
94
|
return <Router>
|
|
75
95
|
<div className={`mb-2 p-2 flex gap-2 flex-col`}>
|
|
96
|
+
<div>
|
|
97
|
+
<label>BackgroundColor:</label>
|
|
98
|
+
<input value={backgroundColor} placeholder={"BackgroundColor"} className={"border-solid border"}
|
|
99
|
+
onChange={(ele) => {
|
|
100
|
+
setBackgroundColor(ele.target.value)
|
|
101
|
+
}}/></div>
|
|
102
|
+
<div>
|
|
103
|
+
<label>Color:</label>
|
|
104
|
+
<input value={color} placeholder={"Color"} className={"border-solid border"} onChange={(ele) => {
|
|
105
|
+
setColor(ele.target.value)
|
|
106
|
+
}}/></div>
|
|
76
107
|
<div>
|
|
77
108
|
<label>Appid:</label>
|
|
78
109
|
<input value={appid} placeholder={"Appid"} className={"border-solid border"} onChange={(ele) => {
|
|
@@ -105,7 +136,7 @@ function RouterApp() {
|
|
|
105
136
|
<select onChange={(ele) => {
|
|
106
137
|
setWalletType(ele.target.value as any)
|
|
107
138
|
}} value={walletType}>
|
|
108
|
-
{['Base','UserPasscode'].map((item) => <option key={item} value={item}>{item}</option>)}
|
|
139
|
+
{['Base', 'UserPasscode'].map((item) => <option key={item} value={item}>{item}</option>)}
|
|
109
140
|
</select>
|
|
110
141
|
</div>
|
|
111
142
|
</div>
|
|
@@ -118,6 +149,7 @@ function RouterApp() {
|
|
|
118
149
|
<Route element={<RoutePrivate/>}>
|
|
119
150
|
<Route path="/user" element={<User/>}/>
|
|
120
151
|
<Route path="/wallet" element={<Wallet/>}/>
|
|
152
|
+
<Route path="/contact" element={<Contact/>}/>
|
|
121
153
|
</Route>
|
|
122
154
|
</Routes>
|
|
123
155
|
</div>
|
|
@@ -125,9 +157,12 @@ function RouterApp() {
|
|
|
125
157
|
}
|
|
126
158
|
|
|
127
159
|
function App() {
|
|
128
|
-
const {appid, locale, endpoints,walletType} = useLocalStore()
|
|
160
|
+
const {appid, locale, endpoints, walletType, backgroundColor, color} = useLocalStore()
|
|
129
161
|
|
|
130
|
-
return <
|
|
162
|
+
return <div style={{
|
|
163
|
+
backgroundColor: backgroundColor,
|
|
164
|
+
color: color
|
|
165
|
+
}}><MatchProvider
|
|
131
166
|
appid={appid}
|
|
132
167
|
endpoints={endpoints}
|
|
133
168
|
locale={locale}
|
|
@@ -144,7 +179,8 @@ function App() {
|
|
|
144
179
|
}}
|
|
145
180
|
>
|
|
146
181
|
<RouterApp/>
|
|
147
|
-
</MatchProvider
|
|
182
|
+
</MatchProvider>
|
|
183
|
+
</div>;
|
|
148
184
|
}
|
|
149
185
|
|
|
150
186
|
export default App;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import {ContactList,ContactCard} from "@matchain/matchid-sdk-react/components"
|
|
2
|
+
import {Field, Input, Button, Radio} from "@matchain/matchid-sdk-react/ui"
|
|
3
|
+
import {Api,Icon} from "@matchain/matchid-sdk-react"
|
|
4
|
+
import React, {useCallback, useEffect, useState} from "react";
|
|
5
|
+
import {debounce} from "lodash";
|
|
6
|
+
import {useToast} from "@matchain/matchid-sdk-react/hooks";
|
|
7
|
+
|
|
8
|
+
const {contact} = Api
|
|
9
|
+
|
|
10
|
+
function ContactSearch() {
|
|
11
|
+
const [value, setValue] = useState("")
|
|
12
|
+
const [searchValue, setSearchValue] = useState("")
|
|
13
|
+
const [loading,setLoading] = useState(false)
|
|
14
|
+
const [searching,setSearching] = useState(false)
|
|
15
|
+
const toast = useToast()
|
|
16
|
+
const debouncedSetKeyword = useCallback(
|
|
17
|
+
debounce((newKeyword) => {
|
|
18
|
+
setSearchValue(newKeyword);
|
|
19
|
+
}, 1500),
|
|
20
|
+
[]
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
24
|
+
setValue(e.target.value);
|
|
25
|
+
debouncedSetKeyword(e.target.value);
|
|
26
|
+
setSearching(true)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const searchQuery = contact.useContactSearch(searchValue)
|
|
30
|
+
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if(searchQuery.isFetched){
|
|
33
|
+
setSearching(false)
|
|
34
|
+
}
|
|
35
|
+
}, [searchQuery.isFetched]);
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
const onAdd = async()=>{
|
|
39
|
+
if(!searchQuery.data){
|
|
40
|
+
return
|
|
41
|
+
}
|
|
42
|
+
setLoading(true)
|
|
43
|
+
try{
|
|
44
|
+
await contact.addContact(searchQuery.data)
|
|
45
|
+
toast.success("Add Success")
|
|
46
|
+
}catch(error:any){
|
|
47
|
+
toast.success(error.message)
|
|
48
|
+
console.error(error)
|
|
49
|
+
}finally {
|
|
50
|
+
setLoading(false)
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return <div className={`flex gap-4 flex-col`}>
|
|
54
|
+
<Field label={"Search"}>
|
|
55
|
+
<Input placeholder={"Input address or MatchID"} value={value} onChange={onChange}/>
|
|
56
|
+
</Field>
|
|
57
|
+
{(searchQuery.data || searching )&& <div className={"break-all"}>
|
|
58
|
+
<ContactCard loading={searching} data={!searching ?(searchQuery.data||undefined) : undefined}
|
|
59
|
+
action={()=>{
|
|
60
|
+
return searchQuery.data && <Button size="sm" onClick={onAdd} disabled={!searchQuery.data} loading={loading}>Add</Button>
|
|
61
|
+
}}
|
|
62
|
+
/>
|
|
63
|
+
</div>}
|
|
64
|
+
</div>
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export default function Contact() {
|
|
68
|
+
const [contactType, setContactType] = useState<"Friend" | "Requests">("Friend")
|
|
69
|
+
|
|
70
|
+
return <div className={`grid md:grid-cols-2 gap-4`}>
|
|
71
|
+
<div>
|
|
72
|
+
<Field label={"Type"}>
|
|
73
|
+
<div className={`flex gap-4`}>
|
|
74
|
+
<div onClick={() => setContactType("Friend")}
|
|
75
|
+
className={`flex gap-2 items-center cursor-pointer`}>
|
|
76
|
+
<Radio checked={contactType == "Friend"}/>
|
|
77
|
+
Friend
|
|
78
|
+
</div>
|
|
79
|
+
<div onClick={() => setContactType("Requests")}
|
|
80
|
+
className={`flex gap-2 items-center cursor-pointer`}>
|
|
81
|
+
<Radio checked={contactType == "Requests"}/>
|
|
82
|
+
Requests
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</Field>
|
|
86
|
+
<ContactList type={contactType}/>
|
|
87
|
+
</div>
|
|
88
|
+
<ContactSearch/>
|
|
89
|
+
</div>
|
|
90
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {useState} from "react";
|
|
2
|
+
import {Tabs} from "@matchain/matchid-sdk-react/ui"
|
|
3
|
+
export default function TabsDemo(){
|
|
4
|
+
const list = ['Tab1', 'Tab2', 'Tab3']
|
|
5
|
+
const [activeTab, setActiveTab] = useState(0)
|
|
6
|
+
return <div>
|
|
7
|
+
<Tabs tabs={list} activeTab={activeTab} setActiveTab={setActiveTab}/>
|
|
8
|
+
<div>
|
|
9
|
+
{list.map((tab, index) => {
|
|
10
|
+
return <div key={index} style={{display: activeTab === index ? 'block' : 'none'}}>
|
|
11
|
+
{tab}
|
|
12
|
+
</div>
|
|
13
|
+
})}
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import SwitchDemo from "@/pages/UI/components/Switch";
|
|
2
2
|
import AlphaAvatarDemo from "@/pages/UI/components/AlphaAvatar";
|
|
3
3
|
import RadioDemo from "@/pages/UI/components/Radio";
|
|
4
|
+
import TabsDemo from "@/pages/UI/components/Tabs";
|
|
4
5
|
|
|
5
6
|
export default function UI(){
|
|
6
7
|
return <div>
|
|
7
8
|
<SwitchDemo/>
|
|
8
9
|
<AlphaAvatarDemo/>
|
|
9
10
|
<RadioDemo/>
|
|
11
|
+
<TabsDemo/>
|
|
10
12
|
</div>
|
|
11
13
|
}
|
|
@@ -93,7 +93,13 @@ function LoginContent() {
|
|
|
93
93
|
{
|
|
94
94
|
Object.keys(LOGIN_METHOD_MAP).map((method) => {
|
|
95
95
|
return <button key={method} className={`bg-gray-300 p-1 capitalize rounded`}
|
|
96
|
-
onClick={() =>
|
|
96
|
+
onClick={async () => {
|
|
97
|
+
try {
|
|
98
|
+
await getAuthInfo(method as keyof typeof LOGIN_METHOD_MAP)
|
|
99
|
+
} catch (error: any) {
|
|
100
|
+
console.error(error, typeof error, error.toString())
|
|
101
|
+
}
|
|
102
|
+
}}>{LOGIN_METHOD_MAP[method as keyof typeof LOGIN_METHOD_MAP]}
|
|
97
103
|
</button>
|
|
98
104
|
})
|
|
99
105
|
}
|
|
@@ -11,11 +11,15 @@ interface StoreState {
|
|
|
11
11
|
locale: LocaleType;
|
|
12
12
|
walletType:"Base" | "UserPasscode";
|
|
13
13
|
setWalletType: (walletType: "Base" | "UserPasscode") => void;
|
|
14
|
+
color:string,
|
|
15
|
+
backgroundColor:string,
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
setAppid: (appid: string) => void;
|
|
17
19
|
setEndpoints: (endpoints: StoreState['endpoints']) => void
|
|
18
20
|
setLocale: (locale: LocaleType) => void
|
|
21
|
+
setColor: (color: string) => void
|
|
22
|
+
setBackgroundColor: (backgroundColor: string) => void
|
|
19
23
|
|
|
20
24
|
initChainId: number;
|
|
21
25
|
setInitChainId: (initChainId: number) => void
|
|
@@ -23,6 +27,7 @@ interface StoreState {
|
|
|
23
27
|
erc20Address: string;
|
|
24
28
|
setErc20Address: (erc20Address: string) => void;
|
|
25
29
|
|
|
30
|
+
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
const persistedState = persist<StoreState>(
|
|
@@ -38,6 +43,10 @@ const persistedState = persist<StoreState>(
|
|
|
38
43
|
setLocale: (locale: LocaleType) => set({locale}),
|
|
39
44
|
walletType: "UserPasscode",
|
|
40
45
|
setWalletType: (walletType: "Base" | "UserPasscode") => set({walletType}),
|
|
46
|
+
color: '#000000',
|
|
47
|
+
setColor: (color: string) => set({color}),
|
|
48
|
+
backgroundColor: '#ffffff',
|
|
49
|
+
setBackgroundColor: (backgroundColor: string) => set({backgroundColor}),
|
|
41
50
|
|
|
42
51
|
initChainId:1,
|
|
43
52
|
setInitChainId: (initChainId: number) => set({initChainId}),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matchain/matchid-sdk-react",
|
|
3
|
-
"version": "0.1.53-alpha.
|
|
3
|
+
"version": "0.1.53-alpha.10",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"exports": {
|
|
@@ -66,21 +66,20 @@
|
|
|
66
66
|
"react-dom": "^18.0.0"
|
|
67
67
|
},
|
|
68
68
|
"dependencies": {
|
|
69
|
-
"@
|
|
70
|
-
"@solana/wallet-adapter-react-ui": "0.9.35",
|
|
71
|
-
"@solana/wallet-adapter-wallets": "0.19.24",
|
|
72
|
-
"@solana/web3.js": "1.98.0",
|
|
69
|
+
"@rainbow-me/rainbowkit": "^2.2.4",
|
|
73
70
|
"@tanstack/react-query": "^5.62.11",
|
|
74
71
|
"@tonconnect/ui-react": "^2.0.11",
|
|
75
72
|
"axios": "^1.7.0",
|
|
76
73
|
"axios-retry": "^4.5.0",
|
|
77
74
|
"copy-to-clipboard": "^3.3.3",
|
|
78
75
|
"ethers": "^5.7.2",
|
|
76
|
+
"lodash": "^4.17.21",
|
|
79
77
|
"moment": "^2.30.1",
|
|
80
78
|
"react-infinite-scroll-component": "^6.1.0",
|
|
81
79
|
"react-intl": "^7.1.0",
|
|
82
80
|
"react-qrcode": "^0.3.6",
|
|
83
81
|
"react-router-dom": "^6.0.0",
|
|
82
|
+
"react-virtuoso": "^4.12.5",
|
|
84
83
|
"sats-connect": "^3.0.1",
|
|
85
84
|
"siwe": "^2.3.2",
|
|
86
85
|
"styled-components": "^6.1.13",
|
|
@@ -90,6 +89,7 @@
|
|
|
90
89
|
},
|
|
91
90
|
"devDependencies": {
|
|
92
91
|
"@swc/core": "^1.9.1",
|
|
92
|
+
"@types/lodash": "^4.17.16",
|
|
93
93
|
"@types/react": "^18.0.0",
|
|
94
94
|
"@types/react-dom": "^18.0.0",
|
|
95
95
|
"@types/react-modal": "^3.16.3",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/index.ts","../src/ui/Button/index.tsx","../src/ui/Overlay/index.tsx","../src/ui/Drawer/index.tsx","../src/ui/Field/index.tsx","../src/ui/HashPanel/index.tsx","../src/hooks/useLayout.tsx","../src/ui/Modal/index.tsx","../src/ui/ModalDrawer/index.tsx","../src/hooks/useHash.ts","../src/utils/matchlog.ts","../src/ui/Input/index.tsx","../src/ui/Popover/index.tsx","../src/ui/Switch/index.tsx","../src/ui/AlphaAvatar/index.tsx","../src/ui/Radio/index.tsx"],"sourcesContent":["export { default as Button } from './Button';\nexport { default as Drawer } from './Drawer';\nexport { default as Field } from './Field';\nexport { default as HashPanel } from './HashPanel';\nexport { default as Input } from './Input';\nexport { default as Modal,ModalWithHeader } from './Modal';\nexport { default as ModalDrawer } from './ModalDrawer';\nexport { default as Overlay } from './Overlay';\nexport { default as Popover } from './Popover';\nexport { default as Switch } from './Switch';\nexport { default as AlphaAvatar } from './AlphaAvatar';\nexport { default as Radio } from './Radio';","import {LoadingIcon} from \"assets/icon\";\nimport {ButtonProps} from \"../../types/types\";\n\nexport default function Button({\n size = \"df\",\n disabled = false,\n loading = false,\n children,\n onClick,\n highlight = false,\n block = false,\n type = \"button\",\n rounded = true,\n className = '',\n style = {}\n }: ButtonProps) {\n\n const onAction = () => {\n if (!disabled && !loading) {\n onClick && onClick()\n }\n }\n return <button\n type={type}\n className={`${className} matchid-btn ${'matchid-btn-' + size} ${highlight ? \"matchid-btn-highlight\" : ''} ${loading ? \"matchid-btn-loading\" : ''} ${block ? \"matchid-btn-block\" : ''} ${rounded ? \"matchid-btn-rounded\" : ''}`}\n disabled={disabled || loading}\n style={{\n ...style\n }}\n onClick={onAction}\n >\n {\n loading ?\n <LoadingIcon className=\"matchid-btn-loading-icon\" color=\"var(--matchid-btn-loading-color)\"/> :\n children\n }\n </button>\n}","import React, {PropsWithChildren, useEffect} from \"react\";\n\nexport default function Overlay({\n isOpen = false,\n children,\n zIndex = 100,\n }: {\n isOpen?: boolean\n zIndex?: number\n} & PropsWithChildren) {\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n return isOpen ? <div\n className=\"matchid-overlay\"\n style={{\n zIndex\n }}\n >\n {children}\n </div> : <></>\n}","import React, {PropsWithChildren} from \"react\";\nimport Overlay from \"../Overlay\";\nimport {CloseRoundIcon} from \"assets/icon\";\nimport {DrawerProps} from \"../../types\";\nimport ArrowLeftIcon from \"../../assets/icon/ArrowLeftIcon\";\n\nexport default function Drawer({\n children,\n showClose = true,\n onClose,\n isOpen = false,\n title,\n zIndex = 100,\n onBack\n }: DrawerProps) {\n\n if (!isOpen) {\n return <></>\n }\n\n\n return <Overlay isOpen={isOpen} zIndex={zIndex}>\n <div className={\"matchid-drawer\"}>\n <div className={`matchid-drawer-header matchid-flex`}>\n <div className={`matchid-drawer-header-content matchid-flex`}>\n {onBack && <ArrowLeftIcon height={25} width={24} className=\"matchid-drawer-header-back\" onClick={onBack}/>}\n {title}\n </div>\n {\n showClose && <CloseRoundIcon className={\"matchid-drawer-header-close\"} onClick={onClose}/>\n }\n </div>\n\n {children}\n </div>\n </Overlay>\n}","import {PropsWithChildren, ReactNode} from \"react\";\n\nexport default function Field({\n label,\n children,\n error,\n required,\n className=''\n }:{\n label: ReactNode,\n error?: ReactNode,\n required?: boolean\n className?: string\n\n}&PropsWithChildren){\n return <div className={`matchid-field-box ${className}`}>\n <div className=\"matchid-field-label\">{required&&<span className={\"matchid-field-required\"}>*</span>}{label}</div>\n {children}\n {error && <div className=\"matchid-field-error\">{error}</div>}\n </div>\n\n}","import {\n http,\n Hash,\n createPublicClient, Chain,\n} from \"viem\";\nimport {useEffect, useState} from \"react\";\nimport {useQuery} from \"@tanstack/react-query\";\nimport ModalDrawer from \"../ModalDrawer\";\nimport Button from \"../Button\";\nimport ConfirmImg from \"assets/img/confirm.gif\"\nimport PendingImg from \"assets/img/pending.gif\"\nimport SuccessImg from \"assets/img/success.gif\"\nimport FailImg from \"assets/img/fail.gif\"\nimport matchlog from \"../../utils/matchlog\";\nimport useHash from \"../../hooks/useHash\";\n\ntype statusType = 'pending' | 'success' | 'fail' | 'confirm'\ntype HashPanelProps = {\n hash?: Hash | null,\n chain?: Chain | null,\n isOpen: boolean,\n onClose: () => void\n zIndex?: number\n}\n\nfunction HashPanel({\n hash,\n chain,\n isOpen,\n onClose,\n zIndex,\n }: HashPanelProps) {\n const [status, setStatus] = useState<statusType>('confirm')\n\n const statusMaps: Record<statusType, {\n icon: string;\n text: string;\n color: string\n }> = {\n 'confirm': {\n icon: ConfirmImg,\n text: 'Confirming...',\n color: '#FC802D'\n },\n 'pending': {\n icon: PendingImg,\n text: 'Pending...',\n color: '#FC802D'\n },\n 'success': {\n icon: SuccessImg,\n text: 'Successful!',\n color: '#2CBF68'\n },\n 'fail': {\n icon: FailImg,\n text: 'Failed!',\n color: '#F14141'\n }\n }\n\n const statusValue = statusMaps[status]\n const [shouldRefetch, setShouldRefetch] = useState(true)\n\n useEffect(() => {\n if (hash) {\n setShouldRefetch(true)\n setStatus('pending')\n } else {\n setStatus('confirm')\n }\n }, [hash])\n const hashQuery = useHash({\n hash,\n chain,\n refetchInterval: shouldRefetch ? 3000 : false\n })\n useEffect(() => {\n if(hashQuery.data==1||hashQuery.data==-1){\n setShouldRefetch(false)\n }\n if(hashQuery.data==1){\n setStatus('success')\n }else if(hashQuery.data==-1){\n setStatus('fail')\n }else if(hashQuery.data==0){\n setStatus('pending')\n }\n }, [hashQuery.data]);\n\n const link = chain ? `${chain?.blockExplorers?.default.url}/tx/${hash}` : '';\n\n return <ModalDrawer isOpen={isOpen}\n showClose\n onClose={onClose}\n zIndex={zIndex}\n title={\n <div className={\"matchid-hashpanel-header\"}\n style={{\n color: statusValue.color\n }}>{statusValue.text}</div>\n }\n >\n <div className=\"matchid-hashpanel-box\">\n <div className=\"matchid-hashpanel-content\">\n <div className={`matchid-hashpanel-status`} style={{\n color: statusValue.color\n }}>{statusValue.text}</div>\n\n <img src={statusValue.icon} alt={statusValue.text} className={`matchid-hashpanel-img`}/>\n\n {hash && <div className=\"matchid-hashpanel-hash\">\n Hash:<a href={link} target=\"_blank\">{hash}</a>\n </div>}\n </div>\n <Button onClick={onClose} size=\"lg\" block>Back</Button>\n </div>\n </ModalDrawer>\n}\n\nexport default function (props: HashPanelProps) {\n return props.isOpen && <HashPanel {...props}/>\n\n}","import { useState ,useEffect} from \"react\";\n\nexport function useDownMd(): boolean {\n const [isBelowMd, setIsBelowMd] = useState(window.matchMedia('(max-width: 767px)').matches);\n\n useEffect(() => {\n const handleResize = () => {\n setIsBelowMd(window.matchMedia('(max-width: 767px)').matches);\n };\n\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n return isBelowMd;\n}","import React, {useEffect} from \"react\";\nimport {ModalProps, ModalWithHeaderProps} from \"../../types\";\nimport ArrowLeftIcon from \"../../assets/icon/ArrowLeftIcon\";\nimport {CloseRoundIcon} from \"../../assets/icon\";\nimport {useDownMd} from \"../../hooks/useLayout\";\nimport Overlay from \"../Overlay\";\n\nexport default function Modal({\n children,\n isOpen,\n width = 480,\n zIndex = 100,\n className = ''\n }: ModalProps) {\n\n return <Overlay isOpen={isOpen} zIndex={zIndex}>\n <div className={`matchid-modal ${className}`} style={{\n width\n }}>\n <div className=\"matchid-modal-mobile-header\"></div>\n {children}\n </div>\n </Overlay>\n}\n\nexport function ModalWithHeader({\n children,\n onBack,\n onClose,\n title,\n showBorder = true,\n showClose = true,\n ...props\n\n }: ModalWithHeaderProps) {\n const isDownMd = useDownMd()\n return <Modal {...props}>\n <div className={`matchid-modal-header ${showBorder ? 'matchid-modal-header-border' : ''}`}>\n <div className=\"matchid-modal-header-content\">\n {\n onBack &&\n <ArrowLeftIcon height={isDownMd ? 20 : 25} width={isDownMd ? 20 : 24} className=\"matchid-modal-header-back\" onClick={onBack}/>\n }\n <span className=\"matchid-modal-header-title\">{title}</span>\n </div>\n {onClose &&\n <CloseRoundIcon size={isDownMd ? 24 : 30} className=\"matchid-modal-header-close\" onClick={onClose}/>}\n </div>\n {children}\n </Modal>\n\n}","import {useDownMd} from \"hooks/useLayout\";\nimport {ModalWithHeader} from \"../Modal\";\nimport Drawer from \"../Drawer\";\nimport {WalletPanelProps} from \"../../types\";\n\nexport default function ModalDrawer({\n title,\n drawerTitleVisible=true,\n ...props}:WalletPanelProps){\n\n const isDownMd = useDownMd()\n if(isDownMd){\n return <ModalWithHeader {...props} title={title}/>\n }\n return <Drawer {...props} title={drawerTitleVisible ? title : null}/>\n}","import {useQuery} from \"@tanstack/react-query\";\nimport {Chain, createPublicClient, http} from \"viem\";\nimport matchlog from \"../utils/matchlog\";\n\nexport default function useHash({\n hash,\n chain,\n refetchInterval,\n enabled=true\n }:{\n hash?: `0x${string}` | null,\n chain?: Chain | null,\n refetchInterval?:false|number\n enabled?:boolean\n}){\n return useQuery(\n {\n queryKey: ['txhash', hash, chain],\n queryFn: async () => {\n if (!chain || !hash) return false\n const publicClient = createPublicClient({\n chain,\n transport: http(),\n });\n try {\n const receipt = await publicClient.getTransactionReceipt({hash});\n\n if (!receipt) {\n return 0\n }\n matchlog.log('getTransactionReceipt', receipt)\n if (receipt.status === 'success') {\n return 1\n }\n return -1\n\n } catch (error) {\n console.error('getTransactionReceiptError', error)\n }\n return -99\n },\n enabled: !!chain && !!hash && enabled,\n refetchInterval,\n // refetchIntervalInBackground: false\n }\n );\n}","// src/utils/logger.ts\nconst matchDevExists = () => localStorage.getItem('matchid-sdk-react-debug') !== null;\n\nconst handler = {\n get(target: any, prop: string) {\n if (matchDevExists() && typeof target[prop] === 'function') {\n return target[prop].bind(console);\n }\n return () => {};\n }\n};\n\nconst matchlog = new Proxy(console, handler);\n\nexport default matchlog;","import {InputProps} from \"types/types\";\nimport {DeleteRoundIcon, CloseEyeIcon, OpenEyeIcon} from \"assets/icon\";\nimport {useState} from \"react\";\nimport {useDownMd} from \"../../hooks/useLayout\";\n\nexport default function Input({\n onChange,\n type,\n after,\n className = '',\n ...props\n }: InputProps) {\n const [inputType, setInputType] = useState(type)\n const isDownMd = useDownMd()\n return <div\n className={`matchid-input-box ${props.value && props.value.length > 0 ? 'matchid-input-has-content' : ''} ${className}`}>\n <input type={inputType} onChange={onChange} {...props} className=\"matchid-input-field\"/>\n {\n props.value && props.value.length > 0\n && <div className=\"matchid-input-delete-icon\" onClick={(e) => {\n if (onChange) {\n onChange({target: {value: ''}});\n }\n }}>\n <DeleteRoundIcon height={isDownMd ? 16 : 21} width={isDownMd ? 16 : 20}\n color=\"var(--matchid-input-delete-icon-color)\"/>\n </div>\n }\n {\n type === 'password' && <div className=\"matchid-input-eye-icon\" onClick={() => {\n setInputType(inputType === 'password' ? 'text' : 'password')\n }}>\n {\n inputType === 'password' ? <CloseEyeIcon size={isDownMd ? 16 : 20}/> :\n <OpenEyeIcon size={isDownMd ? 16 : 20}/>\n }\n </div>\n }\n {\n after\n }\n </div>\n\n}","import {useState} from \"react\";\nimport {PopoverProps} from \"../../types/types\";\n\nexport default function Popover({\n children,\n content,\n position = \"right\",\n type = \"hover\",\n className = \"\",\n gap = '20px'\n }: PopoverProps) {\n const [active, setActive] = useState(false)\n return children && <div\n onClick={() => {\n if (type == 'click') {\n setActive(!active)\n }\n }}\n className={`matchid-popover-box matchid-popover-${position} matchid-popover-${type} ${className} ${type == 'click' && active ? 'matchid-popover-click-active' : ''}`}>\n {children}\n <div style={{\n paddingTop: gap\n }} className={`matchid-popover-area`}>\n <div className={`matchid-popover-content`}>\n {content}\n </div>\n </div>\n </div>\n\n}","import {UIProps} from \"../../types\";\nimport {LoadingIcon} from \"../../assets/icon\";\n\nexport default function Switch({\n size=\"default\",\n checked=false,\n loading=false,\n onChange,\n className,\n disabled=false,\n ...props\n }:{\n size?:\"default\"|\"sm\",\n checked?:boolean,\n loading?:boolean,\n disabled?:boolean,\n onChange?:(checked:boolean)=>void,\n}&UIProps){\n const onClick = ()=>{\n if(!disabled && !loading){\n onChange && onChange(!checked)\n }\n }\n return <div onClick={onClick} className={`matchid-switch matchid-switch-${size} ${checked ? \"matchid-switch-checked\":\"\"} ${disabled ? \"matchid-switch-disabled\":\"\"} ${loading ? \"matchid-switch-loading\":\"\"}`} {...props}>\n\n {\n loading ?\n <LoadingIcon className=\"matchid-switch-loading-icon\" size={size==\"default\"?24:18} color=\"var(--matchid-swicth-loading-color)\"/> :\n <div className={\"matchid-switch-ball\"}></div>\n }\n </div>\n}","import { useMemo} from \"react\";\nimport {UIProps} from \"../../types\";\n\nexport default function AlphaAvatar({\n name,\n size = \"default\", className = '',style}: {\n name: string,\n size?: number|\"sm\"|\"default\"|\"lg\",\n}&UIProps) {\n\n const avatar = useMemo(()=>{\n if (name) {\n const char = name[0].toUpperCase()\n if (char.match(/[a-zA-Z0-9]/)) {\n return char\n }\n }\n return ''\n },[name])\n\n const numberSize = typeof size === 'number' ? size : size === 'sm' ? 24 : size === 'default' ? 40 : 64\n return <div className={`matchid-alpha-avatar ${className}`} style={{\n width: numberSize,\n height: numberSize,\n fontSize: Math.ceil(numberSize / 2),\n ...style\n }}>\n {avatar}\n </div>\n}","import {CSSProperties} from \"react\";\n\nexport default function Radio({\n checked = false,\n onChange,\n size = 24,\n color = \"#FC802D\",\n className = \"\",\n style = {}\n }: {\n checked?: boolean,\n onChange?: () => void\n size?: number,\n color?: string,\n className?: string,\n style?: CSSProperties\n}) {\n return <div onClick={onChange} className={`matchid-radio ${className} ${checked ? 'matchid-radio-checked' :''}`} style={{\n width: size,\n height: size,\n ...style,\n // @ts-ignore\n '--matchid-radio-checked': color\n }}>\n {checked && <div className={`matchid-radio-content`} style={{\n width:Math.floor(size*0.7),\n height:Math.floor(size*0.7),\n }}></div>}\n </div>\n}"],"mappings":"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","names":["jsx","Fragment","jsx","jsx","jsxs","useEffect","useState","useEffect","jsx","jsxs","jsx","jsx","jsxs","useState","useEffect","useState","jsx","jsxs","useState","useState","jsx","jsxs","jsx","jsx","jsx"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/index.tsx"],"sourcesContent":["import moment from 'moment';\n\nexport const getVersion = (): string => {\n return \"0.0.2\";\n};\n\nexport function encodeBase64(input: string) {\n return btoa(unescape(encodeURIComponent(input)));\n}\n\nexport function decodeBase64(input: string) {\n return decodeURIComponent(escape(atob(input)));\n}\n\nexport const isValidEmail = (email: string) => {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)\n}\nexport const isValidUsername = (username: string) => {\n //8-32 alpha number - _\n return /^[a-zA-Z0-9_-]+$/.test(username)\n}\n\nexport const deepMerge = (target: any, source: any): any => {\n for (const key in source) {\n if (source[key] instanceof Object && key in target) {\n target[key] = deepMerge(target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n }\n return target;\n};\n\nexport function truncateAddress(address: string): string {\n if (address.length <= 6) {\n return address;\n }\n const start = address.slice(0, 4);\n const end = address.slice(-2);\n return `${start}...${end}`;\n}\n\n\nexport function firstUpperCase(str: string): string {\n return str.toString()[0].toUpperCase() + str.toString().slice(1);\n}\n\nexport function getAppClientId() {\n return \"react-sdk-\" + getVersion()\n}\n\n\nfunction convertScientificToDecimal(num: number) {\n let str = num.toFixed(12)\n str = str.replace(/0+$/, '')\n str = str.replace(/\\.$/, '')\n return str\n}\n\ninterface NumberFormatterProps {\n value: number | string | undefined\n prefix?: string\n suffix?: string\n separator?: boolean\n fixNum?: number //number >= 1 fix num\n tFixNum?: number //number < 1 fix num\n intClassName?: string\n decimalClassName?: string\n prefixClassName?: string\n className?: string\n}\n\nexport const NumberFormatter: React.FC<NumberFormatterProps> = ({\n value,\n prefix = '',\n suffix = '',\n separator = true,\n fixNum = 2,\n tFixNum = 4,\n intClassName = \"\",\n decimalClassName = \"\",\n prefixClassName = \"\",\n className = \"\"\n }) => {\n const numberValue =\n typeof value === 'number'\n ? convertScientificToDecimal(value)\n : value\n ? value\n : '0'\n\n const [intPart, decimalPart] = numberValue.toString().split('.')\n\n const intFormat = separator\n ? intPart.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')\n : intPart\n\n if (Math.abs(parseFloat(numberValue)) >= 1) {\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intFormat}</span>\n {decimalPart ? (\n <span className={decimalClassName}>\n .{decimalPart.substring(0, fixNum)}\n </span>\n ) : (\n ''\n )}\n {suffix}\n </span>\n )\n }\n\n if (decimalPart) {\n let zeroCount = 0\n for (let i = 0; i < decimalPart.length; i++) {\n if (decimalPart[i] === '0') {\n zeroCount++\n } else {\n break\n }\n }\n if (zeroCount < tFixNum) {\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intFormat}</span>\n <span className={decimalClassName}>\n .{decimalPart.substring(0, tFixNum)}\n </span>\n {suffix}\n </span>\n )\n }\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intFormat}</span>\n <span className={decimalClassName}>\n .0<sub>{zeroCount}</sub>\n {decimalPart?.substring(zeroCount, zeroCount + tFixNum - 2)}\n </span>\n {suffix}\n </span>\n )\n }\n return (\n <span className={className}>\n {prefix && <span className={prefixClassName}>{prefix}</span>}\n <span className={intClassName}>{intPart}</span>\n {suffix}\n </span>\n )\n}\n\nexport function formatAddress(address: string, pre = 4, after = 5) {\n return `${address.substring(0, pre)}...${address.substring(address.length - after, address.length)}`\n}\n\nexport const formatDate = (value: any, formatString = 'YYYY-MM-DD HH:mm:ss') => {\n if (value) {\n return moment.unix(value).format(formatString)\n }\n return '--'\n}\nexport const isInTgApp = () => {\n return !!(window.TelegramWebviewProxy)\n}"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config/chains/index.ts","../src/config/chains/MatchMain.ts","../src/config/chains/MatchTest.ts"],"sourcesContent":["export { matchMain as MatchMain} from \"./MatchMain\"\nexport { matchTest as MatchTest} from \"./MatchTest\"","import {defineChain} from \"viem\";\n\nexport const matchMain = /*#__PURE__*/ defineChain({\n //定义match链\n id: 698,\n name: \"Matchain\",\n nativeCurrency: { name: \"Match Coin\", symbol: \"BNB\", decimals: 18 },\n rpcUrls: {\n default: {\n http: [\"https://rpc.matchain.io\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Matchscan\",\n url: \"https://matchscan.io/\",\n apiUrl: \"https://matchscan.io/api\",\n },\n },\n iconUrl: \"https://matchscan.io/static/identicon_logos/blockies.png\",\n contracts: {\n multicall3: {\n address: \"0xca11bde05977b3631167028862be2a173976ca11\",\n }\n },\n // testnet: true,\n});","\nimport { defineChain } from \"viem\"\n\nexport const matchTest = /*#__PURE__*/ defineChain({\n //定义matchTest链\n id: 699,\n name: \"MatchTest\",\n nativeCurrency: { name: \"Match Coin\", symbol: \"BNB\", decimals: 18 },\n rpcUrls: {\n default: {\n http: [\"https://testnet-rpc.matchain.io\"],\n },\n },\n blockExplorers: {\n default: {\n name: \"Matchscan\",\n url: \"https://testnet.matchscan.io/\",\n apiUrl: \"https://testnet.matchscan.io/api\",\n },\n },\n iconUrl: \"https://testnet.matchscan.io/static/identicon_logos/blockies.png\",\n contracts: {\n multicall3: {\n address: \"0xca11bde05977b3631167028862be2a173976ca11\",\n blockCreated: 751532,\n },\n ensRegistry: { address: \"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\" },\n ensUniversalResolver: {\n address: \"0xc8Af999e38273D658BE1b921b88A9Ddf005769cC\",\n blockCreated: 5_317_080,\n },\n },\n // testnet: true,\n});\n"],"mappings":";;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,SAAQ,mBAAkB;AAEnB,IAAM,YAA0B,4BAAY;AAAA;AAAA,EAE/C,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,EAAE,MAAM,cAAc,QAAQ,OAAO,UAAU,GAAG;AAAA,EAClE,SAAS;AAAA,IACL,SAAS;AAAA,MACL,MAAM,CAAC,yBAAyB;AAAA,IACpC;AAAA,EACJ;AAAA,EACA,gBAAgB;AAAA,IACZ,SAAS;AAAA,MACL,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,IACZ;AAAA,EACJ;AAAA,EACA,SAAS;AAAA,EACT,WAAW;AAAA,IACP,YAAY;AAAA,MACR,SAAS;AAAA,IACb;AAAA,EACJ;AAAA;AAEJ,CAAC;;;ACzBD,SAAS,eAAAA,oBAAmB;AAErB,IAAM,YAA0B,gBAAAA,aAAY;AAAA;AAAA,EAEjD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,EAAE,MAAM,cAAc,QAAQ,OAAO,UAAU,GAAG;AAAA,EAClE,SAAS;AAAA,IACP,SAAS;AAAA,MACP,MAAM,CAAC,iCAAiC;AAAA,IAC1C;AAAA,EACF;AAAA,EACA,gBAAgB;AAAA,IACd,SAAS;AAAA,MACP,MAAM;AAAA,MACN,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,SAAS;AAAA,EACT,WAAW;AAAA,IACT,YAAY;AAAA,MACV,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,IACA,aAAa,EAAE,SAAS,6CAA6C;AAAA,IACrE,sBAAsB;AAAA,MACpB,SAAS;AAAA,MACT,cAAc;AAAA,IAChB;AAAA,EACF;AAAA;AAEF,CAAC;","names":["defineChain"]}
|