@0xchain/table 0.0.1
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/README.md +7 -0
- package/dist/api/commonApi.d.ts +79 -0
- package/dist/api/commonApi.d.ts.map +1 -0
- package/dist/filters/Address.d.ts +4 -0
- package/dist/filters/Address.d.ts.map +1 -0
- package/dist/filters/Amount.d.ts +5 -0
- package/dist/filters/Amount.d.ts.map +1 -0
- package/dist/filters/TimeRange.d.ts +7 -0
- package/dist/filters/TimeRange.d.ts.map +1 -0
- package/dist/filters/Token.d.ts +5 -0
- package/dist/filters/Token.d.ts.map +1 -0
- package/dist/filters/TokenSearch.d.ts +5 -0
- package/dist/filters/TokenSearch.d.ts.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +414 -0
- package/package.json +49 -0
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface ITokenListRequest {
|
|
2
|
+
/**
|
|
3
|
+
* Chain symbol
|
|
4
|
+
*/
|
|
5
|
+
chain: string;
|
|
6
|
+
limit: number;
|
|
7
|
+
page: number;
|
|
8
|
+
/**
|
|
9
|
+
* Token search
|
|
10
|
+
*/
|
|
11
|
+
text?: string;
|
|
12
|
+
[property: string]: any;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* TokenBaseInfo
|
|
16
|
+
*/
|
|
17
|
+
export interface ITokenBaseInfo {
|
|
18
|
+
/**
|
|
19
|
+
* Chain
|
|
20
|
+
*/
|
|
21
|
+
chain: string;
|
|
22
|
+
/**
|
|
23
|
+
* Token Icon
|
|
24
|
+
*/
|
|
25
|
+
iconUrl: string;
|
|
26
|
+
/**
|
|
27
|
+
* Is verified
|
|
28
|
+
*/
|
|
29
|
+
identified: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Token address
|
|
32
|
+
*/
|
|
33
|
+
tokenAddress: string;
|
|
34
|
+
/**
|
|
35
|
+
* Token name
|
|
36
|
+
*/
|
|
37
|
+
tokenName: string;
|
|
38
|
+
/**
|
|
39
|
+
* Token symbol
|
|
40
|
+
*/
|
|
41
|
+
tokenSymbol: string;
|
|
42
|
+
[property: string]: any;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* @description Get verified token list
|
|
46
|
+
* @returns Token list
|
|
47
|
+
*/
|
|
48
|
+
export declare const getVerifiedTokenList: (chain: string) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
49
|
+
/**
|
|
50
|
+
* Chain symbol
|
|
51
|
+
*/
|
|
52
|
+
export declare const getChainSymbol: (chain: string) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
53
|
+
/**
|
|
54
|
+
* Token search
|
|
55
|
+
*/
|
|
56
|
+
export declare const getTokenList: (chain: string, params: any) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
57
|
+
/**
|
|
58
|
+
* Chain
|
|
59
|
+
*/
|
|
60
|
+
export declare const getChainList: () => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
61
|
+
/**
|
|
62
|
+
* Is verified
|
|
63
|
+
*/
|
|
64
|
+
export declare const getIsVerified: (chain: string, address: string) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
65
|
+
/**
|
|
66
|
+
* Token address
|
|
67
|
+
*/
|
|
68
|
+
export declare const getTokenAddress: (chain: string, address: string) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
69
|
+
/**
|
|
70
|
+
* Token name
|
|
71
|
+
*/
|
|
72
|
+
export declare const getTokenName: (chain: string, address: string) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
73
|
+
/**
|
|
74
|
+
* Token symbol
|
|
75
|
+
*/
|
|
76
|
+
export declare const getTokenSymbol: (chain: string, address: string) => Promise<import('axios').AxiosResponse<any, any, {}>>;
|
|
77
|
+
export declare const getHotTokenList: (params: any) => Promise<any>;
|
|
78
|
+
export declare const searchToken: (search: string) => Promise<any>;
|
|
79
|
+
//# sourceMappingURL=commonApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonApi.d.ts","sourceRoot":"","sources":["../../src/api/commonApi.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CACzB;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,yDAEjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,yDAE3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,QAAQ,GAAG,yDAEtD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,4DAExB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,yDAE3D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,yDAE7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,yDAE1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAAS,MAAM,yDAE5D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,GAAG,KAAG,OAAO,CAAC,GAAG,CAExD,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,GAAG,CAQvD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Address.d.ts","sourceRoot":"","sources":["../../src/filters/Address.tsx"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAC,QAAQ,EAAC,EAAE;IAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAC,2CA+ChF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Amount.d.ts","sourceRoot":"","sources":["../../src/filters/Amount.tsx"],"names":[],"mappings":"AAUA,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAC,EAAE;IAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,2CAuGtH"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
interface DatePickerWithRangeProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
3
|
+
onChange: (start: number | string, end: number | string) => void;
|
|
4
|
+
}
|
|
5
|
+
export default function DatePickerWithRange({ className, onChange, ...props }: DatePickerWithRangeProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=TimeRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TimeRange.d.ts","sourceRoot":"","sources":["../../src/filters/TimeRange.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,iBAAiB,CAAA;AACxB,OAAO,oBAAoB,CAAA;AAC3B,OAAO,oBAAoB,CAAA;AAC3B,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AAexB,UAAU,wBAAyB,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC/F,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;CACjE;AAED,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,wBAAwB,2CAqG1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Token.d.ts","sourceRoot":"","sources":["../../src/filters/Token.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAmB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAQnE,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;CAAE,2CA2E9F"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenSearch.d.ts","sourceRoot":"","sources":["../../src/filters/TokenSearch.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAe,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAO/D,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;CAAE,2CAwEpG"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ICustomTableColumn {
|
|
3
|
+
key: string;
|
|
4
|
+
label: string | React.ReactNode;
|
|
5
|
+
render?: (value: any, row: any, index: number) => React.ReactNode | React.ReactNode[];
|
|
6
|
+
width?: string;
|
|
7
|
+
align?: 'left' | 'center' | 'right';
|
|
8
|
+
filter?: 'timeRange' | 'address' | 'amount' | 'token' | 'tokenSearch';
|
|
9
|
+
sort?: boolean;
|
|
10
|
+
hidden?: boolean;
|
|
11
|
+
className?: (column: ICustomTableColumn, index: number, row?: any) => string;
|
|
12
|
+
filterProps?: {
|
|
13
|
+
params?: Record<string, any>;
|
|
14
|
+
onChange?: (value: any) => void;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export interface ICustomTableProps extends React.HTMLAttributes<HTMLTableElement> {
|
|
18
|
+
data: Array<any>;
|
|
19
|
+
columns: ICustomTableColumn[];
|
|
20
|
+
className?: string;
|
|
21
|
+
headerClassName?: string;
|
|
22
|
+
bodyClassName?: string;
|
|
23
|
+
rowClassName?: string;
|
|
24
|
+
tableClassName?: string;
|
|
25
|
+
showHeader?: boolean;
|
|
26
|
+
renderChildren?: (row: any, index: number) => React.ReactNode;
|
|
27
|
+
onFilterChange?: (filterValues: Record<string, any>) => void;
|
|
28
|
+
loading?: boolean;
|
|
29
|
+
sortKey?: string;
|
|
30
|
+
defaultSortKey?: string;
|
|
31
|
+
defaultOrder?: 'asc' | 'desc';
|
|
32
|
+
onSortChange?: (key: string, order: 'asc' | 'desc') => void;
|
|
33
|
+
emptyClassName?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare const formatFilterValue: (filterValues: any) => any;
|
|
36
|
+
export default function CustomTable({ data, columns, headerClassName, bodyClassName, rowClassName, tableClassName, showHeader, renderChildren, onFilterChange, loading, onSortChange, defaultOrder, defaultSortKey, emptyClassName, ...props }: ICustomTableProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,aAAa,CAAC;IACtE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC;IAC7E,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;KACjC,CAAA;CACF;AACD,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAC/E,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACjB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9D,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IAC7D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,KAAK,IAAI,CAAC;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,eAAO,MAAM,iBAAiB,GAAI,cAAc,GAAG,QAkClD,CAAA;AACD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAE,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,UAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,KAAK,EAAE,EAAE,iBAAiB,2CA+LxQ"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
3
|
+
import { Table as ie, TableHeader as ce, TableRow as E, TableHead as de, TableBody as me, TableCell as K } from "@0xchain/ui/table";
|
|
4
|
+
import * as Z from "react";
|
|
5
|
+
import he, { useState as k, useEffect as z } from "react";
|
|
6
|
+
import { startOfDay as q, endOfDay as X } from "date-fns";
|
|
7
|
+
import { twMerge as v } from "tailwind-merge";
|
|
8
|
+
import { DatePicker as ue } from "antd";
|
|
9
|
+
import M from "dayjs";
|
|
10
|
+
import "dayjs/locale/en";
|
|
11
|
+
import "dayjs/locale/zh-cn";
|
|
12
|
+
import "dayjs/locale/zh-tw";
|
|
13
|
+
import "dayjs/locale/ja";
|
|
14
|
+
import "dayjs/locale/ko";
|
|
15
|
+
import fe from "antd/es/date-picker/locale/en_US";
|
|
16
|
+
import pe from "antd/es/date-picker/locale/zh_CN";
|
|
17
|
+
import Ae from "antd/es/date-picker/locale/zh_TW";
|
|
18
|
+
import be from "antd/es/date-picker/locale/ja_JP";
|
|
19
|
+
import ge from "antd/es/date-picker/locale/ko_KR";
|
|
20
|
+
import D from "@0xchain/image";
|
|
21
|
+
import { Popover as O, PopoverTrigger as U, PopoverContent as Q } from "@0xchain/ui/popover";
|
|
22
|
+
import { useLocale as xe, useTranslations as J } from "next-intl";
|
|
23
|
+
import { X as W, Search as V } from "lucide-react";
|
|
24
|
+
import * as Y from "@radix-ui/react-slider";
|
|
25
|
+
import $ from "@0xchain/number-like";
|
|
26
|
+
import S from "@0xchain/translation";
|
|
27
|
+
import _ from "@0xchain/request";
|
|
28
|
+
import { useParams as ee } from "next/navigation";
|
|
29
|
+
import { Checkbox as te } from "@0xchain/ui/checkbox";
|
|
30
|
+
import { useDebounceFn as ke } from "ahooks";
|
|
31
|
+
import ye from "@0xchain/empty";
|
|
32
|
+
import we from "@0xchain/loading";
|
|
33
|
+
const Ne = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAZCAYAAAArK+5dAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADWSURBVHgB7ZPhDcIgEIUP0wEcQTdwAxjBERzBDcSJdAPbDdwANznBQnIih6TQP02/hJDmwb274wqwaBDRuDVVd3TksLKbivSd1zRzn9PvQognzeSA7VG0gqPfe7sGksnF71dIk9IljJ1QPt5YonfV9HZIhQme1ONYHeR5Vep5A/tQ+xo9ZSCRn5hSZM5Awe+oVhEb9PA9RVMIU5Q0GGxfNVTgW6zC9yZz0EQ/jinRYliDVrBjmhvBkvEMzF7B+gZ/mb2CD7aHZ2zPiRps7bphOx4uJiyCNyogpaxjuzr+AAAAAElFTkSuQmCC";
|
|
34
|
+
function ve({
|
|
35
|
+
className: a,
|
|
36
|
+
onChange: i,
|
|
37
|
+
...c
|
|
38
|
+
}) {
|
|
39
|
+
const m = xe(), [A, y] = Z.useState(!1), w = Z.useRef(null), [g, b] = Z.useState(null), d = {
|
|
40
|
+
en: fe,
|
|
41
|
+
"zh-hans": pe,
|
|
42
|
+
"zh-hant": Ae,
|
|
43
|
+
ja: be,
|
|
44
|
+
ko: ge
|
|
45
|
+
}, f = {
|
|
46
|
+
en: "en",
|
|
47
|
+
"zh-hans": "zh-cn",
|
|
48
|
+
"zh-hant": "zh-tw",
|
|
49
|
+
ja: "ja",
|
|
50
|
+
ko: "ko"
|
|
51
|
+
};
|
|
52
|
+
Z.useEffect(() => {
|
|
53
|
+
M.locale(f[m] ?? "en");
|
|
54
|
+
}, [m]);
|
|
55
|
+
const C = (l) => {
|
|
56
|
+
if (!l) {
|
|
57
|
+
i("", ""), N();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const [h, p] = l, x = h ? q(h.toDate()) : void 0, T = p ? X(p.toDate()) : void 0;
|
|
61
|
+
i(x ? Math.floor(x.getTime() / 1e3) : "", T ? Math.floor(T.getTime() / 1e3) : ""), N();
|
|
62
|
+
}, N = () => {
|
|
63
|
+
y(!1);
|
|
64
|
+
}, R = (l) => {
|
|
65
|
+
l ? y(!0) : C(g);
|
|
66
|
+
}, B = (l) => {
|
|
67
|
+
if (!l) {
|
|
68
|
+
b(null);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const [h, p] = l;
|
|
72
|
+
b([h, p]);
|
|
73
|
+
}, n = (l) => {
|
|
74
|
+
if (!l || !l[0] || !l[1]) {
|
|
75
|
+
b(null), i("", ""), N();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const h = q(l[0].toDate()), p = X(l[1].toDate());
|
|
79
|
+
i(Math.floor(h.getTime() / 1e3), Math.floor(p.getTime() / 1e3)), b([l[0], l[1]]), N();
|
|
80
|
+
};
|
|
81
|
+
return /* @__PURE__ */ e("div", { className: v(a), ...c, children: /* @__PURE__ */ o(O, { open: A, onOpenChange: R, children: [
|
|
82
|
+
/* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e("i", { className: "w-4 h-4 p-[2px] cursor-pointer flex items-center justify-center bg-[#000000] rounded-sm", children: /* @__PURE__ */ e(D, { src: Ne, width: 12, height: 12 }) }) }),
|
|
83
|
+
/* @__PURE__ */ e(Q, { className: "w-auto p-0", align: "center", side: "right", children: /* @__PURE__ */ e("div", { ref: w, className: "relative", children: /* @__PURE__ */ e(
|
|
84
|
+
ue.RangePicker,
|
|
85
|
+
{
|
|
86
|
+
open: !0,
|
|
87
|
+
size: "small",
|
|
88
|
+
locale: d[m],
|
|
89
|
+
allowClear: !1,
|
|
90
|
+
value: g ?? [M(), M()],
|
|
91
|
+
onCalendarChange: B,
|
|
92
|
+
onChange: n,
|
|
93
|
+
getPopupContainer: () => w.current,
|
|
94
|
+
style: { position: "absolute", opacity: 0, width: 0, height: 0, pointerEvents: "none" },
|
|
95
|
+
disabledDate: (l) => l && l > M().endOf("day")
|
|
96
|
+
}
|
|
97
|
+
) }) })
|
|
98
|
+
] }) });
|
|
99
|
+
}
|
|
100
|
+
const Ce = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAADZSURBVHgB7ZTbDcIwDEVvUAfoCN2AjsAI3YBu0jABGYER2KAjABPABrBBcMARFkjNo/krR7IaWfZ1nDoB/gRQfmGt7enToAw3pdThu4BFQajAS7sSvh3ZwOsj2QVprMk6ofULNWHsmytZg0hcLOc4TCh4FEVqhMVrIT6idELqhnySbHk/ETfkHKlPbsnuLDBMiLuYFjm4u2E/bIW/E/4ecyABLXZa8/H5zjRKQEInFtywxU0MsUIcD2QSWyCb5RVInvcqMs7/ZHerzygNz74Wz0f0mM4pZLAInpppFh6wLb8LAAAAAElFTkSuQmCC";
|
|
101
|
+
function je({ onChange: a, filterKey: i }) {
|
|
102
|
+
const [c, m] = k(!1), A = J("common"), [y, w] = k(""), [g, b] = k(""), [d, f] = k([0.01, 1e10]), C = (p) => {
|
|
103
|
+
f(p), w(p[0].toString()), b(p[1].toString());
|
|
104
|
+
}, N = (p) => {
|
|
105
|
+
const x = p.target.value;
|
|
106
|
+
if (x === "" || /^\d*\.?\d{0,8}$/.test(x) && !x.startsWith(".")) {
|
|
107
|
+
w(x);
|
|
108
|
+
const T = parseFloat(x) || 0;
|
|
109
|
+
f([T, d[1]]);
|
|
110
|
+
}
|
|
111
|
+
}, R = (p) => {
|
|
112
|
+
const x = p.target.value;
|
|
113
|
+
if (x === "" || /^\d*\.?\d{0,8}$/.test(x) && !x.startsWith(".")) {
|
|
114
|
+
b(x);
|
|
115
|
+
const T = parseFloat(x);
|
|
116
|
+
f([d[0], T]);
|
|
117
|
+
}
|
|
118
|
+
}, B = () => {
|
|
119
|
+
a(y, g), m(!1);
|
|
120
|
+
}, n = () => {
|
|
121
|
+
m(!1);
|
|
122
|
+
}, l = (p) => {
|
|
123
|
+
p.target.value === "0" && w("0.01");
|
|
124
|
+
}, h = (p) => {
|
|
125
|
+
p.target.value === "0" && b("0.01");
|
|
126
|
+
};
|
|
127
|
+
return /* @__PURE__ */ o(O, { open: c, onOpenChange: m, children: [
|
|
128
|
+
/* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e("div", { className: "w-[16px] h-[16px] flex items-center justify-center bg-[#000000] rounded-sm cursor-pointer", children: /* @__PURE__ */ e(D, { src: Ce, width: 12, height: 12, objectFit: "contain" }) }) }),
|
|
129
|
+
/* @__PURE__ */ e(Q, { className: "bg-module", children: /* @__PURE__ */ o("div", { className: "w-full h-full", children: [
|
|
130
|
+
/* @__PURE__ */ o("div", { className: "flex flex-row items-center justify-between h-9", children: [
|
|
131
|
+
/* @__PURE__ */ e("span", { className: "text-sm", children: /* @__PURE__ */ e(S, { value: "label", parentKey: "common.filter.amount" }) }),
|
|
132
|
+
/* @__PURE__ */ e("div", { className: "w-4 h-4 text-black text-sm cursor-pointer flex items-center justify-center", onClick: () => n(), children: /* @__PURE__ */ e(W, { className: "w-4 h-4" }) })
|
|
133
|
+
] }),
|
|
134
|
+
/* @__PURE__ */ o("div", { className: "flex flex-row items-center justify-between gap-2 py-3", children: [
|
|
135
|
+
/* @__PURE__ */ o("fieldset", { className: "w-1/2 h-full", children: [
|
|
136
|
+
/* @__PURE__ */ e("label", { className: "w-full h-full text-sm", children: /* @__PURE__ */ e(S, { value: "form", parentKey: "common.filter.amount" }) }),
|
|
137
|
+
/* @__PURE__ */ e("input", { type: "text", inputMode: "decimal", pattern: "[0-9]*\\.?[0-9]{0,8}", onBlur: l, placeholder: A("filter.amount.min"), className: "w-full h-full bg-module text-sm border-1 border-gray-300 rounded p-2 my-2 focus-visible:outline-primary placeholder:text-gray-400", value: y, onChange: N })
|
|
138
|
+
] }),
|
|
139
|
+
/* @__PURE__ */ o("fieldset", { className: "w-1/2 h-full", children: [
|
|
140
|
+
/* @__PURE__ */ e("label", { className: "w-full h-full text-sm", children: /* @__PURE__ */ e(S, { value: "to", parentKey: "common.filter.amount" }) }),
|
|
141
|
+
/* @__PURE__ */ e("input", { type: "text", inputMode: "decimal", pattern: "[0-9]*\\.?[0-9]{0,8}", onBlur: h, placeholder: A("filter.amount.max"), className: "w-full h-full bg-module text-sm border-1 border-gray-300 rounded p-2 my-2 focus-visible:outline-primary placeholder:text-gray-400", value: g, onChange: R })
|
|
142
|
+
] })
|
|
143
|
+
] }),
|
|
144
|
+
/* @__PURE__ */ o("div", { className: " w-full pb-4", children: [
|
|
145
|
+
/* @__PURE__ */ o(
|
|
146
|
+
Y.Root,
|
|
147
|
+
{
|
|
148
|
+
className: "w-full relative flex items-center justify-center h-1 flex-grow bg-background rounded-sm touch-pan-y select-none",
|
|
149
|
+
value: d,
|
|
150
|
+
onValueChange: C,
|
|
151
|
+
max: 1e10,
|
|
152
|
+
min: 0.01,
|
|
153
|
+
step: 1,
|
|
154
|
+
children: [
|
|
155
|
+
/* @__PURE__ */ e(Y.Track, { className: "h-1 rounded-full bg-primary", children: /* @__PURE__ */ e(Y.Range, { className: "h-1 absolute bg-primary rounded-full" }) }),
|
|
156
|
+
/* @__PURE__ */ e(Y.Thumb, { className: "block w-3 h-3 bg-primary rounded-full cursor-pointer touch-none", "aria-label": "Min value" }),
|
|
157
|
+
/* @__PURE__ */ e(Y.Thumb, { className: "block w-3 h-3 bg-primary rounded-full cursor-pointer touch-none", "aria-label": "Max value" })
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
),
|
|
161
|
+
/* @__PURE__ */ o("div", { className: "flex justify-between text-xs text-gray-500 mt-2", children: [
|
|
162
|
+
/* @__PURE__ */ e($, { addonBefore: i === "valueUSD" ? /* @__PURE__ */ e("span", { className: "text-subtitle", children: "$" }) : void 0, number: "0.01", minimumFractionDigits: 2, notation: "compact", maximumFractionDigits: 20 }),
|
|
163
|
+
/* @__PURE__ */ e($, { addonBefore: i === "valueUSD" ? /* @__PURE__ */ e("span", { className: "text-subtitle", children: "$" }) : void 0, number: "10000000000", notation: "compact", maximumFractionDigits: 2 })
|
|
164
|
+
] })
|
|
165
|
+
] }),
|
|
166
|
+
/* @__PURE__ */ o("div", { className: "flex justify-end items-center", children: [
|
|
167
|
+
/* @__PURE__ */ e("button", { className: "bg-module text-black text-sm px-3 py-1 border-1 border-stroke rounded-lg ml-3 cursor-pointer", onClick: n, children: A("button.cancel") }),
|
|
168
|
+
/* @__PURE__ */ e("button", { className: "bg-primary text-white text-sm px-3 py-1 rounded-lg ml-3 cursor-pointer", onClick: B, children: A("button.confirm") })
|
|
169
|
+
] })
|
|
170
|
+
] }) })
|
|
171
|
+
] });
|
|
172
|
+
}
|
|
173
|
+
const H = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAZCAYAAADE6YVjAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAFFSURBVHgB5VVRccMwDFV2A+AxCIOZwQyhDGYGC4OGQcegYzAIgZANgcsgY6DJd9Kquk4Te9ef9t3pkpOf/CTFigHuAojoyPZkAY+YyAYyD/8BbdDyRksIVWIU9MrZStY9mSUzvB7fPdmoxLYlAlYFvsvGF/hdsRAee98rn+PWSXWjbhGvC9ySgJc+Z3w57BWvZ9+wJBKYuMkE/7WOhUOSjFGVujmBlglTbi3jM5h8L04kokv5j/xs+fmVEpqmOWR8P3AOiX1OFx4SkQNcASIimT1BPcySiJT6AvWQNn3PMtTpclABFW8vkeS4jlAusF07J0Zls4P1Anri7ZoAq4Zql5uRhP+m+AOsRZx4FRgr63SGPLhx6gc8R9HfuMXTi2oOEyfhq4RYLPb7A0/vjkD2yZsbxa0XKkxKC3m4Fvibxso3cHP4BWMxfN1YKiXJAAAAAElFTkSuQmCC";
|
|
174
|
+
function Re({ onChange: a }) {
|
|
175
|
+
const [i, c] = k(!1), m = J("common"), [A, y] = k(""), w = (d) => {
|
|
176
|
+
const f = d.target.value;
|
|
177
|
+
(f === "" || /^[a-zA-Z0-9]*$/.test(f)) && y(f);
|
|
178
|
+
}, g = () => {
|
|
179
|
+
a(A), c(!1);
|
|
180
|
+
}, b = () => {
|
|
181
|
+
c(!1);
|
|
182
|
+
};
|
|
183
|
+
return /* @__PURE__ */ o(O, { open: i, onOpenChange: c, children: [
|
|
184
|
+
/* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e("div", { className: "w-[16px] h-[16px] flex items-center justify-center bg-[#000000] rounded-sm cursor-pointer", children: /* @__PURE__ */ e(D, { src: H, width: 12, height: 12, objectFit: "contain" }) }) }),
|
|
185
|
+
/* @__PURE__ */ e(Q, { className: "bg-module", children: /* @__PURE__ */ o("div", { className: "w-full h-full", children: [
|
|
186
|
+
/* @__PURE__ */ o("fieldset", { className: "w-full h-full", children: [
|
|
187
|
+
/* @__PURE__ */ o("label", { className: "w-full h-full text-sm flex items-center justify-between", children: [
|
|
188
|
+
m("filter.address.label"),
|
|
189
|
+
/* @__PURE__ */ e("div", { className: "w-4 h-4 text-black text-sm cursor-pointer flex items-center justify-center", onClick: () => b(), children: /* @__PURE__ */ e(W, { className: "w-4 h-4" }) })
|
|
190
|
+
] }),
|
|
191
|
+
/* @__PURE__ */ o("div", { className: "w-full relative text-sm ", children: [
|
|
192
|
+
/* @__PURE__ */ e(V, { className: "w-4 h-4 absolute left-2 top-1/2 -translate-y-1/2" }),
|
|
193
|
+
/* @__PURE__ */ e("input", { placeholder: m("filter.amount.label"), type: "text", pattern: "[a-zA-Z0-9]*", className: "pl-6 w-full h-full bg-module text-sm border-1 border-gray-300 rounded p-2 my-2 focus-visible:outline-primary placeholder:text-gray-400", value: A, onChange: w })
|
|
194
|
+
] })
|
|
195
|
+
] }),
|
|
196
|
+
/* @__PURE__ */ o("div", { className: "flex justify-end items-center mt-2", children: [
|
|
197
|
+
/* @__PURE__ */ e("button", { className: "bg-module text-black text-sm px-3 py-1 border-1 border-gray-300 rounded ml-3 cursor-pointer", onClick: b, children: m("button.cancel") }),
|
|
198
|
+
/* @__PURE__ */ e("button", { className: "bg-primary text-white text-sm px-3 py-1 rounded ml-3 cursor-pointer", onClick: g, children: m("button.confirm") })
|
|
199
|
+
] })
|
|
200
|
+
] }) })
|
|
201
|
+
] });
|
|
202
|
+
}
|
|
203
|
+
const Be = (a) => _.get("/api/v2/tokens/hot-list", { params: { ...a, limit: 100, page: 1 } }), Se = (a) => _.get("/api/token/list/verified", {
|
|
204
|
+
params: {
|
|
205
|
+
search: a,
|
|
206
|
+
page: 1,
|
|
207
|
+
size: 100
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
function Te({ onChange: a }) {
|
|
211
|
+
const { chain: i } = ee(), c = J("common.filter.amount"), [m, A] = k(!1), [y, w] = k(""), [g, b] = k([]), [d, f] = k([]), C = () => {
|
|
212
|
+
A(!1);
|
|
213
|
+
}, N = () => {
|
|
214
|
+
a(d), A(!1);
|
|
215
|
+
}, R = (n) => {
|
|
216
|
+
d.some((l) => l.tokenAddress === n.tokenAddress) ? f(d.filter((l) => l.tokenAddress !== n.tokenAddress)) : f([...d, n]);
|
|
217
|
+
}, B = ke(async () => {
|
|
218
|
+
const n = await Be({
|
|
219
|
+
chain: i,
|
|
220
|
+
text: y,
|
|
221
|
+
limit: 100,
|
|
222
|
+
page: 1
|
|
223
|
+
});
|
|
224
|
+
b((n == null ? void 0 : n.data) || []);
|
|
225
|
+
}, { wait: 300 });
|
|
226
|
+
return z(() => {
|
|
227
|
+
B.run();
|
|
228
|
+
}, [i, y]), /* @__PURE__ */ o(O, { open: m, onOpenChange: A, children: [
|
|
229
|
+
/* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e("div", { className: "w-[16px] h-[16px] flex items-center justify-center bg-[#000000] rounded-sm cursor-pointer", children: /* @__PURE__ */ e(D, { src: H, width: 12, height: 12, objectFit: "contain" }) }) }),
|
|
230
|
+
/* @__PURE__ */ o(Q, { className: "py-5 bg-module", children: [
|
|
231
|
+
/* @__PURE__ */ o("div", { className: "w-full h-full", children: [
|
|
232
|
+
/* @__PURE__ */ o("div", { className: "flex flex-row items-center justify-between h-9", children: [
|
|
233
|
+
/* @__PURE__ */ e("span", { className: "text-base text-title", children: /* @__PURE__ */ e(S, { value: "label", parentKey: "common.filter.token" }) }),
|
|
234
|
+
/* @__PURE__ */ e("div", { className: "w-4 h-4 text-black text-sm cursor-pointer flex items-center justify-center", onClick: () => C(), children: /* @__PURE__ */ e(W, { className: "w-4 h-4 text-title" }) })
|
|
235
|
+
] }),
|
|
236
|
+
/* @__PURE__ */ o("div", { className: "w-full relative text-sm py-3", children: [
|
|
237
|
+
/* @__PURE__ */ e(V, { className: "w-4 h-4 absolute left-2 top-1/2 -translate-y-1/2" }),
|
|
238
|
+
/* @__PURE__ */ e("input", { type: "text", placeholder: c("label"), className: "pl-6 w-full h-full bg-module text-sm border-1 border-gray-300 rounded p-2 my-2 focus-visible:outline-primary placeholder:text-gray-400", value: y, onChange: (n) => w(n.target.value) })
|
|
239
|
+
] })
|
|
240
|
+
] }),
|
|
241
|
+
/* @__PURE__ */ e("ul", { className: "max-h-30 min-h-30 overflow-y-auto overflow-x-hidden w-full", children: g == null ? void 0 : g.map((n, l) => /* @__PURE__ */ o("li", { className: "flex h-10 flex-row items-center gap-3 hover:bg-background hover:rounded-sm p-2 cursor-pointer overflow-hidden", onClick: () => R(n), children: [
|
|
242
|
+
/* @__PURE__ */ e(D, { src: n.iconUrl, objectFit: "contain", alt: n.tokenSymbol, className: "rounded-full w-4 h-4 min-w-4 min-h-4 flex-shrink-0" }),
|
|
243
|
+
/* @__PURE__ */ o("div", { className: "text-sm text-title text-left truncate min-w-0 flex-1 overflow-hidden", children: [
|
|
244
|
+
/* @__PURE__ */ e("span", { className: "text-title", children: n.tokenSymbol }),
|
|
245
|
+
" ",
|
|
246
|
+
/* @__PURE__ */ e("span", { className: "text-subtitle text-xs", children: n.tokenName })
|
|
247
|
+
] }),
|
|
248
|
+
/* @__PURE__ */ e("div", { className: "flex-shrink-0", children: /* @__PURE__ */ e(te, { className: v("w-4 h-4 cursor-pointer border-1 border-gray-300 rounded-sm", d.some((h) => h.tokenAddress === n.tokenAddress) ? "bg-primary" : "bg-module"), checked: d.some((h) => h.tokenAddress === n.tokenAddress) }) })
|
|
249
|
+
] }, l)) }),
|
|
250
|
+
/* @__PURE__ */ o("div", { className: "flex justify-end items-center mt-2", children: [
|
|
251
|
+
/* @__PURE__ */ e("button", { className: "bg-module text-black text-sm px-3 py-1 border-1 border-gray-300 rounded ml-3 cursor-pointer", onClick: C, children: /* @__PURE__ */ e(S, { value: "button.cancel", parentKey: "common" }) }),
|
|
252
|
+
/* @__PURE__ */ e("button", { className: "bg-primary text-white text-sm px-3 py-1 rounded ml-3 cursor-pointer", onClick: N, children: /* @__PURE__ */ e(S, { value: "button.confirm", parentKey: "common" }) })
|
|
253
|
+
] })
|
|
254
|
+
] })
|
|
255
|
+
] });
|
|
256
|
+
}
|
|
257
|
+
function De({ onChange: a }) {
|
|
258
|
+
const { chain: i = "" } = ee(), c = J("common.filter.amount"), [m, A] = k(!1), [y, w] = k(""), [g, b] = k([]), [d, f] = k([]), C = () => {
|
|
259
|
+
a([]), w(""), f([]), A(!1);
|
|
260
|
+
}, N = () => {
|
|
261
|
+
a(d), A(!1);
|
|
262
|
+
}, R = (n) => {
|
|
263
|
+
d.some((l) => l.tokenAddress === n.tokenAddress) ? f(d.filter((l) => l.tokenAddress !== n.tokenAddress)) : f([...d, n]);
|
|
264
|
+
}, B = async () => {
|
|
265
|
+
var l;
|
|
266
|
+
const n = await Se(y);
|
|
267
|
+
b(((l = n == null ? void 0 : n.data) == null ? void 0 : l.content) || []);
|
|
268
|
+
};
|
|
269
|
+
return z(() => {
|
|
270
|
+
B();
|
|
271
|
+
}, [i, y]), /* @__PURE__ */ o(O, { open: m, onOpenChange: A, children: [
|
|
272
|
+
/* @__PURE__ */ e(U, { asChild: !0, children: /* @__PURE__ */ e("div", { className: "w-[16px] h-[16px] flex items-center justify-center bg-[#000000] rounded-sm cursor-pointer", children: /* @__PURE__ */ e(D, { src: H, width: 12, height: 12, objectFit: "contain" }) }) }),
|
|
273
|
+
/* @__PURE__ */ o(Q, { className: "py-5 bg-module", children: [
|
|
274
|
+
/* @__PURE__ */ o("div", { className: "w-full h-full bg-module", children: [
|
|
275
|
+
/* @__PURE__ */ o("div", { className: "flex flex-row items-center justify-between h-9", children: [
|
|
276
|
+
/* @__PURE__ */ e("span", { className: "text-base text-title", children: /* @__PURE__ */ e(S, { value: "label", parentKey: "common.filter.token" }) }),
|
|
277
|
+
/* @__PURE__ */ e("div", { className: "w-4 h-4 text-black text-sm cursor-pointer flex items-center justify-center", onClick: () => C(), children: /* @__PURE__ */ e(W, { className: "w-4 h-4 text-title" }) })
|
|
278
|
+
] }),
|
|
279
|
+
/* @__PURE__ */ o("div", { className: "w-full relative bg-module text-sm py-3", children: [
|
|
280
|
+
/* @__PURE__ */ e(V, { className: "w-4 h-4 absolute left-2 top-1/2 -translate-y-1/2" }),
|
|
281
|
+
/* @__PURE__ */ e("input", { type: "text", placeholder: c("label"), className: "pl-6 w-full h-full bg-module text-sm border-1 border-gray-300 rounded p-2 my-2 focus-visible:outline-primary placeholder:text-gray-400", value: y, onChange: (n) => w(n.target.value) })
|
|
282
|
+
] })
|
|
283
|
+
] }),
|
|
284
|
+
/* @__PURE__ */ e("ul", { className: "max-h-50 min-h-25 overflow-y-auto overflow-x-hidden w-full", children: g == null ? void 0 : g.map((n, l) => /* @__PURE__ */ o("li", { className: "flex h-10 flex-row items-center gap-3 hover:bg-background hover:rounded-sm p-2 cursor-pointer overflow-hidden", onClick: () => R(n), children: [
|
|
285
|
+
/* @__PURE__ */ e(D, { src: n.iconUrl, objectFit: "contain", alt: n.tokenName, className: "rounded-full w-4 h-4 min-w-4 min-h-4 flex-shrink-0" }),
|
|
286
|
+
/* @__PURE__ */ e("div", { className: "text-sm text-title text-left truncate min-w-0 flex-1 overflow-hidden", children: n.tokenName }),
|
|
287
|
+
/* @__PURE__ */ e("div", { className: "flex-shrink-0", children: /* @__PURE__ */ e(te, { className: v("w-4 h-4 cursor-pointer border-1 border-gray-300 rounded-sm", d.some((h) => h.tokenAddress === n.tokenAddress) ? "bg-primary" : "bg-white"), checked: d.some((h) => h.tokenAddress === n.tokenAddress) }) })
|
|
288
|
+
] }, l)) }),
|
|
289
|
+
/* @__PURE__ */ o("div", { className: "flex justify-end items-center mt-2", children: [
|
|
290
|
+
/* @__PURE__ */ e("button", { className: "bg-module text-black text-sm px-3 py-1 border-1 border-gray-300 rounded ml-3 cursor-pointer", onClick: C, children: /* @__PURE__ */ e(S, { value: "button.cancel", parentKey: "common" }) }),
|
|
291
|
+
/* @__PURE__ */ e("button", { className: "bg-primary text-white text-sm px-3 py-1 rounded ml-3 cursor-pointer", onClick: N, children: /* @__PURE__ */ e(S, { value: "button.confirm", parentKey: "common" }) })
|
|
292
|
+
] })
|
|
293
|
+
] })
|
|
294
|
+
] });
|
|
295
|
+
}
|
|
296
|
+
const Pe = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAhCAYAAABX5MJvAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHtSURBVHgB7ZfBalNBFIb/M7cmaBGuT2BcCNZVHsG+QWNw3Qw00qyMT5DbJ9Buiujipnsl+gZ5A3EjLu8bNIIVzSVzOhNaKGnTe86EQhf5IARyD8M388/cMwHW3CEIK/Bs/6RhTG3kh2n6T/bz6P4BIoiWaPRP0gf/69/9CI2L35ybbf/68HAMJQaRbJb1wWWB+WAmyYMclERJbPVOd5jRv+ZRw69ODiVqibAPCPRuaQFhZ6v3tw8Fagmie9liDFdrMAiyuA2J5/t/OkRmV1CaJiSPRSwxnxmZgbSeCS+ksYgl5jOriGERaSwiiRBDmBn0pMbUR1VFIgmW7YNlNJ92p02sKkHkfiASBopy87S4qWYDAmq1MptOaxPv/BhKqJwdFkePJlgjQNRF83yUug284ZnuiAZKxkHPtgqsKvHp+POQEH1CJon7/cRau3RfyE4Hk3pDXiL9h/TG9i57TzC+IZ6iKg6RRNe233uTMSIoHW1X1Yh7R8nG+i/VeWdw5aYMqO6YH/MvHWNI1qL9yu112pWrEFDdJ17b9tA3kq+C0uJ85USob1YJIwxeVJRlkhiiJaxtTdjNls+Sabi3+/IYCqJu2137agzHh9c8KsIbEkqi/3ckMBmuxqKKYWWJEItz1DoX8RHxW20MaxY5AxD/nDkC92cTAAAAAElFTkSuQmCC", Fe = (a) => a == null ? "" : typeof a == "object" ? JSON.stringify(a) : a, ct = (a) => {
|
|
297
|
+
const i = {
|
|
298
|
+
filters: {}
|
|
299
|
+
};
|
|
300
|
+
return Object.keys(a).forEach((c) => {
|
|
301
|
+
c === "timestamp" ? (i.filters.startTime = a.timestamp.start, i.filters.endTime = a.timestamp.end) : c === "fromAddress" ? i.filters.fromAddress = a.fromAddress.address : c === "toAddress" ? i.filters.toAddress = a.toAddress.address : c === "valueUsd" ? (i.filters.minValueUsd = a.valueUsd.min, i.filters.maxValueUsd = a.valueUsd.max) : c === "amount" ? (i.filters.minAmount = a.amount.min, i.filters.maxAmount = a.amount.max) : c === "token" ? i.filters.tokenList = a.token.map((m) => m.tokenAddress) : c === "tokenSearch" ? i.filters.tokenList = a.tokenSearch.map((m) => m.tokenAddress) : c === "inputAmount" ? (i.filters.minInputAmount = a.inputAmount.min, i.filters.maxInputAmount = a.inputAmount.max) : c === "outputAmount" ? (i.filters.minOutputAmount = a.outputAmount.min, i.filters.maxOutputAmount = a.outputAmount.max) : c === "fee" && (i.filters.minFee = a.fee.min, i.filters.maxFee = a.fee.max);
|
|
302
|
+
}), i.filters;
|
|
303
|
+
};
|
|
304
|
+
function dt({ data: a, columns: i, headerClassName: c, bodyClassName: m, rowClassName: A, tableClassName: y, showHeader: w = !0, renderChildren: g, onFilterChange: b, loading: d, onSortChange: f, defaultOrder: C, defaultSortKey: N, emptyClassName: R, ...B }) {
|
|
305
|
+
const [n, l] = k(null), [h, p] = k({}), [x, T] = k(N || null), [L, re] = k(C || null), I = (t, r) => {
|
|
306
|
+
l((s) => ({
|
|
307
|
+
...s,
|
|
308
|
+
[t]: r
|
|
309
|
+
}));
|
|
310
|
+
}, P = (t) => {
|
|
311
|
+
l((r) => {
|
|
312
|
+
const s = { ...r };
|
|
313
|
+
return delete s[t], s;
|
|
314
|
+
}), p((r) => ({
|
|
315
|
+
...r,
|
|
316
|
+
[t]: (r[t] || 0) + 1
|
|
317
|
+
}));
|
|
318
|
+
}, ne = (t) => {
|
|
319
|
+
switch (t.filter) {
|
|
320
|
+
case "timeRange":
|
|
321
|
+
return /* @__PURE__ */ e(ve, { onChange: (r, s) => {
|
|
322
|
+
var u, j;
|
|
323
|
+
r && s ? (I(t.key, { start: r, end: s }), (j = (u = t.filterProps) == null ? void 0 : u.onChange) == null || j.call(u, { start: r, end: s })) : P(t.key);
|
|
324
|
+
} }, h[t.key]);
|
|
325
|
+
case "address":
|
|
326
|
+
return /* @__PURE__ */ e(Re, { onChange: (r) => {
|
|
327
|
+
var s, u;
|
|
328
|
+
r ? (I(t.key, { address: r }), (u = (s = t.filterProps) == null ? void 0 : s.onChange) == null || u.call(s, { address: r })) : P(t.key);
|
|
329
|
+
} }, h[t.key]);
|
|
330
|
+
case "amount":
|
|
331
|
+
return /* @__PURE__ */ e(je, { filterKey: t.key, onChange: (r, s) => {
|
|
332
|
+
var j, G;
|
|
333
|
+
const u = {};
|
|
334
|
+
r && (u.min = r), s && (u.max = s), Object.keys(u).length > 0 ? (I(t.key, u), (G = (j = t.filterProps) == null ? void 0 : j.onChange) == null || G.call(j, u)) : P(t.key);
|
|
335
|
+
} }, h[t.key]);
|
|
336
|
+
case "token":
|
|
337
|
+
return /* @__PURE__ */ e(Te, { onChange: (r) => {
|
|
338
|
+
var s, u;
|
|
339
|
+
r ? (I(t.key, r), (u = (s = t.filterProps) == null ? void 0 : s.onChange) == null || u.call(s, r)) : P(t.key);
|
|
340
|
+
} }, h[t.key]);
|
|
341
|
+
case "tokenSearch":
|
|
342
|
+
return /* @__PURE__ */ e(De, { onChange: (r) => {
|
|
343
|
+
var s, u;
|
|
344
|
+
r ? (I(t.key, r), (u = (s = t.filterProps) == null ? void 0 : s.onChange) == null || u.call(s, r)) : P(t.key);
|
|
345
|
+
} }, h[t.key]);
|
|
346
|
+
default:
|
|
347
|
+
return null;
|
|
348
|
+
}
|
|
349
|
+
}, se = (t) => t.min && !t.max ? `≥ ${t.min}` : !t.min && t.max ? `≤ ${t.max}` : `${t.min} - ${t.max}`, ae = (t, r) => {
|
|
350
|
+
if (!r) return null;
|
|
351
|
+
switch (t.filter) {
|
|
352
|
+
case "timeRange":
|
|
353
|
+
return `${M(r.start * 1e3).format("YYYY-MM-DD") || ""} - ${M(r.end * 1e3).format("YYYY-MM-DD") || ""}`;
|
|
354
|
+
case "address":
|
|
355
|
+
return r.address;
|
|
356
|
+
case "amount":
|
|
357
|
+
return se(r);
|
|
358
|
+
case "token":
|
|
359
|
+
return r.map((s) => s.tokenName).join(", ");
|
|
360
|
+
case "tokenSearch":
|
|
361
|
+
return r.map((s) => s.tokenName).join(", ");
|
|
362
|
+
default:
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
}, le = (t) => {
|
|
366
|
+
const r = L === "asc" ? "desc" : "asc";
|
|
367
|
+
T(t), re(r), f == null || f(t, r);
|
|
368
|
+
}, F = i.filter((t) => !t.hidden), oe = F.some((t) => t.filter);
|
|
369
|
+
return z(() => {
|
|
370
|
+
n !== null && (b == null || b(n));
|
|
371
|
+
}, [n]), /* @__PURE__ */ o("div", { className: "overflow-auto min-w-full relative", ...B, children: [
|
|
372
|
+
/* @__PURE__ */ e(we, { loading: d }),
|
|
373
|
+
oe && n && Object.keys(n).length > 0 && /* @__PURE__ */ e("div", { className: "flex flex-row gap-3 flex-nowrap overflow-x-auto scrollbar-hide pb-3", children: F.map((t) => {
|
|
374
|
+
if (!n) return null;
|
|
375
|
+
const r = n == null ? void 0 : n[t.key];
|
|
376
|
+
return !r || Array.isArray(r) && r.length === 0 ? null : /* @__PURE__ */ o("div", { className: "flex items-center flex-nowrap gap-2 bg-module px-3 py-1 rounded-full border-1 border-stroke max-w-full min-w-0 overflow-hidden", children: [
|
|
377
|
+
/* @__PURE__ */ o("div", { className: "text-sm text-subtitle shrink-0", children: [
|
|
378
|
+
t.label,
|
|
379
|
+
":"
|
|
380
|
+
] }),
|
|
381
|
+
/* @__PURE__ */ e("div", { className: "text-sm flex-1 min-w-0", children: /* @__PURE__ */ e("div", { className: "min-w-0 truncate", children: ae(t, r) }) }),
|
|
382
|
+
/* @__PURE__ */ e(
|
|
383
|
+
"button",
|
|
384
|
+
{
|
|
385
|
+
onClick: () => P(t.key),
|
|
386
|
+
className: "shrink-0 hover:bg-background rounded-full p-1",
|
|
387
|
+
children: /* @__PURE__ */ e(W, { className: "w-3 h-3 cursor-pointer" })
|
|
388
|
+
}
|
|
389
|
+
)
|
|
390
|
+
] }, t.key);
|
|
391
|
+
}) }),
|
|
392
|
+
/* @__PURE__ */ o(ie, { className: v("", y), children: [
|
|
393
|
+
w && /* @__PURE__ */ e(ce, { className: v("border-b border-stroke", c), children: /* @__PURE__ */ e(E, { className: "border-b-0 hover:bg-transparent", children: F.map((t, r) => {
|
|
394
|
+
var s;
|
|
395
|
+
return /* @__PURE__ */ e(de, { className: v("text-left", "whitespace-nowrap"), style: { width: t.width }, children: /* @__PURE__ */ o("div", { className: v("flex items-center gap-1 min-w-fit w-full whitespace-nowrap", t.align === "center" && "justify-center", t.align === "right" && "justify-end", (s = t.className) == null ? void 0 : s.call(t, t, r)), children: [
|
|
396
|
+
t.label,
|
|
397
|
+
t.filter && ne(t),
|
|
398
|
+
t.sort && /* @__PURE__ */ e(D, { src: Pe, alt: "sort", className: v("w-4 h-4 cursor-pointer", x === t.key && "opacity-100", L === "desc" && "rotate-180"), onClick: () => le(t.key) })
|
|
399
|
+
] }) }, r);
|
|
400
|
+
}) }) }),
|
|
401
|
+
/* @__PURE__ */ e(me, { className: v("[&_tr:last-child]:border-b-0", m), children: (a == null ? void 0 : a.length) > 0 ? a.map((t, r) => /* @__PURE__ */ o(he.Fragment, { children: [
|
|
402
|
+
/* @__PURE__ */ e(E, { className: v("border-r-0 border-l-0 border-t-0 border-b border-stroke hover:bg-background", A), children: F.map((s, u) => {
|
|
403
|
+
var j;
|
|
404
|
+
return /* @__PURE__ */ e(K, { className: v("text-left min-w-fit py-4", s.align === "center" && "text-center", s.align === "right" && "text-right", "whitespace-nowrap", (j = s.className) == null ? void 0 : j.call(s, s, r, a[r])), style: { width: s.width }, children: s.render ? s.render(t[s.key], t, r) : Fe(t[s.key]) }, u);
|
|
405
|
+
}) }, r),
|
|
406
|
+
g && /* @__PURE__ */ e(E, { className: "border-b-0", children: /* @__PURE__ */ e(K, { colSpan: F.length, className: "p-0", children: g(t, r) }) })
|
|
407
|
+
] }, r)) : /* @__PURE__ */ e(E, { className: "hover:bg-transparent data-[state=selected]:bg-transparent", children: /* @__PURE__ */ e(K, { colSpan: F.length, className: "w-full text-center", children: /* @__PURE__ */ e(ye, { className: v("w-full h-38", R) }) }) }) })
|
|
408
|
+
] })
|
|
409
|
+
] });
|
|
410
|
+
}
|
|
411
|
+
export {
|
|
412
|
+
dt as default,
|
|
413
|
+
ct as formatFilterValue
|
|
414
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@0xchain/table",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
"./package.json": "./package.json",
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"!**/*.tsbuildinfo"
|
|
19
|
+
],
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"rollup-plugin-preserve-use-client": "3.0.1"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"react": "19.1.1",
|
|
25
|
+
"react-dom": "19.1.1",
|
|
26
|
+
"tailwind-merge": "3.3.1",
|
|
27
|
+
"lucide-react": "0.539.0",
|
|
28
|
+
"dayjs": "1.11.19",
|
|
29
|
+
"next-intl": "4.6.1",
|
|
30
|
+
"next": "15.5.6",
|
|
31
|
+
"@0xchain/next-themes": "1.0.0",
|
|
32
|
+
"date-fns": "4.1.0",
|
|
33
|
+
"antd": "6.1.1",
|
|
34
|
+
"ahooks": "3.9.5",
|
|
35
|
+
"@radix-ui/react-slider": "1.3.6",
|
|
36
|
+
"@0xchain/ui": "0.0.1",
|
|
37
|
+
"@0xchain/loading": "0.0.1",
|
|
38
|
+
"@0xchain/i18n": "0.0.1",
|
|
39
|
+
"@0xchain/image": "0.0.1",
|
|
40
|
+
"@0xchain/empty": "0.0.1",
|
|
41
|
+
"@0xchain/translation": "0.0.1",
|
|
42
|
+
"@0xchain/iconfont": "0.0.1",
|
|
43
|
+
"@0xchain/number-like": "0.0.1",
|
|
44
|
+
"@0xchain/request": "0.0.1"
|
|
45
|
+
},
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
}
|
|
49
|
+
}
|