@liberfi.io/ui-channels 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +1 -1
- package/dist/client/index.mjs.map +1 -1
- package/dist/index.d.mts +56 -112
- package/dist/index.d.ts +56 -112
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { z } from '@liberfi.io/ui';
|
|
3
3
|
import * as _liberfi_io_types from '@liberfi.io/types';
|
|
4
|
-
import { Channel
|
|
4
|
+
import { Channel, ChannelSource, API, IChannelsClient, Chain, ChannelEvent, Token } from '@liberfi.io/types';
|
|
5
5
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
6
|
-
import { UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
|
|
6
|
+
import { UseQueryOptions, UseInfiniteQueryOptions, InfiniteData, useInfiniteQuery, UseMutationOptions } from '@tanstack/react-query';
|
|
7
7
|
import * as react from 'react';
|
|
8
8
|
import { PropsWithChildren } from 'react';
|
|
9
9
|
|
|
@@ -42,7 +42,7 @@ type BaseFormUIProps = {
|
|
|
42
42
|
declare function BaseFormUI({ isSubmitting, onSubmit, defaultValues, submitLabel, }: BaseFormUIProps): react_jsx_runtime.JSX.Element;
|
|
43
43
|
|
|
44
44
|
type CreateChannelWidgetProps = {
|
|
45
|
-
onSuccess?: (channel: Channel
|
|
45
|
+
onSuccess?: (channel: Channel) => void;
|
|
46
46
|
onError?: (error: unknown) => void;
|
|
47
47
|
};
|
|
48
48
|
declare function CreateChannelWidget({ onSuccess, onError, }: CreateChannelWidgetProps): react_jsx_runtime.JSX.Element;
|
|
@@ -67,7 +67,7 @@ declare function useUpdateBaseForm(id: string): {
|
|
|
67
67
|
type UpdateChannelFormType = "base" | "wallets" | "social";
|
|
68
68
|
interface UpdateChannelFormUIProps {
|
|
69
69
|
/** channel */
|
|
70
|
-
channel: Channel
|
|
70
|
+
channel: Channel;
|
|
71
71
|
/** default form type */
|
|
72
72
|
type?: UpdateChannelFormType;
|
|
73
73
|
/** base form default values */
|
|
@@ -95,7 +95,7 @@ type UpdateChannelWidgetProps = {
|
|
|
95
95
|
};
|
|
96
96
|
declare function UpdateChannelWidget({ id, type, }: UpdateChannelWidgetProps): react_jsx_runtime.JSX.Element;
|
|
97
97
|
|
|
98
|
-
declare function useUpdateWalletsForm(id: string, channel?: Channel
|
|
98
|
+
declare function useUpdateWalletsForm(id: string, channel?: Channel): {
|
|
99
99
|
isLoading: boolean;
|
|
100
100
|
isSubmitting: boolean;
|
|
101
101
|
wallets: _liberfi_io_types.ChannelSource[] | undefined;
|
|
@@ -104,7 +104,7 @@ declare function useUpdateWalletsForm(id: string, channel?: Channel$1): {
|
|
|
104
104
|
|
|
105
105
|
type WalletsFormUIProps = {
|
|
106
106
|
/** channel */
|
|
107
|
-
channel: Channel
|
|
107
|
+
channel: Channel;
|
|
108
108
|
/** already added wallets */
|
|
109
109
|
wallets?: Array<ChannelSource>;
|
|
110
110
|
/** submit wallets (include both already added wallets & new added wallets) */
|
|
@@ -122,15 +122,15 @@ type WalletsListUIProps = {
|
|
|
122
122
|
declare function WalletsListUI({ wallets, onSubmit, isSubmitting, }: WalletsListUIProps): react_jsx_runtime.JSX.Element;
|
|
123
123
|
|
|
124
124
|
type SocialsFormUIProps = {
|
|
125
|
-
channel: Channel
|
|
125
|
+
channel: Channel;
|
|
126
126
|
};
|
|
127
127
|
declare function SocialsFormUI({ channel }: SocialsFormUIProps): react_jsx_runtime.JSX.Element;
|
|
128
128
|
|
|
129
129
|
type ChannelsUIProps = {
|
|
130
|
-
channels: Array<Channel
|
|
131
|
-
onSelect?: (channel: Channel
|
|
132
|
-
customHeaderActions?: (channel: Channel
|
|
133
|
-
customFooterActions?: (channel: Channel
|
|
130
|
+
channels: Array<Channel>;
|
|
131
|
+
onSelect?: (channel: Channel) => void;
|
|
132
|
+
customHeaderActions?: (channel: Channel) => React.ReactNode;
|
|
133
|
+
customFooterActions?: (channel: Channel) => React.ReactNode;
|
|
134
134
|
};
|
|
135
135
|
declare function ChannelsUI({ channels, onSelect, customHeaderActions, customFooterActions, }: ChannelsUIProps): react_jsx_runtime.JSX.Element;
|
|
136
136
|
|
|
@@ -145,74 +145,75 @@ type ChannelsEmptyUIProps = {
|
|
|
145
145
|
declare function ChannelsEmptyUI({ message }: ChannelsEmptyUIProps): react_jsx_runtime.JSX.Element;
|
|
146
146
|
|
|
147
147
|
type TrendingChannelsWidgetProps = {
|
|
148
|
-
onSelect?: (channel: Channel
|
|
149
|
-
customHeaderActions?: (channel: Channel
|
|
150
|
-
customFooterActions?: (channel: Channel
|
|
148
|
+
onSelect?: (channel: Channel) => void;
|
|
149
|
+
customHeaderActions?: (channel: Channel) => React.ReactNode;
|
|
150
|
+
customFooterActions?: (channel: Channel) => React.ReactNode;
|
|
151
151
|
};
|
|
152
152
|
declare function TrendingChannelsWidget({ onSelect, customHeaderActions, customFooterActions, }: TrendingChannelsWidgetProps): react_jsx_runtime.JSX.Element;
|
|
153
153
|
|
|
154
154
|
declare const useTrendingChannels: () => _tanstack_react_query.UseQueryResult<_liberfi_io_types.ChannelsList, Error>;
|
|
155
155
|
|
|
156
156
|
type SubscribedChannelsWidgetProps = {
|
|
157
|
-
onSelect?: (channel: Channel
|
|
158
|
-
customHeaderActions?: (channel: Channel
|
|
159
|
-
customFooterActions?: (channel: Channel
|
|
157
|
+
onSelect?: (channel: Channel) => void;
|
|
158
|
+
customHeaderActions?: (channel: Channel) => React.ReactNode;
|
|
159
|
+
customFooterActions?: (channel: Channel) => React.ReactNode;
|
|
160
160
|
};
|
|
161
161
|
declare function SubscribedChannelsWidget({ onSelect, customHeaderActions, customFooterActions, }: SubscribedChannelsWidgetProps): react_jsx_runtime.JSX.Element;
|
|
162
162
|
|
|
163
163
|
declare const useSubscribedChannels: () => _tanstack_react_query.UseQueryResult<_liberfi_io_types.ChannelsList, Error>;
|
|
164
164
|
|
|
165
165
|
type MyChannelsWidgetProps = {
|
|
166
|
-
onSelect?: (channel: Channel
|
|
167
|
-
customHeaderActions?: (channel: Channel
|
|
168
|
-
customFooterActions?: (channel: Channel
|
|
166
|
+
onSelect?: (channel: Channel) => void;
|
|
167
|
+
customHeaderActions?: (channel: Channel) => React.ReactNode;
|
|
168
|
+
customFooterActions?: (channel: Channel) => React.ReactNode;
|
|
169
169
|
};
|
|
170
170
|
declare function MyChannelsWidget({ onSelect, customHeaderActions, customFooterActions, }: MyChannelsWidgetProps): react_jsx_runtime.JSX.Element;
|
|
171
171
|
|
|
172
172
|
declare const useMyChannels: () => _tanstack_react_query.UseQueryResult<_liberfi_io_types.ChannelsList, Error>;
|
|
173
173
|
|
|
174
174
|
type ChannelAttributesProps = {
|
|
175
|
-
channel: Channel
|
|
175
|
+
channel: Channel;
|
|
176
176
|
};
|
|
177
177
|
declare function ChannelAttributes({ channel }: ChannelAttributesProps): react_jsx_runtime.JSX.Element;
|
|
178
178
|
|
|
179
179
|
type ChannelBaseInfoProps = {
|
|
180
|
-
channel: Channel
|
|
180
|
+
channel: Channel;
|
|
181
181
|
customActions?: React.ReactNode;
|
|
182
182
|
};
|
|
183
183
|
declare function ChannelBaseInfo({ channel, customActions, }: ChannelBaseInfoProps): react_jsx_runtime.JSX.Element;
|
|
184
184
|
|
|
185
185
|
type ChannelEditButtonProps = {
|
|
186
|
-
channel: Channel
|
|
187
|
-
onEdit?: (channel: Channel
|
|
186
|
+
channel: Channel;
|
|
187
|
+
onEdit?: (channel: Channel) => void;
|
|
188
188
|
};
|
|
189
189
|
declare function ChannelEditButton({ channel, onEdit }: ChannelEditButtonProps): react_jsx_runtime.JSX.Element;
|
|
190
190
|
|
|
191
191
|
type ChannelStatsProps = {
|
|
192
|
-
channel: Channel
|
|
192
|
+
channel: Channel;
|
|
193
193
|
};
|
|
194
194
|
declare function ChannelStats({ channel }: ChannelStatsProps): react_jsx_runtime.JSX.Element;
|
|
195
195
|
|
|
196
196
|
type ChannelSubscribeButtonProps = {
|
|
197
|
-
channel: Channel
|
|
198
|
-
onSubscribeSuccess?: (channel: Channel
|
|
199
|
-
onUnsubscribeSuccess?: (channel: Channel
|
|
200
|
-
onSubscribeError?: (channel: Channel
|
|
201
|
-
onUnsubscribeError?: (channel: Channel
|
|
197
|
+
channel: Channel;
|
|
198
|
+
onSubscribeSuccess?: (channel: Channel) => void;
|
|
199
|
+
onUnsubscribeSuccess?: (channel: Channel) => void;
|
|
200
|
+
onSubscribeError?: (channel: Channel, error: unknown) => void;
|
|
201
|
+
onUnsubscribeError?: (channel: Channel, error: unknown) => void;
|
|
202
202
|
};
|
|
203
203
|
declare function ChannelSubscribeButton({ channel, onSubscribeSuccess, onUnsubscribeSuccess, onSubscribeError, onUnsubscribeError, }: ChannelSubscribeButtonProps): react_jsx_runtime.JSX.Element;
|
|
204
204
|
|
|
205
205
|
type ChannelDetailUIProps = {
|
|
206
|
-
channel: Channel
|
|
206
|
+
channel: Channel;
|
|
207
207
|
headerActions?: React.ReactNode;
|
|
208
208
|
footerActions?: React.ReactNode;
|
|
209
|
+
className?: string;
|
|
209
210
|
};
|
|
210
|
-
declare function ChannelDetailUI({ channel, headerActions, footerActions, }: ChannelDetailUIProps): react_jsx_runtime.JSX.Element;
|
|
211
|
+
declare function ChannelDetailUI({ channel, headerActions, footerActions, className, }: ChannelDetailUIProps): react_jsx_runtime.JSX.Element;
|
|
211
212
|
|
|
212
213
|
type ChannelDetailWidgetProps = {
|
|
213
214
|
id: string;
|
|
214
|
-
customHeaderActions?: (channel: Channel
|
|
215
|
-
customFooterActions?: (channel: Channel
|
|
215
|
+
customHeaderActions?: (channel: Channel) => React.ReactNode;
|
|
216
|
+
customFooterActions?: (channel: Channel) => React.ReactNode;
|
|
216
217
|
};
|
|
217
218
|
declare function ChannelDetailWidget({ id, customHeaderActions, customFooterActions, }: ChannelDetailWidgetProps): react_jsx_runtime.JSX.Element;
|
|
218
219
|
|
|
@@ -220,85 +221,19 @@ declare const useChannelDetail: (id: string) => _tanstack_react_query.UseQueryRe
|
|
|
220
221
|
|
|
221
222
|
type ChannelHomePageProps = {
|
|
222
223
|
onCreateChannel?: () => void;
|
|
223
|
-
onSelectChannel?: (channel: Channel
|
|
224
|
-
customHeaderActions?: (channel: Channel
|
|
225
|
-
customFooterActions?: (channel: Channel
|
|
224
|
+
onSelectChannel?: (channel: Channel) => void;
|
|
225
|
+
customHeaderActions?: (channel: Channel) => React.ReactNode;
|
|
226
|
+
customFooterActions?: (channel: Channel) => React.ReactNode;
|
|
226
227
|
};
|
|
227
228
|
declare function ChannelsHomePage({ onCreateChannel, onSelectChannel, customHeaderActions, customFooterActions, }: ChannelHomePageProps): react_jsx_runtime.JSX.Element;
|
|
228
229
|
|
|
229
230
|
type ChannelDetailPageProps = {
|
|
230
231
|
id: string;
|
|
231
|
-
customHeaderActions?: (channel: Channel
|
|
232
|
-
customFooterActions?: (channel: Channel
|
|
232
|
+
customHeaderActions?: (channel: Channel) => React.ReactNode;
|
|
233
|
+
customFooterActions?: (channel: Channel) => React.ReactNode;
|
|
233
234
|
};
|
|
234
235
|
declare function ChannelsDetailPage({ id, customHeaderActions, customFooterActions, }: ChannelDetailPageProps): react_jsx_runtime.JSX.Element;
|
|
235
236
|
|
|
236
|
-
interface Channel {
|
|
237
|
-
id: string;
|
|
238
|
-
imageUrl: string;
|
|
239
|
-
name: string;
|
|
240
|
-
description: string;
|
|
241
|
-
createdAt: string;
|
|
242
|
-
people: number;
|
|
243
|
-
volume: number;
|
|
244
|
-
followers: number;
|
|
245
|
-
createdBy: string;
|
|
246
|
-
timeAgo: number;
|
|
247
|
-
socials: Socials;
|
|
248
|
-
dex: ChannelDex;
|
|
249
|
-
}
|
|
250
|
-
interface Trading {
|
|
251
|
-
id: string;
|
|
252
|
-
date: number;
|
|
253
|
-
channel: Channel;
|
|
254
|
-
address: string;
|
|
255
|
-
token: {
|
|
256
|
-
symbol: string;
|
|
257
|
-
image: string;
|
|
258
|
-
address: string;
|
|
259
|
-
chainIcon: string;
|
|
260
|
-
};
|
|
261
|
-
mc: number;
|
|
262
|
-
amount: number;
|
|
263
|
-
type: "buy" | "sell";
|
|
264
|
-
}
|
|
265
|
-
interface Socials {
|
|
266
|
-
telegram: string;
|
|
267
|
-
discord: string;
|
|
268
|
-
}
|
|
269
|
-
interface ChannelDex {
|
|
270
|
-
fromToken: ChannelDexToken;
|
|
271
|
-
toToken: ChannelDexToken;
|
|
272
|
-
txs7d: ChannelDexTxs;
|
|
273
|
-
pnl7d: ChannelDexPnl;
|
|
274
|
-
wr7d: ChannelDexWr;
|
|
275
|
-
}
|
|
276
|
-
interface ChannelDexToken {
|
|
277
|
-
name: string;
|
|
278
|
-
image: string;
|
|
279
|
-
}
|
|
280
|
-
interface ChannelDexTxs {
|
|
281
|
-
total: number;
|
|
282
|
-
bullish: number;
|
|
283
|
-
bearish: number;
|
|
284
|
-
}
|
|
285
|
-
interface ChannelDexPnl {
|
|
286
|
-
total: number;
|
|
287
|
-
}
|
|
288
|
-
interface ChannelDexWr {
|
|
289
|
-
total: number;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
type Props = {
|
|
293
|
-
trading: Trading[];
|
|
294
|
-
onBuy: (item: Trading) => void;
|
|
295
|
-
};
|
|
296
|
-
declare function TradingUI({ trading, onBuy }: Props): react_jsx_runtime.JSX.Element;
|
|
297
|
-
|
|
298
|
-
declare function TradingWidget(): react_jsx_runtime.JSX.Element;
|
|
299
|
-
|
|
300
|
-
declare const useTrading: () => Trading[];
|
|
301
|
-
|
|
302
237
|
interface ChannelsContextValue {
|
|
303
238
|
client: API.IChannelsClient;
|
|
304
239
|
}
|
|
@@ -314,9 +249,12 @@ declare function channelEventsQueryKey(channelId: string, params: UseChannelEven
|
|
|
314
249
|
declare function fetchChannelEvents(client: IChannelsClient, channelId: string, params: UseChannelEventsQueryParams): Promise<API.ChannelEventsList>;
|
|
315
250
|
declare function useChannelEventsQuery(channelId: string, params?: UseChannelEventsQueryParams, options?: Omit<UseQueryOptions<API.ChannelEventsList, Error, API.ChannelEventsList, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<_liberfi_io_types.ChannelEventsList, Error>;
|
|
316
251
|
|
|
252
|
+
declare function channelEventsInfiniteQueryKey(channelId: string): string[];
|
|
253
|
+
declare function useChannelEventsInfiniteQuery(channelId: string, params?: UseChannelEventsQueryParams, options?: Omit<UseInfiniteQueryOptions<API.ChannelEventsList, Error, InfiniteData<API.ChannelEventsList>, string[], UseChannelEventsQueryParams>, "queryKey" | "queryFn" | "getNextPageParam" | "initialPageParam">): ReturnType<typeof useInfiniteQuery<API.ChannelEventsList, Error>>;
|
|
254
|
+
|
|
317
255
|
declare function channelQueryKey(id: string): string[];
|
|
318
|
-
declare function fetchChannel(client: IChannelsClient, id: string): Promise<Channel
|
|
319
|
-
declare function useChannelQuery(id: string, options?: Omit<UseQueryOptions<Channel
|
|
256
|
+
declare function fetchChannel(client: IChannelsClient, id: string): Promise<Channel>;
|
|
257
|
+
declare function useChannelQuery(id: string, options?: Omit<UseQueryOptions<Channel, Error, Channel, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Channel, Error>;
|
|
320
258
|
|
|
321
259
|
declare function useChannelsContext(): ChannelsContextValue;
|
|
322
260
|
|
|
@@ -336,8 +274,8 @@ declare function useChannelSourcesQuery(channelId: string, options?: Omit<UseQue
|
|
|
336
274
|
interface UseCreateChannelMutationParams extends Omit<API.CreateChannelOptions, "chain"> {
|
|
337
275
|
chain: Chain;
|
|
338
276
|
}
|
|
339
|
-
declare function createChannel(client: IChannelsClient, params: UseCreateChannelMutationParams): Promise<Channel
|
|
340
|
-
declare function useCreateChannelMutation(options?: Omit<UseMutationOptions<Channel
|
|
277
|
+
declare function createChannel(client: IChannelsClient, params: UseCreateChannelMutationParams): Promise<Channel>;
|
|
278
|
+
declare function useCreateChannelMutation(options?: Omit<UseMutationOptions<Channel, Error, UseCreateChannelMutationParams, string[]>, "mutationFn">): _tanstack_react_query.UseMutationResult<Channel, Error, UseCreateChannelMutationParams, string[]>;
|
|
341
279
|
|
|
342
280
|
interface UseMyChannelsListQueryParams extends Omit<API.ListChannelsOptions, "chain"> {
|
|
343
281
|
chain?: Chain;
|
|
@@ -362,8 +300,8 @@ declare function useUnsubscribeChannelMutation(options?: Omit<UseMutationOptions
|
|
|
362
300
|
interface UseUpdateChannelMutationParams extends Omit<API.UpdateChannelOptions, "chain"> {
|
|
363
301
|
chain?: Chain;
|
|
364
302
|
}
|
|
365
|
-
declare function updateChannel(client: IChannelsClient, params: UseUpdateChannelMutationParams): Promise<Channel
|
|
366
|
-
declare function useUpdateChannelMutation(options?: Omit<UseMutationOptions<Channel
|
|
303
|
+
declare function updateChannel(client: IChannelsClient, params: UseUpdateChannelMutationParams): Promise<Channel>;
|
|
304
|
+
declare function useUpdateChannelMutation(options?: Omit<UseMutationOptions<Channel, Error, UseUpdateChannelMutationParams, string[]>, "mutationFn">): _tanstack_react_query.UseMutationResult<Channel, Error, UseUpdateChannelMutationParams, string[]>;
|
|
367
305
|
|
|
368
306
|
type UseUpdateChannelSourcesMutationParams = API.UpdateChannelSourcesOptions;
|
|
369
307
|
declare function updateChannelSources(client: IChannelsClient, params: UseUpdateChannelSourcesMutationParams): Promise<Array<ChannelSource>>;
|
|
@@ -373,4 +311,10 @@ declare const useUpload: () => (file: File) => Promise<string>;
|
|
|
373
311
|
|
|
374
312
|
declare function parseWalletsText(value: string): Array<Partial<WalletValues>>;
|
|
375
313
|
|
|
376
|
-
|
|
314
|
+
type ChannelEventRowProps = {
|
|
315
|
+
event: ChannelEvent;
|
|
316
|
+
walletAliases?: Record<string, string | undefined>;
|
|
317
|
+
tokens?: Record<string, Token>;
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
export { BaseFormUI, type BaseFormUIProps, type BaseFormValues, ChannelAttributes, type ChannelAttributesProps, ChannelBaseInfo, type ChannelBaseInfoProps, type ChannelDetailPageProps, ChannelDetailUI, type ChannelDetailUIProps, ChannelDetailWidget, type ChannelDetailWidgetProps, ChannelEditButton, type ChannelEditButtonProps, type ChannelEventRowProps, type ChannelHomePageProps, ChannelStats, type ChannelStatsProps, ChannelSubscribeButton, type ChannelSubscribeButtonProps, ChannelsContext, type ChannelsContextValue, ChannelsDetailPage, ChannelsEmptyUI, type ChannelsEmptyUIProps, ChannelsHomePage, ChannelsProvider, type ChannelsProviderProps, ChannelsSkeletonUI, type ChannelsSkeletonUIProps, ChannelsUI, type ChannelsUIProps, CreateChannelWidget, type CreateChannelWidgetProps, MyChannelsWidget, type MyChannelsWidgetProps, SocialsFormUI, type SocialsFormUIProps, SubscribedChannelsWidget, type SubscribedChannelsWidgetProps, TrendingChannelsWidget, type TrendingChannelsWidgetProps, type UpdateChannelFormType, UpdateChannelFormUI, type UpdateChannelFormUIProps, UpdateChannelWidget, type UpdateChannelWidgetProps, type UseChannelEventsQueryParams, type UseChannelsListQueryParams, type UseCreateChannelMutationParams, type UseMyChannelsListQueryParams, type UseSubscribedChannelsListQueryParams, type UseUpdateChannelMutationParams, type UseUpdateChannelSourcesMutationParams, type WalletValues, WalletsFormUI, type WalletsFormUIProps, type WalletsFormValues, WalletsListUI, type WalletsListUIProps, baseFormSchema, channelEventsInfiniteQueryKey, channelEventsQueryKey, channelQueryKey, channelSourcesQueryKey, channelsListQueryKey, createChannel, fetchChannel, fetchChannelEvents, fetchChannelSources, fetchChannelsList, fetchMyChannelsList, fetchSubscribedChannelsList, myChannelsListQueryKey, parseWalletsText, subscribeChannel, subscribedChannelsListQueryKey, unsubscribeChannel, updateChannel, updateChannelSources, useChannelDetail, useChannelEventsInfiniteQuery, useChannelEventsQuery, useChannelQuery, useChannelSourcesQuery, useChannelsClient, useChannelsContext, useChannelsListQuery, useCreateChannelMutation, useMyChannels, useMyChannelsListQuery, useSubscribeChannelMutation, useSubscribedChannels, useSubscribedChannelsListQuery, useTrendingChannels, useUnsubscribeChannelMutation, useUpdateBaseForm, useUpdateChannelMutation, useUpdateChannelSourcesMutation, useUpdateWalletsForm, useUpload, _default as version, walletSchema, walletsFormSchema };
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
'use strict';var i18n=require('@liberfi.io/i18n'),ui=require('@liberfi.io/ui'),reactQuery=require('@tanstack/react-query'),react=require('react'),utils=require('@liberfi.io/utils'),client=require('@liberfi.io/client'),jsxRuntime=require('react/jsx-runtime'),types=require('@liberfi.io/types'),walletConnector=require('@liberfi.io/wallet-connector'),hooks=require('@liberfi.io/hooks');typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-channels"]="0.1.0");var
|
|
2
|
-
`).map(n=>n.trim()).filter(n=>!!n).map(n=>{let[s,o]=n.split(",");return {address:s?s.trim():void 0,alias:o?o.trim():void 0}})}function $e({wallets:e=[],onSubmit:t,isSubmitting:n}){let{t:s}=i18n.useTranslation(),o=ui.useCopyToClipboard(),r=walletConnector.useAuthCallback(c=>{let u=e.filter(y=>y.value!==c.value).map(y=>({address:y.value??"",alias:y.alias}));t?.(u);},[e,t]),[a,i]=react.useState(""),h=utils.debounce(i,200),l=react.useMemo(()=>e.filter(c=>c.alias?.toLowerCase()?.includes(a.toLowerCase())||c.value?.toLowerCase()?.includes(a.toLowerCase())),[a,e]);return jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("h2",{className:"text-sm font-medium",children:s("channels.forms.wallets.list.title")}),jsxRuntime.jsx(ui.StyledInput,{size:"sm",className:"max-w-50",radius:"full",startContent:jsxRuntime.jsx(ui.SearchIcon,{width:16,height:16,className:"text-neutral"}),placeholder:s("channels.forms.wallets.list.search.placeholder"),onValueChange:h})]}),jsxRuntime.jsxs(ui.StyledTable,{isHeaderSticky:true,isVirtualized:l.length>10||l.length===0,radius:"lg",classNames:{emptyWrapper:"pt-10"},maxTableHeight:500,rowHeight:52,"aria-label":s("channels.forms.wallets.list.title"),children:[jsxRuntime.jsxs(ui.TableHeader,{children:[jsxRuntime.jsx(ui.TableColumn,{textValue:s("channels.forms.wallets.list.header.address"),width:"60%",children:s("channels.forms.wallets.list.header.address")},"address"),jsxRuntime.jsx(ui.TableColumn,{textValue:s("channels.forms.wallets.list.header.actions"),width:"40%",align:"end",children:s("channels.forms.wallets.list.header.actions")},"actions")]}),jsxRuntime.jsx(ui.TableBody,{items:l,emptyContent:jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx(ui.EmptyIcon,{className:"w-10 h-10 mx-auto text-neutral"}),jsxRuntime.jsx("p",{className:"text-xs text-neutral text-center",children:s("channels.forms.wallets.list.empty")})]}),children:c=>jsxRuntime.jsxs(ui.TableRow,{children:[jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 text-xs",children:[jsxRuntime.jsx("div",{children:c.alias}),jsxRuntime.jsxs("div",{className:"text-neutral flex items-center gap-1",onClick:()=>o(c.value??""),"aria-label":s("common.copy"),children:[jsxRuntime.jsx("div",{children:utils.shortAddress(c.value??"")}),jsxRuntime.jsx("div",{children:jsxRuntime.jsx(ui.CopyIcon,{width:12,height:12})})]})]})},"address"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,size:"sm",radius:"full",className:"bg-transparent",disabled:n,onPress:()=>r(c),children:jsxRuntime.jsx(ui.TrashIcon,{className:"text-danger-500",width:18,height:18})})},"actions")]},c.value)})]})]})}var Vo=ui.z.object({walletsText:ui.z.string({error:"channels.forms.wallets.required"}).min(1,"channels.forms.wallets.required")});function Ye({channel:e,wallets:t=[],onSubmit:n,isSubmitting:s=false}){let{t:o}=i18n.useTranslation(),r=ui.useForm({mode:"onChange",reValidateMode:"onBlur",resolver:ui.zodResolver(Vo),defaultValues:{walletsText:""}}),a=react.useMemo(()=>t.map(m=>({address:m.value??"",alias:m.alias})),[t]),{setError:i,reset:h}=r,l=react.useCallback(m=>{try{let u=Oe.parse(Ge(m)),y=u.length-utils.uniqBy(u,"address").length;if(y!==0)throw new Error(o("channels.forms.wallets.address.duplicated",{count:y}));let Te=utils.intersectionBy(u,a,"address").length;if(Te>0)throw new Error(o("channels.forms.wallets.address.alreadyAdded",{count:Te}));if(u.length+a.length>500)throw new Error(o("channels.forms.wallets.maxCount"));let me=0;for(let zt of u)utils.isValidWalletAddress(e.chain,zt.address)||me++;if(me>0)throw new Error(o("channels.forms.wallets.address.invalid",{count:me}));return u}catch(u){u instanceof ui.z.ZodError?i("walletsText",{message:u.issues[0].message,type:"manual"}):u instanceof Error?i("walletsText",{message:u.message,type:"manual"}):i("walletsText",{message:o("channels.forms.wallets.invalid"),type:"manual"});return}},[a,o,e.chain]),c=react.useCallback(async m=>{let u=l(m.walletsText);u&&u.length>0&&(await n?.([...a,...u]),h());},[l,n,a]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-6",children:[jsxRuntime.jsxs(ui.RHForm,{methods:r,onSubmit:c,className:"relative",children:[jsxRuntime.jsx(ui.RHTextArea,{name:"walletsText",label:o("channels.forms.wallets.label"),"aria-label":o("channels.forms.wallets.label"),placeholder:o("channels.forms.wallets.placeholder"),variant:"bordered",radius:"lg",size:"sm",fullWidth:true,minRows:10,maxRows:10,labelPlacement:"outside-top"}),jsxRuntime.jsxs("div",{className:"absolute right-0 top-0 text-xs flex gap-1 text-neutral",children:[jsxRuntime.jsxs("span",{className:"text-neutral",children:[o("channels.forms.wallets.addedCount"),":"]}),jsxRuntime.jsxs("span",{children:[a.length," / 500"]})]}),jsxRuntime.jsxs("div",{className:"w-full flex items-center gap-4",children:[jsxRuntime.jsx(ui.HorizontalScrollContainer,{className:"flex-auto min-w-0",children:jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsxs("span",{className:"text-xs text-neutral flex-none",children:[o("channels.forms.wallets.supportedFormats"),":"]}),jsxRuntime.jsx(ui.StyledTooltip,{closeDelay:0,content:jsxRuntime.jsx("div",{className:"text-xs whitespace-pre-line",children:o("channels.forms.wallets.supportedFormats.text.hint")}),children:jsxRuntime.jsx(ui.Chip,{size:"sm",variant:"flat",children:o("channels.forms.wallets.supportedFormats.text")})})]})}),jsxRuntime.jsx("div",{className:"flex-none flex gap-4 items-center",children:jsxRuntime.jsx(ui.Button,{color:"primary",type:"submit",radius:"lg",isLoading:s,size:"sm",children:o("channels.forms.wallets.submit")})})]})]}),jsxRuntime.jsx($e,{wallets:t,onSubmit:n,isSubmitting:s})]})}function tt({channel:e,type:t="base",baseFormDefaultValues:n,isSubmittingBaseForm:s=false,onSubmitBaseForm:o,baseFormSubmitLabel:r,wallets:a,isSubmittingWalletsForm:i=false,onSubmitWalletsForm:h,className:l}){let{t:c}=i18n.useTranslation(),[m,u]=react.useState(t),{isMobile:y}=ui.useScreen();return jsxRuntime.jsxs("div",{className:ui.clsx("w-full flex flex-col gap-4",l),children:[jsxRuntime.jsxs(ui.StyledTabs,{fullWidth:true,variant:"solid",size:y?"sm":void 0,selectedKey:m,onSelectionChange:u,children:[jsxRuntime.jsx(ui.Tab,{title:c("channels.forms.base.title")},"base"),jsxRuntime.jsx(ui.Tab,{title:c("channels.forms.wallets.title")},"wallets"),jsxRuntime.jsx(ui.Tab,{title:c("channels.forms.socials.title")},"social")]}),m==="base"&&jsxRuntime.jsx($,{defaultValues:n,isSubmitting:s,onSubmit:o,submitLabel:r}),m==="wallets"&&jsxRuntime.jsx(Ye,{channel:e,wallets:a,isSubmitting:i,onSubmit:h}),m==="social"&&jsxRuntime.jsx(Ke,{channel:e})]})}function nt({type:e="base",className:t}){let{t:n}=i18n.useTranslation(),[s,o]=react.useState(e),{isMobile:r}=ui.useScreen();return jsxRuntime.jsxs("div",{className:ui.clsx("w-full flex flex-col gap-4",t),children:[jsxRuntime.jsxs(ui.StyledTabs,{fullWidth:true,variant:"solid",size:r?"sm":void 0,selectedKey:s,onSelectionChange:o,children:[jsxRuntime.jsx(ui.Tab,{title:n("channels.forms.base.title")},"base"),jsxRuntime.jsx(ui.Tab,{title:n("channels.forms.wallets.title")},"wallets"),jsxRuntime.jsx(ui.Tab,{title:n("channels.forms.socials.title")},"social")]}),s==="base"&&jsxRuntime.jsx(ge,{}),s==="wallets"&&jsxRuntime.jsx(ge,{}),s==="social"&&jsxRuntime.jsx(ge,{})]})}function ge(){return jsxRuntime.jsxs("div",{className:"flex flex-col gap-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-10 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-10 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-40 rounded-md"})]})}function st(e,t){let{t:n}=i18n.useTranslation(),{data:s,isLoading:o}=Be(e),{mutateAsync:r,isPending:a}=Qe(),i=walletConnector.useAuthCallback(async h=>{try{if(!t?.chain)throw new Error("Channel chain is not set");await r({channel_id:e,type:"wallet",sources:h.map(l=>({type:"wallet",value:l.address,alias:l.alias,configs:{chain:utils.chainSlug(t.chain)}}))}),ui.toast.success(n("channels.forms.wallets.update.success"));}catch(l){console.error("Update channel wallets error",l),ui.toast.error(n("channels.forms.wallets.update.error"));}},[r,e,t?.chain]);return {isLoading:o,isSubmitting:a,wallets:s,submit:i}}function bl({id:e,type:t="base"}){let{t:n}=i18n.useTranslation(),{channel:s,defaultValues:o,isLoading:r,isSubmitting:a,submit:i}=_e(e),{wallets:h,isLoading:l,isSubmitting:c,submit:m}=st(e,s);return r||l||!s?jsxRuntime.jsx(nt,{type:t}):jsxRuntime.jsx(tt,{channel:s,type:t,baseFormDefaultValues:o,isSubmittingBaseForm:a,onSubmitBaseForm:i,baseFormSubmitLabel:n("channels.forms.base.update.submit"),wallets:h,isSubmittingWalletsForm:c,onSubmitWalletsForm:m})}function Y({channel:e}){let{t}=i18n.useTranslation(),n=hooks.useTickAge(new Date(e.updated_at));return jsxRuntime.jsx(ui.HorizontalScrollContainer,{classNames:{leftArrow:"from-content1/60 to-transparent",rightArrow:"from-content1/60 to-transparent"},children:jsxRuntime.jsxs("div",{className:"flex items-center gap-4",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.info.walletCount"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.WalletIcon,{width:16,height:16}),jsxRuntime.jsx("p",{className:"text-xs",children:e.source_count||"-"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.info.subscribeCount"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.PeopleIcon,{width:16,height:16}),jsxRuntime.jsx("p",{className:"text-xs",children:e.subscribe_count||"-"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.info.updatedAt"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.TimerIcon,{width:16,height:16}),jsxRuntime.jsx("p",{className:"text-xs",children:utils.formatAge(n)})]})}),e.twitter&&jsxRuntime.jsx(ui.Link,{href:e.twitter,target:"_blank",className:"text-neutral",children:jsxRuntime.jsx(ui.TwitterIcon,{width:16,height:16})}),e.telegram&&jsxRuntime.jsx(ui.Link,{href:e.telegram,target:"_blank",className:"text-neutral",children:jsxRuntime.jsx(ui.TelegramIcon,{width:16,height:16})}),e.discord&&jsxRuntime.jsx(ui.Link,{href:e.discord,target:"_blank",className:"text-neutral",children:jsxRuntime.jsx(ui.DiscordIcon,{width:16,height:16})})]})})}function it({channel:e,customActions:t}){let n=react.useMemo(()=>e.chain?utils.chainIcon(e.chain):void 0,[e.chain]);return jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-none flex flex-col",children:jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(ui.Avatar,{src:e.icon,alt:e.name,className:"w-18 h-18",radius:"md"}),n&&jsxRuntime.jsx(ui.Avatar,{radius:"full",src:n,className:"w-5 h-5 absolute -bottom-1 -right-1 border border-border shadow-sm"})]})}),jsxRuntime.jsxs("div",{className:"flex-auto min-w-0 flex flex-col gap-2 text-neutral",children:[jsxRuntime.jsxs("div",{className:"h-6 flex items-center gap-2",children:[jsxRuntime.jsx("p",{className:"flex-auto min-w-0 text-sm font-medium text-foreground truncate",children:e.name}),jsxRuntime.jsx("div",{className:"flex-none",children:t})]}),jsxRuntime.jsx(Y,{channel:e}),jsxRuntime.jsx("p",{className:"text-xs whitespace-pre-wrap line-clamp-1 h-4 overflow-hidden",children:e.description})]})]})}function Hl({channel:e,onEdit:t}){let{user:n}=walletConnector.useAuth(),s=walletConnector.useAuthCallback(()=>{t?.(e);},[e,t]);return n?.id!==e.owner_id?jsxRuntime.jsx(jsxRuntime.Fragment,{}):jsxRuntime.jsx(ui.StyledButton,{className:"bg-transparent",isIconOnly:true,size:"sm",onPress:s,children:jsxRuntime.jsx(ui.EditIcon,{width:16,height:16,className:"text-neutral"})})}function ne({channel:e}){let{t}=i18n.useTranslation();return jsxRuntime.jsx(ui.HorizontalScrollContainer,{classNames:{leftArrow:"from-content1/60 to-transparent",rightArrow:"from-content1/60 to-transparent"},children:jsxRuntime.jsxs("div",{className:"flex items-center gap-4 text-xs",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.stats.7dTxs.hint"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-none flex flex-col gap-1 items-center",children:[jsxRuntime.jsx("p",{className:"text-neutral font-medium",children:t("channels.stats.7dTxs.title")}),jsxRuntime.jsx("p",{className:"text-foreground font-semibold",children:"--"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.stats.7dPnl.hint"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-none flex flex-col gap-1 items-center",children:[jsxRuntime.jsx("p",{className:"text-neutral font-medium",children:t("channels.stats.7dPnl.title")}),jsxRuntime.jsx("p",{className:"text-bullish font-semibold",children:"--"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.stats.7dWr.hint"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-none flex flex-col gap-1 items-center",children:[jsxRuntime.jsx("p",{className:"text-neutral font-medium",children:t("channels.stats.7dWr.title")}),jsxRuntime.jsx("p",{className:"text-bullish font-semibold",children:"--%"})]})})]})})}function sm({channel:e,onSubscribeSuccess:t,onUnsubscribeSuccess:n,onSubscribeError:s,onUnsubscribeError:o}){let{t:r}=i18n.useTranslation(),[a,i]=react.useState(e.is_subscribed);react.useEffect(()=>{i(e.is_subscribed);},[e.is_subscribed]);let{mutateAsync:h,isPending:l}=De(),{mutateAsync:c,isPending:m}=Me(),u=walletConnector.useAuthCallback(async()=>{try{a?(await c(e.id),i(!1),ui.toast.success(r("channels.unsubscribe.success")),n?.(e)):(await h(e.id),i(!0),ui.toast.success(r("channels.subscribe.success")),t?.(e));}catch(y){console.error("Subscribe / Unsubscribe channel error",y),a?(ui.toast.error(r("channels.unsubscribe.error")),o?.(e,y)):(ui.toast.error(r("channels.subscribe.error")),s?.(e,y));}},[r,a,e,h,c,t,n,s,o]);return jsxRuntime.jsx(ui.StyledButton,{color:a?"default":"primary",size:"sm",radius:"lg",onPress:u,isLoading:l||m,variant:a?"bordered":"flat",className:ui.clsx("gap-1",a&&"text-neutral"),startContent:a?!l&&!m?jsxRuntime.jsx(ui.CheckIcon,{width:16,height:16}):void 0:!l&&!m?jsxRuntime.jsx(ui.PlusIcon,{width:16,height:16}):void 0,children:r(a?"channels.unsubscribe.submit":"channels.subscribe.submit")})}function mt({channel:e,onSelect:t,headerActions:n,footerActions:s}){let o=react.useCallback(()=>{t?.(e);},[e,t]);return jsxRuntime.jsxs("div",{className:ui.clsx("bg-content1 hover:bg-content2 border border-border rounded-lg w-full h-full p-2.5","flex flex-col gap-2.5",t&&"cursor-pointer"),onClick:o,children:[jsxRuntime.jsx(it,{channel:e,customActions:n}),jsxRuntime.jsxs("div",{className:"flex items-center gap-4",children:[jsxRuntime.jsx("div",{className:"flex-auto min-w-0",children:jsxRuntime.jsx(ne,{channel:e})}),jsxRuntime.jsx("div",{className:"flex-none",children:s})]})]})}function M({channels:e,onSelect:t,customHeaderActions:n,customFooterActions:s}){return jsxRuntime.jsx("div",{className:"w-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:e.map(o=>jsxRuntime.jsx(mt,{channel:o,onSelect:t,headerActions:n?.(o),footerActions:s?.(o)},o.id))})}function Q({count:e}){return jsxRuntime.jsx("div",{className:"w-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:Array.from({length:e}).map((t,n)=>jsxRuntime.jsxs("div",{className:"bg-content1 hover:bg-content2 border border-border rounded-lg w-full h-35 p-2.5 flex flex-col gap-2.5",children:[jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-none flex flex-col",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-18 flex-none rounded-md"})}),jsxRuntime.jsxs("div",{className:"flex-auto min-w-0 flex flex-col gap-2 justify-center text-neutral",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-24 h-4 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-48 h-4 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-48 h-4 rounded-md"})]})]}),jsxRuntime.jsxs("div",{className:"w-full flex justify-between gap-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"flex-auto min-w-0 h-6 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-24 h-6 rounded-md"})]})]},n))})}function V({message:e}){let{t}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"pt-24 mx-auto",children:[jsxRuntime.jsx(ui.EmptyIcon,{width:28,height:28,className:"text-neutral mx-auto"}),jsxRuntime.jsx("p",{className:"pt-2 text-sm text-neutral text-center",children:e||t("common.empty")})]})}var pt=()=>{let{status:e}=walletConnector.useAuth(),t=Ae(),{refetch:n}=t;return react.useEffect(()=>{e==="authenticated"&&n();},[e,n]),t};function ut({onSelect:e,customHeaderActions:t,customFooterActions:n}){let{data:s,isLoading:o}=pt();return o?jsxRuntime.jsx(Q,{count:9}):!s||s.list.length===0?jsxRuntime.jsx(V,{}):jsxRuntime.jsx(M,{channels:s.list,onSelect:e,customHeaderActions:t,customFooterActions:n})}function re({message:e}){let{t}=i18n.useTranslation(),{signIn:n}=walletConnector.useAuth();return jsxRuntime.jsxs("div",{className:"pt-24 flex flex-col items-center justify-center gap-2",children:[jsxRuntime.jsx("p",{className:"text-neutral text-sm",children:e||t("common.unauthenticated")}),jsxRuntime.jsx(ui.StyledButton,{color:"primary",size:"sm",onPress:n,radius:"lg",children:t("common.signIn")})]})}function ft({onSelect:e,customHeaderActions:t,customFooterActions:n}){let{status:s}=walletConnector.useAuth(),{data:o,isLoading:r}=j({},{enabled:s==="authenticated"});return s==="unauthenticated"?jsxRuntime.jsx(re,{}):s==="authenticating"||r?jsxRuntime.jsx(Q,{count:9}):!o||o.list.length===0?jsxRuntime.jsx(V,{}):jsxRuntime.jsx(M,{channels:o.list,onSelect:e,customHeaderActions:t,customFooterActions:n})}var Ym=()=>j();function gt({onSelect:e,customHeaderActions:t,customFooterActions:n}){let{status:s}=walletConnector.useAuth(),{data:o,isLoading:r}=G({},{enabled:s==="authenticated"});return s==="unauthenticated"?jsxRuntime.jsx(re,{}):s==="authenticating"||r?jsxRuntime.jsx(Q,{count:9}):!o||o.list.length===0?jsxRuntime.jsx(V,{}):jsxRuntime.jsx(M,{channels:o.list,onSelect:e,customHeaderActions:t,customFooterActions:n})}var cc=()=>G();function yt({channel:e,headerActions:t,footerActions:n}){let s=react.useMemo(()=>e.chain?utils.chainIcon(e.chain):void 0,[e.chain]);return jsxRuntime.jsxs("div",{className:ui.clsx("bg-content1 border border-border rounded-lg w-full h-full p-2.5","flex flex-col gap-2.5"),children:[jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-none flex flex-col",children:jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(ui.Avatar,{src:e.icon,alt:e.name,className:"w-18 h-18",radius:"md"}),s&&jsxRuntime.jsx(ui.Avatar,{radius:"full",src:s,className:"w-5 h-5 absolute -bottom-1 -right-1 border border-border shadow-sm"})]})}),jsxRuntime.jsxs("div",{className:"flex-auto min-w-0 flex flex-col gap-2 text-neutral",children:[jsxRuntime.jsxs("div",{className:"h-6 flex items-center gap-2",children:[jsxRuntime.jsx("p",{className:"flex-auto min-w-0 text-sm font-medium text-foreground truncate",children:e.name}),jsxRuntime.jsx("div",{className:"flex-none",children:t})]}),jsxRuntime.jsx(Y,{channel:e})]})]}),jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-auto min-w-0",children:jsxRuntime.jsx(ne,{channel:e})}),jsxRuntime.jsx("div",{className:"flex-none",children:n})]}),e.description&&jsxRuntime.jsx("p",{className:"text-xs whitespace-pre-wrap",children:e.description})]})}function Pe(){let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"w-ful bg-content1 border border-border rounded-lg p-2.5",children:[jsxRuntime.jsx(ui.EmptyIcon,{width:28,height:28,className:"text-neutral mx-auto mt-20"}),jsxRuntime.jsx("p",{className:"pt-2 text-sm text-neutral text-center mb-20",children:e("common.empty")})]})}function wt(){let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"w-full",children:[jsxRuntime.jsx(ui.EmptyIcon,{width:40,height:40,className:"mt-10 text-neutral mx-auto"}),jsxRuntime.jsx("p",{className:"text-sm text-neutral text-center mt-2",children:e("channels.detail.notfound")})]})}function Pt(){return jsxRuntime.jsxs("div",{className:"w-full space-y-6",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-35 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-40 rounded-md"})]})}var It=e=>K(e);function Nt({id:e,customHeaderActions:t,customFooterActions:n}){let{t:s}=i18n.useTranslation(),{data:o,isLoading:r}=It(e);return r?jsxRuntime.jsx(Pt,{}):o?jsxRuntime.jsxs("div",{className:"space-y-6",children:[jsxRuntime.jsx(yt,{channel:o,headerActions:t?.(o),footerActions:n?.(o)}),jsxRuntime.jsxs("div",{className:"space-y-2.5",children:[jsxRuntime.jsx("h2",{className:"text-sm font-semibold",children:s("channels.detail.events.title")}),jsxRuntime.jsx(Pe,{})]})]}):jsxRuntime.jsx(wt,{})}function hd({onCreateChannel:e,onSelectChannel:t,customHeaderActions:n,customFooterActions:s}){let{t:o}=i18n.useTranslation(),{isMobile:r}=ui.useScreen(),[a,i]=react.useState("trending");return jsxRuntime.jsxs("div",{className:"w-full max-w-7xl mx-auto py-2 px-2 sm:py-4 sm:px-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-2 w-full overflow-x-auto",children:[jsxRuntime.jsx(ui.HorizontalScrollContainer,{className:"flex-auto min-w-0",children:jsxRuntime.jsxs(ui.StyledTabs,{variant:"primaryPlain",radius:"lg",selectedKey:a,onSelectionChange:i,"aria-label":o("channels.list.title"),size:r?"sm":void 0,children:[jsxRuntime.jsx(ui.Tab,{title:o("channels.trending.title"),"aria-label":o("channels.trending.title")},"trending"),jsxRuntime.jsx(ui.Tab,{title:o("channels.my.title"),"aria-label":o("channels.my.title")},"my"),jsxRuntime.jsx(ui.Tab,{title:o("channels.subscribed.title"),"aria-label":o("channels.subscribed.title")},"subscribed")]})}),jsxRuntime.jsx("div",{className:"flex-none flex items-center gap-2",children:e&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Button,{radius:"lg",color:"primary",size:"sm",onPress:e,className:"max-sm:hidden gap-1",startContent:jsxRuntime.jsx(ui.PlusIcon,{width:18,height:18}),"aria-label":o("channels.create.title"),children:o("channels.create.title")}),jsxRuntime.jsx(ui.Button,{isIconOnly:true,radius:"full",color:"primary",size:"sm",onPress:e,className:"sm:hidden w-7 min-w-7 h-7 min-h-7","aria-label":o("channels.create.title"),children:jsxRuntime.jsx(ui.PlusIcon,{width:18,height:18})})]})})]}),jsxRuntime.jsxs("div",{className:"mt-4 w-full",children:[a==="trending"&&jsxRuntime.jsx(ut,{onSelect:t,customHeaderActions:n,customFooterActions:s}),a==="my"&&jsxRuntime.jsx(gt,{onSelect:t,customHeaderActions:n,customFooterActions:s}),a==="subscribed"&&jsxRuntime.jsx(ft,{onSelect:t,customHeaderActions:n,customFooterActions:s})]})]})}function bd({id:e,customHeaderActions:t,customFooterActions:n}){let{t:s}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"w-full max-w-2xl mx-auto py-2 px-2 sm:py-4 sm:px-4 space-y-2 sm:space-y-4",children:[jsxRuntime.jsx("h1",{className:"text-sm sm:text-lg font-semibold",children:s("channels.detail.title")}),jsxRuntime.jsx(Nt,{id:e,customFooterActions:n,customHeaderActions:t})]})}function ke(e){return jsxRuntime.jsx("svg",{width:"8",height:"16",viewBox:"0 0 5 9",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",...e,children:jsxRuntime.jsx("path",{d:"M5 5.72727L2.5 9L0 5.72727H5ZM2.5 0L5 3.27273H0L2.5 0Z",fill:"currentColor"})})}function Lt(e){return jsxRuntime.jsx("svg",{width:"24",height:"24",viewBox:"0 0 12 12",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg",...e,children:jsxRuntime.jsx("path",{d:"M6 0C2.6856 0 0 2.68698 0 6C0 9.3144 2.68698 12 6 12C9.3144 12 12 9.31302 12 6C12.0014 2.68698 9.3144 0 6 0ZM8.53878 6.2036L5.21191 8.88089C5.04155 9.01801 4.78947 8.89612 4.78947 8.67867V3.32271C4.78947 3.10526 5.04155 2.98338 5.21191 3.1205L8.53878 5.79917C8.66897 5.90305 8.66897 6.09972 8.53878 6.2036Z",fill:"currentColor"})})}function Mt({onFilterChange:e}){let[t,n]=react.useState("newest"),[s,o]=react.useState("1D"),[r,a]=react.useState("buy"),[i,h]=react.useState(""),[l,c]=react.useState("P1");return react.useEffect(()=>{e?.({sort:t,timeRange:s,tradeType:r,search:i,plan:l});},[t,s,r,i,l,e]),jsxRuntime.jsxs("div",{className:"flex items-center justify-between w-full",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsxs(ui.Button,{variant:"bordered",className:"flex items-center gap-1",onPress:()=>n("newest"),children:[jsxRuntime.jsx(ke,{className:"w-4 h-4"}),jsxRuntime.jsx("p",{className:"text-sm font-medium",children:"Newest"})]}),jsxRuntime.jsxs(ui.Button,{variant:"bordered",className:"flex items-center gap-1",onPress:()=>n("amount"),children:[jsxRuntime.jsx(ke,{className:"w-4 h-4"}),jsxRuntime.jsx("p",{className:"text-sm font-medium",children:"Amount"})]}),jsxRuntime.jsxs(ui.Tabs,{variant:"solid",size:"sm",selectedKey:s,onSelectionChange:m=>o(m),children:[jsxRuntime.jsx(ui.Tab,{title:"1D"},"1D"),jsxRuntime.jsx(ui.Tab,{title:"7D"},"7D"),jsxRuntime.jsx(ui.Tab,{title:"30D"},"30D")]}),jsxRuntime.jsxs(ui.ButtonGroup,{size:"sm",children:[jsxRuntime.jsx(ui.Button,{variant:"flat",onPress:()=>a("buy"),children:jsxRuntime.jsx("span",{className:"text-primary font-semibold",children:"Buy"})}),jsxRuntime.jsx(ui.Button,{variant:"flat",onPress:()=>a("sell"),children:jsxRuntime.jsx("span",{className:"text-danger font-semibold",children:"Sell"})})]})]}),jsxRuntime.jsx(ui.Input,{placeholder:"Token symbol or address\u2026",variant:"faded",className:"max-w-80",value:i,onChange:m=>h(m.target.value)}),jsxRuntime.jsxs("div",{className:"flex items-center gap-3",children:[jsxRuntime.jsxs(ui.Button,{size:"sm",variant:"light",className:"flex items-center gap-1",children:[jsxRuntime.jsx(Lt,{className:"w-4 h-4"}),jsxRuntime.jsx("p",{className:"text-sm font-medium",children:"Listen"})]}),jsxRuntime.jsxs(ui.Tabs,{variant:"bordered",size:"sm",selectedKey:l,onSelectionChange:m=>c(m),color:"primary",children:[jsxRuntime.jsx(ui.Tab,{title:"P1"},"P1"),jsxRuntime.jsx(ui.Tab,{title:"P2"},"P2"),jsxRuntime.jsx(ui.Tab,{title:"P3"},"P3")]})]})]})}function Qt({trading:e,onBuy:t}){return jsxRuntime.jsxs(ui.Table,{classNames:{wrapper:"bg-transparent p-0"},className:"text-default-800",children:[jsxRuntime.jsxs(ui.TableHeader,{children:[jsxRuntime.jsx(ui.TableColumn,{children:"Date"},"date"),jsxRuntime.jsx(ui.TableColumn,{children:"Channel"},"channel"),jsxRuntime.jsx(ui.TableColumn,{children:"Address"},"address"),jsxRuntime.jsx(ui.TableColumn,{children:"Token"},"token"),jsxRuntime.jsx(ui.TableColumn,{children:"$ MC"},"mc"),jsxRuntime.jsxs(ui.TableColumn,{children:["Amount ",jsxRuntime.jsx("span",{className:"text-primary",children:"$"})]},"amount"),jsxRuntime.jsx(ui.TableColumn,{children:"Actions"},"actions")]}),jsxRuntime.jsx(ui.TableBody,{items:e,isLoading:false,children:n=>jsxRuntime.jsxs(ui.TableRow,{children:[jsxRuntime.jsx(ui.TableCell,{children:utils.formatAge(Date.now()-n.date)}),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(ui.Image,{radius:"md",src:n.channel.imageUrl,alt:n.channel.name,width:20,height:20}),n.channel.name]})}),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx("p",{className:ui.clsx(n.type==="buy"?"text-primary":"text-secondary"),children:utils.shortAddress(n.address)})}),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.Image,{radius:"md",src:n.token.image,alt:n.token.symbol,width:16,height:16})," ",jsxRuntime.jsxs("div",{className:"flex items-end gap-0.5",children:[jsxRuntime.jsx("p",{children:n.token.symbol}),jsxRuntime.jsx("p",{className:"text-xs text-default-500",children:utils.shortAddress(n.token.address)})]})]})}),jsxRuntime.jsx(ui.TableCell,{children:utils.formatAmountUSD2(n.mc)}),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsxs("div",{className:"flex gap-1 items-center",children:[jsxRuntime.jsx(ui.Image,{src:n.token.chainIcon,alt:n.token.symbol,width:16,height:16}),jsxRuntime.jsx("p",{className:ui.clsx(n.type==="buy"?"text-primary":"text-secondary"),children:utils.formatAmount(n.amount)})]})}),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsxs(ui.Button,{radius:"full",className:ui.clsx("text-white bg-[#B1FF3770]"),size:"sm",onPress:()=>t(n),children:["Buy 0.002 ",n.token.symbol]})})]},n.id)})]})}function qt({trading:e,onBuy:t}){return jsxRuntime.jsxs("div",{className:"flex flex-col gap-3",children:[jsxRuntime.jsx(Mt,{}),jsxRuntime.jsx(Qt,{trading:e,onBuy:t})]})}var Zt=[{id:"1",date:Date.now()-32*1e3,type:"buy",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"2",date:Date.now()-60*1e3,type:"sell",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"3",date:Date.now()-780*1e3,type:"buy",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"4",date:Date.now()-3600*1e3,type:"sell",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"5",date:Date.now()-1.5*60*60*1e3,type:"buy",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"6",date:Date.now()-10800*1e3,type:"sell",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"7",date:Date.now()-720*60*1e3,type:"buy",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"8",date:Date.now()-1440*60*1e3,type:"sell",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"9",date:Date.now()-7200*60*1e3,type:"buy",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579},{id:"10",date:Date.now()-14400*60*1e3,type:"sell",channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579}],Ot=[32*1e3,60*1e3,780*1e3,3600*1e3,1.5*60*60*1e3,10800*1e3,720*60*1e3,1440*60*1e3,7200*60*1e3,14400*60*1e3],Et=["buy","sell"];for(let e=11;e<=20;e++)Zt.push({id:`${e}`,date:Date.now()-Ot[(e-1)%Ot.length],type:Et[(e-1)%Et.length],channel:{id:"1",imageUrl:"https://pbs.twimg.com/profile_images/1821642506800353280/xIpx4wIO_normal.jpg",name:"Zoro - Channel 1",description:"Sol-Daily Update-Golden Dog Smart Money",createdAt:"8h",people:1109,volume:94,followers:105,createdBy:"Zoro",timeAgo:300,socials:{telegram:"https://t.me/Zoro",discord:"https://discord.com/Zoro"},dex:{fromToken:{name:"BNB",image:"https://assets.coingecko.com/coins/images/825/standard/bnb-icon2_2x.png?1696501970"},toToken:{name:"SOL",image:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},txs7d:{total:140,bullish:70,bearish:70},pnl7d:{total:21876},wr7d:{total:60.9}}},address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",token:{symbol:"PINK",image:"https://s1.chainstream.io/tokens/images/4ab7c44fa49cc29bda25878622e5c3f1.webp",address:"BwqpHv4s2wZoxf1ktVjFSfz8LkX4Wyjrf7QGrbPSDMqe",chainIcon:"https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756"},mc:26900,amount:1.3579});var _t=()=>Zt;function Hd(){let e=_t();return jsxRuntime.jsx(qt,{trading:e,onBuy:n=>{console.log("buy",n);}})}function lp({client:e,children:t}){return jsxRuntime.jsx(H.Provider,{value:{client:e},children:t})}
|
|
3
|
-
exports.BaseFormUI=$;exports.ChannelAttributes=Y;exports.ChannelBaseInfo=it;exports.ChannelDetailUI=yt;exports.ChannelDetailWidget=Nt;exports.ChannelEditButton=Hl;exports.ChannelStats=ne;exports.ChannelSubscribeButton=sm;exports.ChannelsContext=H;exports.ChannelsDetailPage=bd;exports.ChannelsEmptyUI=V;exports.ChannelsHomePage=hd;exports.ChannelsProvider=lp;exports.ChannelsSkeletonUI=Q;exports.ChannelsUI=M;exports.CreateChannelWidget=li;exports.MyChannelsWidget=gt;exports.SocialsFormUI=Ke;exports.SubscribedChannelsWidget=ft;exports.TradingUI=qt;exports.TradingWidget=Hd;exports.TrendingChannelsWidget=ut;exports.UpdateChannelFormUI=tt;exports.UpdateChannelWidget=bl;exports.WalletsFormUI=Ye;exports.WalletsListUI=$e;exports.channelEventsQueryKey=jt;exports.channelQueryKey=F;exports.channelSourcesQueryKey=ce;exports.channelsListQueryKey=nn;exports.createChannel=mn;exports.fetchChannel=Yt;exports.fetchChannelEvents=Xt;exports.fetchChannelSources=an;exports.fetchChannelsList=on;exports.fetchMyChannelsList=un;exports.fetchSubscribedChannelsList=xn;exports.myChannelsListQueryKey=pn;exports.parseWalletsText=Ge;exports.subscribeChannel=gn;exports.subscribedChannelsListQueryKey=bn;exports.unsubscribeChannel=Sn;exports.updateChannel=Nn;exports.updateChannelSources=Fn;exports.useChannelDetail=It;exports.useChannelEventsQuery=$t;exports.useChannelQuery=K;exports.useChannelSourcesQuery=Be;exports.useChannelsClient=d;exports.useChannelsContext=Fe;exports.useChannelsListQuery=Ae;exports.useCreateChannelMutation=Le;exports.useMyChannels=cc;exports.useMyChannelsListQuery=G;exports.useSubscribeChannelMutation=De;exports.useSubscribedChannels=Ym;exports.useSubscribedChannelsListQuery=j;exports.useTrading=_t;exports.useTrendingChannels=pt;exports.useUnsubscribeChannelMutation=Me;exports.useUpdateBaseForm=_e;exports.useUpdateChannelMutation=We;exports.useUpdateChannelSourcesMutation=Qe;exports.useUpdateWalletsForm=st;exports.useUpload=Ve;exports.version=Rt;//# sourceMappingURL=index.js.map
|
|
1
|
+
'use strict';var i18n=require('@liberfi.io/i18n'),ui=require('@liberfi.io/ui'),reactQuery=require('@tanstack/react-query'),react=require('react'),utils=require('@liberfi.io/utils'),client=require('@liberfi.io/client'),jsxRuntime=require('react/jsx-runtime'),types=require('@liberfi.io/types'),walletConnector=require('@liberfi.io/wallet-connector'),hooks=require('@liberfi.io/hooks');typeof window<"u"&&(window.__LIBERFI_VERSION__=window.__LIBERFI_VERSION__||{},window.__LIBERFI_VERSION__["@liberfi.io/ui-channels"]="0.1.0");var Bt="0.1.0";var q=react.createContext({});function Ie(){let e=react.useContext(q);if(!e)throw new Error("useChannelsContext must be used within a ChannelsProvider");return e}function p(){let{client:e}=Ie();return e}function Kt(e,t){return ["channelEvents",e,t.limit?`${t.limit}`:"",t.timestamp?`${t.timestamp}`:"",t.next_page?`${t.next_page}`:""]}async function ie(e,t,n){return await e.getChannelEvents(t,n)}function Ue(e,t={},n={}){let a=p();return reactQuery.useQuery({queryKey:Kt(e,t),queryFn:async()=>ie(a,e,t),...n})}function Dt(e){return ["channelEvents","infinite",e]}function Ae(e,t={},n={}){let a=p();return reactQuery.useInfiniteQuery({queryKey:Dt(e),queryFn:async({pageParam:s})=>ie(a,e,s),initialPageParam:t,getNextPageParam:(s,r,o)=>s.has_more?{timestamp:s.next_timestamp,next_page:o.next_page,limit:o.limit}:void 0,...n})}function T(e){return ["channel",e]}async function $t(e,t){return await e.get(t)}function V(e,t={}){let n=p();return reactQuery.useQuery({queryKey:T(e),queryFn:async()=>$t(n,e),...t})}function Gt(e){return ["channels",e.chain??"",e.page?`${e.page}`:"",e.size?`${e.size}`:"",e.search??"",e.sort??"",e.order??""]}async function Jt(e,t){let n={...t,chain:t.chain?utils.chainSlug(t.chain):void 0};return await e.getChannels(n)}function Fe(e={},t={}){let n=p();return reactQuery.useQuery({queryKey:Gt(e),queryFn:async()=>Jt(n,e),...t})}function me(e){return ["channelSources",e]}async function jt(e,t){return await e.getSources(t)}function K(e,t={}){let n=p();return reactQuery.useQuery({queryKey:me(e),queryFn:async()=>jt(n,e),...t})}async function nn(e,t){let n=utils.chainSlug(t.chain);if(!n)throw new Error("Invalid chain");return e.create({...t,chain:n})}function Te(e={}){let t=p();return reactQuery.useMutation({mutationFn:async n=>nn(t,n),...e})}function on(e){return ["myChannels",e.chain??"",e.page?`${e.page}`:"",e.size?`${e.size}`:"",e.search??"",e.sort??"",e.order??""]}async function rn(e,t){let n={...t,chain:t.chain?utils.chainSlug(t.chain):void 0};return await e.getMyChannels(n)}function z(e={},t={}){let n=p();return reactQuery.useQuery({queryKey:on(e),queryFn:async()=>rn(n,e),...t})}async function cn(e,t){await e.subscribe(t);}function Ee(e={}){let t=reactQuery.useQueryClient(),n=p();return reactQuery.useMutation({mutationFn:async a=>cn(n,a),...e,onSuccess:(a,s,r,o)=>{t.invalidateQueries({queryKey:["subscribedChannels"]}),t.invalidateQueries({queryKey:T(s)}),e?.onSuccess?.(a,s,r,o);}})}function pn(e){return ["subscribedChannels",e.chain??"",e.page?`${e.page}`:"",e.size?`${e.size}`:"",e.search??"",e.sort??"",e.order??""]}async function hn(e,t){let n={...t,chain:t.chain?utils.chainSlug(t.chain):void 0};return await e.getSubscribedChannels(n)}function D(e={},t={}){let n=p();return reactQuery.useQuery({queryKey:pn(e),queryFn:async()=>hn(n,e),...t})}async function xn(e,t){await e.unsubscribe(t);}function Le(e={}){let t=p(),n=reactQuery.useQueryClient();return reactQuery.useMutation({mutationFn:async a=>xn(t,a),...e,onSuccess:(a,s,r,o)=>{n.invalidateQueries({queryKey:["subscribedChannels"]}),n.invalidateQueries({queryKey:T(s)}),e?.onSuccess?.(a,s,r,o);}})}async function bn(e,t){let n={...t};if(t.chain){let a=utils.chainSlug(t.chain);if(!a)throw new Error("Invalid chain");n.chain=a;}return e.update(n)}function Re(e={}){let t=p(),n=reactQuery.useQueryClient();return reactQuery.useMutation({mutationFn:async a=>bn(t,a),...e,onSuccess:(a,s,r,o)=>{n.invalidateQueries({queryKey:T(s.id)}),e?.onSuccess?.(a,s,r,o);}})}async function Nn(e,t){return e.updateSources(t)}function ke(e={}){let t=p(),n=reactQuery.useQueryClient();return reactQuery.useMutation({mutationFn:async a=>Nn(t,a),...e,onSuccess:(a,s,r,o)=>{n.invalidateQueries({queryKey:me(s.channel_id)}),e?.onSuccess?.(a,s,r,o);}})}var Me=()=>{let e=ui.usePinata(),{client:t}=client.useDexClient();return react.useCallback(async a=>{let s=await client.fetchPresignedUploadUrl(t),r=await e.upload.public.file(a).url(s);return e.gateways.public.convert(r.cid)},[e,t])};var Qe=ui.z.object({name:ui.z.string({error:"channels.forms.base.name.required"}).min(1,"channels.forms.base.name.min").max(24,"channels.forms.base.name.max"),description:ui.z.string().optional(),icon:ui.z.url({error:"channels.forms.base.icon.required"})}),Fn=ui.z.object({address:ui.z.string({error:"channels.forms.wallets.address.required"}),alias:ui.z.string().optional()}),We=ui.z.array(Fn).min(1,"channels.forms.wallets.required").max(500,"channels.forms.wallets.maxCount");function $({isSubmitting:e=false,onSubmit:t,defaultValues:n={name:"",description:"",icon:""},submitLabel:a}){let{t:s}=i18n.useTranslation(),r=ui.useForm({mode:"onChange",reValidateMode:"onBlur",resolver:ui.zodResolver(Qe),defaultValues:n}),o=Me();return jsxRuntime.jsxs(ui.RHForm,{methods:r,onSubmit:t,children:[jsxRuntime.jsx(ui.RHInput,{name:"name",label:s("channels.forms.base.name.label"),"aria-label":s("channels.forms.base.name.label"),placeholder:s("channels.forms.base.name.placeholder"),variant:"bordered",radius:"lg",size:"sm",fullWidth:true,labelPlacement:"outside-top"}),jsxRuntime.jsx(ui.RHTextArea,{name:"description",label:s("channels.forms.base.description.label"),"aria-label":s("channels.forms.base.description.label"),placeholder:s("channels.forms.base.description.placeholder"),variant:"bordered",radius:"lg",size:"sm",fullWidth:true,labelPlacement:"outside-top"}),jsxRuntime.jsx(ui.RHUpload,{name:"icon",upload:o,label:s("channels.forms.base.icon.label"),placeholder:s("channels.forms.base.icon.placeholder"),hint:s("channels.forms.base.icon.hint"),radius:"lg",classNames:{upload:"sm:max-w-80"}}),jsxRuntime.jsx(ui.Button,{color:"primary",fullWidth:true,type:"submit",radius:"lg",className:"mt-8",isLoading:e,children:a??s("channels.forms.base.submit")})]})}function bl({onSuccess:e,onError:t}){let{t:n}=i18n.useTranslation(),{mutateAsync:a,isPending:s}=Te(),r=walletConnector.useAuthCallback(async o=>{try{let l=await a({name:o.name,description:o.description,icon:o.icon,chain:types.Chain.SOLANA,privacy:"public"});ui.toast.success(n("channels.create.success")),e?.(l);}catch(l){ui.toast.error(n("channels.create.error")),t?.(l);}},[n,a,e,t]);return jsxRuntime.jsx($,{onSubmit:r,isSubmitting:s})}function _e(e){let{t}=i18n.useTranslation(),{data:n,isLoading:a}=V(e),{mutateAsync:s,isPending:r}=Re(),o=react.useMemo(()=>{if(n)return {name:n.name,description:n.description,icon:n.icon??""}},[n]),l=walletConnector.useAuthCallback(async m=>{try{await s({id:e,name:m.name,description:m.description,icon:m.icon}),ui.toast.success(t("channels.update.success"));}catch(i){console.error("Update channel base info error",i),ui.toast.error(t("channels.update.error"));}},[s,e]);return {channel:n,isLoading:a,isSubmitting:r,defaultValues:o,submit:l}}function Ve({sink:e,onSaveToken:t}){let{t:n}=i18n.useTranslation(),[a,s]=react.useState("");return react.useEffect(()=>{},[e]),jsxRuntime.jsxs("div",{className:"px-2 sm:px-4 space-y-4",children:[jsxRuntime.jsx("p",{className:"whitespace-pre-wrap text-sm p-2 sm:p-4 bg-content2 rounded-lg text-neutral leading-[2]",children:n("channels.forms.socials.telegram.guide")}),jsxRuntime.jsxs("div",{className:"flex gap-4 items-center",children:[jsxRuntime.jsx(ui.StyledInput,{fullWidth:true,placeholder:n("channels.forms.socials.telegram.placeholder"),radius:"lg",value:a,onValueChange:s}),jsxRuntime.jsx(ui.Button,{color:"primary",radius:"lg",size:"sm",className:"h-10 min-h-10",children:n("common.save")})]})]})}function ze({channel:e}){let[t,n]=react.useState("telegram");return jsxRuntime.jsxs("div",{className:"w-full space-y-4",children:[jsxRuntime.jsx(ui.StyledTabs,{variant:"underlined",selectedKey:t,onSelectionChange:n,disableAnimation:false,children:jsxRuntime.jsx(ui.Tab,{title:jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(ui.TelegramIcon,{width:16,height:16}),jsxRuntime.jsx("h3",{children:"Telegram"})]})},"telegram")}),t==="telegram"&&jsxRuntime.jsx(Ve,{channel:e})]})}function De(e){return e.split(`
|
|
2
|
+
`).map(n=>n.trim()).filter(n=>!!n).map(n=>{let[a,s]=n.split(",");return {address:a?a.trim():void 0,alias:s?s.trim():void 0}})}function Ye({wallets:e=[],onSubmit:t,isSubmitting:n}){let{t:a}=i18n.useTranslation(),s=ui.useCopyToClipboard(),r=walletConnector.useAuthCallback(u=>{let h=e.filter(v=>v.value!==u.value).map(v=>({address:v.value??"",alias:v.alias}));t?.(h);},[e,t]),[o,l]=react.useState(""),m=utils.debounce(l,200),i=react.useMemo(()=>e.filter(u=>u.alias?.toLowerCase()?.includes(o.toLowerCase())||u.value?.toLowerCase()?.includes(o.toLowerCase())),[o,e]);return jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("h2",{className:"text-sm font-medium",children:a("channels.forms.wallets.list.title")}),jsxRuntime.jsx(ui.StyledInput,{size:"sm",className:"max-w-50",radius:"full",startContent:jsxRuntime.jsx(ui.SearchIcon,{width:16,height:16,className:"text-neutral"}),placeholder:a("channels.forms.wallets.list.search.placeholder"),onValueChange:m})]}),jsxRuntime.jsxs(ui.StyledTable,{isHeaderSticky:true,isVirtualized:i.length>10||i.length===0,radius:"lg",classNames:{emptyWrapper:"pt-10"},maxTableHeight:500,rowHeight:52,"aria-label":a("channels.forms.wallets.list.title"),children:[jsxRuntime.jsxs(ui.TableHeader,{children:[jsxRuntime.jsx(ui.TableColumn,{textValue:a("channels.forms.wallets.list.header.address"),width:"60%",children:a("channels.forms.wallets.list.header.address")},"address"),jsxRuntime.jsx(ui.TableColumn,{textValue:a("channels.forms.wallets.list.header.actions"),width:"40%",align:"end",children:a("channels.forms.wallets.list.header.actions")},"actions")]}),jsxRuntime.jsx(ui.TableBody,{items:i,emptyContent:jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx(ui.EmptyIcon,{className:"w-10 h-10 mx-auto text-neutral"}),jsxRuntime.jsx("p",{className:"text-xs text-neutral text-center",children:a("channels.forms.wallets.list.empty")})]}),children:u=>jsxRuntime.jsxs(ui.TableRow,{children:[jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsxs("div",{className:"flex flex-col gap-1 text-xs",children:[jsxRuntime.jsx("div",{children:u.alias}),jsxRuntime.jsxs("div",{className:"text-neutral flex items-center gap-1",onClick:()=>s(u.value??""),"aria-label":a("common.copy"),children:[jsxRuntime.jsx("div",{children:utils.shortAddress(u.value??"")}),jsxRuntime.jsx("div",{children:jsxRuntime.jsx(ui.CopyIcon,{width:12,height:12})})]})]})},"address"),jsxRuntime.jsx(ui.TableCell,{children:jsxRuntime.jsx(ui.Button,{isIconOnly:true,size:"sm",radius:"full",className:"bg-transparent",disabled:n,onPress:()=>r(u),children:jsxRuntime.jsx(ui.TrashIcon,{className:"text-danger-500",width:18,height:18})})},"actions")]},u.value)})]})]})}var Es=ui.z.object({walletsText:ui.z.string({error:"channels.forms.wallets.required"}).min(1,"channels.forms.wallets.required")});function Ge({channel:e,wallets:t=[],onSubmit:n,isSubmitting:a=false}){let{t:s}=i18n.useTranslation(),r=ui.useForm({mode:"onChange",reValidateMode:"onBlur",resolver:ui.zodResolver(Es),defaultValues:{walletsText:""}}),o=react.useMemo(()=>t.map(d=>({address:d.value??"",alias:d.alias})),[t]),{setError:l,reset:m}=r,i=react.useCallback(d=>{try{let h=We.parse(De(d)),v=h.length-utils.uniqBy(h,"address").length;if(v!==0)throw new Error(s("channels.forms.wallets.address.duplicated",{count:v}));let Pe=utils.intersectionBy(h,o,"address").length;if(Pe>0)throw new Error(s("channels.forms.wallets.address.alreadyAdded",{count:Pe}));if(h.length+o.length>500)throw new Error(s("channels.forms.wallets.maxCount"));let le=0;for(let Ot of h)utils.isValidWalletAddress(e.chain,Ot.address)||le++;if(le>0)throw new Error(s("channels.forms.wallets.address.invalid",{count:le}));return h}catch(h){h instanceof ui.z.ZodError?l("walletsText",{message:h.issues[0].message,type:"manual"}):h instanceof Error?l("walletsText",{message:h.message,type:"manual"}):l("walletsText",{message:s("channels.forms.wallets.invalid"),type:"manual"});return}},[o,s,e.chain]),u=react.useCallback(async d=>{let h=i(d.walletsText);h&&h.length>0&&(await n?.([...o,...h]),m());},[i,n,o]);return jsxRuntime.jsxs("div",{className:"flex flex-col gap-6",children:[jsxRuntime.jsxs(ui.RHForm,{methods:r,onSubmit:u,className:"relative",children:[jsxRuntime.jsx(ui.RHTextArea,{name:"walletsText",label:s("channels.forms.wallets.label"),"aria-label":s("channels.forms.wallets.label"),placeholder:s("channels.forms.wallets.placeholder"),variant:"bordered",radius:"lg",size:"sm",fullWidth:true,minRows:10,maxRows:10,labelPlacement:"outside-top"}),jsxRuntime.jsxs("div",{className:"absolute right-0 top-0 text-xs flex gap-1 text-neutral",children:[jsxRuntime.jsxs("span",{className:"text-neutral",children:[s("channels.forms.wallets.addedCount"),":"]}),jsxRuntime.jsxs("span",{children:[o.length," / 500"]})]}),jsxRuntime.jsxs("div",{className:"w-full flex items-center gap-4",children:[jsxRuntime.jsx(ui.HorizontalScrollContainer,{className:"flex-auto min-w-0",children:jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsxs("span",{className:"text-xs text-neutral flex-none",children:[s("channels.forms.wallets.supportedFormats"),":"]}),jsxRuntime.jsx(ui.StyledTooltip,{closeDelay:0,content:jsxRuntime.jsx("div",{className:"text-xs whitespace-pre-line",children:s("channels.forms.wallets.supportedFormats.text.hint")}),children:jsxRuntime.jsx(ui.Chip,{size:"sm",variant:"flat",children:s("channels.forms.wallets.supportedFormats.text")})})]})}),jsxRuntime.jsx("div",{className:"flex-none flex gap-4 items-center",children:jsxRuntime.jsx(ui.Button,{color:"primary",type:"submit",radius:"lg",isLoading:a,size:"sm",children:s("channels.forms.wallets.submit")})})]})]}),jsxRuntime.jsx(Ye,{wallets:t,onSubmit:n,isSubmitting:a})]})}function Xe({channel:e,type:t="base",baseFormDefaultValues:n,isSubmittingBaseForm:a=false,onSubmitBaseForm:s,baseFormSubmitLabel:r,wallets:o,isSubmittingWalletsForm:l=false,onSubmitWalletsForm:m,className:i}){let{t:u}=i18n.useTranslation(),[d,h]=react.useState(t),{isMobile:v}=ui.useScreen();return jsxRuntime.jsxs("div",{className:ui.clsx("w-full flex flex-col gap-4",i),children:[jsxRuntime.jsxs(ui.StyledTabs,{fullWidth:true,variant:"solid",size:v?"sm":void 0,selectedKey:d,onSelectionChange:h,children:[jsxRuntime.jsx(ui.Tab,{title:u("channels.forms.base.title")},"base"),jsxRuntime.jsx(ui.Tab,{title:u("channels.forms.wallets.title")},"wallets"),jsxRuntime.jsx(ui.Tab,{title:u("channels.forms.socials.title")},"social")]}),d==="base"&&jsxRuntime.jsx($,{defaultValues:n,isSubmitting:a,onSubmit:s,submitLabel:r}),d==="wallets"&&jsxRuntime.jsx(Ge,{channel:e,wallets:o,isSubmitting:l,onSubmit:m}),d==="social"&&jsxRuntime.jsx(ze,{channel:e})]})}function je({type:e="base",className:t}){let{t:n}=i18n.useTranslation(),[a,s]=react.useState(e),{isMobile:r}=ui.useScreen();return jsxRuntime.jsxs("div",{className:ui.clsx("w-full flex flex-col gap-4",t),children:[jsxRuntime.jsxs(ui.StyledTabs,{fullWidth:true,variant:"solid",size:r?"sm":void 0,selectedKey:a,onSelectionChange:s,children:[jsxRuntime.jsx(ui.Tab,{title:n("channels.forms.base.title")},"base"),jsxRuntime.jsx(ui.Tab,{title:n("channels.forms.wallets.title")},"wallets"),jsxRuntime.jsx(ui.Tab,{title:n("channels.forms.socials.title")},"social")]}),a==="base"&&jsxRuntime.jsx(fe,{}),a==="wallets"&&jsxRuntime.jsx(fe,{}),a==="social"&&jsxRuntime.jsx(fe,{})]})}function fe(){return jsxRuntime.jsxs("div",{className:"flex flex-col gap-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-10 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-10 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-40 rounded-md"})]})}function tt(e,t){let{t:n}=i18n.useTranslation(),{data:a,isLoading:s}=K(e),{mutateAsync:r,isPending:o}=ke(),l=walletConnector.useAuthCallback(async m=>{try{if(!t?.chain)throw new Error("Channel chain is not set");await r({channel_id:e,type:"wallet",sources:m.map(i=>({type:"wallet",value:i.address,alias:i.alias,configs:{chain:utils.chainSlug(t.chain)}}))}),ui.toast.success(n("channels.forms.wallets.update.success"));}catch(i){console.error("Update channel wallets error",i),ui.toast.error(n("channels.forms.wallets.update.error"));}},[r,e,t?.chain]);return {isLoading:s,isSubmitting:o,wallets:a,submit:l}}function Li({id:e,type:t="base"}){let{t:n}=i18n.useTranslation(),{channel:a,defaultValues:s,isLoading:r,isSubmitting:o,submit:l}=_e(e),{wallets:m,isLoading:i,isSubmitting:u,submit:d}=tt(e,a);return r||i||!a?jsxRuntime.jsx(je,{type:t}):jsxRuntime.jsx(Xe,{channel:a,type:t,baseFormDefaultValues:s,isSubmittingBaseForm:o,onSubmitBaseForm:l,baseFormSubmitLabel:n("channels.forms.base.update.submit"),wallets:m,isSubmittingWalletsForm:u,onSubmitWalletsForm:d})}function Z({channel:e}){let{t}=i18n.useTranslation(),n=hooks.useTickAge(new Date(e.updated_at));return jsxRuntime.jsx(ui.HorizontalScrollContainer,{classNames:{leftArrow:"from-content1/60 to-transparent",rightArrow:"from-content1/60 to-transparent"},children:jsxRuntime.jsxs("div",{className:"flex items-center gap-4",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.info.walletCount"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.WalletIcon,{width:16,height:16}),jsxRuntime.jsx("p",{className:"text-xs",children:e.source_count||"-"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.info.subscribeCount"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.PeopleIcon,{width:16,height:16}),jsxRuntime.jsx("p",{className:"text-xs",children:e.subscribe_count||"-"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.info.updatedAt"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx(ui.TimerIcon,{width:16,height:16}),jsxRuntime.jsx("p",{className:"text-xs",children:utils.formatAge(n)})]})}),e.twitter&&jsxRuntime.jsx(ui.Link,{href:e.twitter,target:"_blank",className:"text-neutral",children:jsxRuntime.jsx(ui.TwitterIcon,{width:16,height:16})}),e.telegram&&jsxRuntime.jsx(ui.Link,{href:e.telegram,target:"_blank",className:"text-neutral",children:jsxRuntime.jsx(ui.TelegramIcon,{width:16,height:16})}),e.discord&&jsxRuntime.jsx(ui.Link,{href:e.discord,target:"_blank",className:"text-neutral",children:jsxRuntime.jsx(ui.DiscordIcon,{width:16,height:16})})]})})}function at({channel:e,customActions:t}){let n=react.useMemo(()=>e.chain?utils.chainIcon(e.chain):void 0,[e.chain]);return jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-none flex flex-col",children:jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(ui.Avatar,{src:e.icon,alt:e.name,className:"w-18 h-18",radius:"md"}),n&&jsxRuntime.jsx(ui.Avatar,{radius:"full",src:n,className:"w-5 h-5 absolute -bottom-1 -right-1 border border-border shadow-sm"})]})}),jsxRuntime.jsxs("div",{className:"flex-auto min-w-0 flex flex-col gap-2 text-neutral",children:[jsxRuntime.jsxs("div",{className:"h-6 flex items-center gap-2",children:[jsxRuntime.jsx("p",{className:"flex-auto min-w-0 text-sm font-medium text-foreground truncate",children:e.name}),jsxRuntime.jsx("div",{className:"flex-none",children:t})]}),jsxRuntime.jsx(Z,{channel:e}),jsxRuntime.jsx("p",{className:"text-xs whitespace-pre-wrap line-clamp-1 h-4 overflow-hidden",children:e.description})]})]})}function om({channel:e,onEdit:t}){let{user:n}=walletConnector.useAuth(),a=walletConnector.useAuthCallback(()=>{t?.(e);},[e,t]);return n?.id!==e.owner_id?jsxRuntime.jsx(jsxRuntime.Fragment,{}):jsxRuntime.jsx(ui.StyledButton,{className:"bg-transparent",isIconOnly:true,size:"sm",onPress:a,children:jsxRuntime.jsx(ui.EditIcon,{width:16,height:16,className:"text-neutral"})})}function X({channel:e}){let{t}=i18n.useTranslation();return jsxRuntime.jsx(ui.HorizontalScrollContainer,{classNames:{leftArrow:"from-content1/60 to-transparent",rightArrow:"from-content1/60 to-transparent"},children:jsxRuntime.jsxs("div",{className:"flex items-center gap-4 text-xs",children:[jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.stats.7dTxs.hint"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-none flex flex-col gap-1 items-center",children:[jsxRuntime.jsx("p",{className:"text-neutral font-medium",children:t("channels.stats.7dTxs.title")}),jsxRuntime.jsx("p",{className:"text-foreground font-semibold",children:"--"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.stats.7dPnl.hint"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-none flex flex-col gap-1 items-center",children:[jsxRuntime.jsx("p",{className:"text-neutral font-medium",children:t("channels.stats.7dPnl.title")}),jsxRuntime.jsx("p",{className:"text-bullish font-semibold",children:"--"})]})}),jsxRuntime.jsx(ui.StyledTooltip,{content:t("channels.stats.7dWr.hint"),closeDelay:0,children:jsxRuntime.jsxs("div",{className:"flex-none flex flex-col gap-1 items-center",children:[jsxRuntime.jsx("p",{className:"text-neutral font-medium",children:t("channels.stats.7dWr.title")}),jsxRuntime.jsx("p",{className:"text-bullish font-semibold",children:"--%"})]})})]})})}function xm({channel:e,onSubscribeSuccess:t,onUnsubscribeSuccess:n,onSubscribeError:a,onUnsubscribeError:s}){let{t:r}=i18n.useTranslation(),[o,l]=react.useState(e.is_subscribed);react.useEffect(()=>{l(e.is_subscribed);},[e.is_subscribed]);let{mutateAsync:m,isPending:i}=Ee(),{mutateAsync:u,isPending:d}=Le(),h=walletConnector.useAuthCallback(async()=>{try{o?(await u(e.id),l(!1),ui.toast.success(r("channels.unsubscribe.success")),n?.(e)):(await m(e.id),l(!0),ui.toast.success(r("channels.subscribe.success")),t?.(e));}catch(v){console.error("Subscribe / Unsubscribe channel error",v),o?(ui.toast.error(r("channels.unsubscribe.error")),s?.(e,v)):(ui.toast.error(r("channels.subscribe.error")),a?.(e,v));}},[r,o,e,m,u,t,n,a,s]);return jsxRuntime.jsx(ui.StyledButton,{color:o?"default":"primary",size:"sm",radius:"lg",onPress:h,isLoading:i||d,variant:o?"bordered":"flat",className:ui.clsx("gap-1",o&&"text-neutral"),startContent:o?!i&&!d?jsxRuntime.jsx(ui.CheckIcon,{width:16,height:16}):void 0:!i&&!d?jsxRuntime.jsx(ui.PlusIcon,{width:16,height:16}):void 0,children:r(o?"channels.unsubscribe.submit":"channels.subscribe.submit")})}function rt({channel:e,onSelect:t,headerActions:n,footerActions:a}){let s=react.useCallback(()=>{t?.(e);},[e,t]);return jsxRuntime.jsxs("div",{className:ui.clsx("bg-content1 hover:bg-content2 border border-border rounded-lg w-full h-full p-2.5","flex flex-col gap-2.5",t&&"cursor-pointer"),onClick:s,children:[jsxRuntime.jsx(at,{channel:e,customActions:n}),jsxRuntime.jsxs("div",{className:"flex items-center gap-4",children:[jsxRuntime.jsx("div",{className:"flex-auto min-w-0",children:jsxRuntime.jsx(X,{channel:e})}),jsxRuntime.jsx("div",{className:"flex-none",children:a})]})]})}function R({channels:e,onSelect:t,customHeaderActions:n,customFooterActions:a}){return jsxRuntime.jsx("div",{className:"w-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:e.map(s=>jsxRuntime.jsx(rt,{channel:s,onSelect:t,headerActions:n?.(s),footerActions:a?.(s)},s.id))})}function M({count:e}){return jsxRuntime.jsx("div",{className:"w-full grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:Array.from({length:e}).map((t,n)=>jsxRuntime.jsxs("div",{className:"bg-content1 hover:bg-content2 border border-border rounded-lg w-full h-35 p-2.5 flex flex-col gap-2.5",children:[jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-none flex flex-col",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-18 h-18 flex-none rounded-md"})}),jsxRuntime.jsxs("div",{className:"flex-auto min-w-0 flex flex-col gap-2 justify-center text-neutral",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-24 h-4 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-48 h-4 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-48 h-4 rounded-md"})]})]}),jsxRuntime.jsxs("div",{className:"w-full flex justify-between gap-4",children:[jsxRuntime.jsx(ui.Skeleton,{className:"flex-auto min-w-0 h-6 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-24 h-6 rounded-md"})]})]},n))})}function Q({message:e}){let{t}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"pt-24 mx-auto",children:[jsxRuntime.jsx(ui.EmptyIcon,{width:28,height:28,className:"text-neutral mx-auto"}),jsxRuntime.jsx("p",{className:"pt-2 text-sm text-neutral text-center",children:e||t("common.empty")})]})}var mt=()=>{let{status:e}=walletConnector.useAuth(),t=Fe(),{refetch:n}=t;return react.useEffect(()=>{e==="authenticated"&&n();},[e,n]),t};function ct({onSelect:e,customHeaderActions:t,customFooterActions:n}){let{data:a,isLoading:s}=mt();return s?jsxRuntime.jsx(M,{count:9}):!a||a.list.length===0?jsxRuntime.jsx(Q,{}):jsxRuntime.jsx(R,{channels:a.list,onSelect:e,customHeaderActions:t,customFooterActions:n})}function ne({message:e}){let{t}=i18n.useTranslation(),{signIn:n}=walletConnector.useAuth();return jsxRuntime.jsxs("div",{className:"pt-24 flex flex-col items-center justify-center gap-2",children:[jsxRuntime.jsx("p",{className:"text-neutral text-sm",children:e||t("common.unauthenticated")}),jsxRuntime.jsx(ui.StyledButton,{color:"primary",size:"sm",onPress:n,radius:"lg",children:t("common.signIn")})]})}function dt({onSelect:e,customHeaderActions:t,customFooterActions:n}){let{status:a}=walletConnector.useAuth(),{data:s,isLoading:r}=D({},{enabled:a==="authenticated"});return a==="unauthenticated"?jsxRuntime.jsx(ne,{}):a==="authenticating"||r?jsxRuntime.jsx(M,{count:9}):!s||s.list.length===0?jsxRuntime.jsx(Q,{}):jsxRuntime.jsx(R,{channels:s.list,onSelect:e,customHeaderActions:t,customFooterActions:n})}var dc=()=>D();function pt({onSelect:e,customHeaderActions:t,customFooterActions:n}){let{status:a}=walletConnector.useAuth(),{data:s,isLoading:r}=z({},{enabled:a==="authenticated"});return a==="unauthenticated"?jsxRuntime.jsx(ne,{}):a==="authenticating"||r?jsxRuntime.jsx(M,{count:9}):!s||s.list.length===0?jsxRuntime.jsx(Q,{}):jsxRuntime.jsx(R,{channels:s.list,onSelect:e,customHeaderActions:t,customFooterActions:n})}var Sc=()=>z();function ft({channel:e,headerActions:t,footerActions:n,className:a}){let s=react.useMemo(()=>e.chain?utils.chainIcon(e.chain):void 0,[e.chain]);return jsxRuntime.jsxs("div",{className:ui.clsx("bg-content1 border border-border rounded-lg w-full h-fit p-2.5","flex flex-col gap-2.5",a),children:[jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-none flex flex-col",children:jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(ui.Avatar,{src:e.icon,alt:e.name,className:"w-18 h-18",radius:"md"}),s&&jsxRuntime.jsx(ui.Avatar,{radius:"full",src:s,className:"w-5 h-5 absolute -bottom-1 -right-1 border border-border shadow-sm"})]})}),jsxRuntime.jsxs("div",{className:"flex-auto min-w-0 flex flex-col gap-2 text-neutral",children:[jsxRuntime.jsxs("div",{className:"h-6 flex items-center gap-2",children:[jsxRuntime.jsx("p",{className:"flex-auto min-w-0 text-sm font-medium text-foreground truncate",children:e.name}),jsxRuntime.jsx("div",{className:"flex-none",children:t})]}),jsxRuntime.jsx(Z,{channel:e})]})]}),jsxRuntime.jsxs("div",{className:"flex gap-4",children:[jsxRuntime.jsx("div",{className:"flex-auto min-w-0",children:jsxRuntime.jsx(X,{channel:e})}),jsxRuntime.jsx("div",{className:"flex-none",children:n})]}),e.description&&jsxRuntime.jsx("p",{className:"text-xs whitespace-pre-wrap",children:e.description})]})}function vt({event:e,walletAliases:t,tokens:n}){let{t:a}=i18n.useTranslation(),s=hooks.useTickAge(new Date(e.data.timestamp)),r=e.data.wallet_address,o=t?.[r],l=e.data.quote_address,m=n?.[l]?.symbol??utils.COMMON_TOKEN_SYMBOLS_MAP[l],i=e.data.base_address,u=n?.[i]?.symbol??utils.COMMON_TOKEN_SYMBOLS_MAP[i],d=e.data.type;return jsxRuntime.jsxs("div",{className:"w-full h-full flex items-center gap-2.5 text-xs",children:[jsxRuntime.jsx("div",{className:"flex-none w-24",children:o?jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"truncate",children:o}),jsxRuntime.jsxs("div",{className:"text-neutral",children:["(",utils.shortAddress(r),")"]})]}):jsxRuntime.jsx("div",{children:utils.shortAddress(r)})}),d==="buy"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"flex-none w-18",children:jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-neutral",children:a("channels.events.walletTrade.buy")}),jsxRuntime.jsx("div",{className:"text-bullish",children:utils.formatAmount(new utils.SafeBigNumber(e.data.base_amount).abs())})]})}),jsxRuntime.jsx("div",{className:"flex-none w-24",children:u?jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"truncate",children:u}),jsxRuntime.jsxs("div",{className:"text-neutral",children:["(",utils.shortAddress(i),")"]})]}):jsxRuntime.jsx("div",{children:utils.shortAddress(i)})}),jsxRuntime.jsx("div",{className:"flex-none w-18",children:jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-neutral",children:a("channels.events.walletTrade.cost")}),jsxRuntime.jsx("div",{className:"text-bearish",children:utils.formatAmount(new utils.SafeBigNumber(e.data.quote_amount).abs())})]})}),jsxRuntime.jsx("div",{className:"flex-none w-24",children:m?jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"truncate",children:m}),jsxRuntime.jsxs("div",{className:"text-neutral",children:["(",utils.shortAddress(l),")"]})]}):jsxRuntime.jsx("div",{children:utils.shortAddress(l)})}),jsxRuntime.jsx("div",{className:"flex-none w-18",children:jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"truncate text-neutral",children:a("channels.events.walletTrade.price")}),jsxRuntime.jsx("div",{children:utils.formatPriceUSD(e.data.quote_price_usd)})]})})]}),d==="sell"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("div",{className:"flex-none w-18",children:jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-neutral",children:a("channels.events.walletTrade.sell")}),jsxRuntime.jsx("div",{className:"text-bearish",children:utils.formatAmount(new utils.SafeBigNumber(e.data.quote_amount).abs())})]})}),jsxRuntime.jsx("div",{className:"flex-none w-24",children:m?jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"truncate",children:m}),jsxRuntime.jsxs("div",{className:"text-neutral",children:["(",utils.shortAddress(l),")"]})]}):jsxRuntime.jsx("div",{children:utils.shortAddress(l)})}),jsxRuntime.jsx("div",{className:"flex-none w-18",children:jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"text-neutral",children:a("channels.events.walletTrade.got")}),jsxRuntime.jsx("div",{className:"text-bullish",children:utils.formatAmount(new utils.SafeBigNumber(e.data.base_amount).abs())})]})}),jsxRuntime.jsx("div",{className:"flex-none w-24",children:u?jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"truncate",children:u}),jsxRuntime.jsxs("div",{className:"text-neutral",children:["(",utils.shortAddress(i),")"]})]}):jsxRuntime.jsx("div",{children:utils.shortAddress(i)})}),jsxRuntime.jsx("div",{className:"flex-none w-18",children:jsxRuntime.jsxs("div",{className:"flex flex-col justify-center gap-0.5",children:[jsxRuntime.jsx("div",{className:"truncate text-neutral",children:a("channels.events.walletTrade.price")}),jsxRuntime.jsx("div",{children:utils.formatPriceUSD(e.data.quote_price_usd)})]})})]}),jsxRuntime.jsx("div",{className:"flex-none w-18 text-end",children:utils.formatAge(s)})]})}function wt({data:e=[],isLoading:t=false,hasMore:n=false,onFetchMore:a,className:s,walletAliases:r,tokens:o}){let l=react.useRef(null),{height:m}=hooks.useResizeObserver({ref:l}),i=react.useCallback(v=>v<e.length,[e]),u=react.useCallback(async()=>{a?.();},[a]),d=react.useMemo(()=>n?e.length+1:e.length,[e,n]),h=ui.useInfiniteLoader({isRowLoaded:i,loadMoreRows:u,rowCount:d,threshold:3});return t?jsxRuntime.jsx($a,{}):!e||e.length===0?jsxRuntime.jsx(Ha,{}):jsxRuntime.jsx("div",{className:ui.clsx("w-full h-full bg-content1 border border-border rounded-lg py-2.5 overflow-x-auto",s),children:jsxRuntime.jsx("div",{className:"w-full min-w-164 h-full",ref:l,children:jsxRuntime.jsx(ui.List,{style:{height:m},onRowsRendered:h,rowComponent:Ya,rowCount:d,rowHeight:60,rowProps:{data:e,walletAliases:r,tokens:o}})})})}function Ha(){let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"w-full bg-content1 border border-border rounded-lg p-2.5",children:[jsxRuntime.jsx(ui.EmptyIcon,{width:28,height:28,className:"text-neutral mx-auto mt-20"}),jsxRuntime.jsx("p",{className:"pt-2 text-sm text-neutral text-center mb-20",children:e("channels.events.empty")})]})}function $a(){return jsxRuntime.jsx("div",{className:"w-full bg-content1 border border-border rounded-lg p-2.5",children:Array.from({length:6}).map((e,t)=>jsxRuntime.jsx("div",{className:"w-full h-10 flex items-center",children:jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-6 rounded-md"})},t))})}function Ya({index:e,style:t,data:n,walletAliases:a,tokens:s}){let{t:r}=i18n.useTranslation();if(!n)return jsxRuntime.jsx("div",{className:"px-2.5",style:t});let o=n[e];return o?jsxRuntime.jsx("div",{style:t,className:"px-2.5 hover:bg-content2",children:jsxRuntime.jsx(Za,{event:o,walletAliases:a,tokens:s})}):jsxRuntime.jsx("div",{style:t,className:"px-2.5 text-xs text-neutral text-center",children:r("common.loadingMore")})}function Za(e){switch(e.event.type){case "wallet":return jsxRuntime.jsx(vt,{...e});default:return jsxRuntime.jsx(jsxRuntime.Fragment,{})}}function St(e){let{data:t,...n}=Ae(e,{next_page:true,limit:50}),{data:a}=Ue(e,{next_page:false,limit:50},{refetchInterval:1e4}),s=react.useMemo(()=>{let r=t?.pages?.flatMap(m=>m.data)??[],o=a?.data??[];return utils.uniqBy([...o,...r],m=>m.data.tx_hash+":"+m.data.type).sort((m,i)=>i.timestamp-m.timestamp)},[t,a]);return {...n,data:s}}function Pt(e){let{client:t}=client.useDexClient(),[n,a]=react.useState({}),s=react.useRef(new Set);return react.useEffect(()=>{let r=new Set;e.forEach(o=>{!utils.COMMON_TOKEN_ADDRESSES.includes(o.data.quote_address)&&!s.current.has(o.data.quote_address)&&(r.add(o.data.quote_address),s.current.add(o.data.quote_address)),!utils.COMMON_TOKEN_ADDRESSES.includes(o.data.base_address)&&!s.current.has(o.data.base_address)&&(r.add(o.data.base_address),s.current.add(o.data.base_address));}),r.size>0&&client.fetchTokens(t,{chain:types.Chain.SOLANA,addresses:Array.from(r)}).then(o=>{a(l=>{let m={...l};return o.forEach(i=>{m[i.address]=i;}),m});}).catch(o=>{console.error(o);});},[e,t]),{tokens:n}}function Ut(){let{t:e}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"w-full",children:[jsxRuntime.jsx(ui.EmptyIcon,{width:40,height:40,className:"mt-10 text-neutral mx-auto"}),jsxRuntime.jsx("p",{className:"text-sm text-neutral text-center mt-2",children:e("channels.detail.notfound")})]})}function Tt(){return jsxRuntime.jsxs("div",{className:"w-full space-y-6",children:[jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-35 rounded-md"}),jsxRuntime.jsx(ui.Skeleton,{className:"w-full h-40 rounded-md"})]})}var Et=e=>V(e);function Rt(e){let{data:t}=K(e),n=react.useMemo(()=>t?.filter(s=>s.type==="wallet")??[],[t]),a=react.useMemo(()=>utils.mapValues(utils.keyBy(n.filter(s=>!!s.alias),"value"),s=>s.alias),[n]);return {wallets:n,aliases:a}}function Mt({id:e,customHeaderActions:t,customFooterActions:n}){let{t:a}=i18n.useTranslation(),{data:s,isLoading:r}=Et(e),{data:o,isLoading:l,hasNextPage:m,fetchNextPage:i}=St(e),{aliases:u}=Rt(e),{tokens:d}=Pt(o);return r?jsxRuntime.jsx(Tt,{}):s?jsxRuntime.jsxs("div",{className:"w-full h-full flex flex-col gap-6",children:[jsxRuntime.jsx(ft,{channel:s,headerActions:t?.(s),footerActions:n?.(s),className:"flex-none"}),jsxRuntime.jsxs("div",{className:"flex-auto min-h-0 flex flex-col gap-2.5",children:[jsxRuntime.jsx("h2",{className:"text-sm font-semibold flex-none",children:a("channels.events.title")}),jsxRuntime.jsx(wt,{data:o,isLoading:l,hasMore:m,onFetchMore:i,className:"flex-auto min-h-0",walletAliases:u,tokens:d})]})]}):jsxRuntime.jsx(Ut,{})}function Hu({onCreateChannel:e,onSelectChannel:t,customHeaderActions:n,customFooterActions:a}){let{t:s}=i18n.useTranslation(),{isMobile:r}=ui.useScreen(),[o,l]=react.useState("trending");return jsxRuntime.jsxs("div",{className:"w-full max-w-7xl mx-auto py-2 px-2 sm:py-4 sm:px-4",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between gap-2 w-full overflow-x-auto",children:[jsxRuntime.jsx(ui.HorizontalScrollContainer,{className:"flex-auto min-w-0",children:jsxRuntime.jsxs(ui.StyledTabs,{variant:"primaryPlain",radius:"lg",selectedKey:o,onSelectionChange:l,"aria-label":s("channels.list.title"),size:r?"sm":void 0,children:[jsxRuntime.jsx(ui.Tab,{title:s("channels.trending.title"),"aria-label":s("channels.trending.title")},"trending"),jsxRuntime.jsx(ui.Tab,{title:s("channels.my.title"),"aria-label":s("channels.my.title")},"my"),jsxRuntime.jsx(ui.Tab,{title:s("channels.subscribed.title"),"aria-label":s("channels.subscribed.title")},"subscribed")]})}),jsxRuntime.jsx("div",{className:"flex-none flex items-center gap-2",children:e&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(ui.Button,{radius:"lg",color:"primary",size:"sm",onPress:e,className:"max-sm:hidden gap-1",startContent:jsxRuntime.jsx(ui.PlusIcon,{width:18,height:18}),"aria-label":s("channels.create.title"),children:s("channels.create.title")}),jsxRuntime.jsx(ui.Button,{isIconOnly:true,radius:"full",color:"primary",size:"sm",onPress:e,className:"sm:hidden w-7 min-w-7 h-7 min-h-7","aria-label":s("channels.create.title"),children:jsxRuntime.jsx(ui.PlusIcon,{width:18,height:18})})]})})]}),jsxRuntime.jsxs("div",{className:"mt-4 w-full",children:[o==="trending"&&jsxRuntime.jsx(ct,{onSelect:t,customHeaderActions:n,customFooterActions:a}),o==="my"&&jsxRuntime.jsx(pt,{onSelect:t,customHeaderActions:n,customFooterActions:a}),o==="subscribed"&&jsxRuntime.jsx(dt,{onSelect:t,customHeaderActions:n,customFooterActions:a})]})]})}function Ju({id:e,customHeaderActions:t,customFooterActions:n}){let{t:a}=i18n.useTranslation();return jsxRuntime.jsxs("div",{className:"w-full h-full max-w-2xl mx-auto py-2 px-2 sm:py-4 sm:px-4 flex flex-col gap-2 sm:gap-4",children:[jsxRuntime.jsx("h1",{className:"text-sm sm:text-lg font-semibold flex-none",children:a("channels.detail.title")}),jsxRuntime.jsx("div",{className:"w-full flex-auto min-h-0",children:jsxRuntime.jsx(Mt,{id:e,customFooterActions:n,customHeaderActions:t})})]})}function id({client:e,children:t}){return jsxRuntime.jsx(q.Provider,{value:{client:e},children:t})}exports.BaseFormUI=$;exports.ChannelAttributes=Z;exports.ChannelBaseInfo=at;exports.ChannelDetailUI=ft;exports.ChannelDetailWidget=Mt;exports.ChannelEditButton=om;exports.ChannelStats=X;exports.ChannelSubscribeButton=xm;exports.ChannelsContext=q;exports.ChannelsDetailPage=Ju;exports.ChannelsEmptyUI=Q;exports.ChannelsHomePage=Hu;exports.ChannelsProvider=id;exports.ChannelsSkeletonUI=M;exports.ChannelsUI=R;exports.CreateChannelWidget=bl;exports.MyChannelsWidget=pt;exports.SocialsFormUI=ze;exports.SubscribedChannelsWidget=dt;exports.TrendingChannelsWidget=ct;exports.UpdateChannelFormUI=Xe;exports.UpdateChannelWidget=Li;exports.WalletsFormUI=Ge;exports.WalletsListUI=Ye;exports.baseFormSchema=Qe;exports.channelEventsInfiniteQueryKey=Dt;exports.channelEventsQueryKey=Kt;exports.channelQueryKey=T;exports.channelSourcesQueryKey=me;exports.channelsListQueryKey=Gt;exports.createChannel=nn;exports.fetchChannel=$t;exports.fetchChannelEvents=ie;exports.fetchChannelSources=jt;exports.fetchChannelsList=Jt;exports.fetchMyChannelsList=rn;exports.fetchSubscribedChannelsList=hn;exports.myChannelsListQueryKey=on;exports.parseWalletsText=De;exports.subscribeChannel=cn;exports.subscribedChannelsListQueryKey=pn;exports.unsubscribeChannel=xn;exports.updateChannel=bn;exports.updateChannelSources=Nn;exports.useChannelDetail=Et;exports.useChannelEventsInfiniteQuery=Ae;exports.useChannelEventsQuery=Ue;exports.useChannelQuery=V;exports.useChannelSourcesQuery=K;exports.useChannelsClient=p;exports.useChannelsContext=Ie;exports.useChannelsListQuery=Fe;exports.useCreateChannelMutation=Te;exports.useMyChannels=Sc;exports.useMyChannelsListQuery=z;exports.useSubscribeChannelMutation=Ee;exports.useSubscribedChannels=dc;exports.useSubscribedChannelsListQuery=D;exports.useTrendingChannels=mt;exports.useUnsubscribeChannelMutation=Le;exports.useUpdateBaseForm=_e;exports.useUpdateChannelMutation=Re;exports.useUpdateChannelSourcesMutation=ke;exports.useUpdateWalletsForm=tt;exports.useUpload=Me;exports.version=Bt;exports.walletSchema=Fn;exports.walletsFormSchema=We;//# sourceMappingURL=index.js.map
|
|
4
3
|
//# sourceMappingURL=index.js.map
|