@liberfi.io/ui-tokens 0.1.23 → 0.1.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +156 -4
- package/dist/index.d.ts +156 -4
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { ReactNode, ComponentType } from 'react';
|
|
3
|
+
import { Token, Chain, TokenProtocol, API } from '@liberfi.io/types';
|
|
3
4
|
import { PopoverProps } from '@liberfi.io/ui';
|
|
4
|
-
import { ComponentType } from 'react';
|
|
5
5
|
|
|
6
6
|
declare global {
|
|
7
7
|
interface Window {
|
|
@@ -10,7 +10,159 @@ declare global {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
declare const _default: "0.1.
|
|
13
|
+
declare const _default: "0.1.25";
|
|
14
|
+
|
|
15
|
+
interface PulseListProps {
|
|
16
|
+
/** list title */
|
|
17
|
+
title: string;
|
|
18
|
+
/** tokens to display */
|
|
19
|
+
tokens?: Token[];
|
|
20
|
+
/** whether the list is loading */
|
|
21
|
+
isLoading?: boolean;
|
|
22
|
+
/** height of each item, default is 124 */
|
|
23
|
+
itemHeight?: number;
|
|
24
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
25
|
+
renderHeaderExtra?: ReactNode;
|
|
26
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
27
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
28
|
+
/** callback when selecting a token */
|
|
29
|
+
onSelectToken?: (token: Token) => void;
|
|
30
|
+
/** called when the list should pause/resume adding new items (e.g. mouse hover) */
|
|
31
|
+
onPauseChange?: (isPaused: boolean) => void;
|
|
32
|
+
/** custom styles */
|
|
33
|
+
className?: string;
|
|
34
|
+
}
|
|
35
|
+
declare function PulseList({ title, tokens, isLoading, itemHeight, renderHeaderExtra, renderItemAction, onSelectToken, onPauseChange, className, }: PulseListProps): react_jsx_runtime.JSX.Element;
|
|
36
|
+
|
|
37
|
+
interface PulseListHeaderProps {
|
|
38
|
+
title: string;
|
|
39
|
+
isPaused?: boolean;
|
|
40
|
+
extra?: ReactNode;
|
|
41
|
+
className?: string;
|
|
42
|
+
}
|
|
43
|
+
declare function PulseListHeader({ title, isPaused, extra, className, }: PulseListHeaderProps): react_jsx_runtime.JSX.Element;
|
|
44
|
+
|
|
45
|
+
interface PulseListItemProps {
|
|
46
|
+
/** token data */
|
|
47
|
+
token: Token;
|
|
48
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
49
|
+
renderAction?: (token: Token) => ReactNode;
|
|
50
|
+
/** whether this is the last item */
|
|
51
|
+
isLast?: boolean;
|
|
52
|
+
/** callback when selecting a token */
|
|
53
|
+
onSelectToken?: (token: Token) => void;
|
|
54
|
+
/** custom class name */
|
|
55
|
+
className?: string;
|
|
56
|
+
}
|
|
57
|
+
declare function PulseListItem({ token, renderAction, isLast, onSelectToken, className, }: PulseListItemProps): react_jsx_runtime.JSX.Element;
|
|
58
|
+
|
|
59
|
+
interface PulseListItemSkeletonProps {
|
|
60
|
+
isLast?: boolean;
|
|
61
|
+
className?: string;
|
|
62
|
+
}
|
|
63
|
+
declare function PulseListItemSkeleton({ isLast, className, }: PulseListItemSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
64
|
+
|
|
65
|
+
type UsePulseNewListScriptParams = {
|
|
66
|
+
/** chain id */
|
|
67
|
+
chain: Chain;
|
|
68
|
+
/** whether to pause adding new items (existing items still update) */
|
|
69
|
+
isPaused?: boolean;
|
|
70
|
+
/** refetch interval in milliseconds */
|
|
71
|
+
refetchInterval?: number;
|
|
72
|
+
};
|
|
73
|
+
type UsePulseNewListScriptResult = {
|
|
74
|
+
/** whether tokens are loading */
|
|
75
|
+
isLoading: boolean;
|
|
76
|
+
/** token list */
|
|
77
|
+
tokens: Token[];
|
|
78
|
+
};
|
|
79
|
+
declare function usePulseNewListScript({ chain, isPaused, refetchInterval, }: UsePulseNewListScriptParams): UsePulseNewListScriptResult;
|
|
80
|
+
|
|
81
|
+
interface PulseNewListWidgetProps {
|
|
82
|
+
/** chain id */
|
|
83
|
+
chain: Chain;
|
|
84
|
+
/** list title */
|
|
85
|
+
title: string;
|
|
86
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
87
|
+
renderHeaderExtra?: ReactNode;
|
|
88
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
89
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
90
|
+
/** callback when selecting a token */
|
|
91
|
+
onSelectToken?: (token: Token) => void;
|
|
92
|
+
/** custom styles */
|
|
93
|
+
className?: string;
|
|
94
|
+
}
|
|
95
|
+
declare function PulseNewListWidget({ chain, title, renderHeaderExtra, renderItemAction, onSelectToken, className, }: PulseNewListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
96
|
+
|
|
97
|
+
type UsePulseMigratedListScriptParams = {
|
|
98
|
+
/** chain id */
|
|
99
|
+
chain: Chain;
|
|
100
|
+
/** whether to pause adding new items (existing items still update) */
|
|
101
|
+
isPaused?: boolean;
|
|
102
|
+
/** refetch interval in milliseconds */
|
|
103
|
+
refetchInterval?: number;
|
|
104
|
+
};
|
|
105
|
+
type UsePulseMigratedListScriptResult = {
|
|
106
|
+
/** whether tokens are loading */
|
|
107
|
+
isLoading: boolean;
|
|
108
|
+
/** token list */
|
|
109
|
+
tokens: Token[];
|
|
110
|
+
};
|
|
111
|
+
declare function usePulseMigratedListScript({ chain, isPaused, refetchInterval, }: UsePulseMigratedListScriptParams): UsePulseMigratedListScriptResult;
|
|
112
|
+
|
|
113
|
+
interface PulseMigratedListWidgetProps {
|
|
114
|
+
/** chain id */
|
|
115
|
+
chain: Chain;
|
|
116
|
+
/** list title */
|
|
117
|
+
title: string;
|
|
118
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
119
|
+
renderHeaderExtra?: ReactNode;
|
|
120
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
121
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
122
|
+
/** callback when selecting a token */
|
|
123
|
+
onSelectToken?: (token: Token) => void;
|
|
124
|
+
/** custom styles */
|
|
125
|
+
className?: string;
|
|
126
|
+
}
|
|
127
|
+
declare function PulseMigratedListWidget({ chain, title, renderHeaderExtra, renderItemAction, onSelectToken, className, }: PulseMigratedListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
128
|
+
|
|
129
|
+
type UsePulseFinalStretchListScriptParams = {
|
|
130
|
+
/** chain id */
|
|
131
|
+
chain: Chain;
|
|
132
|
+
/** whether to pause adding new items (existing items still update) */
|
|
133
|
+
isPaused?: boolean;
|
|
134
|
+
/** refetch interval in milliseconds */
|
|
135
|
+
refetchInterval?: number;
|
|
136
|
+
};
|
|
137
|
+
type UsePulseFinalStretchListScriptResult = {
|
|
138
|
+
/** whether tokens are loading */
|
|
139
|
+
isLoading: boolean;
|
|
140
|
+
/** token list */
|
|
141
|
+
tokens: Token[];
|
|
142
|
+
};
|
|
143
|
+
declare function usePulseFinalStretchListScript({ chain, isPaused, refetchInterval, }: UsePulseFinalStretchListScriptParams): UsePulseFinalStretchListScriptResult;
|
|
144
|
+
|
|
145
|
+
interface PulseFinalStretchListWidgetProps {
|
|
146
|
+
/** chain id */
|
|
147
|
+
chain: Chain;
|
|
148
|
+
/** list title */
|
|
149
|
+
title: string;
|
|
150
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
151
|
+
renderHeaderExtra?: ReactNode;
|
|
152
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
153
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
154
|
+
/** callback when selecting a token */
|
|
155
|
+
onSelectToken?: (token: Token) => void;
|
|
156
|
+
/** custom styles */
|
|
157
|
+
className?: string;
|
|
158
|
+
}
|
|
159
|
+
declare function PulseFinalStretchListWidget({ chain, title, renderHeaderExtra, renderItemAction, onSelectToken, className, }: PulseFinalStretchListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
160
|
+
|
|
161
|
+
type PulseListType = "new" | "final_stretch" | "migrated";
|
|
162
|
+
interface PulseListItemActionProps {
|
|
163
|
+
token: Token;
|
|
164
|
+
}
|
|
165
|
+
type PulseListItemActionComponent = ComponentType<PulseListItemActionProps>;
|
|
14
166
|
|
|
15
167
|
type SearchTokensButtonProps = {
|
|
16
168
|
/** callback function when search button is pressed */
|
|
@@ -271,4 +423,4 @@ type TrendingTokenListWidgetProps = {
|
|
|
271
423
|
};
|
|
272
424
|
declare function TrendingTokenListWidget({ chain, resolution, filters, ActionsComponent, onSelectToken, height, itemHeight, itemHeightMobile, className, }: TrendingTokenListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
273
425
|
|
|
274
|
-
export { NewTokenListWidget, type NewTokenListWidgetProps, SearchTokensButton, type SearchTokensButtonProps, StockTokenListWidget, type StockTokenListWidgetProps, TokenAvatar, type TokenAvatarProps, TokenList, type TokenListActionsComponent, type TokenListActionsProps, TokenListFilter, TokenListFilterModal, type TokenListFilterModalProps, TokenListFilterPopover, type TokenListFilterPopoverProps, type TokenListFilterProps, type TokenListFiltersType, type TokenListProps, type TokenListResolution, TokenListResolutionSelector, type TokenListResolutionSelectorProps, type TokenListSortDirections, TrendingTokenListWidget, type TrendingTokenListWidgetProps, type UseNewTokensScriptParams, type UseNewTokensScriptResult, type UseStockTokensScriptParams, type UseStockTokensScriptResult, type UseTrendingTokensScriptParams, type UseTrendingTokensScriptResult, useNewTokensScript, useStockTokensScript, useTrendingTokensScript, _default as version };
|
|
426
|
+
export { NewTokenListWidget, type NewTokenListWidgetProps, PulseFinalStretchListWidget, type PulseFinalStretchListWidgetProps, PulseList, PulseListHeader, type PulseListHeaderProps, PulseListItem, type PulseListItemActionComponent, type PulseListItemActionProps, type PulseListItemProps, PulseListItemSkeleton, type PulseListItemSkeletonProps, type PulseListProps, type PulseListType, PulseMigratedListWidget, type PulseMigratedListWidgetProps, PulseNewListWidget, type PulseNewListWidgetProps, SearchTokensButton, type SearchTokensButtonProps, StockTokenListWidget, type StockTokenListWidgetProps, TokenAvatar, type TokenAvatarProps, TokenList, type TokenListActionsComponent, type TokenListActionsProps, TokenListFilter, TokenListFilterModal, type TokenListFilterModalProps, TokenListFilterPopover, type TokenListFilterPopoverProps, type TokenListFilterProps, type TokenListFiltersType, type TokenListProps, type TokenListResolution, TokenListResolutionSelector, type TokenListResolutionSelectorProps, type TokenListSortDirections, TrendingTokenListWidget, type TrendingTokenListWidgetProps, type UseNewTokensScriptParams, type UseNewTokensScriptResult, type UsePulseFinalStretchListScriptParams, type UsePulseFinalStretchListScriptResult, type UsePulseMigratedListScriptParams, type UsePulseMigratedListScriptResult, type UsePulseNewListScriptParams, type UsePulseNewListScriptResult, type UseStockTokensScriptParams, type UseStockTokensScriptResult, type UseTrendingTokensScriptParams, type UseTrendingTokensScriptResult, useNewTokensScript, usePulseFinalStretchListScript, usePulseMigratedListScript, usePulseNewListScript, useStockTokensScript, useTrendingTokensScript, _default as version };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { ReactNode, ComponentType } from 'react';
|
|
3
|
+
import { Token, Chain, TokenProtocol, API } from '@liberfi.io/types';
|
|
3
4
|
import { PopoverProps } from '@liberfi.io/ui';
|
|
4
|
-
import { ComponentType } from 'react';
|
|
5
5
|
|
|
6
6
|
declare global {
|
|
7
7
|
interface Window {
|
|
@@ -10,7 +10,159 @@ declare global {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
|
-
declare const _default: "0.1.
|
|
13
|
+
declare const _default: "0.1.25";
|
|
14
|
+
|
|
15
|
+
interface PulseListProps {
|
|
16
|
+
/** list title */
|
|
17
|
+
title: string;
|
|
18
|
+
/** tokens to display */
|
|
19
|
+
tokens?: Token[];
|
|
20
|
+
/** whether the list is loading */
|
|
21
|
+
isLoading?: boolean;
|
|
22
|
+
/** height of each item, default is 124 */
|
|
23
|
+
itemHeight?: number;
|
|
24
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
25
|
+
renderHeaderExtra?: ReactNode;
|
|
26
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
27
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
28
|
+
/** callback when selecting a token */
|
|
29
|
+
onSelectToken?: (token: Token) => void;
|
|
30
|
+
/** called when the list should pause/resume adding new items (e.g. mouse hover) */
|
|
31
|
+
onPauseChange?: (isPaused: boolean) => void;
|
|
32
|
+
/** custom styles */
|
|
33
|
+
className?: string;
|
|
34
|
+
}
|
|
35
|
+
declare function PulseList({ title, tokens, isLoading, itemHeight, renderHeaderExtra, renderItemAction, onSelectToken, onPauseChange, className, }: PulseListProps): react_jsx_runtime.JSX.Element;
|
|
36
|
+
|
|
37
|
+
interface PulseListHeaderProps {
|
|
38
|
+
title: string;
|
|
39
|
+
isPaused?: boolean;
|
|
40
|
+
extra?: ReactNode;
|
|
41
|
+
className?: string;
|
|
42
|
+
}
|
|
43
|
+
declare function PulseListHeader({ title, isPaused, extra, className, }: PulseListHeaderProps): react_jsx_runtime.JSX.Element;
|
|
44
|
+
|
|
45
|
+
interface PulseListItemProps {
|
|
46
|
+
/** token data */
|
|
47
|
+
token: Token;
|
|
48
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
49
|
+
renderAction?: (token: Token) => ReactNode;
|
|
50
|
+
/** whether this is the last item */
|
|
51
|
+
isLast?: boolean;
|
|
52
|
+
/** callback when selecting a token */
|
|
53
|
+
onSelectToken?: (token: Token) => void;
|
|
54
|
+
/** custom class name */
|
|
55
|
+
className?: string;
|
|
56
|
+
}
|
|
57
|
+
declare function PulseListItem({ token, renderAction, isLast, onSelectToken, className, }: PulseListItemProps): react_jsx_runtime.JSX.Element;
|
|
58
|
+
|
|
59
|
+
interface PulseListItemSkeletonProps {
|
|
60
|
+
isLast?: boolean;
|
|
61
|
+
className?: string;
|
|
62
|
+
}
|
|
63
|
+
declare function PulseListItemSkeleton({ isLast, className, }: PulseListItemSkeletonProps): react_jsx_runtime.JSX.Element;
|
|
64
|
+
|
|
65
|
+
type UsePulseNewListScriptParams = {
|
|
66
|
+
/** chain id */
|
|
67
|
+
chain: Chain;
|
|
68
|
+
/** whether to pause adding new items (existing items still update) */
|
|
69
|
+
isPaused?: boolean;
|
|
70
|
+
/** refetch interval in milliseconds */
|
|
71
|
+
refetchInterval?: number;
|
|
72
|
+
};
|
|
73
|
+
type UsePulseNewListScriptResult = {
|
|
74
|
+
/** whether tokens are loading */
|
|
75
|
+
isLoading: boolean;
|
|
76
|
+
/** token list */
|
|
77
|
+
tokens: Token[];
|
|
78
|
+
};
|
|
79
|
+
declare function usePulseNewListScript({ chain, isPaused, refetchInterval, }: UsePulseNewListScriptParams): UsePulseNewListScriptResult;
|
|
80
|
+
|
|
81
|
+
interface PulseNewListWidgetProps {
|
|
82
|
+
/** chain id */
|
|
83
|
+
chain: Chain;
|
|
84
|
+
/** list title */
|
|
85
|
+
title: string;
|
|
86
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
87
|
+
renderHeaderExtra?: ReactNode;
|
|
88
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
89
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
90
|
+
/** callback when selecting a token */
|
|
91
|
+
onSelectToken?: (token: Token) => void;
|
|
92
|
+
/** custom styles */
|
|
93
|
+
className?: string;
|
|
94
|
+
}
|
|
95
|
+
declare function PulseNewListWidget({ chain, title, renderHeaderExtra, renderItemAction, onSelectToken, className, }: PulseNewListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
96
|
+
|
|
97
|
+
type UsePulseMigratedListScriptParams = {
|
|
98
|
+
/** chain id */
|
|
99
|
+
chain: Chain;
|
|
100
|
+
/** whether to pause adding new items (existing items still update) */
|
|
101
|
+
isPaused?: boolean;
|
|
102
|
+
/** refetch interval in milliseconds */
|
|
103
|
+
refetchInterval?: number;
|
|
104
|
+
};
|
|
105
|
+
type UsePulseMigratedListScriptResult = {
|
|
106
|
+
/** whether tokens are loading */
|
|
107
|
+
isLoading: boolean;
|
|
108
|
+
/** token list */
|
|
109
|
+
tokens: Token[];
|
|
110
|
+
};
|
|
111
|
+
declare function usePulseMigratedListScript({ chain, isPaused, refetchInterval, }: UsePulseMigratedListScriptParams): UsePulseMigratedListScriptResult;
|
|
112
|
+
|
|
113
|
+
interface PulseMigratedListWidgetProps {
|
|
114
|
+
/** chain id */
|
|
115
|
+
chain: Chain;
|
|
116
|
+
/** list title */
|
|
117
|
+
title: string;
|
|
118
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
119
|
+
renderHeaderExtra?: ReactNode;
|
|
120
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
121
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
122
|
+
/** callback when selecting a token */
|
|
123
|
+
onSelectToken?: (token: Token) => void;
|
|
124
|
+
/** custom styles */
|
|
125
|
+
className?: string;
|
|
126
|
+
}
|
|
127
|
+
declare function PulseMigratedListWidget({ chain, title, renderHeaderExtra, renderItemAction, onSelectToken, className, }: PulseMigratedListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
128
|
+
|
|
129
|
+
type UsePulseFinalStretchListScriptParams = {
|
|
130
|
+
/** chain id */
|
|
131
|
+
chain: Chain;
|
|
132
|
+
/** whether to pause adding new items (existing items still update) */
|
|
133
|
+
isPaused?: boolean;
|
|
134
|
+
/** refetch interval in milliseconds */
|
|
135
|
+
refetchInterval?: number;
|
|
136
|
+
};
|
|
137
|
+
type UsePulseFinalStretchListScriptResult = {
|
|
138
|
+
/** whether tokens are loading */
|
|
139
|
+
isLoading: boolean;
|
|
140
|
+
/** token list */
|
|
141
|
+
tokens: Token[];
|
|
142
|
+
};
|
|
143
|
+
declare function usePulseFinalStretchListScript({ chain, isPaused, refetchInterval, }: UsePulseFinalStretchListScriptParams): UsePulseFinalStretchListScriptResult;
|
|
144
|
+
|
|
145
|
+
interface PulseFinalStretchListWidgetProps {
|
|
146
|
+
/** chain id */
|
|
147
|
+
chain: Chain;
|
|
148
|
+
/** list title */
|
|
149
|
+
title: string;
|
|
150
|
+
/** custom render for header extra content (e.g. instant buy amount input) */
|
|
151
|
+
renderHeaderExtra?: ReactNode;
|
|
152
|
+
/** custom render for item action (e.g. instant buy button) */
|
|
153
|
+
renderItemAction?: (token: Token) => ReactNode;
|
|
154
|
+
/** callback when selecting a token */
|
|
155
|
+
onSelectToken?: (token: Token) => void;
|
|
156
|
+
/** custom styles */
|
|
157
|
+
className?: string;
|
|
158
|
+
}
|
|
159
|
+
declare function PulseFinalStretchListWidget({ chain, title, renderHeaderExtra, renderItemAction, onSelectToken, className, }: PulseFinalStretchListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
160
|
+
|
|
161
|
+
type PulseListType = "new" | "final_stretch" | "migrated";
|
|
162
|
+
interface PulseListItemActionProps {
|
|
163
|
+
token: Token;
|
|
164
|
+
}
|
|
165
|
+
type PulseListItemActionComponent = ComponentType<PulseListItemActionProps>;
|
|
14
166
|
|
|
15
167
|
type SearchTokensButtonProps = {
|
|
16
168
|
/** callback function when search button is pressed */
|
|
@@ -271,4 +423,4 @@ type TrendingTokenListWidgetProps = {
|
|
|
271
423
|
};
|
|
272
424
|
declare function TrendingTokenListWidget({ chain, resolution, filters, ActionsComponent, onSelectToken, height, itemHeight, itemHeightMobile, className, }: TrendingTokenListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
273
425
|
|
|
274
|
-
export { NewTokenListWidget, type NewTokenListWidgetProps, SearchTokensButton, type SearchTokensButtonProps, StockTokenListWidget, type StockTokenListWidgetProps, TokenAvatar, type TokenAvatarProps, TokenList, type TokenListActionsComponent, type TokenListActionsProps, TokenListFilter, TokenListFilterModal, type TokenListFilterModalProps, TokenListFilterPopover, type TokenListFilterPopoverProps, type TokenListFilterProps, type TokenListFiltersType, type TokenListProps, type TokenListResolution, TokenListResolutionSelector, type TokenListResolutionSelectorProps, type TokenListSortDirections, TrendingTokenListWidget, type TrendingTokenListWidgetProps, type UseNewTokensScriptParams, type UseNewTokensScriptResult, type UseStockTokensScriptParams, type UseStockTokensScriptResult, type UseTrendingTokensScriptParams, type UseTrendingTokensScriptResult, useNewTokensScript, useStockTokensScript, useTrendingTokensScript, _default as version };
|
|
426
|
+
export { NewTokenListWidget, type NewTokenListWidgetProps, PulseFinalStretchListWidget, type PulseFinalStretchListWidgetProps, PulseList, PulseListHeader, type PulseListHeaderProps, PulseListItem, type PulseListItemActionComponent, type PulseListItemActionProps, type PulseListItemProps, PulseListItemSkeleton, type PulseListItemSkeletonProps, type PulseListProps, type PulseListType, PulseMigratedListWidget, type PulseMigratedListWidgetProps, PulseNewListWidget, type PulseNewListWidgetProps, SearchTokensButton, type SearchTokensButtonProps, StockTokenListWidget, type StockTokenListWidgetProps, TokenAvatar, type TokenAvatarProps, TokenList, type TokenListActionsComponent, type TokenListActionsProps, TokenListFilter, TokenListFilterModal, type TokenListFilterModalProps, TokenListFilterPopover, type TokenListFilterPopoverProps, type TokenListFilterProps, type TokenListFiltersType, type TokenListProps, type TokenListResolution, TokenListResolutionSelector, type TokenListResolutionSelectorProps, type TokenListSortDirections, TrendingTokenListWidget, type TrendingTokenListWidgetProps, type UseNewTokensScriptParams, type UseNewTokensScriptResult, type UsePulseFinalStretchListScriptParams, type UsePulseFinalStretchListScriptResult, type UsePulseMigratedListScriptParams, type UsePulseMigratedListScriptResult, type UsePulseNewListScriptParams, type UsePulseNewListScriptResult, type UseStockTokensScriptParams, type UseStockTokensScriptResult, type UseTrendingTokensScriptParams, type UseTrendingTokensScriptResult, useNewTokensScript, usePulseFinalStretchListScript, usePulseMigratedListScript, usePulseNewListScript, useStockTokensScript, useTrendingTokensScript, _default as version };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var react=require('react'),
|
|
1
|
+
'use strict';var react=require('react'),ui=require('@liberfi.io/ui'),i18n=require('@liberfi.io/i18n'),jsxRuntime=require('react/jsx-runtime'),hooks=require('@liberfi.io/hooks'),utils=require('@liberfi.io/utils'),client=require('@liberfi.io/client'),uiScaffold=require('@liberfi.io/ui-scaffold');typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-tokens"]="0.1.25");var Uo="0.1.25";function Xe({title:e,isPaused:t,extra:o,className:s}){let{t:n}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:ui.clsx("w-full h-12 px-3 flex-none bg-content1 flex items-center justify-between gap-4 border-b border-border",s),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("h2",{className:"font-semibold",children:e}),t&&jsxRuntime.jsxs("div",{className:"flex items-center gap-1 text-primary",children:[jsxRuntime.jsx(ui.PauseIcon,{className:"w-4 h-4"}),jsxRuntime.jsx("span",{className:"text-xs hidden sm:inline",children:n("tokens.pulse.paused")})]})]}),o&&jsxRuntime.jsx("div",{className:"flex items-center gap-3",children:o})]})}function Ze({isLast:e=false,className:t}){return jsxRuntime.jsxs("div",{className:ui.clsx("w-full h-full px-3 py-3 overflow-hidden flex gap-3 items-center",!e&&"border-b border-border",t),children:[jsxRuntime.jsx(ui.Skeleton,{className:"flex-none w-15 h-15 rounded-sm"}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-2",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-32 h-5 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-48 h-4 rounded-md"})]})]})}function de({token:e,enablePreview:t=true,enableSearch:o=true,showProgress:s=true,showProtocolFamily:n=true,radius:r="sm",className:c,classNames:a}){let p=react.useMemo(()=>e.launchedFrom?.protocolFamily?utils.parseTokenProtocolFamily(e.chain,e.launchedFrom.protocolFamily):void 0,[e.chain,e.launchedFrom?.protocolFamily]),l=react.useMemo(()=>n&&p,[n,p]),i=react.useMemo(()=>s&&e.migrateProgress&&new utils.SafeBigNumber(e.migrateProgress).lt(100),[s,e.migrateProgress]),d=react.useMemo(()=>o&&e.image,[o,e.image]),m=react.useMemo(()=>(e.symbol??e.name??e.address??"L").slice(0,1).toUpperCase(),[e.symbol,e.name,e.address]),[h,x]=react.useState(false),b=react.useCallback(()=>{x(true);},[]),k=react.useCallback(()=>{x(false);},[]),f=react.useCallback(u=>{if(u.stopPropagation(),!e.image)return;let v=utils.searchImageUrl(e.image);window.open(v,"_blank");},[e.image]);return jsxRuntime.jsxs("div",{className:ui.clsx("relative justify-center items-center",c??"w-15 h-15"),children:[!i&&jsxRuntime.jsx("div",{className:ui.clsx("absolute inset-0",`rounded-${r}`,p?`bg-${p}`:"bg-bullish",a?.background)}),i&&jsxRuntime.jsx("div",{className:ui.clsx("absolute -inset-0.5",`rounded-${r}`),children:jsxRuntime.jsx(Qo,{className:ui.clsx(p?`text-${p}`:"text-bullish",a?.progress),progress:e.migrateProgress??"0"})}),jsxRuntime.jsx("div",{className:ui.clsx("absolute inset-0 p-px flex items-center justify-center",`rounded-${r}`,p?`bg-${p}/20`:"bg-bullish/20",a?.avatarWrapper),children:jsxRuntime.jsx(jo,{token:e,radius:r,enableSearch:o,enablePreview:t,classNames:a,children:jsxRuntime.jsxs("div",{className:ui.clsx("relative w-full h-full bg-content1 flex items-center justify-center p-0.5",`rounded-${r}`,h&&d&&"cursor-pointer"),onMouseEnter:b,onMouseLeave:k,children:[jsxRuntime.jsx(ui.Avatar,{showFallback:true,src:e.image,name:m,className:ui.clsx("w-full h-full bg-content1 text-neutral text-2xl",`rounded-${r}`,a?.avatar)}),h&&d&&jsxRuntime.jsx("div",{className:ui.clsx("absolute inset-0 bg-content1/80 flex items-center justify-center",`rounded-${r}`,a?.searchWrapper),onClick:f,children:jsxRuntime.jsx(ui.CameraIcon,{className:ui.clsx("w-6 h-6",a?.searchIcon)})})]})})}),l&&jsxRuntime.jsx("div",{className:"contents",children:jsxRuntime.jsx(ui.StyledTooltip,{content:e.launchedFrom?.protocolFamily??p,placement:"bottom",closeDelay:0,children:jsxRuntime.jsx("div",{className:ui.clsx("absolute -bottom-1 -right-1 rounded-full p-px w-4 h-4",`bg-${p}`,a?.protocolFamilyIconWrapper),children:jsxRuntime.jsx(ui.Image,{removeWrapper:true,src:`/images/protocols/${p}.svg`,className:ui.clsx("w-full h-full rounded-full bg-content1",a?.protocolFamilyIcon)})})})})]})}function jo({token:e,radius:t,enableSearch:o,enablePreview:s,classNames:n,children:r}){return react.useMemo(()=>s&&e.image,[s,e.image])?jsxRuntime.jsx(ui.StyledTooltip,{content:jsxRuntime.jsx(qo,{token:e,radius:t,enableSearch:o,classNames:n}),closeDelay:100,placement:"bottom-start",classNames:{content:"p-1"},children:r}):r}function qo({token:e,enableSearch:t,radius:o,classNames:s}){let n=react.useMemo(()=>t&&e.image,[t,e.image]),r=react.useMemo(()=>(e.symbol??e.name??e.address??"L").slice(0,1).toUpperCase(),[e.symbol,e.name,e.address]),[c,a]=react.useState(false),p=react.useCallback(()=>{a(true);},[]),l=react.useCallback(()=>{a(false);},[]),i=react.useCallback(d=>{if(d.stopPropagation(),!e.image)return;let m=utils.searchImageUrl(e.image);window.open(m,"_blank");},[e.image]);return jsxRuntime.jsxs("div",{className:ui.clsx("relative flex items-center justify-center w-60 h-60",`rounded-${o}`,c&&n&&"cursor-pointer",s?.previewWrapper),onMouseEnter:p,onMouseLeave:l,children:[jsxRuntime.jsx(ui.Avatar,{showFallback:true,src:e.image,name:r,className:ui.clsx("w-full h-full bg-content1 text-neutral text-3xl",`rounded-${o}`,s?.previewAvatar)}),c&&n&&jsxRuntime.jsx("div",{className:ui.clsx("absolute inset-0 bg-content1/80 flex items-center justify-center",`rounded-${o}`,s?.previewSearchWrapper),onClick:i,children:jsxRuntime.jsx(ui.CameraIcon,{className:ui.clsx("w-10 h-10",s?.previewSearchIcon)})})]})}function Qo({progress:e,className:t}){let o=react.useMemo(()=>296-Number(e)*296/100,[e]);return jsxRuntime.jsxs("svg",{viewBox:"0 0 78 78",className:"w-full h-full",children:[jsxRuntime.jsx("path",{className:`${t} opacity-40`,stroke:"currentColor",fill:"transparent",strokeWidth:"1",d:`
|
|
2
2
|
M 76 76
|
|
3
3
|
L 6 76
|
|
4
4
|
Q 2 76 2 72
|
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
Q 76 2 76 6
|
|
19
19
|
L 76 72
|
|
20
20
|
Q 76 76 76 76
|
|
21
|
-
`})]})}function $e({keywords:e,excludeKeywords:t,onKeywordsChange:o,onExcludeKeywordsChange:r,className:n}){let{t:s}=i18n.useTranslation(),[p,i]=react.useState(e?.join(", ")??""),[c,d]=react.useState(t?.join(", ")??"");react.useEffect(()=>{i(l=>{let k=G(l);return k===void 0&&e===void 0?l:k===void 0?e?.join(", ")??"":e===void 0?"":k.join("")===e.join("")?l:e.join(", ")});},[e]),react.useEffect(()=>{d(l=>{let k=G(l);return k===void 0&&t===void 0?l:k===void 0?t?.join(", ")??"":t===void 0?"":k.join("")===t.join("")?l:t.join(", ")});},[t]);let a=react.useCallback(l=>{i(l),o?.(G(l));},[o]),m=react.useCallback(l=>{d(l),r?.(G(l));},[r]);return jsxRuntime.jsxs("div",{className:ui.clsx("grid grid-cols-2 gap-3 px-4",n),children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-3",children:[jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:s("tokens.filters.keywords.title")}),jsxRuntime.jsx(ui.StyledInput,{variant:"bordered",radius:"lg",size:"sm",placeholder:s("tokens.filters.keywords.placeholder"),value:p,onValueChange:a})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-3",children:[jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:s("tokens.filters.keywords.exclude.title")}),jsxRuntime.jsx(ui.StyledInput,{variant:"bordered",radius:"lg",size:"sm",placeholder:s("tokens.filters.keywords.placeholder"),value:c,onValueChange:m})]})]})}function G(e){let t=e.split(",").map(o=>o.trim()).filter(Boolean);return t.length>0?t:void 0}function je({protocols:e,selectedProtocols:t=[],onSelectedProtocolsChange:o,className:r}){let{t:n}=i18n.useTranslation(),[s,p]=react.useState(t);react.useEffect(()=>{p(t);},[t]);let i=react.useMemo(()=>e.every(a=>s.includes(a)),[e,s]),c=react.useCallback(()=>{if(i){let a=[];p(a),o?.(a);}else {let a=[...e];p(a),o?.(a);}},[e,o,i]),d=react.useCallback(a=>()=>{if(s.includes(a)){let m=s.filter(l=>l!==a);p(m),o?.(m);}else {let m=[...s,a];p(m),o?.(m);}},[s,o]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-3 px-4",r),children:[jsxRuntime.jsxs("div",{className:"flex justify-between items-center",children:[jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:n("tokens.filters.protocols.title")}),jsxRuntime.jsx(ui.StyledButton,{variant:"light",color:"content3",size:"xs",radius:"full",onPress:c,children:n(i?"tokens.filters.protocols.unselectAll":"tokens.filters.protocols.selectAll")})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-3 gap-3",children:e.map(a=>jsxRuntime.jsx(ui.StyledButton,{variant:"bordered",size:"xs",radius:"full",className:ui.clsx("w-fit",`text-${a}`,`bg-${a}/5`,`border border-${a}`,{"opacity-40 data-[hover=true]:!opacity-30":!s.includes(a)}),startContent:jsxRuntime.jsx(ui.Image,{width:14,height:14,src:`/images/protocols/${a}.svg`,alt:utils.formatTokenProtocolName(a)}),onPress:d(a),children:utils.formatTokenProtocolName(a)},a))})]})}function L({title:e,field:t,value:o,onChange:r}){let{t:n}=i18n.useTranslation(),[s,p]=react.useState(o?de(o).min:NaN),[i,c]=react.useState(o?de(o).max:NaN);react.useEffect(()=>{if(o===void 0)p(NaN),c(NaN);else {let{min:m,max:l}=de(o);p(m),c(l);}},[o]);let d=react.useCallback(m=>{p(m),r?.(Ge(t,m,i));},[t,r,i]),a=react.useCallback(m=>{c(m),r?.(Ge(t,s,m));},[t,r,s]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1",children:[e&&jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:e}),jsxRuntime.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[jsxRuntime.jsx(ui.StyledNumberInput,{value:s,onValueChange:d,variant:"bordered",radius:"lg",size:"sm",placeholder:n("tokens.filters.stats.min"),"aria-label":`${e} min`}),jsxRuntime.jsx(ui.StyledNumberInput,{value:i,onValueChange:a,variant:"bordered",radius:"lg",size:"sm",placeholder:n("tokens.filters.stats.max"),"aria-label":`${e} max`})]})]})}function de(e){if(e.operator==="between"){let[t,o]=e.value;return {min:t,max:o}}return e.operator==="gte"?{min:e.value,max:NaN}:e.operator==="lte"?{min:NaN,max:e.value}:{min:NaN,max:NaN}}function Ge(e,t,o){if(!(isNaN(t)&&isNaN(o)))return isNaN(t)?{field:e,operator:"lte",value:o}:isNaN(o)?{field:e,operator:"gte",value:t}:{field:e,operator:"between",value:[t,o]}}function Ye({values:e,onValuesChange:t,className:o}){let{t:r}=i18n.useTranslation(),[n,s]=react.useState(e);react.useEffect(()=>{s(e);},[e]);let p=react.useCallback(i=>c=>{if(c===void 0){let d=(n??[]).filter(a=>a.field!==i);d=d.length>0?d:void 0,s(d),t?.(d);}else {let d=[...(n??[]).filter(a=>a.field!==i),c];s(d),t?.(d);}},[n,t]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-4",o),children:[jsxRuntime.jsx(L,{field:"holders",title:r("tokens.filters.stats.audits.holders"),value:n?.find(i=>i.field==="holders"),onChange:p("holders")}),jsxRuntime.jsx(L,{field:"top10Ratio",title:r("tokens.filters.stats.audits.top10HoldingsRatio"),value:n?.find(i=>i.field==="top10Ratio"),onChange:p("top10Ratio")}),jsxRuntime.jsx(L,{field:"top100Ratio",title:r("tokens.filters.stats.audits.top100HoldingsRatio"),value:n?.find(i=>i.field==="top100Ratio"),onChange:p("top100Ratio")}),jsxRuntime.jsx(L,{field:"creatorsRatio",title:r("tokens.filters.stats.audits.devHoldingsRatio"),value:n?.find(i=>i.field==="creatorsRatio"),onChange:p("creatorsRatio")})]})}function Ze({resolution:e,values:t,onValuesChange:o,className:r}){let{t:n}=i18n.useTranslation(),[s,p]=react.useState(t);react.useEffect(()=>{p(t);},[t]);let i=react.useCallback(c=>d=>{if(d===void 0){let a=(s??[]).filter(m=>m.field!==c);a=a.length>0?a:void 0,p(a),o?.(a);}else {let a=[...(s??[]).filter(m=>m.field!==c),d];p(a),o?.(a);}},[s,o]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-4",r),children:[jsxRuntime.jsx(L,{field:"marketCap",title:n("tokens.filters.stats.metrics.marketCap"),value:s?.find(c=>c.field==="marketCap"),onChange:i("marketCap")}),jsxRuntime.jsx(L,{field:"tvl",title:n("tokens.filters.stats.metrics.liquidity"),value:s?.find(c=>c.field==="tvl"),onChange:i("tvl")}),jsxRuntime.jsx(L,{field:`volumes${e}`,title:n("tokens.filters.stats.metrics.volumes",{resolution:n(`common.resolution.${e}`)}),value:s?.find(c=>c.field===`volumes${e}`),onChange:i(`volumes${e}`)}),jsxRuntime.jsx(L,{field:`trades${e}`,title:n("tokens.filters.stats.metrics.txns",{resolution:n(`common.resolution.${e}`)}),value:s?.find(c=>c.field===`trades${e}`),onChange:i(`trades${e}`)})]})}function nt({resolution:e,values:t,onValuesChange:o,className:r}){let{t:n}=i18n.useTranslation(),[s,p]=react.useState("audits"),[i,c]=react.useState(t);react.useEffect(()=>{c(t);},[t]);let d=react.useCallback(l=>{c(l),o?.(l);},[o]),a=react.useMemo(()=>{let l=["holders","top10Ratio","top100Ratio","creatorsRatio"];return i?.filter(k=>l.includes(k.field))?.length??0},[i]),m=react.useMemo(()=>{let l=["marketCap","tvl",`volumes${e}`,`trades${e}`];return i?.filter(k=>l.includes(k.field)).length??0},[i,e]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-3 px-4",r),children:[jsxRuntime.jsxs(ui.StyledTabs,{variant:"light",radius:"full",size:"sm",selectedKey:s,onSelectionChange:p,children:[jsxRuntime.jsx(ui.Tab,{title:a===0?n("tokens.filters.stats.audits"):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:a,shape:"circle",children:n("tokens.filters.stats.audits")})},"audits"),jsxRuntime.jsx(ui.Tab,{title:m===0?n("tokens.filters.stats.metrics"):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:m,shape:"circle",children:n("tokens.filters.stats.metrics")})},"metrics")]}),jsxRuntime.jsx(Ye,{values:i,onValuesChange:d,className:ui.clsx({hidden:s!=="audits"})}),jsxRuntime.jsx(Ze,{values:i,onValuesChange:d,resolution:e,className:ui.clsx({hidden:s!=="metrics"})})]})}function re({protocols:e,resolution:t,filters:o,onFiltersChange:r,className:n}){let[s,p]=react.useState(at(o?.filters,e));react.useEffect(()=>{p(at(o?.filters,e));},[o?.filters,e]);let[i,c]=react.useState(o?.keywords);react.useEffect(()=>{c(o?.keywords);},[o?.keywords]);let[d,a]=react.useState(o?.excludeKeywords);react.useEffect(()=>{a(o?.excludeKeywords);},[o?.excludeKeywords]);let[m,l]=react.useState(o?.filters);react.useEffect(()=>{l(o?.filters);},[o?.filters]);let k=react.useCallback(T=>{p(T),r?.(se(e,T,i,d,m));},[e,i,d,m,r]),h=react.useCallback(T=>{c(T),r?.(se(e,s,T,d,m));},[e,s,d,m,r]),w=react.useCallback(T=>{a(T),r?.(se(e,s,i,T,m));},[e,s,i,m,r]),C=react.useCallback(T=>{l(T),r?.(se(e,s,i,d,T));},[e,s,i,d,r]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-4",n),children:[e&&e.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(je,{protocols:e,selectedProtocols:s,onSelectedProtocolsChange:k}),jsxRuntime.jsx(ui.StyledDivider,{})]}),jsxRuntime.jsx($e,{keywords:i,excludeKeywords:d,onKeywordsChange:h,onExcludeKeywordsChange:w}),jsxRuntime.jsx(ui.StyledDivider,{}),jsxRuntime.jsx(nt,{resolution:t,values:m,onValuesChange:C})]})}function at(e,t){let o=e?.find(r=>r.field==="launchedFromProtocolFamily");return o?o.operator==="in"?o.value:(console.warn("invalid token protocols filter",o),[...t||[]]):[...t||[]]}function se(e,t,o,r,n){let s=n?[...n.filter(p=>p.field!=="launchedFromProtocolFamily")]:[];return e&&e.length>0&&(e.every(i=>t.includes(i))||s.push({field:"launchedFromProtocolFamily",operator:"in",value:t})),o===void 0&&r===void 0&&s.length===0?void 0:{keywords:o,excludeKeywords:r,filters:s.length>0?s:void 0}}function ei({protocols:e,resolution:t,filters:o,onFiltersChange:r}){let{t:n}=i18n.useTranslation(),{isOpen:s,onOpen:p,onClose:i,onOpenChange:c}=ui.useDisclosure(),[d,a]=react.useState(o),m=react.useCallback(()=>{a(void 0);},[]),l=react.useCallback(()=>{r?.(d),i();},[d,r,i]);react.useEffect(()=>{a(o);},[s,o]);let k=react.useMemo(()=>Object.values(o||{}).every(h=>h===void 0),[o]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.StyledButton,{color:"content2",size:"sm",radius:"full",className:"font-bold text-sm",startContent:k?jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"}):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:"",shape:"circle",children:jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"})}),endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"data-[open=true]:-rotate-180 transition-transform flex-none","data-open":s}),onPress:p,children:n("tokens.listHeader.filter")}),jsxRuntime.jsx(ui.StyledModal,{isOpen:s,onOpenChange:c,size:"md",scrollBehavior:"inside",children:jsxRuntime.jsxs(ui.ModalContent,{children:[jsxRuntime.jsx(ui.ModalHeader,{children:n("tokens.filters.modal.title")}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsx(ui.ScrollShadow,{children:jsxRuntime.jsx(re,{protocols:e,resolution:t,filters:d,onFiltersChange:a,className:"pb-4"})})}),jsxRuntime.jsx(ui.ModalFooter,{children:jsxRuntime.jsxs("div",{className:"w-full px-4 flex justify-between items-center",children:[jsxRuntime.jsx(ui.StyledButton,{color:"transparent",size:"xs",radius:"full",startContent:jsxRuntime.jsx(ui.RefreshIcon,{width:16,height:16}),onPress:m,children:n("common.reset")}),jsxRuntime.jsx(ui.StyledButton,{color:"primary",size:"sm",radius:"full",onPress:l,children:n("common.apply")})]})})]})})]})}function mi({protocols:e,resolution:t,filters:o,onFiltersChange:r,...n}){let{t:s}=i18n.useTranslation(),{isOpen:p,onClose:i,onOpenChange:c}=ui.useDisclosure(),[d,a]=react.useState(o),m=react.useCallback(()=>{a(void 0);},[]),l=react.useCallback(()=>{r?.(d),i();},[d,r,i]);react.useEffect(()=>{a(o);},[p,o]);let k=react.useMemo(()=>Object.values(o||{}).every(h=>h===void 0),[o]);return jsxRuntime.jsxs(ui.StyledPopover,{...n,isOpen:p,onOpenChange:c,children:[jsxRuntime.jsx(ui.PopoverTrigger,{children:jsxRuntime.jsx(ui.StyledButton,{color:"content2",size:"sm",radius:"full",className:"font-bold text-sm",startContent:k?jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"}):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:"",shape:"circle",children:jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"})}),endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"data-[open=true]:-rotate-180 transition-transform flex-none","data-open":p}),children:s("tokens.listHeader.filter")})}),jsxRuntime.jsx(ui.PopoverContent,{children:jsxRuntime.jsxs("div",{className:"w-md py-4 px-0 flex flex-col gap-4",children:[jsxRuntime.jsx(ui.ScrollShadow,{className:"w-full max-h-120",children:jsxRuntime.jsx(re,{protocols:e,resolution:t,filters:d,onFiltersChange:a})}),jsxRuntime.jsx(ui.StyledDivider,{}),jsxRuntime.jsxs("div",{className:"w-full px-4 flex justify-between items-center",children:[jsxRuntime.jsx(ui.StyledButton,{color:"transparent",size:"xs",radius:"full",startContent:jsxRuntime.jsx(ui.RefreshIcon,{width:16,height:16}),onPress:m,children:s("common.reset")}),jsxRuntime.jsx(ui.StyledButton,{color:"primary",size:"sm",radius:"full",onPress:l,children:s("common.apply")})]})]})})]})}function Ti({resolution:e,onResolutionChange:t,resolutionOptions:o=["1m","5m","1h","4h","24h"]}){let{t:r}=i18n.useTranslation(),n=react.useCallback(s=>{t?.(s);},[t]);return jsxRuntime.jsx(ui.StyledTabs,{variant:"primaryPlain",radius:"lg",selectedKey:e,onSelectionChange:n,"aria-label":"Select Resolution",children:o.map(s=>jsxRuntime.jsx(ui.Tab,{title:r(`common.resolution.${s}`)},s))})}function kt({token:e}){let{t}=i18n.useTranslation(),o=react.useMemo(()=>e.marketData?.bluechipHoldingsRatio,[e.marketData?.bluechipHoldingsRatio]),r=react.useMemo(()=>o!==void 0&&new utils.SafeBigNumber(o).gte(.1),[o]),n=react.useMemo(()=>o===void 0||new utils.SafeBigNumber(o).lt(.05),[o]);return jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.bluechip.explained"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5",children:[r&&jsxRuntime.jsx(ui.HorsePowerHighIcon,{}),n&&jsxRuntime.jsx(ui.HorsePowerLowIcon,{}),!r&&!n&&jsxRuntime.jsx(ui.HorsePowerIcon,{}),jsxRuntime.jsx("span",{className:ui.clsx(r&&"text-bullish",!r&&!n&&"text-bearish",o===void 0&&"text-neutral"),children:utils.formatPercent(o)})]})})}function ht({token:e}){let t=ui.useCopyToClipboard(),{t:o}=i18n.useTranslation(),r=react.useCallback(s=>{s.preventDefault(),s.stopPropagation(),t(e.address,o("tokens.copied.address"));},[t,e.address,o]),n=hooks.useTickAge(e.createdAt);return jsxRuntime.jsxs("div",{className:"w-full flex justify-start items-center gap-3",children:[jsxRuntime.jsx(De,{token:e,className:"w-10 h-10 sm:w-16 sm:h-16 flex-none"}),jsxRuntime.jsxs("div",{className:"flex-auto flex flex-col gap-1 min-w-0",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{className:"flex-none font-medium tracking-[-0.02em]",children:e.symbol}),jsxRuntime.jsx(ui.StyledTooltip,{content:e.name,closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-initial flex items-center gap-1 min-w-0 text-neutral hover:text-primary-200 cursor-pointer",onClick:r,children:[jsxRuntime.jsx("div",{className:"flex-initial whitespace-nowrap truncate",children:e.name}),jsxRuntime.jsx(ui.CopyIcon,{className:"flex-none w-3 h-3 sm:w-3.5 sm:h-3.5"})]})})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("span",{className:"text-primary text-xs sm:text-sm font-medium",children:utils.formatAge(n)}),e.socialMedias?.website&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.website,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.WebsiteIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),e.socialMedias?.twitter&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.twitter,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.TwitterIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),e.socialMedias?.telegram&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.telegram,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.TelegramIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),e.socialMedias?.discord&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.discord,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.DiscordIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),jsxRuntime.jsx(ui.Link,{href:utils.searchTwitterUrl(`${e.symbol} OR ${e.address}`),className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.SearchIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]})]})}function Tt({token:e}){let{t}=i18n.useTranslation(),o=react.useMemo(()=>e.marketData?.holders,[e.marketData?.holders]),r=react.useMemo(()=>e.marketData?.proHolders,[e.marketData?.proHolders]),n=react.useMemo(()=>e.marketData?.kolHolders,[e.marketData?.kolHolders]),s=react.useMemo(()=>e.marketData?.devHoldingsRatio,[e.marketData?.devHoldingsRatio]),p=react.useMemo(()=>new utils.SafeBigNumber(s).gte(.1),[s]),i=react.useMemo(()=>e.marketData?.top10HoldingsRatio,[e.marketData?.top10HoldingsRatio]),c=react.useMemo(()=>new utils.SafeBigNumber(i).gte(.1),[i]),d=react.useMemo(()=>e.marketData?.sniperHoldingsRatio,[e.marketData?.sniperHoldingsRatio]),a=react.useMemo(()=>new utils.SafeBigNumber(d).gte(.1),[d]),m=react.useMemo(()=>e.marketData?.insiderHoldingsRatio,[e.marketData?.insiderHoldingsRatio]),l=react.useMemo(()=>new utils.SafeBigNumber(m).gte(.1),[m]),k=react.useMemo(()=>e.marketData?.bundleHoldingsRatio,[e.marketData?.bundleHoldingsRatio]),h=react.useMemo(()=>new utils.SafeBigNumber(k).gte(.1),[k]);return jsxRuntime.jsxs("div",{className:"w-full h-full flex gap-2 justify-start items-center",children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.holders"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.PeopleIcon,{width:14,height:14}),variant:"flat",size:"sm",color:o?"primary":"default",children:utils.formatAmount(o)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.proHolders"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.KlineCandlesIcon,{width:16,height:16}),variant:"flat",size:"sm",color:r?"primary":"default",children:utils.formatAmount(r)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.kolHolders"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.StarIcon,{width:14,height:14}),variant:"flat",size:"sm",color:n?"primary":"default",children:utils.formatAmount(n)})})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.top10HoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.UserWithStarBadgeIcon,{width:14,height:14}),variant:"flat",size:"sm",color:c?"danger":i===void 0?"default":"primary",children:utils.formatPercent(i)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.devHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.CookIcon,{width:13,height:13}),variant:"flat",size:"sm",color:p?"danger":s===void 0?"default":"primary",children:utils.formatPercent(s)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.sniperHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.SniperIcon,{width:13,height:13}),variant:"flat",size:"sm",color:a?"danger":d===void 0?"default":"primary",children:utils.formatPercent(d)})})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.insiderHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.RatIcon,{width:13,height:13}),variant:"flat",size:"sm",color:l?"danger":m===void 0?"default":"primary",children:utils.formatPercent(m)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.bundleHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.BundlesIcon,{width:13,height:13}),variant:"flat",size:"sm",color:h?"danger":k===void 0?"default":"primary",children:utils.formatPercent(k)})})]})]})}function gt({token:e}){let t=react.useMemo(()=>e.marketData?.tvlInUsd,[e.marketData?.tvlInUsd]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:utils.formatAmountUSD(t)})}function yt({token:e}){let t=react.useMemo(()=>e.marketData?.marketCapInUsd,[e.marketData?.marketCapInUsd]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:utils.formatAmountUSD(t)})}function wt({token:e,resolution:t}){let o=react.useMemo(()=>e.marketData?.priceInUsd,[e]),r=react.useMemo(()=>e.stats?.[t]?.priceChange,[e,t]),n=react.useMemo(()=>r?new utils.SafeBigNumber(r).abs().toString():void 0,[r]),s=react.useMemo(()=>r&&new utils.SafeBigNumber(r).gte(0),[r]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatPriceUSD(o)}),jsxRuntime.jsxs("span",{className:ui.clsx("inline-flex gap-1 items-center text-xs",s?"text-bullish":"text-bearish"),children:[s?jsxRuntime.jsx(ui.TriangleUpIcon,{width:10,height:10}):jsxRuntime.jsx(ui.TriangleDownIcon,{width:10,height:10}),jsxRuntime.jsx("span",{children:utils.formatPercent(n)})]})]})}function Ct({token:e,resolution:t}){let o=react.useMemo(()=>e.stats?.[t]?.traders,[e.stats?.[t]?.traders]),r=react.useMemo(()=>e.stats?.[t]?.buyers,[e.stats?.[t]?.buyers]),n=react.useMemo(()=>e.stats?.[t]?.sellers,[e.stats?.[t]?.sellers]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatAmount(o)}),jsxRuntime.jsxs("div",{className:"flex gap-1 text-xs",children:[jsxRuntime.jsx("span",{className:"text-bullish",children:utils.formatAmount(r)}),"/",jsxRuntime.jsx("span",{className:"text-bearish",children:utils.formatAmount(n)})]})]})}function St({token:e,resolution:t}){let o=react.useMemo(()=>e.stats?.[t]?.trades,[e.stats?.[t]?.trades]),r=react.useMemo(()=>e.stats?.[t]?.buys,[e.stats?.[t]?.buys]),n=react.useMemo(()=>e.stats?.[t]?.sells,[e.stats?.[t]?.sells]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatAmount(o)}),jsxRuntime.jsxs("div",{className:"flex gap-1 text-xs",children:[jsxRuntime.jsx("span",{className:"text-bullish",children:utils.formatAmount(r)}),"/",jsxRuntime.jsx("span",{className:"text-bearish",children:utils.formatAmount(n)})]})]})}function Lt({token:e,resolution:t}){let o=react.useMemo(()=>e.stats?.[t]?.volumesInUsd,[e.stats?.[t]?.volumesInUsd]),r=react.useMemo(()=>e.stats?.[t]?.buyVolumesInUsd,[e.stats?.[t]?.buyVolumesInUsd]),n=react.useMemo(()=>e.stats?.[t]?.sellVolumesInUsd,[e.stats?.[t]?.sellVolumesInUsd]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatAmountUSD(o)}),jsxRuntime.jsxs("div",{className:"flex gap-1 text-xs",children:[jsxRuntime.jsx("span",{className:"text-bullish",children:utils.formatAmountUSD(r)}),"/",jsxRuntime.jsx("span",{className:"text-bearish",children:utils.formatAmountUSD(n)})]})]})}var At=5;function It({rowHeight:e,hasActions:t}){return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Array.from({length:At}).map((o,r)=>jsxRuntime.jsx(er,{rowHeight:e,hasBorderBottom:r!==At-1,hasActions:t},r))})}function er({rowHeight:e,hasBorderBottom:t,hasActions:o}){return jsxRuntime.jsxs("div",{className:ui.clsx("relative flex items-center","[&>div]:first:sm:pl-6 [&>div]:last:sm:pr-6",t&&"after:content-[''] after:absolute after:left-0 after:bottom-0",t&&"after:w-full after:h-px after:bg-border/50"),style:{height:`${e}px`},children:[jsxRuntime.jsx(tr,{}),jsxRuntime.jsx(or,{}),jsxRuntime.jsx(sr,{}),jsxRuntime.jsx(rr,{}),jsxRuntime.jsx(nr,{}),jsxRuntime.jsx(ir,{}),jsxRuntime.jsx(ar,{}),jsxRuntime.jsx(lr,{}),jsxRuntime.jsx(dr,{}),o&&jsxRuntime.jsx(mr,{})]})}function tr(){return jsxRuntime.jsxs("div",{className:"w-56 sm:w-81 px-3 h-full flex justify-start items-center gap-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-10 h-10 sm:w-16 sm:h-16 flex-none rounded-md"}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1",children:[jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-32 sm:w-40 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-3.5 rounded-md"})})]})]})}function or(){return jsxRuntime.jsxs("div",{className:"w-23.5 sm:w-36 h-full px-3 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function sr(){return jsxRuntime.jsx("div",{className:"w-23.5 sm:w-36 h-full px-3 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-18 sm:w-24 h-3 sm:h-4 rounded-md"})})}function rr(){return jsxRuntime.jsx("div",{className:"w-23.5 sm:w-36 h-full px-3 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-18 sm:w-24 h-3 sm:h-4 rounded-md"})})}function nr(){return jsxRuntime.jsxs("div",{className:"w-31.5 sm:w-36 h-full px-3 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function ir(){return jsxRuntime.jsxs("div",{className:"w-31.5 sm:w-36 h-full px-3 py-2 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function ar(){return jsxRuntime.jsxs("div",{className:"w-31.5 sm:w-36 h-full px-3 py-2 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function lr(){return jsxRuntime.jsx("div",{className:"w-32 sm:w-36 h-full px-3 py-2 flex flex-col gap-1 justify-center items-start",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-26 sm:w-30 h-3 sm:h-4 rounded-md"})})}function dr(){return jsxRuntime.jsxs("div",{className:"w-51 sm:w-56 h-full px-3 py-2 flex gap-1.5 justify-start items-center",children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"})]})]})}function mr(){return jsxRuntime.jsx("div",{className:"w-31 sm:w-36 h-full px-3 py-2",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-25 sm:w-30 h-3 sm:h-4 rounded-md"})})}function V({tokens:e,resolution:t="24h",isLoading:o,ActionsComponent:r,onSelectToken:n,sortDirections:s,onSortChange:p,height:i=600,itemHeight:c=88,itemHeightMobile:d=72,className:a}){let{isMobile:m}=ui.useScreen(),{t:l}=i18n.useTranslation(),k=react.useCallback(T=>E=>{E.preventDefault(),E.stopPropagation(),n?.(T);},[n]),[h,w]=react.useState(s??{});react.useEffect(()=>{w(s??{});},[s]);let C=react.useCallback(T=>E=>{let q={[T]:E};w(q),p?.(q);},[p]);return jsxRuntime.jsxs(ui.StyledTable,{isHeaderSticky:true,isVirtualized:true,radius:"lg",className:ui.clsx("h-full mx-auto",a??(r?"max-w-379 sm:max-w-403":"max-w-348 sm:max-w-372")),classNames:{loadingWrapper:"flex-col justify-start items-start",emptyWrapper:"pt-30"},maxTableHeight:i,rowHeight:m?d:c,"aria-label":"Tokens",children:[jsxRuntime.jsx(ui.TableHeader,{children:[jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.token"),width:m?224:320,children:l("tokens.listHeader.token")},"token"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.price"),width:128,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.Sortable,{sort:h.price,onSortChange:C("price"),children:l("tokens.listHeader.price")}),jsxRuntime.jsx("span",{children:"/"}),jsxRuntime.jsx(ui.Sortable,{sort:h[`priceChange${t}`],onSortChange:C(`priceChange${t}`),children:l("tokens.listHeader.priceChange",{resolution:t})})]})},"price"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.marketCap"),width:106,children:jsxRuntime.jsx(ui.Sortable,{sort:h.marketCap,onSortChange:C("marketCap"),children:l("tokens.listHeader.marketCap")})},"marketCap"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.liquidity"),width:106,children:jsxRuntime.jsx(ui.Sortable,{sort:h.tvl,onSortChange:C("tvl"),children:l("tokens.listHeader.liquidity")})},"liquidity"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.volumes",{resolution:t}),width:138,children:jsxRuntime.jsx(ui.Sortable,{sort:h[`volumes${t}`],onSortChange:C(`volumes${t}`),children:l("tokens.listHeader.volumes",{resolution:t})})},"volumes"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.txs",{resolution:t}),width:126,children:jsxRuntime.jsx(ui.Sortable,{sort:h[`trades${t}`],onSortChange:C(`trades${t}`),children:l("tokens.listHeader.txs",{resolution:t})})},"txs"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.traders",{resolution:t}),width:126,children:jsxRuntime.jsx(ui.Sortable,{sort:h[`traders${t}`],onSortChange:C(`traders${t}`),children:l("tokens.listHeader.traders",{resolution:t})})},"traders"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.bluechip"),width:128,children:l("tokens.listHeader.bluechip")},"bluechip"),jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.tokenInfo"),width:308,children:l("tokens.listHeader.tokenInfo")},"tokenInfo"),r?jsxRuntime.jsx(ui.TableColumn,{textValue:l("tokens.listHeader.actions"),width:124,align:"end",children:l("tokens.listHeader.actions")},"actions"):void 0].filter(Boolean)}),jsxRuntime.jsx(ui.TableBody,{items:o?[]:e,isLoading:o,loadingContent:jsxRuntime.jsx(It,{rowHeight:m?d:c,hasActions:!!r}),emptyContent:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(ui.EmptyIcon,{className:"w-10 h-10 mx-auto text-neutral"}),jsxRuntime.jsx("p",{className:"mt-2 text-sm text-neutral text-center",children:l("common.empty")})]}),children:T=>jsxRuntime.jsx(ui.TableRow,{onClick:n?k(T):void 0,children:[jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(ht,{token:T,resolution:t})},"token"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(wt,{token:T,resolution:t})},"price"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(yt,{token:T,resolution:t})},"marketCap"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(gt,{token:T,resolution:t})},"liquidity"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(Lt,{token:T,resolution:t})},"volumes"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(St,{token:T,resolution:t})},"trades"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(Ct,{token:T,resolution:t})},"traders"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(kt,{token:T,resolution:t})},"bluechip"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(Tt,{token:T,resolution:t})},"tokenInfo"),r?jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(r,{token:T,resolution:t})},"actions"):void 0].filter(Boolean)},T.address)})]})}function Dt({chain:e,resolution:t,options:o,refetchInterval:r=12e3}){let n=react.useMemo(()=>({chain:e,resolution:t,...o}),[e,t,o]),s=react.useRef(n),[p,i]=react.useState(true);react.useEffect(()=>{JSON.stringify(n)!==JSON.stringify(s.current)&&(i(true),s.current=n);},[n]);let[c,d]=react.useState([]),{data:a,isPending:m}=client.useNewTokensQuery(n,{refetchInterval:r});react.useEffect(()=>{a&&(d(a),i(false));},[a]);let l=react.useMemo(()=>!!(m||p),[m,p]);return {tokens:c,isLoading:l}}function Ga({chain:e,resolution:t,filters:o,ActionsComponent:r,onSelectToken:n,height:s,itemHeight:p,itemHeightMobile:i,className:c}){let[d,a]=react.useState(),m=react.useMemo(()=>{let h=Object.keys(d??{})[0],w=d?.[h];return {...o,...h&&w?{sortBy:h,sortDirection:w}:void 0}},[o,d]),{tokens:l,isLoading:k}=Dt({chain:e,resolution:t,options:m});return jsxRuntime.jsx(V,{tokens:l,isLoading:k,resolution:t,height:s,itemHeight:p,itemHeightMobile:i,ActionsComponent:r,onSelectToken:n,sortDirections:d,onSortChange:a,className:c})}function Vt({chain:e,resolution:t,options:o,refetchInterval:r=12e3}){let n=react.useMemo(()=>({chain:e,resolution:t,...o}),[e,t,o]),s=react.useRef(n),[p,i]=react.useState(true);react.useEffect(()=>{JSON.stringify(n)!==JSON.stringify(s.current)&&(i(true),s.current=n);},[n]);let[c,d]=react.useState([]),{data:a,isPending:m}=client.useStockTokensQuery(n,{refetchInterval:r});react.useEffect(()=>{a&&(d(a),i(false));},[a]);let l=react.useMemo(()=>!!(m||p),[m,p]);return {tokens:c,isLoading:l}}function al({chain:e,resolution:t,filters:o,ActionsComponent:r,onSelectToken:n,height:s,itemHeight:p,itemHeightMobile:i,className:c}){let[d,a]=react.useState(),m=react.useMemo(()=>{let h=Object.keys(d??{})[0],w=d?.[h];return {...o,...h&&w?{sortBy:h,sortDirection:w}:void 0}},[o,d]),{tokens:l,isLoading:k}=Vt({chain:e,resolution:t,options:m});return jsxRuntime.jsx(V,{tokens:l,isLoading:k,resolution:t,height:s,itemHeight:p,itemHeightMobile:i,ActionsComponent:r,onSelectToken:n,sortDirections:d,onSortChange:a,className:c})}function Kt({chain:e,resolution:t,options:o,refetchInterval:r=12e3}){let n=react.useMemo(()=>({chain:e,resolution:t,...o}),[e,t,o]),s=react.useRef(n),[p,i]=react.useState(true);react.useEffect(()=>{JSON.stringify(n)!==JSON.stringify(s.current)&&(i(true),s.current=n);},[n]);let[c,d]=react.useState([]),{data:a,isPending:m}=client.useTrendingTokensQuery(n,{refetchInterval:r});react.useEffect(()=>{a&&(d(a),i(false));},[a]);let l=react.useMemo(()=>!!(m||p),[m,p]);return {tokens:c,isLoading:l}}function gl({chain:e,resolution:t,filters:o,ActionsComponent:r,onSelectToken:n,height:s,itemHeight:p,itemHeightMobile:i,className:c}){let[d,a]=react.useState(),m=react.useMemo(()=>{let h=Object.keys(d??{})[0],w=d?.[h];return {...o,...h&&w?{sortBy:h,sortDirection:w}:void 0}},[o,d]),{tokens:l,isLoading:k}=Kt({chain:e,resolution:t,options:m});return jsxRuntime.jsx(V,{tokens:l,isLoading:k,resolution:t,height:s,itemHeight:p,itemHeightMobile:i,ActionsComponent:r,onSelectToken:n,sortDirections:d,onSortChange:a,className:c})}exports.NewTokenListWidget=Ga;exports.SearchTokensButton=Ur;exports.StockTokenListWidget=al;exports.TokenAvatar=De;exports.TokenList=V;exports.TokenListFilter=re;exports.TokenListFilterModal=ei;exports.TokenListFilterPopover=mi;exports.TokenListResolutionSelector=Ti;exports.TrendingTokenListWidget=gl;exports.useNewTokensScript=Dt;exports.useStockTokensScript=Vt;exports.useTrendingTokensScript=Kt;exports.version=_t;//# sourceMappingURL=index.js.map
|
|
21
|
+
`})]})}function it({token:e,renderAction:t,isLast:o=false,onSelectToken:s,className:n}){let{t:r}=i18n.useTranslation(),c=ui.useCopyToClipboard(),a=hooks.useTickAge(e.createdAt),p=react.useCallback(()=>{s?.(e);},[s,e]),l=react.useCallback(u=>{u.stopPropagation(),c(e.address,r("tokens.copied.address"));},[c,e.address,r]),i=react.useMemo(()=>new utils.SafeBigNumber(e.marketData?.top10HoldingsRatio).gte(.1),[e.marketData?.top10HoldingsRatio]),d=react.useMemo(()=>new utils.SafeBigNumber(e.marketData?.devHoldingsRatio).gte(.1),[e.marketData?.devHoldingsRatio]),m=react.useMemo(()=>new utils.SafeBigNumber(e.marketData?.insiderHoldingsRatio).gte(.1),[e.marketData?.insiderHoldingsRatio]),h=react.useMemo(()=>new utils.SafeBigNumber(e.marketData?.sniperHoldingsRatio).gte(.1),[e.marketData?.sniperHoldingsRatio]),x=react.useMemo(()=>new utils.SafeBigNumber(e.marketData?.bundleHoldingsRatio).gte(.1),[e.marketData?.bundleHoldingsRatio]),[b,k]=react.useMemo(()=>{let u=Number(e.stats?.["1h"]?.buys??0),v=Number(e.stats?.["1h"]?.sells??0),w=u+v;if(w===0)return [12,12];let P=Math.round(u/w*24);return [P,24-P]},[e.stats]),f=react.useMemo(()=>{let u=new utils.SafeBigNumber(e.marketData?.marketCapInUsd);return u.lt(1e3)?"text-foreground":u.lt(1e6)?"text-secondary":"text-primary"},[e.marketData?.marketCapInUsd]);return jsxRuntime.jsx("div",{className:ui.clsx("w-full h-full px-3 pt-3 pb-1 overflow-hidden hover:bg-content2 cursor-pointer",!o&&"border-b border-border",n),onClick:s?p:void 0,children:jsxRuntime.jsxs("div",{className:"relative flex justify-between gap-3",children:[jsxRuntime.jsxs("div",{className:"flex-none flex flex-col items-center gap-1",children:[jsxRuntime.jsx(de,{token:e,enableSearch:true,enablePreview:!!e.image,showProgress:true,className:"w-15 h-15"}),jsxRuntime.jsx(ui.StyledTooltip,{content:e.address,closeDelay:0,children:jsxRuntime.jsx("div",{className:"text-xs text-neutral hover:text-primary/50 max-w-18 truncate cursor-pointer",onClick:l,children:utils.shortAddress(e.address,4,4)})})]}),jsxRuntime.jsxs("div",{className:"flex-1 flex flex-col justify-between gap-3 overflow-hidden",children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-1.5",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1 pr-24",children:[jsxRuntime.jsx("span",{className:"flex-none text-base font-semibold whitespace-nowrap overflow-hidden text-ellipsis max-w-20",children:e.symbol}),jsxRuntime.jsx(ui.StyledTooltip,{content:e.name,closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1 min-w-0 text-neutral hover:text-primary/50 cursor-pointer",onClick:l,children:[jsxRuntime.jsx("span",{className:"text-base whitespace-nowrap overflow-hidden text-ellipsis",children:e.name}),jsxRuntime.jsx(ui.CopyIcon,{className:"flex-none w-3.5 h-3.5"})]})})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[jsxRuntime.jsx("span",{className:"text-sm text-primary font-medium",children:utils.formatAge(a)}),e.socialMedias?.twitter&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.twitter,className:"text-neutral hover:text-primary",target:"_blank",onClick:u=>u.stopPropagation(),children:jsxRuntime.jsx(ui.TwitterIcon,{className:"w-4 h-4"})}),e.socialMedias?.telegram&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.telegram,className:"text-neutral hover:text-primary",target:"_blank",onClick:u=>u.stopPropagation(),children:jsxRuntime.jsx(ui.TelegramIcon,{className:"w-4 h-4"})}),e.socialMedias?.website&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.website,className:"text-neutral hover:text-primary",target:"_blank",onClick:u=>u.stopPropagation(),children:jsxRuntime.jsx(ui.WebsiteIcon,{className:"w-4 h-4"})}),jsxRuntime.jsx(ui.Link,{href:utils.searchTwitterUrl(`${e.symbol} OR ${e.address}`),className:"text-neutral hover:text-primary",target:"_blank",onClick:u=>u.stopPropagation(),children:jsxRuntime.jsx(ui.SearchIcon,{className:"w-4 h-4"})}),jsxRuntime.jsx(ui.StyledTooltip,{content:r("tokens.tokenInfo.holders"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-0.5 text-neutral",children:[jsxRuntime.jsx(ui.PeopleIcon,{width:14,height:14}),jsxRuntime.jsx("span",{className:"text-foreground text-xs",children:utils.formatAmount(e.marketData?.holders)})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:r("tokens.tokenInfo.proHolders"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-0.5 text-neutral",children:[jsxRuntime.jsx(ui.KlineCandlesIcon,{width:16,height:16}),jsxRuntime.jsx("span",{className:"text-foreground text-xs",children:utils.formatAmount(e.marketData?.proHolders)})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:r("tokens.tokenInfo.kolHolders"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-0.5 text-neutral",children:[jsxRuntime.jsx(ui.StarIcon,{width:14,height:14}),jsxRuntime.jsx("span",{className:"text-foreground text-xs",children:utils.formatAmount(e.marketData?.kolHolders)})]})})]})]}),jsxRuntime.jsxs("div",{className:"relative flex items-center gap-1.5 flex-wrap",children:[jsxRuntime.jsx(Z,{icon:jsxRuntime.jsx(ui.UserWithStarBadgeIcon,{width:12,height:12}),value:utils.formatPercent(e.marketData?.top10HoldingsRatio),tooltip:r("tokens.tokenInfo.top10HoldingsRatio"),warning:i}),jsxRuntime.jsx(Z,{icon:jsxRuntime.jsx(ui.CookIcon,{width:12,height:12}),value:utils.formatPercent(e.marketData?.devHoldingsRatio),tooltip:r("tokens.tokenInfo.devHoldingsRatio"),warning:d}),jsxRuntime.jsx(Z,{icon:jsxRuntime.jsx(ui.RatIcon,{width:12,height:12}),value:utils.formatPercent(e.marketData?.insiderHoldingsRatio),tooltip:r("tokens.tokenInfo.insiderHoldingsRatio"),warning:m}),jsxRuntime.jsx(Z,{icon:jsxRuntime.jsx(ui.SniperIcon,{width:12,height:12}),value:utils.formatPercent(e.marketData?.sniperHoldingsRatio),tooltip:r("tokens.tokenInfo.sniperHoldingsRatio"),warning:h}),jsxRuntime.jsx(Z,{icon:jsxRuntime.jsx(ui.BundlesIcon,{width:12,height:12}),value:utils.formatPercent(e.marketData?.bundleHoldingsRatio),tooltip:r("tokens.tokenInfo.bundleHoldingsRatio"),warning:x}),t?.(e)]})]}),jsxRuntime.jsxs("div",{className:"absolute top-0 right-0 flex flex-col gap-2 items-end",children:[jsxRuntime.jsxs("div",{className:"flex items-end gap-1",children:[jsxRuntime.jsx("span",{className:"text-xs leading-none text-neutral",children:r("tokens.listHeader.marketCap")}),jsxRuntime.jsx("span",{className:ui.clsx("text-base font-medium leading-none",f),children:utils.formatAmountUSD3(e.marketData?.marketCapInUsd)})]}),jsxRuntime.jsxs("div",{className:"flex items-end gap-1",children:[jsxRuntime.jsx("span",{className:"text-xs leading-none text-neutral",children:r("tokens.pulse.vol")}),jsxRuntime.jsx("span",{className:"text-base font-medium leading-none text-foreground",children:utils.formatAmountUSD3(e.stats?.["1h"]?.volumesInUsd)})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{className:"text-xs leading-none text-neutral",children:r("tokens.pulse.txs")}),jsxRuntime.jsx("span",{className:"text-xs leading-none text-foreground",children:utils.formatAmount(e.stats?.["1h"]?.trades)})]}),jsxRuntime.jsxs("div",{className:"flex rounded-full overflow-hidden",children:[jsxRuntime.jsx("div",{className:"h-1 bg-bullish",style:{width:`${b}px`}}),jsxRuntime.jsx("div",{className:"h-1 bg-bearish",style:{width:`${k}px`}})]})]})]})]})})}function Z({icon:e,value:t,tooltip:o,warning:s}){return jsxRuntime.jsx(ui.StyledTooltip,{content:o,closeDelay:0,children:jsxRuntime.jsxs("div",{className:ui.clsx("px-2 py-0.5 flex items-center gap-1 bg-background rounded-full text-xs",s?"text-danger-500":"text-primary"),children:[e,jsxRuntime.jsx("span",{children:t})]})})}var Ts=124,dt=10;function xs({index:e,style:t,data:o,skeletonCount:s,renderItemAction:n,onSelectToken:r}){return o?jsxRuntime.jsx("div",{style:t,children:jsxRuntime.jsx(it,{token:o[e],isLast:e===o.length-1,renderAction:n,onSelectToken:r})}):jsxRuntime.jsx("div",{style:t,children:jsxRuntime.jsx(Ze,{isLast:e===s-1})})}function J({title:e,tokens:t,isLoading:o,itemHeight:s=Ts,renderHeaderExtra:n,renderItemAction:r,onSelectToken:c,onPauseChange:a,className:p}){let l=o||!t?void 0:t,i=l?l.length:dt,d=react.useMemo(()=>({data:l,skeletonCount:dt,renderItemAction:r,onSelectToken:c}),[l,r,c]),[m,h]=react.useState(false),x=react.useCallback(()=>{h(true),a?.(true);},[a]),b=react.useCallback(()=>{h(false),a?.(false);},[a]);return jsxRuntime.jsxs("div",{className:ui.clsx("w-full h-full bg-content1 overflow-hidden flex flex-col border border-border rounded-lg",p),onMouseEnter:x,onMouseLeave:b,children:[jsxRuntime.jsx(Xe,{title:e,isPaused:m,extra:n}),jsxRuntime.jsx("div",{className:"flex-1 w-full overflow-hidden",children:jsxRuntime.jsx(ui.List,{className:"h-full w-full",rowCount:i,rowHeight:s,rowComponent:xs,rowProps:d,overscanCount:5})})]})}function ct(e,t){let o={...e};for(let s of Object.keys(t))t[s]!==void 0&&(o[s]=t[s]);return o}var vs=["1m","5m","15m","30m","1h","4h","24h"];function B(e,t){if(!t)return e;if(!e)return t;let o={...e};for(let s of vs)t[s]&&(o[s]=e[s]?ct(e[s],t[s]):t[s]);return o}function W(e,t){return t?e?ct(e,t):t:e}var Cs=80;function Ss(e){return {chain:e.chain,address:e.address,name:e.name??"",symbol:e.symbol??"",decimals:e.decimals??0,image:e.image,description:e.description,socialMedias:e.socialMedias,launchedFrom:e.launchedFrom,migratedTo:e.migratedTo,createdAt:e.createdAt}}function kt(e){return e.sort((t,o)=>{let s=t.createdAt?.getTime()??0;return (o.createdAt?.getTime()??0)-s}),e.slice(0,Cs)}function ht({chain:e,isPaused:t=false,refetchInterval:o=1e4}){let s=react.useMemo(()=>({chain:e}),[e]),n=react.useRef(t);n.current=t;let r=react.useRef(e),[c,a]=react.useState(true);react.useEffect(()=>{e!==r.current&&(a(true),r.current=e);},[e]);let[p,l]=react.useState([]),{data:i,isPending:d}=client.useNewTokensQuery(s,{refetchInterval:o});react.useEffect(()=>{i&&(l(k=>{let f=n.current,u=[...k];for(let v of i){let w=u.findIndex(P=>P.address===v.address);w>=0?u[w]={...u[w],...v,marketData:W(u[w].marketData,v.marketData),stats:B(u[w].stats,v.stats)}:f||u.push(v);}return f?u:kt(u)}),a(false));},[i]);let m=react.useCallback(k=>{n.current||l(f=>{let u=[...f];for(let v of k)u.some(P=>P.address===v.address)||u.push(Ss(v));return kt(u)});},[]);client.useNewTokensSubscription({chain:e},m);let h=react.useCallback(k=>{l(f=>{let u=[...f],v=false;for(let w of k){let P=u.findIndex(Ne=>Ne.address===w.address);P>=0&&(v=true,u[P]={...u[P],name:w.name??u[P].name,symbol:w.symbol??u[P].symbol,decimals:w.decimals??u[P].decimals,image:w.image??u[P].image,description:w.description??u[P].description,socialMedias:w.socialMedias??u[P].socialMedias,launchedFrom:w.launchedFrom??u[P].launchedFrom,migratedTo:w.migratedTo??u[P].migratedTo,createdAt:w.createdAt??u[P].createdAt});}return v?u:f});},[]);client.useNewTokensBasicSubscription({chain:e},h);let x=react.useCallback(k=>{l(f=>{let u=[...f],v=false;for(let w of k){let P=u.findIndex(Ne=>Ne.address===w.address);P>=0&&(v=true,u[P]={...u[P],stats:B(u[P].stats,w.stats),marketData:W(u[P].marketData,w.marketData)});}return v?u:f});},[]);client.useNewTokensDataSubscription({chain:e},x);let b=react.useMemo(()=>d||c,[d,c]);return {tokens:p,isLoading:b}}function bi({chain:e,title:t,renderHeaderExtra:o,renderItemAction:s,onSelectToken:n,className:r}){let[c,a]=react.useState(false),{tokens:p,isLoading:l}=ht({chain:e,isPaused:c}),i=react.useCallback(d=>{a(d);},[]);return jsxRuntime.jsx(J,{title:t,tokens:p,isLoading:l,renderHeaderExtra:o,renderItemAction:s,onSelectToken:n,onPauseChange:i,className:r})}function vt({chain:e,isPaused:t=false,refetchInterval:o=3e4}){let s=react.useMemo(()=>({chain:e}),[e]),n=react.useRef(t);n.current=t;let r=react.useRef(e),[c,a]=react.useState(true);react.useEffect(()=>{e!==r.current&&(a(true),r.current=e);},[e]);let[p,l]=react.useState([]),{data:i,isPending:d}=client.useMigratedTokensQuery(s,{refetchInterval:o});react.useEffect(()=>{i&&(l(x=>{let b=n.current,k=[...x];for(let f of i){let u=k.findIndex(v=>v.address===f.address);u>=0?k[u]={...k[u],...f,marketData:W(k[u].marketData,f.marketData),stats:B(k[u].stats,f.stats)}:b||k.unshift(f);}return k}),a(false));},[i]);let m=react.useCallback(x=>{l(b=>{let k=[...b],f=false;for(let u of x){let v=k.findIndex(w=>w.address===u.address);v>=0&&(f=true,k[v]={...k[v],stats:B(k[v].stats,u.stats),marketData:W(k[v].marketData,u.marketData)});}return f?k:b});},[]);client.useMigratedTokensDataSubscription({chain:e},m);let h=react.useMemo(()=>d||c,[d,c]);return {tokens:p,isLoading:h}}function Mi({chain:e,title:t,renderHeaderExtra:o,renderItemAction:s,onSelectToken:n,className:r}){let[c,a]=react.useState(false),{tokens:p,isLoading:l}=vt({chain:e,isPaused:c}),i=react.useCallback(d=>{a(d);},[]);return jsxRuntime.jsx(J,{title:t,tokens:p,isLoading:l,renderHeaderExtra:o,renderItemAction:s,onSelectToken:n,onPauseChange:i,className:r})}function Ws(e){return e.sort((t,o)=>{let s=Number(t.migrateProgress??0);return Number(o.migrateProgress??0)-s})}function Ct({chain:e,isPaused:t=false,refetchInterval:o=15e3}){let s=react.useMemo(()=>({chain:e}),[e]),n=react.useRef(t);n.current=t;let r=react.useRef(e),[c,a]=react.useState(true);react.useEffect(()=>{e!==r.current&&(a(true),r.current=e);},[e]);let[p,l]=react.useState([]),{data:i,isPending:d}=client.useFinalStretchTokensQuery(s,{refetchInterval:o});react.useEffect(()=>{i&&(l(x=>{let b=n.current,k=[...x];for(let f of i){let u=k.findIndex(v=>v.address===f.address);u>=0?k[u]={...k[u],...f,marketData:W(k[u].marketData,f.marketData),stats:B(k[u].stats,f.stats)}:b||k.push(f);}return b?k:Ws(k)}),a(false));},[i]);let m=react.useCallback(x=>{l(b=>{let k=[...b],f=false;for(let u of x){let v=k.findIndex(w=>w.address===u.address);v>=0&&(f=true,k[v]={...k[v],stats:B(k[v].stats,u.stats),marketData:W(k[v].marketData,u.marketData)});}return f?k:b});},[]);client.useFinalStretchTokensDataSubscription({chain:e},m);let h=react.useMemo(()=>d||c,[d,c]);return {tokens:p,isLoading:h}}function Ki({chain:e,title:t,renderHeaderExtra:o,renderItemAction:s,onSelectToken:n,className:r}){let[c,a]=react.useState(false),{tokens:p,isLoading:l}=Ct({chain:e,isPaused:c}),i=react.useCallback(d=>{a(d);},[]);return jsxRuntime.jsx(J,{title:t,tokens:p,isLoading:l,renderHeaderExtra:o,renderItemAction:s,onSelectToken:n,onPauseChange:i,className:r})}function dl({onSearch:e,onCancel:t}){let{t:o}=i18n.useTranslation(),{isDesktop:s,isMobile:n}=ui.useScreen(),{onOpen:r,onClose:c}=uiScaffold.useAsyncModal("search_tokens"),a=react.useCallback(()=>{e?e():r();},[e,r]),p=react.useCallback(()=>{t?t():c();},[t,c]);return react.useEffect(()=>{let l=i=>{let d=document.activeElement,m=!!d&&(d.tagName==="INPUT"||d.tagName==="TEXTAREA"||d.getAttribute("contenteditable")==="true");i.key==="/"&&!m&&(i.preventDefault(),a()),i.key==="Escape"&&(i.preventDefault(),p());};return window.addEventListener("keydown",l),()=>{window.removeEventListener("keydown",l);}},[a,p]),jsxRuntime.jsx(ui.StyledButton,{size:"sm",radius:"full",isIconOnly:!s,onPress:a,variant:n?"flat":"bordered",startContent:s?jsxRuntime.jsx(ui.SearchIcon,{}):void 0,endContent:s?jsxRuntime.jsx(ui.Kbd,{className:"min-w-6 justify-center text-xs bg-transparent border border-border rounded-full",children:"/"}):void 0,className:ui.clsx(s&&"pl-3 pr-1.5 text-neutral"),children:s?o("tokens.search.placeholder"):jsxRuntime.jsx(ui.SearchIcon,{})})}function Mt({keywords:e,excludeKeywords:t,onKeywordsChange:o,onExcludeKeywordsChange:s,className:n}){let{t:r}=i18n.useTranslation(),[c,a]=react.useState(e?.join(", ")??""),[p,l]=react.useState(t?.join(", ")??"");react.useEffect(()=>{a(m=>{let h=ue(m);return h===void 0&&e===void 0?m:h===void 0?e?.join(", ")??"":e===void 0?"":h.join("")===e.join("")?m:e.join(", ")});},[e]),react.useEffect(()=>{l(m=>{let h=ue(m);return h===void 0&&t===void 0?m:h===void 0?t?.join(", ")??"":t===void 0?"":h.join("")===t.join("")?m:t.join(", ")});},[t]);let i=react.useCallback(m=>{a(m),o?.(ue(m));},[o]),d=react.useCallback(m=>{l(m),s?.(ue(m));},[s]);return jsxRuntime.jsxs("div",{className:ui.clsx("grid grid-cols-2 gap-3 px-4",n),children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-3",children:[jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:r("tokens.filters.keywords.title")}),jsxRuntime.jsx(ui.StyledInput,{variant:"bordered",radius:"lg",size:"sm",placeholder:r("tokens.filters.keywords.placeholder"),value:c,onValueChange:i})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-3",children:[jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:r("tokens.filters.keywords.exclude.title")}),jsxRuntime.jsx(ui.StyledInput,{variant:"bordered",radius:"lg",size:"sm",placeholder:r("tokens.filters.keywords.placeholder"),value:p,onValueChange:d})]})]})}function ue(e){let t=e.split(",").map(o=>o.trim()).filter(Boolean);return t.length>0?t:void 0}function Bt({protocols:e,selectedProtocols:t=[],onSelectedProtocolsChange:o,className:s}){let{t:n}=i18n.useTranslation(),[r,c]=react.useState(t);react.useEffect(()=>{c(t);},[t]);let a=react.useMemo(()=>e.every(i=>r.includes(i)),[e,r]),p=react.useCallback(()=>{if(a){let i=[];c(i),o?.(i);}else {let i=[...e];c(i),o?.(i);}},[e,o,a]),l=react.useCallback(i=>()=>{if(r.includes(i)){let d=r.filter(m=>m!==i);c(d),o?.(d);}else {let d=[...r,i];c(d),o?.(d);}},[r,o]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-3 px-4",s),children:[jsxRuntime.jsxs("div",{className:"flex justify-between items-center",children:[jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:n("tokens.filters.protocols.title")}),jsxRuntime.jsx(ui.StyledButton,{variant:"light",color:"content3",size:"xs",radius:"full",onPress:p,children:n(a?"tokens.filters.protocols.unselectAll":"tokens.filters.protocols.selectAll")})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-3 gap-3",children:e.map(i=>jsxRuntime.jsx(ui.StyledButton,{variant:"bordered",size:"xs",radius:"full",className:ui.clsx("w-fit",`text-${i}`,`bg-${i}/5`,`border border-${i}`,{"opacity-40 data-[hover=true]:!opacity-30":!r.includes(i)}),startContent:jsxRuntime.jsx(ui.Image,{width:14,height:14,src:`/images/protocols/${i}.svg`,alt:utils.formatTokenProtocolName(i)}),onPress:l(i),children:utils.formatTokenProtocolName(i)},i))})]})}function H({title:e,field:t,value:o,onChange:s}){let{t:n}=i18n.useTranslation(),[r,c]=react.useState(o?De(o).min:NaN),[a,p]=react.useState(o?De(o).max:NaN);react.useEffect(()=>{if(o===void 0)c(NaN),p(NaN);else {let{min:d,max:m}=De(o);c(d),p(m);}},[o]);let l=react.useCallback(d=>{c(d),s?.(_t(t,d,a));},[t,s,a]),i=react.useCallback(d=>{p(d),s?.(_t(t,r,d));},[t,s,r]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1",children:[e&&jsxRuntime.jsx("h3",{className:"text-xs text-neutral",children:e}),jsxRuntime.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[jsxRuntime.jsx(ui.StyledNumberInput,{value:r,onValueChange:l,variant:"bordered",radius:"lg",size:"sm",placeholder:n("tokens.filters.stats.min"),"aria-label":`${e} min`}),jsxRuntime.jsx(ui.StyledNumberInput,{value:a,onValueChange:i,variant:"bordered",radius:"lg",size:"sm",placeholder:n("tokens.filters.stats.max"),"aria-label":`${e} max`})]})]})}function De(e){if(e.operator==="between"){let[t,o]=e.value;return {min:t,max:o}}return e.operator==="gte"?{min:e.value,max:NaN}:e.operator==="lte"?{min:NaN,max:e.value}:{min:NaN,max:NaN}}function _t(e,t,o){if(!(isNaN(t)&&isNaN(o)))return isNaN(t)?{field:e,operator:"lte",value:o}:isNaN(o)?{field:e,operator:"gte",value:t}:{field:e,operator:"between",value:[t,o]}}function zt({values:e,onValuesChange:t,className:o}){let{t:s}=i18n.useTranslation(),[n,r]=react.useState(e);react.useEffect(()=>{r(e);},[e]);let c=react.useCallback(a=>p=>{if(p===void 0){let l=(n??[]).filter(i=>i.field!==a);l=l.length>0?l:void 0,r(l),t?.(l);}else {let l=[...(n??[]).filter(i=>i.field!==a),p];r(l),t?.(l);}},[n,t]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-4",o),children:[jsxRuntime.jsx(H,{field:"holders",title:s("tokens.filters.stats.audits.holders"),value:n?.find(a=>a.field==="holders"),onChange:c("holders")}),jsxRuntime.jsx(H,{field:"top10Ratio",title:s("tokens.filters.stats.audits.top10HoldingsRatio"),value:n?.find(a=>a.field==="top10Ratio"),onChange:c("top10Ratio")}),jsxRuntime.jsx(H,{field:"top100Ratio",title:s("tokens.filters.stats.audits.top100HoldingsRatio"),value:n?.find(a=>a.field==="top100Ratio"),onChange:c("top100Ratio")}),jsxRuntime.jsx(H,{field:"creatorsRatio",title:s("tokens.filters.stats.audits.devHoldingsRatio"),value:n?.find(a=>a.field==="creatorsRatio"),onChange:c("creatorsRatio")})]})}function jt({resolution:e,values:t,onValuesChange:o,className:s}){let{t:n}=i18n.useTranslation(),[r,c]=react.useState(t);react.useEffect(()=>{c(t);},[t]);let a=react.useCallback(p=>l=>{if(l===void 0){let i=(r??[]).filter(d=>d.field!==p);i=i.length>0?i:void 0,c(i),o?.(i);}else {let i=[...(r??[]).filter(d=>d.field!==p),l];c(i),o?.(i);}},[r,o]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-4",s),children:[jsxRuntime.jsx(H,{field:"marketCap",title:n("tokens.filters.stats.metrics.marketCap"),value:r?.find(p=>p.field==="marketCap"),onChange:a("marketCap")}),jsxRuntime.jsx(H,{field:"tvl",title:n("tokens.filters.stats.metrics.liquidity"),value:r?.find(p=>p.field==="tvl"),onChange:a("tvl")}),jsxRuntime.jsx(H,{field:`volumes${e}`,title:n("tokens.filters.stats.metrics.volumes",{resolution:n(`common.resolution.${e}`)}),value:r?.find(p=>p.field===`volumes${e}`),onChange:a(`volumes${e}`)}),jsxRuntime.jsx(H,{field:`trades${e}`,title:n("tokens.filters.stats.metrics.txns",{resolution:n(`common.resolution.${e}`)}),value:r?.find(p=>p.field===`trades${e}`),onChange:a(`trades${e}`)})]})}function Yt({resolution:e,values:t,onValuesChange:o,className:s}){let{t:n}=i18n.useTranslation(),[r,c]=react.useState("audits"),[a,p]=react.useState(t);react.useEffect(()=>{p(t);},[t]);let l=react.useCallback(m=>{p(m),o?.(m);},[o]),i=react.useMemo(()=>{let m=["holders","top10Ratio","top100Ratio","creatorsRatio"];return a?.filter(h=>m.includes(h.field))?.length??0},[a]),d=react.useMemo(()=>{let m=["marketCap","tvl",`volumes${e}`,`trades${e}`];return a?.filter(h=>m.includes(h.field)).length??0},[a,e]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-3 px-4",s),children:[jsxRuntime.jsxs(ui.StyledTabs,{variant:"light",radius:"full",size:"sm",selectedKey:r,onSelectionChange:c,children:[jsxRuntime.jsx(ui.Tab,{title:i===0?n("tokens.filters.stats.audits"):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:i,shape:"circle",children:n("tokens.filters.stats.audits")})},"audits"),jsxRuntime.jsx(ui.Tab,{title:d===0?n("tokens.filters.stats.metrics"):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:d,shape:"circle",children:n("tokens.filters.stats.metrics")})},"metrics")]}),jsxRuntime.jsx(zt,{values:a,onValuesChange:l,className:ui.clsx({hidden:r!=="audits"})}),jsxRuntime.jsx(jt,{values:a,onValuesChange:l,resolution:e,className:ui.clsx({hidden:r!=="metrics"})})]})}function ve({protocols:e,resolution:t,filters:o,onFiltersChange:s,className:n}){let[r,c]=react.useState(eo(o?.filters,e));react.useEffect(()=>{c(eo(o?.filters,e));},[o?.filters,e]);let[a,p]=react.useState(o?.keywords);react.useEffect(()=>{p(o?.keywords);},[o?.keywords]);let[l,i]=react.useState(o?.excludeKeywords);react.useEffect(()=>{i(o?.excludeKeywords);},[o?.excludeKeywords]);let[d,m]=react.useState(o?.filters);react.useEffect(()=>{m(o?.filters);},[o?.filters]);let h=react.useCallback(f=>{c(f),s?.(ye(e,f,a,l,d));},[e,a,l,d,s]),x=react.useCallback(f=>{p(f),s?.(ye(e,r,f,l,d));},[e,r,l,d,s]),b=react.useCallback(f=>{i(f),s?.(ye(e,r,a,f,d));},[e,r,a,d,s]),k=react.useCallback(f=>{m(f),s?.(ye(e,r,a,l,f));},[e,r,a,l,s]);return jsxRuntime.jsxs("div",{className:ui.clsx("flex flex-col gap-4",n),children:[e&&e.length>0&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(Bt,{protocols:e,selectedProtocols:r,onSelectedProtocolsChange:h}),jsxRuntime.jsx(ui.StyledDivider,{})]}),jsxRuntime.jsx(Mt,{keywords:a,excludeKeywords:l,onKeywordsChange:x,onExcludeKeywordsChange:b}),jsxRuntime.jsx(ui.StyledDivider,{}),jsxRuntime.jsx(Yt,{resolution:t,values:d,onValuesChange:k})]})}function eo(e,t){let o=e?.find(s=>s.field==="launchedFromProtocolFamily");return o?o.operator==="in"?o.value:(console.warn("invalid token protocols filter",o),[...t||[]]):[...t||[]]}function ye(e,t,o,s,n){let r=n?[...n.filter(c=>c.field!=="launchedFromProtocolFamily")]:[];return e&&e.length>0&&(e.every(a=>t.includes(a))||r.push({field:"launchedFromProtocolFamily",operator:"in",value:t})),o===void 0&&s===void 0&&r.length===0?void 0:{keywords:o,excludeKeywords:s,filters:r.length>0?r:void 0}}function md({protocols:e,resolution:t,filters:o,onFiltersChange:s}){let{t:n}=i18n.useTranslation(),{isOpen:r,onOpen:c,onClose:a,onOpenChange:p}=ui.useDisclosure(),[l,i]=react.useState(o),d=react.useCallback(()=>{i(void 0);},[]),m=react.useCallback(()=>{s?.(l),a();},[l,s,a]);react.useEffect(()=>{i(o);},[r,o]);let h=react.useMemo(()=>Object.values(o||{}).every(x=>x===void 0),[o]);return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.StyledButton,{color:"content2",size:"sm",radius:"full",className:"font-bold text-sm",startContent:h?jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"}):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:"",shape:"circle",children:jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"})}),endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"data-[open=true]:-rotate-180 transition-transform flex-none","data-open":r}),onPress:c,children:n("tokens.listHeader.filter")}),jsxRuntime.jsx(ui.StyledModal,{isOpen:r,onOpenChange:p,size:"md",scrollBehavior:"inside",children:jsxRuntime.jsxs(ui.ModalContent,{children:[jsxRuntime.jsx(ui.ModalHeader,{children:n("tokens.filters.modal.title")}),jsxRuntime.jsx(ui.ModalBody,{children:jsxRuntime.jsx(ui.ScrollShadow,{children:jsxRuntime.jsx(ve,{protocols:e,resolution:t,filters:l,onFiltersChange:i,className:"pb-4"})})}),jsxRuntime.jsx(ui.ModalFooter,{children:jsxRuntime.jsxs("div",{className:"w-full px-4 flex justify-between items-center",children:[jsxRuntime.jsx(ui.StyledButton,{color:"transparent",size:"xs",radius:"full",startContent:jsxRuntime.jsx(ui.RefreshIcon,{width:16,height:16}),onPress:d,children:n("common.reset")}),jsxRuntime.jsx(ui.StyledButton,{color:"primary",size:"sm",radius:"full",onPress:m,children:n("common.apply")})]})})]})})]})}function vd({protocols:e,resolution:t,filters:o,onFiltersChange:s,...n}){let{t:r}=i18n.useTranslation(),{isOpen:c,onClose:a,onOpenChange:p}=ui.useDisclosure(),[l,i]=react.useState(o),d=react.useCallback(()=>{i(void 0);},[]),m=react.useCallback(()=>{s?.(l),a();},[l,s,a]);react.useEffect(()=>{i(o);},[c,o]);let h=react.useMemo(()=>Object.values(o||{}).every(x=>x===void 0),[o]);return jsxRuntime.jsxs(ui.StyledPopover,{...n,isOpen:c,onOpenChange:p,children:[jsxRuntime.jsx(ui.PopoverTrigger,{children:jsxRuntime.jsx(ui.StyledButton,{color:"content2",size:"sm",radius:"full",className:"font-bold text-sm",startContent:h?jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"}):jsxRuntime.jsx(ui.StyledBadge,{color:"primary",size:"sm",content:"",shape:"circle",children:jsxRuntime.jsx(ui.FilterIcon,{width:16,height:16,className:"flex-none"})}),endContent:jsxRuntime.jsx(ui.ChevronDownIcon,{width:16,height:16,className:"data-[open=true]:-rotate-180 transition-transform flex-none","data-open":c}),children:r("tokens.listHeader.filter")})}),jsxRuntime.jsx(ui.PopoverContent,{children:jsxRuntime.jsxs("div",{className:"w-md py-4 px-0 flex flex-col gap-4",children:[jsxRuntime.jsx(ui.ScrollShadow,{className:"w-full max-h-120",children:jsxRuntime.jsx(ve,{protocols:e,resolution:t,filters:l,onFiltersChange:i})}),jsxRuntime.jsx(ui.StyledDivider,{}),jsxRuntime.jsxs("div",{className:"w-full px-4 flex justify-between items-center",children:[jsxRuntime.jsx(ui.StyledButton,{color:"transparent",size:"xs",radius:"full",startContent:jsxRuntime.jsx(ui.RefreshIcon,{width:16,height:16}),onPress:d,children:r("common.reset")}),jsxRuntime.jsx(ui.StyledButton,{color:"primary",size:"sm",radius:"full",onPress:m,children:r("common.apply")})]})]})})]})}function Ld({resolution:e,onResolutionChange:t,resolutionOptions:o=["1m","5m","1h","4h","24h"]}){let{t:s}=i18n.useTranslation(),n=react.useCallback(r=>{t?.(r);},[t]);return jsxRuntime.jsx(ui.StyledTabs,{variant:"primaryPlain",radius:"lg",selectedKey:e,onSelectionChange:n,"aria-label":"Select Resolution",children:o.map(r=>jsxRuntime.jsx(ui.Tab,{title:s(`common.resolution.${r}`)},r))})}function lo({token:e}){let{t}=i18n.useTranslation(),o=react.useMemo(()=>e.marketData?.bluechipHoldingsRatio,[e.marketData?.bluechipHoldingsRatio]),s=react.useMemo(()=>o!==void 0&&new utils.SafeBigNumber(o).gte(.1),[o]),n=react.useMemo(()=>o===void 0||new utils.SafeBigNumber(o).lt(.05),[o]);return jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.bluechip.explained"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-2.5",children:[s&&jsxRuntime.jsx(ui.HorsePowerHighIcon,{}),n&&jsxRuntime.jsx(ui.HorsePowerLowIcon,{}),!s&&!n&&jsxRuntime.jsx(ui.HorsePowerIcon,{}),jsxRuntime.jsx("span",{className:ui.clsx(s&&"text-bullish",!s&&!n&&"text-bearish",o===void 0&&"text-neutral"),children:utils.formatPercent(o)})]})})}function co({token:e}){let t=ui.useCopyToClipboard(),{t:o}=i18n.useTranslation(),s=react.useCallback(r=>{r.preventDefault(),r.stopPropagation(),t(e.address,o("tokens.copied.address"));},[t,e.address,o]),n=hooks.useTickAge(e.createdAt);return jsxRuntime.jsxs("div",{className:"w-full flex justify-start items-center gap-3",children:[jsxRuntime.jsx(de,{token:e,className:"w-10 h-10 sm:w-16 sm:h-16 flex-none"}),jsxRuntime.jsxs("div",{className:"flex-auto flex flex-col gap-1 min-w-0",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("span",{className:"flex-none font-medium tracking-[-0.02em]",children:e.symbol}),jsxRuntime.jsx(ui.StyledTooltip,{content:e.name,closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-initial flex items-center gap-1 min-w-0 text-neutral hover:text-primary-200 cursor-pointer",onClick:s,children:[jsxRuntime.jsx("div",{className:"flex-initial whitespace-nowrap truncate",children:e.name}),jsxRuntime.jsx(ui.CopyIcon,{className:"flex-none w-3 h-3 sm:w-3.5 sm:h-3.5"})]})})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("span",{className:"text-primary text-xs sm:text-sm font-medium",children:utils.formatAge(n)}),e.socialMedias?.website&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.website,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.WebsiteIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),e.socialMedias?.twitter&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.twitter,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.TwitterIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),e.socialMedias?.telegram&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.telegram,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.TelegramIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),e.socialMedias?.discord&&jsxRuntime.jsx(ui.Link,{href:e.socialMedias.discord,className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.DiscordIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})}),jsxRuntime.jsx(ui.Link,{href:utils.searchTwitterUrl(`${e.symbol} OR ${e.address}`),className:"text-neutral hover:text-primary",target:"_blank",children:jsxRuntime.jsx(ui.SearchIcon,{className:"w-3.5 h-3.5 sm:w-4 sm:h-4"})})]})]})]})}function mo({token:e}){let{t}=i18n.useTranslation(),o=react.useMemo(()=>e.marketData?.holders,[e.marketData?.holders]),s=react.useMemo(()=>e.marketData?.proHolders,[e.marketData?.proHolders]),n=react.useMemo(()=>e.marketData?.kolHolders,[e.marketData?.kolHolders]),r=react.useMemo(()=>e.marketData?.devHoldingsRatio,[e.marketData?.devHoldingsRatio]),c=react.useMemo(()=>new utils.SafeBigNumber(r).gte(.1),[r]),a=react.useMemo(()=>e.marketData?.top10HoldingsRatio,[e.marketData?.top10HoldingsRatio]),p=react.useMemo(()=>new utils.SafeBigNumber(a).gte(.1),[a]),l=react.useMemo(()=>e.marketData?.sniperHoldingsRatio,[e.marketData?.sniperHoldingsRatio]),i=react.useMemo(()=>new utils.SafeBigNumber(l).gte(.1),[l]),d=react.useMemo(()=>e.marketData?.insiderHoldingsRatio,[e.marketData?.insiderHoldingsRatio]),m=react.useMemo(()=>new utils.SafeBigNumber(d).gte(.1),[d]),h=react.useMemo(()=>e.marketData?.bundleHoldingsRatio,[e.marketData?.bundleHoldingsRatio]),x=react.useMemo(()=>new utils.SafeBigNumber(h).gte(.1),[h]);return jsxRuntime.jsxs("div",{className:"w-full h-full flex gap-2 justify-start items-center",children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.holders"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.PeopleIcon,{width:14,height:14}),variant:"flat",size:"sm",color:o?"primary":"default",children:utils.formatAmount(o)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.proHolders"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.KlineCandlesIcon,{width:16,height:16}),variant:"flat",size:"sm",color:s?"primary":"default",children:utils.formatAmount(s)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.kolHolders"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.StarIcon,{width:14,height:14}),variant:"flat",size:"sm",color:n?"primary":"default",children:utils.formatAmount(n)})})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.top10HoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.UserWithStarBadgeIcon,{width:14,height:14}),variant:"flat",size:"sm",color:p?"danger":a===void 0?"default":"primary",children:utils.formatPercent(a)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.devHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.CookIcon,{width:13,height:13}),variant:"flat",size:"sm",color:c?"danger":r===void 0?"default":"primary",children:utils.formatPercent(r)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.sniperHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.SniperIcon,{width:13,height:13}),variant:"flat",size:"sm",color:i?"danger":l===void 0?"default":"primary",children:utils.formatPercent(l)})})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.insiderHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.RatIcon,{width:13,height:13}),variant:"flat",size:"sm",color:m?"danger":d===void 0?"default":"primary",children:utils.formatPercent(d)})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("tokens.tokenInfo.bundleHoldingsRatio"),closeDelay:0,children:jsxRuntime.jsx(ui.Chip,{className:"pl-2 pr-1.5 gap-0.5 h-5",startContent:jsxRuntime.jsx(ui.BundlesIcon,{width:13,height:13}),variant:"flat",size:"sm",color:x?"danger":h===void 0?"default":"primary",children:utils.formatPercent(h)})})]})]})}function po({token:e}){let t=react.useMemo(()=>e.marketData?.tvlInUsd,[e.marketData?.tvlInUsd]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:utils.formatAmountUSD(t)})}function uo({token:e}){let t=react.useMemo(()=>e.marketData?.marketCapInUsd,[e.marketData?.marketCapInUsd]);return jsxRuntime.jsx(jsxRuntime.Fragment,{children:utils.formatAmountUSD(t)})}function ho({token:e,resolution:t}){let o=react.useMemo(()=>e.marketData?.priceInUsd,[e]),s=react.useMemo(()=>e.stats?.[t]?.priceChange,[e,t]),n=react.useMemo(()=>s?new utils.SafeBigNumber(s).abs().toString():void 0,[s]),r=react.useMemo(()=>s&&new utils.SafeBigNumber(s).gte(0),[s]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatPriceUSD(o)}),jsxRuntime.jsxs("span",{className:ui.clsx("inline-flex gap-1 items-center text-xs",r?"text-bullish":"text-bearish"),children:[r?jsxRuntime.jsx(ui.TriangleUpIcon,{width:10,height:10}):jsxRuntime.jsx(ui.TriangleDownIcon,{width:10,height:10}),jsxRuntime.jsx("span",{children:utils.formatPercent(n)})]})]})}function To({token:e,resolution:t}){let o=react.useMemo(()=>e.stats?.[t]?.traders,[e.stats?.[t]?.traders]),s=react.useMemo(()=>e.stats?.[t]?.buyers,[e.stats?.[t]?.buyers]),n=react.useMemo(()=>e.stats?.[t]?.sellers,[e.stats?.[t]?.sellers]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatAmount(o)}),jsxRuntime.jsxs("div",{className:"flex gap-1 text-xs",children:[jsxRuntime.jsx("span",{className:"text-bullish",children:utils.formatAmount(s)}),"/",jsxRuntime.jsx("span",{className:"text-bearish",children:utils.formatAmount(n)})]})]})}function yo({token:e,resolution:t}){let o=react.useMemo(()=>e.stats?.[t]?.trades,[e.stats?.[t]?.trades]),s=react.useMemo(()=>e.stats?.[t]?.buys,[e.stats?.[t]?.buys]),n=react.useMemo(()=>e.stats?.[t]?.sells,[e.stats?.[t]?.sells]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatAmount(o)}),jsxRuntime.jsxs("div",{className:"flex gap-1 text-xs",children:[jsxRuntime.jsx("span",{className:"text-bullish",children:utils.formatAmount(s)}),"/",jsxRuntime.jsx("span",{className:"text-bearish",children:utils.formatAmount(n)})]})]})}function bo({token:e,resolution:t}){let o=react.useMemo(()=>e.stats?.[t]?.volumesInUsd,[e.stats?.[t]?.volumesInUsd]),s=react.useMemo(()=>e.stats?.[t]?.buyVolumesInUsd,[e.stats?.[t]?.buyVolumesInUsd]),n=react.useMemo(()=>e.stats?.[t]?.sellVolumesInUsd,[e.stats?.[t]?.sellVolumesInUsd]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("span",{children:utils.formatAmountUSD(o)}),jsxRuntime.jsxs("div",{className:"flex gap-1 text-xs",children:[jsxRuntime.jsx("span",{className:"text-bullish",children:utils.formatAmountUSD(s)}),"/",jsxRuntime.jsx("span",{className:"text-bearish",children:utils.formatAmountUSD(n)})]})]})}var wo=5;function Po({rowHeight:e,hasActions:t}){return jsxRuntime.jsx(jsxRuntime.Fragment,{children:Array.from({length:wo}).map((o,s)=>jsxRuntime.jsx(qn,{rowHeight:e,hasBorderBottom:s!==wo-1,hasActions:t},s))})}function qn({rowHeight:e,hasBorderBottom:t,hasActions:o}){return jsxRuntime.jsxs("div",{className:ui.clsx("relative flex items-center","[&>div]:first:sm:pl-6 [&>div]:last:sm:pr-6",t&&"after:content-[''] after:absolute after:left-0 after:bottom-0",t&&"after:w-full after:h-px after:bg-border/50"),style:{height:`${e}px`},children:[jsxRuntime.jsx(Qn,{}),jsxRuntime.jsx(Jn,{}),jsxRuntime.jsx(Gn,{}),jsxRuntime.jsx(Xn,{}),jsxRuntime.jsx(Yn,{}),jsxRuntime.jsx(Zn,{}),jsxRuntime.jsx(ea,{}),jsxRuntime.jsx(ta,{}),jsxRuntime.jsx(oa,{}),o&&jsxRuntime.jsx(sa,{})]})}function Qn(){return jsxRuntime.jsxs("div",{className:"w-56 sm:w-81 px-3 h-full flex justify-start items-center gap-3",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-10 h-10 sm:w-16 sm:h-16 flex-none rounded-md"}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1",children:[jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-32 sm:w-40 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-3.5 rounded-md"})})]})]})}function Jn(){return jsxRuntime.jsxs("div",{className:"w-23.5 sm:w-36 h-full px-3 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function Gn(){return jsxRuntime.jsx("div",{className:"w-23.5 sm:w-36 h-full px-3 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-18 sm:w-24 h-3 sm:h-4 rounded-md"})})}function Xn(){return jsxRuntime.jsx("div",{className:"w-23.5 sm:w-36 h-full px-3 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-18 sm:w-24 h-3 sm:h-4 rounded-md"})})}function Yn(){return jsxRuntime.jsxs("div",{className:"w-31.5 sm:w-36 h-full px-3 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function Zn(){return jsxRuntime.jsxs("div",{className:"w-31.5 sm:w-36 h-full px-3 py-2 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function ea(){return jsxRuntime.jsxs("div",{className:"w-31.5 sm:w-36 h-full px-3 py-2 flex flex-col gap-1 justify-center items-start",children:[jsxRuntime.jsx("div",{className:"w-10 sm:w-14 h-4 sm:h-6 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 sm:h-4 rounded-md"})}),jsxRuntime.jsx("div",{className:"w-18 sm:w-24 h-4 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-3 rounded-md"})})]})}function ta(){return jsxRuntime.jsx("div",{className:"w-32 sm:w-36 h-full px-3 py-2 flex flex-col gap-1 justify-center items-start",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-26 sm:w-30 h-3 sm:h-4 rounded-md"})})}function oa(){return jsxRuntime.jsxs("div",{className:"w-51 sm:w-56 h-full px-3 py-2 flex gap-1.5 justify-start items-center",children:[jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"})]}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 items-start justify-start",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-5 rounded-full"})]})]})}function sa(){return jsxRuntime.jsx("div",{className:"w-31 sm:w-36 h-full px-3 py-2",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-25 sm:w-30 h-3 sm:h-4 rounded-md"})})}function X({tokens:e,resolution:t="24h",isLoading:o,ActionsComponent:s,onSelectToken:n,sortDirections:r,onSortChange:c,height:a=600,itemHeight:p=88,itemHeightMobile:l=72,className:i}){let{isMobile:d}=ui.useScreen(),{t:m}=i18n.useTranslation(),h=react.useCallback(f=>u=>{u.preventDefault(),u.stopPropagation(),n?.(f);},[n]),[x,b]=react.useState(r??{});react.useEffect(()=>{b(r??{});},[r]);let k=react.useCallback(f=>u=>{let v={[f]:u};b(v),c?.(v);},[c]);return jsxRuntime.jsxs(ui.StyledTable,{isHeaderSticky:true,isVirtualized:true,radius:"lg",className:ui.clsx("h-full mx-auto",i??(s?"max-w-379 sm:max-w-403":"max-w-348 sm:max-w-372")),classNames:{loadingWrapper:"flex-col justify-start items-start",emptyWrapper:"pt-30"},maxTableHeight:a,rowHeight:d?l:p,"aria-label":"Tokens",children:[jsxRuntime.jsx(ui.TableHeader,{children:[jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.token"),width:d?224:320,children:m("tokens.listHeader.token")},"token"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.price"),width:128,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.Sortable,{sort:x.price,onSortChange:k("price"),children:m("tokens.listHeader.price")}),jsxRuntime.jsx("span",{children:"/"}),jsxRuntime.jsx(ui.Sortable,{sort:x[`priceChange${t}`],onSortChange:k(`priceChange${t}`),children:m("tokens.listHeader.priceChange",{resolution:t})})]})},"price"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.marketCap"),width:106,children:jsxRuntime.jsx(ui.Sortable,{sort:x.marketCap,onSortChange:k("marketCap"),children:m("tokens.listHeader.marketCap")})},"marketCap"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.liquidity"),width:106,children:jsxRuntime.jsx(ui.Sortable,{sort:x.tvl,onSortChange:k("tvl"),children:m("tokens.listHeader.liquidity")})},"liquidity"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.volumes",{resolution:t}),width:138,children:jsxRuntime.jsx(ui.Sortable,{sort:x[`volumes${t}`],onSortChange:k(`volumes${t}`),children:m("tokens.listHeader.volumes",{resolution:t})})},"volumes"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.txs",{resolution:t}),width:126,children:jsxRuntime.jsx(ui.Sortable,{sort:x[`trades${t}`],onSortChange:k(`trades${t}`),children:m("tokens.listHeader.txs",{resolution:t})})},"txs"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.traders",{resolution:t}),width:126,children:jsxRuntime.jsx(ui.Sortable,{sort:x[`traders${t}`],onSortChange:k(`traders${t}`),children:m("tokens.listHeader.traders",{resolution:t})})},"traders"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.bluechip"),width:128,children:m("tokens.listHeader.bluechip")},"bluechip"),jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.tokenInfo"),width:308,children:m("tokens.listHeader.tokenInfo")},"tokenInfo"),s?jsxRuntime.jsx(ui.TableColumn,{textValue:m("tokens.listHeader.actions"),width:124,align:"end",children:m("tokens.listHeader.actions")},"actions"):void 0].filter(Boolean)}),jsxRuntime.jsx(ui.TableBody,{items:o?[]:e,isLoading:o,loadingContent:jsxRuntime.jsx(Po,{rowHeight:d?l:p,hasActions:!!s}),emptyContent:jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx(ui.EmptyIcon,{className:"w-10 h-10 mx-auto text-neutral"}),jsxRuntime.jsx("p",{className:"mt-2 text-sm text-neutral text-center",children:m("common.empty")})]}),children:f=>jsxRuntime.jsx(ui.TableRow,{onClick:n?h(f):void 0,children:[jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(co,{token:f,resolution:t})},"token"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(ho,{token:f,resolution:t})},"price"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(uo,{token:f,resolution:t})},"marketCap"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(po,{token:f,resolution:t})},"liquidity"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(bo,{token:f,resolution:t})},"volumes"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(yo,{token:f,resolution:t})},"trades"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(To,{token:f,resolution:t})},"traders"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(lo,{token:f,resolution:t})},"bluechip"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(mo,{token:f,resolution:t})},"tokenInfo"),s?jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(s,{token:f,resolution:t})},"actions"):void 0].filter(Boolean)},f.address)})]})}function Io({chain:e,resolution:t,options:o,refetchInterval:s=12e3}){let n=react.useMemo(()=>({chain:e,resolution:t,...o}),[e,t,o]),r=react.useRef(n),[c,a]=react.useState(true);react.useEffect(()=>{JSON.stringify(n)!==JSON.stringify(r.current)&&(a(true),r.current=n);},[n]);let[p,l]=react.useState([]),{data:i,isPending:d}=client.useNewTokensQuery(n,{refetchInterval:s});react.useEffect(()=>{i&&(l(i),a(false));},[i]);let m=react.useMemo(()=>!!(d||c),[d,c]);return {tokens:p,isLoading:m}}function im({chain:e,resolution:t,filters:o,ActionsComponent:s,onSelectToken:n,height:r,itemHeight:c,itemHeightMobile:a,className:p}){let[l,i]=react.useState(),d=react.useMemo(()=>{let x=Object.keys(l??{})[0],b=l?.[x];return {...o,...x&&b?{sortBy:x,sortDirection:b}:void 0}},[o,l]),{tokens:m,isLoading:h}=Io({chain:e,resolution:t,options:d});return jsxRuntime.jsx(X,{tokens:m,isLoading:h,resolution:t,height:r,itemHeight:c,itemHeightMobile:a,ActionsComponent:s,onSelectToken:n,sortDirections:l,onSortChange:i,className:p})}function Mo({chain:e,resolution:t,options:o,refetchInterval:s=12e3}){let n=react.useMemo(()=>({chain:e,resolution:t,...o}),[e,t,o]),r=react.useRef(n),[c,a]=react.useState(true);react.useEffect(()=>{JSON.stringify(n)!==JSON.stringify(r.current)&&(a(true),r.current=n);},[n]);let[p,l]=react.useState([]),{data:i,isPending:d}=client.useStockTokensQuery(n,{refetchInterval:s});react.useEffect(()=>{i&&(l(i),a(false));},[i]);let m=react.useMemo(()=>!!(d||c),[d,c]);return {tokens:p,isLoading:m}}function Tm({chain:e,resolution:t,filters:o,ActionsComponent:s,onSelectToken:n,height:r,itemHeight:c,itemHeightMobile:a,className:p}){let[l,i]=react.useState(),d=react.useMemo(()=>{let x=Object.keys(l??{})[0],b=l?.[x];return {...o,...x&&b?{sortBy:x,sortDirection:b}:void 0}},[o,l]),{tokens:m,isLoading:h}=Mo({chain:e,resolution:t,options:d});return jsxRuntime.jsx(X,{tokens:m,isLoading:h,resolution:t,height:r,itemHeight:c,itemHeightMobile:a,ActionsComponent:s,onSelectToken:n,sortDirections:l,onSortChange:i,className:p})}function Oo({chain:e,resolution:t,options:o,refetchInterval:s=12e3}){let n=react.useMemo(()=>({chain:e,resolution:t,...o}),[e,t,o]),r=react.useRef(n),[c,a]=react.useState(true);react.useEffect(()=>{JSON.stringify(n)!==JSON.stringify(r.current)&&(a(true),r.current=n);},[n]);let[p,l]=react.useState([]),{data:i,isPending:d}=client.useTrendingTokensQuery(n,{refetchInterval:s});react.useEffect(()=>{i&&(l(i),a(false));},[i]);let m=react.useMemo(()=>!!(d||c),[d,c]);return {tokens:p,isLoading:m}}function Im({chain:e,resolution:t,filters:o,ActionsComponent:s,onSelectToken:n,height:r,itemHeight:c,itemHeightMobile:a,className:p}){let[l,i]=react.useState(),d=react.useMemo(()=>{let x=Object.keys(l??{})[0],b=l?.[x];return {...o,...x&&b?{sortBy:x,sortDirection:b}:void 0}},[o,l]),{tokens:m,isLoading:h}=Oo({chain:e,resolution:t,options:d});return jsxRuntime.jsx(X,{tokens:m,isLoading:h,resolution:t,height:r,itemHeight:c,itemHeightMobile:a,ActionsComponent:s,onSelectToken:n,sortDirections:l,onSortChange:i,className:p})}exports.NewTokenListWidget=im;exports.PulseFinalStretchListWidget=Ki;exports.PulseList=J;exports.PulseListHeader=Xe;exports.PulseListItem=it;exports.PulseListItemSkeleton=Ze;exports.PulseMigratedListWidget=Mi;exports.PulseNewListWidget=bi;exports.SearchTokensButton=dl;exports.StockTokenListWidget=Tm;exports.TokenAvatar=de;exports.TokenList=X;exports.TokenListFilter=ve;exports.TokenListFilterModal=md;exports.TokenListFilterPopover=vd;exports.TokenListResolutionSelector=Ld;exports.TrendingTokenListWidget=Im;exports.useNewTokensScript=Io;exports.usePulseFinalStretchListScript=Ct;exports.usePulseMigratedListScript=vt;exports.usePulseNewListScript=ht;exports.useStockTokensScript=Mo;exports.useTrendingTokensScript=Oo;exports.version=Uo;//# sourceMappingURL=index.js.map
|
|
22
22
|
//# sourceMappingURL=index.js.map
|