@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/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 as Channel$1, ChannelSource, API, IChannelsClient, Chain } from '@liberfi.io/types';
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$1) => void;
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$1;
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$1): {
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$1;
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$1;
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$1>;
131
- onSelect?: (channel: Channel$1) => void;
132
- customHeaderActions?: (channel: Channel$1) => React.ReactNode;
133
- customFooterActions?: (channel: Channel$1) => React.ReactNode;
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$1) => void;
149
- customHeaderActions?: (channel: Channel$1) => React.ReactNode;
150
- customFooterActions?: (channel: Channel$1) => React.ReactNode;
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$1) => void;
158
- customHeaderActions?: (channel: Channel$1) => React.ReactNode;
159
- customFooterActions?: (channel: Channel$1) => React.ReactNode;
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$1) => void;
167
- customHeaderActions?: (channel: Channel$1) => React.ReactNode;
168
- customFooterActions?: (channel: Channel$1) => React.ReactNode;
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$1;
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$1;
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$1;
187
- onEdit?: (channel: Channel$1) => void;
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$1;
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$1;
198
- onSubscribeSuccess?: (channel: Channel$1) => void;
199
- onUnsubscribeSuccess?: (channel: Channel$1) => void;
200
- onSubscribeError?: (channel: Channel$1, error: unknown) => void;
201
- onUnsubscribeError?: (channel: Channel$1, error: unknown) => void;
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$1;
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$1) => React.ReactNode;
215
- customFooterActions?: (channel: Channel$1) => React.ReactNode;
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$1) => void;
224
- customHeaderActions?: (channel: Channel$1) => React.ReactNode;
225
- customFooterActions?: (channel: Channel$1) => React.ReactNode;
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$1) => React.ReactNode;
232
- customFooterActions?: (channel: Channel$1) => React.ReactNode;
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$1>;
319
- declare function useChannelQuery(id: string, options?: Omit<UseQueryOptions<Channel$1, Error, Channel$1, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<Channel$1, Error>;
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$1>;
340
- declare function useCreateChannelMutation(options?: Omit<UseMutationOptions<Channel$1, Error, UseCreateChannelMutationParams, string[]>, "mutationFn">): _tanstack_react_query.UseMutationResult<Channel$1, Error, UseCreateChannelMutationParams, string[]>;
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$1>;
366
- declare function useUpdateChannelMutation(options?: Omit<UseMutationOptions<Channel$1, Error, UseUpdateChannelMutationParams, string[]>, "mutationFn">): _tanstack_react_query.UseMutationResult<Channel$1, Error, UseUpdateChannelMutationParams, string[]>;
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
- export { BaseFormUI, type BaseFormUIProps, ChannelAttributes, type ChannelAttributesProps, ChannelBaseInfo, type ChannelBaseInfoProps, type ChannelDetailPageProps, ChannelDetailUI, type ChannelDetailUIProps, ChannelDetailWidget, type ChannelDetailWidgetProps, ChannelEditButton, type ChannelEditButtonProps, 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, TradingUI, TradingWidget, 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, WalletsFormUI, type WalletsFormUIProps, WalletsListUI, type WalletsListUIProps, channelEventsQueryKey, channelQueryKey, channelSourcesQueryKey, channelsListQueryKey, createChannel, fetchChannel, fetchChannelEvents, fetchChannelSources, fetchChannelsList, fetchMyChannelsList, fetchSubscribedChannelsList, myChannelsListQueryKey, parseWalletsText, subscribeChannel, subscribedChannelsListQueryKey, unsubscribeChannel, updateChannel, updateChannelSources, useChannelDetail, useChannelEventsQuery, useChannelQuery, useChannelSourcesQuery, useChannelsClient, useChannelsContext, useChannelsListQuery, useCreateChannelMutation, useMyChannels, useMyChannelsListQuery, useSubscribeChannelMutation, useSubscribedChannels, useSubscribedChannelsListQuery, useTrading, useTrendingChannels, useUnsubscribeChannelMutation, useUpdateBaseForm, useUpdateChannelMutation, useUpdateChannelSourcesMutation, useUpdateWalletsForm, useUpload, _default as version };
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 Rt="0.1.0";var H=react.createContext({});function Fe(){let e=react.useContext(H);if(!e)throw new Error("useChannelsContext must be used within a ChannelsProvider");return e}function d(){let{client:e}=Fe();return e}function jt(e,t){return ["channelEvents",e,t.timestamp?`${t.timestamp}`:"",t.next_page?`${t.next_page}`:"",t.limit?`${t.limit}`:""]}async function Xt(e,t,n){return await e.getChannelEvents(t,n)}function $t(e,t={},n={}){let s=d();return reactQuery.useQuery({queryKey:jt(e,t),queryFn:async()=>Xt(s,e,t),...n})}function F(e){return ["channel",e]}async function Yt(e,t){return await e.get(t)}function K(e,t={}){let n=d();return reactQuery.useQuery({queryKey:F(e),queryFn:async()=>Yt(n,e),...t})}function nn(e){return ["channels",e.chain??"",e.page?`${e.page}`:"",e.size?`${e.size}`:"",e.search??"",e.sort??"",e.order??""]}async function on(e,t){let n={...t,chain:t.chain?utils.chainSlug(t.chain):void 0};return await e.getChannels(n)}function Ae(e={},t={}){let n=d();return reactQuery.useQuery({queryKey:nn(e),queryFn:async()=>on(n,e),...t})}function ce(e){return ["channelSources",e]}async function an(e,t){return await e.getSources(t)}function Be(e,t={}){let n=d();return reactQuery.useQuery({queryKey:ce(e),queryFn:async()=>an(n,e),...t})}async function mn(e,t){let n=utils.chainSlug(t.chain);if(!n)throw new Error("Invalid chain");return e.create({...t,chain:n})}function Le(e={}){let t=d();return reactQuery.useMutation({mutationFn:async n=>mn(t,n),...e})}function pn(e){return ["myChannels",e.chain??"",e.page?`${e.page}`:"",e.size?`${e.size}`:"",e.search??"",e.sort??"",e.order??""]}async function un(e,t){let n={...t,chain:t.chain?utils.chainSlug(t.chain):void 0};return await e.getMyChannels(n)}function G(e={},t={}){let n=d();return reactQuery.useQuery({queryKey:pn(e),queryFn:async()=>un(n,e),...t})}async function gn(e,t){await e.subscribe(t);}function De(e={}){let t=reactQuery.useQueryClient(),n=d();return reactQuery.useMutation({mutationFn:async s=>gn(n,s),...e,onSuccess:(s,o,r,a)=>{t.invalidateQueries({queryKey:["subscribedChannels"]}),t.invalidateQueries({queryKey:F(o)}),e?.onSuccess?.(s,o,r,a);}})}function bn(e){return ["subscribedChannels",e.chain??"",e.page?`${e.page}`:"",e.size?`${e.size}`:"",e.search??"",e.sort??"",e.order??""]}async function xn(e,t){let n={...t,chain:t.chain?utils.chainSlug(t.chain):void 0};return await e.getSubscribedChannels(n)}function j(e={},t={}){let n=d();return reactQuery.useQuery({queryKey:bn(e),queryFn:async()=>xn(n,e),...t})}async function Sn(e,t){await e.unsubscribe(t);}function Me(e={}){let t=d(),n=reactQuery.useQueryClient();return reactQuery.useMutation({mutationFn:async s=>Sn(t,s),...e,onSuccess:(s,o,r,a)=>{n.invalidateQueries({queryKey:["subscribedChannels"]}),n.invalidateQueries({queryKey:F(o)}),e?.onSuccess?.(s,o,r,a);}})}async function Nn(e,t){let n={...t};if(t.chain){let s=utils.chainSlug(t.chain);if(!s)throw new Error("Invalid chain");n.chain=s;}return e.update(n)}function We(e={}){let t=d(),n=reactQuery.useQueryClient();return reactQuery.useMutation({mutationFn:async s=>Nn(t,s),...e,onSuccess:(s,o,r,a)=>{n.invalidateQueries({queryKey:F(o.id)}),e?.onSuccess?.(s,o,r,a);}})}async function Fn(e,t){return e.updateSources(t)}function Qe(e={}){let t=d(),n=reactQuery.useQueryClient();return reactQuery.useMutation({mutationFn:async s=>Fn(t,s),...e,onSuccess:(s,o,r,a)=>{n.invalidateQueries({queryKey:ce(o.channel_id)}),e?.onSuccess?.(s,o,r,a);}})}var Ve=()=>{let e=ui.usePinata(),{client:t}=client.useDexClient();return react.useCallback(async s=>{let o=await client.fetchPresignedUploadUrl(t),r=await e.upload.public.file(s).url(o);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"})}),Mn=ui.z.object({address:ui.z.string({error:"channels.forms.wallets.address.required"}),alias:ui.z.string().optional()}),Oe=ui.z.array(Mn).min(1,"channels.forms.wallets.required").max(500,"channels.forms.wallets.maxCount");function $({isSubmitting:e=false,onSubmit:t,defaultValues:n={name:"",description:"",icon:""},submitLabel:s}){let{t:o}=i18n.useTranslation(),r=ui.useForm({mode:"onChange",reValidateMode:"onBlur",resolver:ui.zodResolver(qe),defaultValues:n}),a=Ve();return jsxRuntime.jsxs(ui.RHForm,{methods:r,onSubmit:t,children:[jsxRuntime.jsx(ui.RHInput,{name:"name",label:o("channels.forms.base.name.label"),"aria-label":o("channels.forms.base.name.label"),placeholder:o("channels.forms.base.name.placeholder"),variant:"bordered",radius:"lg",size:"sm",fullWidth:true,labelPlacement:"outside-top"}),jsxRuntime.jsx(ui.RHTextArea,{name:"description",label:o("channels.forms.base.description.label"),"aria-label":o("channels.forms.base.description.label"),placeholder:o("channels.forms.base.description.placeholder"),variant:"bordered",radius:"lg",size:"sm",fullWidth:true,labelPlacement:"outside-top"}),jsxRuntime.jsx(ui.RHUpload,{name:"icon",upload:a,label:o("channels.forms.base.icon.label"),placeholder:o("channels.forms.base.icon.placeholder"),hint:o("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:s??o("channels.forms.base.submit")})]})}function li({onSuccess:e,onError:t}){let{t:n}=i18n.useTranslation(),{mutateAsync:s,isPending:o}=Le(),r=walletConnector.useAuthCallback(async a=>{try{let i=await s({name:a.name,description:a.description,icon:a.icon,chain:types.Chain.SOLANA,privacy:"public"});ui.toast.success(n("channels.create.success")),e?.(i);}catch(i){ui.toast.error(n("channels.create.error")),t?.(i);}},[n,s,e,t]);return jsxRuntime.jsx($,{onSubmit:r,isSubmitting:o})}function _e(e){let{t}=i18n.useTranslation(),{data:n,isLoading:s}=K(e),{mutateAsync:o,isPending:r}=We(),a=react.useMemo(()=>{if(n)return {name:n.name,description:n.description,icon:n.icon??""}},[n]),i=walletConnector.useAuthCallback(async h=>{try{await o({id:e,name:h.name,description:h.description,icon:h.icon}),ui.toast.success(t("channels.update.success"));}catch(l){console.error("Update channel base info error",l),ui.toast.error(t("channels.update.error"));}},[o,e]);return {channel:n,isLoading:s,isSubmitting:r,defaultValues:a,submit:i}}function Re({sink:e,onSaveToken:t}){let{t:n}=i18n.useTranslation(),[s,o]=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:s,onValueChange:o}),jsxRuntime.jsx(ui.Button,{color:"primary",radius:"lg",size:"sm",className:"h-10 min-h-10",children:n("common.save")})]})]})}function Ke({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(Re,{channel:e})]})}function Ge(e){return e.split(`
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