@dappworks/kit 0.5.40 → 0.5.42

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.
Files changed (85) hide show
  1. package/dist/PaginationState-Bmrrw0ky.d.mts +17 -0
  2. package/dist/PromiseState-8EAu4Zv4.d.mts +57 -0
  3. package/dist/StorageState-qapaHguM.d.mts +48 -0
  4. package/dist/aiem.d.mts +167 -0
  5. package/dist/aiem.mjs +5 -5
  6. package/dist/aiem.mjs.map +1 -1
  7. package/dist/{chunk-MPNSYZJU.mjs → chunk-2B3FO5P6.mjs} +5 -5
  8. package/dist/chunk-2B3FO5P6.mjs.map +1 -0
  9. package/dist/{chunk-2HNXZE3X.mjs → chunk-6HA5WR5H.mjs} +372 -401
  10. package/dist/chunk-6HA5WR5H.mjs.map +1 -0
  11. package/dist/{chunk-QA3E2PJT.mjs → chunk-AFXQRBS6.mjs} +3 -3
  12. package/dist/chunk-AFXQRBS6.mjs.map +1 -0
  13. package/dist/{chunk-O3FWAAEG.mjs → chunk-FLACAHWH.mjs} +7 -8
  14. package/dist/chunk-FLACAHWH.mjs.map +1 -0
  15. package/dist/chunk-GKAU4P5I.mjs +1 -1
  16. package/dist/chunk-GKAU4P5I.mjs.map +1 -1
  17. package/dist/{chunk-B7RV4C5E.mjs → chunk-GPPSD2BO.mjs} +4 -6
  18. package/dist/chunk-GPPSD2BO.mjs.map +1 -0
  19. package/dist/chunk-IMOLRP7I.mjs +1 -1
  20. package/dist/chunk-IMOLRP7I.mjs.map +1 -1
  21. package/dist/chunk-K7LFG5BA.mjs +2 -2
  22. package/dist/chunk-K7LFG5BA.mjs.map +1 -1
  23. package/dist/{chunk-2N4HH4ZF.mjs → chunk-NCGC2KDE.mjs} +4 -6
  24. package/dist/chunk-NCGC2KDE.mjs.map +1 -0
  25. package/dist/chunk-ONVPCAMQ.mjs +1 -1
  26. package/dist/chunk-ONVPCAMQ.mjs.map +1 -1
  27. package/dist/{chunk-PZ3VSAOC.mjs → chunk-TEVYTENF.mjs} +3 -3
  28. package/dist/chunk-TEVYTENF.mjs.map +1 -0
  29. package/dist/{chunk-2WRRZVUW.mjs → chunk-UMFAEQ5S.mjs} +30 -55
  30. package/dist/chunk-UMFAEQ5S.mjs.map +1 -0
  31. package/dist/{chunk-R4N52NI2.mjs → chunk-VDDGCMCB.mjs} +38 -28
  32. package/dist/chunk-VDDGCMCB.mjs.map +1 -0
  33. package/dist/chunk-XSGTWROT.mjs +1 -1
  34. package/dist/chunk-XSGTWROT.mjs.map +1 -1
  35. package/dist/{chunk-R4SQKVDQ.mjs → chunk-YOSPWY5K.mjs} +2 -2
  36. package/dist/chunk-YOSPWY5K.mjs.map +1 -0
  37. package/dist/dev.d.mts +26 -0
  38. package/dist/dev.mjs +6 -8
  39. package/dist/dev.mjs.map +1 -1
  40. package/dist/experimental.d.mts +190 -0
  41. package/dist/experimental.mjs +6 -8
  42. package/dist/experimental.mjs.map +1 -1
  43. package/dist/form.d.mts +384 -0
  44. package/dist/form.mjs +15 -19
  45. package/dist/form.mjs.map +1 -1
  46. package/dist/index-CUKoRIdy.d.mts +3 -0
  47. package/dist/index.d.mts +90 -0
  48. package/dist/index.mjs +8 -8
  49. package/dist/index.mjs.map +1 -1
  50. package/dist/inspector.d.mts +15 -0
  51. package/dist/inspector.mjs +3 -4
  52. package/dist/inspector.mjs.map +1 -1
  53. package/dist/jsoncomponent.d.mts +22 -0
  54. package/dist/jsoncomponent.mjs +2 -2
  55. package/dist/jsoncomponent.mjs.map +1 -1
  56. package/dist/jsontable.d.mts +126 -0
  57. package/dist/jsontable.mjs +5 -5
  58. package/dist/jsontable.mjs.map +1 -1
  59. package/dist/metrics.d.mts +121 -0
  60. package/dist/metrics.mjs +6 -6
  61. package/dist/metrics.mjs.map +1 -1
  62. package/dist/plugins.d.mts +118 -0
  63. package/dist/plugins.mjs +5 -5
  64. package/dist/plugins.mjs.map +1 -1
  65. package/dist/root-BPMUmS6H.d.mts +111 -0
  66. package/dist/ui.d.mts +29 -0
  67. package/dist/ui.mjs +5 -6
  68. package/dist/ui.mjs.map +1 -1
  69. package/dist/utils.d.mts +232 -0
  70. package/dist/utils.mjs +4 -4
  71. package/dist/utils.mjs.map +1 -1
  72. package/dist/wallet.d.mts +198 -0
  73. package/dist/wallet.mjs +58 -16
  74. package/dist/wallet.mjs.map +1 -1
  75. package/package.json +4 -3
  76. package/dist/chunk-2HNXZE3X.mjs.map +0 -1
  77. package/dist/chunk-2N4HH4ZF.mjs.map +0 -1
  78. package/dist/chunk-2WRRZVUW.mjs.map +0 -1
  79. package/dist/chunk-B7RV4C5E.mjs.map +0 -1
  80. package/dist/chunk-MPNSYZJU.mjs.map +0 -1
  81. package/dist/chunk-O3FWAAEG.mjs.map +0 -1
  82. package/dist/chunk-PZ3VSAOC.mjs.map +0 -1
  83. package/dist/chunk-QA3E2PJT.mjs.map +0 -1
  84. package/dist/chunk-R4N52NI2.mjs.map +0 -1
  85. package/dist/chunk-R4SQKVDQ.mjs.map +0 -1
@@ -0,0 +1,17 @@
1
+ type ArgsType = {
2
+ page: number;
3
+ limit: number;
4
+ total: number;
5
+ onPageChange: (page: number) => void;
6
+ };
7
+ declare class PaginationState {
8
+ page: number;
9
+ limit: number;
10
+ total: number;
11
+ constructor(args: Partial<ArgsType>);
12
+ get offset(): number;
13
+ onPageChange(page: number): void;
14
+ setData(v: Partial<ArgsType>): void;
15
+ }
16
+
17
+ export { PaginationState as P };
@@ -0,0 +1,57 @@
1
+ import { EventEmitter } from 'events';
2
+ import { c as BooleanState, B as BaseState } from './root-BPMUmS6H.mjs';
3
+
4
+ interface Events {
5
+ data: (data: any) => void;
6
+ error: (error: any) => void;
7
+ select: (index: number) => void;
8
+ update: () => void;
9
+ finally: () => void;
10
+ wait: () => void;
11
+ }
12
+ declare class PromiseState<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>> {
13
+ sid: string;
14
+ key?: string;
15
+ loading: BooleanState;
16
+ value?: Awaited<U>;
17
+ defaultValue: any;
18
+ function: T;
19
+ transform?: (value: any) => Promise<Awaited<U>> | Awaited<U>;
20
+ onError?: (error: any) => void | null;
21
+ autoAlert: boolean;
22
+ autoUpdate: boolean;
23
+ autoInit: boolean;
24
+ autoClean: boolean;
25
+ context: any;
26
+ successMsg: string;
27
+ errMsg: string;
28
+ showUnauthorizedAlert: boolean;
29
+ loadingLock: boolean;
30
+ event: EventEmitter<[never]>;
31
+ on<E extends keyof Events>(event: E, listener: Events[E]): this;
32
+ once<E extends keyof Events>(event: E, listener: Events[E]): this;
33
+ use<E extends keyof Events>(event: E, listener: Events[E]): () => EventEmitter<[never]>;
34
+ emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>): void;
35
+ init: () => Promise<void>;
36
+ currentIndex: BaseState;
37
+ get current(): any;
38
+ _onSelect(index: number): void;
39
+ onSelect(index: number): void;
40
+ toJSON(): {
41
+ value: Awaited<U>;
42
+ };
43
+ waitItem(): Promise<Awaited<U>[0]>;
44
+ wait({ call }?: {
45
+ call?: boolean;
46
+ }): Promise<Awaited<U>>;
47
+ debug: {
48
+ name: string;
49
+ input: Record<string, any>;
50
+ };
51
+ constructor(args?: Partial<PromiseState<T, U>>);
52
+ setValue(val: any): Promise<void>;
53
+ getOrCall(...args: Parameters<T>): Promise<Awaited<U>>;
54
+ call(...args: Parameters<T>): Promise<Awaited<U>>;
55
+ }
56
+
57
+ export { PromiseState as P };
@@ -0,0 +1,48 @@
1
+ import * as mobx from 'mobx';
2
+
3
+ declare abstract class ContractBase {
4
+ }
5
+ type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T;
6
+ type PromiseHookData<T, U> = {
7
+ value: Awaited<U>;
8
+ get: T;
9
+ call: T;
10
+ func: T;
11
+ loading: boolean;
12
+ errorRetry: number;
13
+ };
14
+ declare class PromiseHook {
15
+ static entities: mobx.IObservableArray<any>;
16
+ static Get<T extends ContractBase>(cls: ContractClass<T>): (args: {
17
+ args: Partial<T>;
18
+ id?: string;
19
+ select?: {
20
+ [key in keyof Partial<T>]: boolean;
21
+ };
22
+ unselect?: {
23
+ [key in keyof Partial<T>]: boolean;
24
+ };
25
+ }) => Promise<T & {
26
+ refresh: () => Promise<void>;
27
+ }>;
28
+ static isPromiseHook(target: any): boolean;
29
+ static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue, lazy }: {
30
+ func: T;
31
+ defaultValue?: Awaited<U>;
32
+ lazy?: boolean;
33
+ }): PromiseHookData<T, U>;
34
+ }
35
+
36
+ declare class StorageState<T> {
37
+ key: string;
38
+ value: T | any;
39
+ default: T | any;
40
+ constructor(args: Partial<StorageState<T>>);
41
+ static safeParse(val: any): any;
42
+ load(): any;
43
+ save(value?: T): any;
44
+ setValue(value?: T): void;
45
+ clear(): any;
46
+ }
47
+
48
+ export { PromiseHook as P, StorageState as S, type PromiseHookData as a };
@@ -0,0 +1,167 @@
1
+ import * as viem from 'viem';
2
+ import { MulticallBatchOptions, Chain, Abi, GetContractReturnType, PublicClient, HttpTransport, WalletClient, Transport, Account } from 'viem';
3
+ import TTLCache from '@isaacs/ttlcache';
4
+
5
+ type ClassType<T> = {
6
+ new (...args: any[]): T;
7
+ };
8
+
9
+ declare class Fields {
10
+ static hide(options?: any): (target: any, propertyKey: any, descriptor?: PropertyDescriptor) => void;
11
+ static read(options?: any): (target: any, propertyKey: any, descriptor?: PropertyDescriptor) => void;
12
+ static write(options?: any): (target: any, propertyKey: any, descriptor?: PropertyDescriptor) => void;
13
+ static custom(func?: any): (target: any, propertyKey: any, descriptor?: PropertyDescriptor) => void;
14
+ static relation<T = any, R = any>(entity: () => ClassType<R>, options: ((e: T) => Promise<Partial<R> | Partial<R>[]>) | string): (target: any, propertyKey: any, descriptor?: PropertyDescriptor) => void;
15
+ static contract<T = any, R = any>(entity: () => ClassType<R>, options: ((e: T) => Promise<Partial<R> | Partial<R>[]>) | string): (target: any, propertyKey: any, descriptor?: PropertyDescriptor) => void;
16
+ private static setMetadata;
17
+ }
18
+
19
+ declare const iotexBabelNightly: {
20
+ blockExplorers: {
21
+ readonly default: {
22
+ readonly name: "IoTeXScan";
23
+ readonly url: "https://testnet.iotexscan.io";
24
+ };
25
+ };
26
+ blockTime?: number;
27
+ contracts?: {
28
+ [x: string]: viem.ChainContract | {
29
+ [sourceId: number]: viem.ChainContract;
30
+ };
31
+ ensRegistry?: viem.ChainContract;
32
+ ensUniversalResolver?: viem.ChainContract;
33
+ multicall3?: viem.ChainContract;
34
+ erc6492Verifier?: viem.ChainContract;
35
+ };
36
+ ensTlds?: readonly string[];
37
+ id: 4691;
38
+ name: "IoTeX Babel Nightly";
39
+ nativeCurrency: {
40
+ readonly decimals: 18;
41
+ readonly name: "IoTeX";
42
+ readonly symbol: "IOTX";
43
+ };
44
+ experimental_preconfirmationTime?: number;
45
+ rpcUrls: {
46
+ readonly default: {
47
+ readonly http: readonly ["https://babel-nightly.iotex.io"];
48
+ readonly webSocket: readonly ["wss://babel-nightly.iotex.io"];
49
+ };
50
+ };
51
+ sourceId?: number;
52
+ testnet: true;
53
+ custom?: Record<string, unknown>;
54
+ fees?: viem.ChainFees<undefined>;
55
+ formatters?: undefined;
56
+ serializers?: viem.ChainSerializers<undefined, viem.TransactionSerializable>;
57
+ readonly network: "iotex-babel-nightly";
58
+ readonly iconUrl: "https://cdn-dapp-works.s3.us-east-1.amazonaws.com/1dd84d927ae959c508392be62e6eb549.png";
59
+ };
60
+
61
+ declare class Cache {
62
+ kv: TTLCache<string, any>;
63
+ wrap<T>(key: string, fn: () => T | Promise<T>, config?: TTLCache.Options<any, any>): T | Promise<T>;
64
+ }
65
+ type GetOptions = {
66
+ multicall?: boolean | MulticallBatchOptions;
67
+ rpcUrls?: Chain["rpcUrls"];
68
+ pollingInterval?: number;
69
+ };
70
+ declare class AIem<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends {
71
+ [K in keyof Contracts]?: {
72
+ [key: string]: `${string}-0x${string}`;
73
+ };
74
+ }> {
75
+ static cache?: Cache;
76
+ cache?: Cache;
77
+ contractMap?: Contracts;
78
+ chainMap?: Chains;
79
+ nameMap?: Addrs;
80
+ contracts: {
81
+ [K in keyof Addrs & keyof Contracts]: {
82
+ [KK in keyof Addrs[K]]: GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>, any, any>;
83
+ };
84
+ };
85
+ static defaultFuncMap: {
86
+ totalSupply: {
87
+ ttl: number;
88
+ };
89
+ symbol: {
90
+ ttl: number;
91
+ };
92
+ name: {
93
+ ttl: number;
94
+ };
95
+ decimals: {
96
+ ttl: number;
97
+ };
98
+ balanceOf: {
99
+ ttl: number;
100
+ };
101
+ };
102
+ funcMap?: {
103
+ [key: string]: {
104
+ ttl?: number;
105
+ };
106
+ };
107
+ get _cache(): Cache;
108
+ getWallet?: () => WalletClient;
109
+ static Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends {
110
+ [K in keyof Contracts]?: {
111
+ [key: string]: `${string}-0x${string}`;
112
+ };
113
+ }>(args: Pick<AIem<Contracts, Chains, Addrs>, "contractMap" | "chainMap" | "nameMap" | "getWallet" | "cache" | "funcMap">): AIem<Contracts, Chains, Addrs>;
114
+ Set<Contracts extends Record<string, Abi>, Chains extends Record<string, Chain>, Addrs extends {
115
+ [K in keyof Contracts]?: {
116
+ [key: string]: `${string}-0x${string}`;
117
+ };
118
+ }>(args: Pick<AIem<Contracts, Chains, Addrs>, "contractMap" | "chainMap" | "nameMap" | "getWallet" | "cache" | "funcMap">): AIem<Contracts, Chains, Addrs>;
119
+ constructor(args?: Pick<AIem<Contracts, Chains, Addrs>, "contractMap" | "chainMap" | "nameMap" | "getWallet" | "cache" | "funcMap">);
120
+ static PubClient(chainId: string, options?: GetOptions): PublicClient<HttpTransport, Chain, any, any>;
121
+ PubClient<C extends keyof Chains>(chainId: C, options?: GetOptions): PublicClient<HttpTransport, Chain, any, any>;
122
+ static Get<TAbi extends Abi = any, ReturnType extends GetContractReturnType<TAbi, WalletClient<Transport, Chain, Account>>>(abi: TAbi, chainId: any, address: any, wallet?: WalletClient, options?: GetOptions): ReturnType & {
123
+ encode: ReturnType["write"];
124
+ };
125
+ Get<K extends keyof Contracts, C extends keyof Chains, Addr extends `0x${string}`>(contractName: K, chainId: C, address: Addr, options?: GetOptions): GetContractReturnType<Contracts[K], PublicClient<HttpTransport, Chain, any, any>> & {
126
+ encode: GetContractReturnType<Contracts[K], WalletClient<HttpTransport, Chain, Account, any>>["write"];
127
+ };
128
+ getContract({ client, address, abi, }: {
129
+ client: {
130
+ public: PublicClient<HttpTransport, Chain, any, any>;
131
+ wallet?: WalletClient;
132
+ };
133
+ address: `0x${string}`;
134
+ abi: any;
135
+ }): any;
136
+ static init(): AIem<any, any, any>;
137
+ static getPrice({ chainId, address }: {
138
+ chainId?: string;
139
+ address: string;
140
+ }): Promise<any>;
141
+ static utils: {
142
+ autoFormat: ({ value, decimals, chainId, address }: {
143
+ value: string;
144
+ decimals?: number;
145
+ chainId: string;
146
+ address: string;
147
+ }) => Promise<{
148
+ usd: string;
149
+ price: any;
150
+ value: string;
151
+ format: string;
152
+ originFormat: string;
153
+ decimals: string;
154
+ }>;
155
+ };
156
+ static QueryMany<E, S extends QuerySelect<E>>(entity: ClassType<E>, select: S): (_entities: Partial<E>[]) => Promise<QueryReturnType<E, S>[]>;
157
+ static Query<E, S extends QuerySelect<E>>(entity: ClassType<E>, select: S): (entities: Partial<E>) => Promise<QueryReturnType<E, S>>;
158
+ }
159
+ type Item<T> = T extends (infer U)[] ? U : T;
160
+ type QuerySelect<E> = {
161
+ [K in keyof E]?: E[K] extends (...args: any[]) => any ? Parameters<E[K]> | boolean : E[K] extends object ? QuerySelect<Item<E[K]>> | boolean : boolean;
162
+ };
163
+ type QueryReturnType<E, S extends QuerySelect<E>> = {
164
+ [K in keyof E]: K extends keyof S ? E[K] extends (...args: any[]) => any ? Awaited<ReturnType<E[K]>> : E[K] extends object ? S[K] extends object ? QueryReturnType<E[K], S[K]> : E[K] : E[K] : E[K];
165
+ };
166
+
167
+ export { AIem, Cache, Fields, type GetOptions, type Item, type QueryReturnType, iotexBabelNightly };
package/dist/aiem.mjs CHANGED
@@ -1,7 +1,7 @@
1
- export { AIem, Cache, Fields, iotexBabelNightly } from './chunk-O3FWAAEG.mjs';
2
- import './chunk-2N4HH4ZF.mjs';
3
- import './chunk-R4N52NI2.mjs';
1
+ export { AIem, Cache, Fields, iotexBabelNightly } from './chunk-FLACAHWH.mjs';
2
+ import './chunk-NCGC2KDE.mjs';
3
+ import './chunk-VDDGCMCB.mjs';
4
4
  import './chunk-K7LFG5BA.mjs';
5
- import './chunk-R4SQKVDQ.mjs';
6
- //# sourceMappingURL=out.js.map
5
+ import './chunk-YOSPWY5K.mjs';
6
+ //# sourceMappingURL=aiem.mjs.map
7
7
  //# sourceMappingURL=aiem.mjs.map
package/dist/aiem.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":""}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"aiem.mjs"}
@@ -1,8 +1,8 @@
1
1
  import { PaginationState } from './chunk-ONVPCAMQ.mjs';
2
- import { SkeletonBox } from './chunk-QA3E2PJT.mjs';
2
+ import { SkeletonBox } from './chunk-AFXQRBS6.mjs';
3
3
  import { _ } from './chunk-K7LFG5BA.mjs';
4
- import { cn } from './chunk-2HNXZE3X.mjs';
5
- import { __objRest, __spreadValues, __spreadProps } from './chunk-R4SQKVDQ.mjs';
4
+ import { cn } from './chunk-6HA5WR5H.mjs';
5
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-YOSPWY5K.mjs';
6
6
  import * as React2 from 'react';
7
7
  import React2__default, { useRef, useEffect, useState, useMemo } from 'react';
8
8
  import { Card, Divider, Pagination, Spinner } from '@nextui-org/react';
@@ -1027,5 +1027,5 @@ function groupByColSpan(arr, colSpan) {
1027
1027
  }
1028
1028
 
1029
1029
  export { JSONTable };
1030
- //# sourceMappingURL=out.js.map
1031
- //# sourceMappingURL=chunk-MPNSYZJU.mjs.map
1030
+ //# sourceMappingURL=chunk-2B3FO5P6.mjs.map
1031
+ //# sourceMappingURL=chunk-2B3FO5P6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../components/ui/dropdown-menu.tsx","../components/JSONTable/index.tsx"],"names":["React","sortableColumnsDefaultValue","columns","collapsedTables","keys","showCollapsedTables","_a","NextuiPagination","_b","_","sortedData","ChevronRight"],"mappings":"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","file":"chunk-2B3FO5P6.mjs","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuArrow = DropdownMenuPrimitive.Arrow\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md bg-white dark:bg-[#18181B] border dark:border-none p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg bg-white dark:bg-[#18181B] border dark:border-[#3e3e3e] p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n DropdownMenuArrow,\n}\n","import React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport { Card, Divider, Pagination as NextuiPagination, PaginationProps, Spinner, SpinnerProps } from \"@nextui-org/react\";\nimport { ChevronDown, ChevronLeft, ChevronRight, ChevronUp, ChevronsUpDown } from \"lucide-react\";\nimport { observer } from \"mobx-react-lite\";\nimport { PaginationState } from \"../../store/standard/PaginationState\";\nimport { SkeletonBox } from \"../Common/SkeletonBox\";\nimport { _ } from \"../../lib/lodash\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from \"../ui/dropdown-menu\";\nimport { VList } from \"virtua\";\n\nexport type TableClassNames = {\n table?: string;\n thead?: string;\n tr?: string;\n th?: string;\n tbody?: string;\n td?: string;\n};\n\nexport type HeaderKeys<T extends Record<string, any>> = Array<keyof T | \"$actions\">;\n\nexport type ColumnConfig<T> = {\n label?: React.ReactNode;\n width?: number;\n hidden?: boolean;\n sortable?: boolean;\n sortKey?: string;\n order?: number;\n render?: (item: T) => any;\n};\n\nexport type ColumnOptions<T> = {\n [key in keyof T]?: ColumnConfig<T>;\n} & {\n $actions?: ColumnConfig<T>;\n};\n\ntype Column<T> = {\n key: string;\n label: React.ReactNode;\n width: number;\n render?: (item: T) => any;\n};\n\ntype CollapsedTable<U> = {\n key: string;\n columns: Column<U>[];\n};\n\nexport type CardOptions = {\n cardContainerClassName?: string;\n cardClassName?: string;\n itemClassName?: string;\n labelClassName?: string;\n valueClassName?: string;\n showDivider?: boolean;\n dividerClassName?: string;\n virtualizedOptions?: {\n colSpan?: number;\n cardContainerClassName?: string;\n };\n};\n\nexport type LoadingOptions = {\n type?: \"skeleton\" | \"spinner\";\n skeleton?: {\n boxClassName?: string;\n skeletonClassName?: string;\n line?: number;\n };\n spinner?: {\n boxClassName?: string;\n spinnerProps?: SpinnerProps;\n text?: string;\n textClassName?: string;\n };\n};\n\nexport type SortingUIOptions = {\n showDropdown?: boolean;\n dropdownTriggerBtnClassName?: string;\n dropdownContentClassName?: string;\n dropdownItemClassName?: string;\n titles?: {\n asc?: string;\n desc?: string;\n none?: string;\n };\n};\n\nexport type CollapsedTableConfig<T> = {\n classNames?: TableClassNames;\n options: {\n key: keyof T;\n headerKeys: string[];\n columnOptions: ColumnOptions<any>;\n }[];\n collapsedHandlerPosition?: \"left\" | \"right\";\n collapsedHandlerBoxCss?: string;\n openedIcon?: React.ReactNode;\n closedIcon?: React.ReactNode;\n onRowClick?: (item: any) => void;\n rowCss?: string | ((item: any) => string | undefined);\n emptyContent?: React.ReactNode;\n};\n\nexport type VirtualizedOptions = {\n isVirtualized?: boolean;\n vListHeight?: number;\n classNames?: {\n header?: string;\n headerCell?: string;\n row?: string;\n rowCell?: string;\n };\n cardOptions?: {\n colSpan?: number;\n cardContainerClassName?: string;\n };\n fetchData?: () => Promise<void>;\n};\n\nexport interface JSONTableProps<T extends Record<string, any>> {\n className?: string;\n classNames?: TableClassNames;\n rowKey?: string;\n dataSource: T[];\n headerKeys?: HeaderKeys<T>;\n columnOptions?: ColumnOptions<T>;\n isServerPaging?: boolean;\n pagination?: PaginationState;\n nextuiPaginationProps?: Partial<PaginationProps>;\n showPagination?: boolean;\n onRowClick?: (item: T) => void;\n rowCss?: string | ((item: T) => string | undefined);\n asCard?: boolean;\n cardOptions?: CardOptions;\n autoScrollToTop?: boolean;\n emptyContent?: React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n loadingContent?: React.ReactNode;\n columnSlot?: ((props: { row: T }) => React.ReactNode) | React.ReactNode;\n isHeaderSticky?: boolean;\n sortingUIOptions?: SortingUIOptions;\n collapsedTableConfig?: CollapsedTableConfig<T>;\n virtualizedOptions?: VirtualizedOptions;\n}\n\nexport const JSONTable = <T extends Record<string, any>>(props: JSONTableProps<T>) => {\n const {\n className,\n classNames,\n dataSource = [],\n columnOptions,\n headerKeys,\n isServerPaging,\n pagination,\n nextuiPaginationProps,\n showPagination = true,\n rowKey,\n onRowClick,\n rowCss,\n columnSlot,\n asCard = false,\n cardOptions,\n autoScrollToTop = false,\n emptyContent,\n isLoading = false,\n loadingOptions,\n loadingContent,\n isHeaderSticky = false,\n sortingUIOptions,\n collapsedTableConfig,\n virtualizedOptions,\n } = props;\n const [sortableColumnsMap, setSortableColumnsMap] = useState<{ [k: string]: \"asc\" | \"desc\" | \"none\" }>({});\n const [sortedData, setSortedData] = useState<T[]>(dataSource);\n\n const { columns, sortableColumnsDefaultValue, showCollapsedTables, collapsedTables } = useMemo(() => {\n const firstData = dataSource[0];\n\n const allKeys = firstData ? Object.keys(firstData) : [];\n const keys = headerKeys ? headerKeys : columnOptions ? allKeys.filter((key) => !columnOptions[key]?.hidden) : allKeys;\n if (!keys.includes(\"$actions\") && columnOptions && columnOptions[\"$actions\"]) {\n keys.push(\"$actions\");\n }\n\n const sortableColumnsDefaultValue: { [k: string]: \"asc\" | \"desc\" | \"none\" } = {};\n\n let columns: Column<T>[] = keys.map((key: string) => {\n const sortable = columnOptions?.[key]?.sortable;\n if (sortable) {\n sortableColumnsDefaultValue[key] = \"none\";\n }\n return {\n key,\n label: columnOptions?.[key]?.label ?? (key === \"$actions\" ? \"\" : key),\n width: columnOptions?.[key]?.width ?? 60,\n render: columnOptions?.[key]?.render,\n };\n });\n\n if (!headerKeys && columnOptions) {\n columns.sort((a, b) => {\n const aOrder = columnOptions[a.key]?.order ?? 0;\n const bOrder = columnOptions[b.key]?.order ?? 0;\n return bOrder - aOrder;\n });\n }\n\n let collapsedTables: CollapsedTable<any>[] = [];\n if (firstData && collapsedTableConfig?.options) {\n const collapsedTableOptions = collapsedTableConfig.options;\n collapsedTables = collapsedTableOptions\n .filter((item) => {\n return Array.isArray(firstData[item.key]);\n })\n .map((item) => {\n const index = columns.findIndex((c) => c.key === item.key);\n if (index > -1) {\n columns.splice(index, 1);\n }\n const keys = item.headerKeys || [];\n if (!keys.includes(\"$actions\") && item.columnOptions && item.columnOptions[\"$actions\"]) {\n keys.push(\"$actions\");\n }\n return {\n key: item.key as string,\n columns: keys.map((k) => {\n const option = item.columnOptions[k];\n return {\n key: k,\n label: option?.label ?? k,\n width: option?.width ?? 60,\n render: option?.render,\n };\n }),\n };\n });\n }\n\n const showCollapsedTables = collapsedTables.length > 0;\n if (showCollapsedTables && !virtualizedOptions?.isVirtualized) {\n const collapsedHandlerPosition = collapsedTableConfig?.collapsedHandlerPosition || \"right\";\n if (collapsedHandlerPosition === \"right\") {\n columns.push({\n key: \"$collapsedHandler\",\n label: \"\",\n width: 60,\n });\n } else {\n columns = [\n {\n key: \"$collapsedHandler\",\n label: \"\",\n width: 60,\n },\n ...columns,\n ];\n }\n }\n\n return {\n columns,\n sortableColumnsDefaultValue,\n showCollapsedTables,\n collapsedTables,\n };\n }, [dataSource, columnOptions]);\n\n useEffect(() => {\n setSortableColumnsMap(sortableColumnsDefaultValue);\n }, [sortableColumnsDefaultValue]);\n\n useEffect(() => {\n setSortedData(dataSource);\n }, [dataSource]);\n\n if (asCard) {\n if (virtualizedOptions?.isVirtualized) {\n return (\n <VirtualizedCardUI\n className={className}\n rowKey={rowKey}\n sortedData={sortedData}\n columns={columns}\n cardOptions={cardOptions}\n onRowClick={onRowClick}\n autoScrollToTop={autoScrollToTop}\n emptyContent={emptyContent}\n isLoading={isLoading}\n loadingOptions={loadingOptions}\n loadingContent={loadingContent}\n virtualizedOptions={virtualizedOptions}\n columnSlot={columnSlot}\n />\n );\n } else {\n return (\n <CardUI\n className={className}\n rowKey={rowKey}\n sortedData={sortedData}\n columns={columns}\n cardOptions={cardOptions}\n onRowClick={onRowClick}\n autoScrollToTop={autoScrollToTop}\n emptyContent={emptyContent}\n columnSlot={columnSlot}\n showPagination={showPagination}\n pagination={pagination}\n nextuiPaginationProps={nextuiPaginationProps}\n />\n );\n }\n } else {\n if (virtualizedOptions?.isVirtualized) {\n return (\n <VirtualizedListUI\n className={className}\n rowKey={rowKey}\n sortedData={sortedData}\n dataSource={dataSource}\n columns={columns}\n columnOptions={columnOptions}\n sortableColumnsMap={sortableColumnsMap}\n sortingUIOptions={sortingUIOptions}\n setSortableColumnsMap={setSortableColumnsMap}\n setSortedData={setSortedData}\n onRowClick={onRowClick}\n emptyContent={emptyContent}\n isLoading={isLoading}\n loadingOptions={loadingOptions}\n loadingContent={loadingContent}\n virtualizedOptions={virtualizedOptions}\n />\n );\n } else {\n return (\n <TableUI\n className={className}\n classNames={classNames}\n isHeaderSticky={isHeaderSticky}\n sortedData={sortedData}\n dataSource={dataSource}\n columns={columns}\n columnOptions={columnOptions}\n sortableColumnsMap={sortableColumnsMap}\n sortingUIOptions={sortingUIOptions}\n setSortableColumnsMap={setSortableColumnsMap}\n setSortedData={setSortedData}\n isLoading={isLoading}\n loadingContent={loadingContent}\n loadingOptions={loadingOptions}\n emptyContent={emptyContent}\n rowCss={rowCss}\n onRowClick={onRowClick}\n showCollapsedTables={showCollapsedTables}\n collapsedTableConfig={collapsedTableConfig}\n collapsedTables={collapsedTables}\n rowKey={rowKey}\n isServerPaging={isServerPaging}\n showPagination={showPagination}\n pagination={pagination}\n nextuiPaginationProps={nextuiPaginationProps}\n autoScrollToTop={autoScrollToTop}\n columnSlot={columnSlot}\n />\n );\n }\n }\n};\n\nfunction renderFieldValue(v: any) {\n if (typeof v == \"string\" || typeof v == \"number\") {\n return v;\n }\n if (v == null) {\n return null;\n }\n return JSON.stringify(v);\n}\n\nfunction sortData<T>({\n sortKey,\n key,\n type,\n sortableColumnsMap,\n dataSource,\n}: {\n sortKey: string | undefined;\n key: string;\n type: \"asc\" | \"desc\" | \"none\";\n sortableColumnsMap: {\n [k: string]: \"asc\" | \"desc\" | \"none\";\n };\n dataSource: T[];\n}) {\n const sortableColumns: { [k: string]: \"asc\" | \"desc\" | \"none\" } = {};\n Object.keys(sortableColumnsMap).map((k) => {\n sortableColumns[k] = k === key ? type : \"none\";\n });\n let sortedData = dataSource;\n if (type !== \"none\") {\n const result = _.orderBy(\n dataSource,\n (o) => {\n const v = _.get(o, sortKey || key);\n if (v == null) {\n return type === \"desc\" ? \"\" : v;\n }\n if (typeof v === \"string\") {\n const _v = Number(v.replace(\"%\", \"\").replace(\"$\", \"\").replace(/,/g, \"\"));\n if (isNaN(_v)) {\n return v.toLowerCase();\n } else {\n return _v;\n }\n }\n return v;\n },\n type,\n );\n sortedData = result;\n }\n return {\n sortableColumns,\n sortedData,\n };\n}\n\nfunction SortingComponent<T>({\n sortingUIOptions,\n columnOptions,\n sortableColumnsMap,\n item,\n onSort,\n}: {\n sortingUIOptions: SortingUIOptions;\n columnOptions?: ColumnOptions<T>;\n sortableColumnsMap: { [k: string]: \"asc\" | \"desc\" | \"none\" };\n item: Column<T>;\n onSort: (e: { type: \"asc\" | \"desc\" | \"none\"; key: string; sortKey: string }) => void;\n}) {\n if (sortingUIOptions?.showDropdown) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <button className={cn(\"outline-none p-1\", sortingUIOptions?.dropdownTriggerBtnClassName)}>\n {sortableColumnsMap[item.key] === \"desc\" && <ChevronDown size={14} />}\n {sortableColumnsMap[item.key] === \"asc\" && <ChevronUp size={14} />}\n {sortableColumnsMap[item.key] === \"none\" && <ChevronsUpDown size={14} />}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className={cn(\"p-2 space-y-1 min-w-[4rem]\", sortingUIOptions?.dropdownContentClassName)} collisionPadding={10} sideOffset={5}>\n <DropdownMenuItem\n className={cn(\"text-xs font-bold cursor-pointer\", sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: \"asc\",\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.asc || \"ASC\"}\n </DropdownMenuItem>\n <DropdownMenuItem\n className={cn(\"text-xs font-bold cursor-pointer\", sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: \"desc\",\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.desc || \"DESC\"}\n </DropdownMenuItem>\n <DropdownMenuItem\n className={cn(\"text-xs font-bold cursor-pointer\", sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: \"none\",\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.none || \"NONE\"}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <button className={cn(\"outline-none p-1\", sortingUIOptions?.dropdownTriggerBtnClassName)}>\n {sortableColumnsMap[item.key] === \"none\" && (\n <ChevronsUpDown\n size={14}\n onClick={() => {\n onSort({\n type: \"desc\",\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n {sortableColumnsMap[item.key] === \"desc\" && (\n <ChevronDown\n size={14}\n onClick={() => {\n onSort({\n type: \"asc\",\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n {sortableColumnsMap[item.key] === \"asc\" && (\n <ChevronUp\n size={14}\n onClick={() => {\n onSort({\n type: \"none\",\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n </button>\n );\n}\n\nconst CardUI = observer(\n <T,>({\n className,\n sortedData,\n columns,\n rowKey,\n cardOptions,\n onRowClick,\n emptyContent,\n columnSlot,\n isServerPaging,\n showPagination,\n pagination,\n nextuiPaginationProps,\n autoScrollToTop,\n }: {\n className?: string;\n sortedData: T[];\n columns: Column<T>[];\n rowKey?: string;\n cardOptions?: CardOptions;\n onRowClick?: (item: T) => void;\n autoScrollToTop?: boolean;\n emptyContent?: React.ReactNode;\n columnSlot?: ((props: { row: T }) => React.ReactNode) | React.ReactNode;\n isServerPaging?: boolean;\n showPagination: boolean;\n pagination?: PaginationState;\n nextuiPaginationProps?: PaginationProps | {};\n }) => {\n const cardBoxRef = useRef<HTMLDivElement>(null);\n pagination = pagination\n ? pagination\n : useRef(\n new PaginationState({\n page: 1,\n limit: 10,\n }),\n ).current;\n\n useEffect(() => {\n if (!isServerPaging && pagination) {\n pagination.setData({\n total: sortedData.length,\n });\n }\n }, [sortedData]);\n\n const data = isServerPaging || !showPagination ? sortedData : sortedData.slice(pagination.offset, pagination.offset + pagination.limit);\n\n return (\n <div className={className} ref={cardBoxRef}>\n {sortedData.length > 0 ? (\n <>\n <div className={cardOptions?.cardContainerClassName}>\n {data.map((item, index) => {\n return (\n <Card\n key={rowKey ? item[rowKey] || index : index}\n className={cn(\"mb-2 w-full shadow-sm p-4 rounded-lg\", cardOptions?.cardClassName)}\n isPressable={!!onRowClick}\n onPress={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column, i) => {\n return (\n <div className=\"w-full\" key={column.key}>\n <div className={cn(\"w-full\", cardOptions?.itemClassName)}>\n <div className={cn(\"font-meidum text-xs text-foreground-400\", cardOptions?.labelClassName)}>{column.label}</div>\n <div className={cn(\"text-xs\", cardOptions?.valueClassName)}>{column.render ? column.render(item) : renderFieldValue(item[column.key])}</div>\n </div>\n {cardOptions?.showDivider && i !== columns.length - 1 && <Divider className={cn(\"my-2\", cardOptions?.dividerClassName)} />}\n </div>\n );\n })}\n {typeof columnSlot === \"function\" ? columnSlot({ row: item }) : columnSlot}\n </Card>\n );\n })}\n </div>\n {showPagination && pagination.total > pagination.limit && (\n <div className=\"flex justify-center\">\n <NextuiPagination\n className=\"mt-2\"\n showControls\n showShadow\n size=\"sm\"\n radius=\"sm\"\n color=\"primary\"\n initialPage={1}\n total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n if (autoScrollToTop && cardBoxRef.current) {\n scrollIntoTop(cardBoxRef.current);\n }\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </>\n ) : (\n (emptyContent ?? <DefaultEmptyContent />)\n )}\n </div>\n );\n },\n);\n\nfunction VirtualizedCardUI<T>({\n className,\n sortedData,\n columns,\n rowKey,\n cardOptions,\n onRowClick,\n emptyContent,\n isLoading,\n loadingOptions,\n loadingContent,\n virtualizedOptions,\n columnSlot,\n}: {\n className?: string;\n sortedData: T[];\n columns: Column<T>[];\n rowKey?: string;\n cardOptions?: CardOptions;\n onRowClick?: (item: T) => void;\n autoScrollToTop?: boolean;\n emptyContent?: React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n loadingContent?: React.ReactNode;\n virtualizedOptions?: VirtualizedOptions;\n columnSlot?: ((props: { row: T }) => React.ReactNode) | React.ReactNode;\n}) {\n const colSpan = virtualizedOptions?.cardOptions?.colSpan || cardOptions?.virtualizedOptions?.colSpan || 1;\n const fetchedCountRef = useRef(-1);\n const elements = useMemo(() => {\n const MyCard = ({ item }) => {\n return (\n <Card\n className={cn(\"mb-2 w-full shadow-sm p-4 rounded-lg\", cardOptions?.cardClassName)}\n isPressable={!!onRowClick}\n onPress={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column, i) => {\n return (\n <div className=\"w-full\" key={column.key}>\n <div className={cn(\"w-full\", cardOptions?.itemClassName)}>\n <div className={cn(\"font-meidum text-xs text-foreground-400\", cardOptions?.labelClassName)}>{column.label}</div>\n <div className={cn(\"text-xs\", cardOptions?.valueClassName)}>{column.render ? column.render(item) : renderFieldValue(item[column.key])}</div>\n </div>\n {cardOptions?.showDivider && i !== columns.length - 1 && <Divider className={cn(\"my-2\", cardOptions?.dividerClassName)} />}\n </div>\n );\n })}\n {typeof columnSlot === \"function\" ? columnSlot({ row: item }) : columnSlot}\n </Card>\n );\n };\n if (colSpan === 1) {\n return sortedData.map((item, index) => {\n return <MyCard key={rowKey ? item[rowKey] || index : index} item={item} />;\n });\n } else {\n const groupData = groupByColSpan(sortedData, colSpan);\n return groupData.map((group, gIndex) => {\n return (\n <div\n className={cn(\"flex items-center justify-between space-x-1\", virtualizedOptions?.cardOptions?.cardContainerClassName || cardOptions?.virtualizedOptions?.cardContainerClassName)}\n key={gIndex}\n >\n {group.map((item, index) => {\n return <MyCard key={rowKey ? item[rowKey] || index : index} item={item} />;\n })}\n </div>\n );\n });\n }\n }, [sortedData]);\n return (\n <div className={className}>\n {sortedData.length > 0 ? (\n <VList\n style={{ height: virtualizedOptions?.vListHeight || 400 }}\n onRangeChange={async (_, endIndex) => {\n const count = sortedData.length / colSpan;\n if (endIndex + 1 >= count && fetchedCountRef.current < count) {\n fetchedCountRef.current = count;\n if (virtualizedOptions?.fetchData) {\n await virtualizedOptions.fetchData();\n }\n }\n }}\n >\n {elements}\n {isLoading ? loadingContent || DefaultLoading({ loadingOptions }) : null}\n </VList>\n ) : (\n (emptyContent ?? <DefaultEmptyContent />)\n )}\n </div>\n );\n}\n\nfunction VirtualizedListUI<T>({\n className,\n sortedData,\n dataSource,\n columns,\n columnOptions,\n sortableColumnsMap,\n sortingUIOptions,\n setSortableColumnsMap,\n setSortedData,\n rowKey,\n onRowClick,\n rowCss,\n emptyContent,\n isLoading,\n loadingOptions,\n loadingContent,\n virtualizedOptions,\n}: {\n className: string;\n sortedData: T[];\n dataSource: T[];\n columns: Column<T>[];\n columnOptions: ColumnOptions<T>;\n sortableColumnsMap: { [k: string]: \"asc\" | \"desc\" | \"none\" };\n sortingUIOptions: SortingUIOptions;\n setSortableColumnsMap: (\n value: React.SetStateAction<{\n [k: string]: \"asc\" | \"desc\" | \"none\";\n }>,\n ) => void;\n setSortedData: (value: React.SetStateAction<T[]>) => void;\n rowKey?: string;\n onRowClick?: (item: T) => void;\n rowCss?: string | ((item: T) => string | undefined);\n emptyContent?: React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n loadingContent?: React.ReactNode;\n virtualizedOptions?: VirtualizedOptions;\n}) {\n const fetchedCountRef = useRef(-1);\n const elements = useMemo(\n () =>\n sortedData.map((item, index) => {\n return (\n <div\n key={rowKey ? item[rowKey] || index : index}\n className={cn(\"w-full flex items-center space-x-1\", virtualizedOptions?.classNames?.row, typeof rowCss === \"function\" ? rowCss(item) : rowCss)}\n onClick={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column) => {\n return (\n <div\n key={column.key}\n className={cn(\"w-full flex-grow py-2 px-4 text-xs whitespace-nowrap overflow-auto\", virtualizedOptions?.classNames?.rowCell)}\n style={{\n minWidth: column.width,\n }}\n >\n {column.render ? column.render(item) : renderFieldValue(item[column.key])}\n </div>\n );\n })}\n </div>\n );\n }),\n [sortedData],\n );\n\n return (\n <div className={cn(\"w-full overflow-x-auto\", className)}>\n <div className=\"inline-block min-w-fit w-full\">\n <div className={cn(\"w-full flex items-center rounded-lg bg-default-100 space-x-1 mb-2\", virtualizedOptions?.classNames?.header)}>\n {columns.map((column) => {\n return (\n <div\n key={column.key}\n className={cn(\"w-full flex-grow py-2 px-4 flex items-center text-xs font-semibold whitespace-nowrap overflow-auto\", virtualizedOptions?.classNames?.headerCell)}\n style={{\n minWidth: column.width,\n }}\n >\n <span>{column.label}</span>\n {!!sortableColumnsMap[column.key] && (\n <SortingComponent\n sortingUIOptions={sortingUIOptions}\n columnOptions={columnOptions}\n sortableColumnsMap={sortableColumnsMap}\n item={column}\n onSort={({ type, key, sortKey }) => {\n const { sortableColumns, sortedData } = sortData({\n type,\n key,\n sortKey,\n sortableColumnsMap,\n dataSource,\n });\n setSortableColumnsMap(sortableColumns);\n setSortedData(sortedData);\n }}\n />\n )}\n </div>\n );\n })}\n </div>\n {sortedData.length > 0 ? (\n <VList\n style={{ height: virtualizedOptions?.vListHeight || 200 }}\n onRangeChange={async (_, endIndex) => {\n const count = sortedData.length;\n if (endIndex + 1 >= count && fetchedCountRef.current < count) {\n fetchedCountRef.current = count;\n if (virtualizedOptions?.fetchData) {\n await virtualizedOptions.fetchData();\n }\n }\n }}\n >\n {elements}\n {isLoading ? loadingContent || DefaultLoading({ loadingOptions }) : null}\n </VList>\n ) : (\n (emptyContent ?? <DefaultEmptyContent />)\n )}\n </div>\n </div>\n );\n}\n\nconst TableUI = observer(\n <T,>({\n className,\n classNames = {},\n isHeaderSticky,\n sortedData,\n dataSource,\n columns,\n columnOptions,\n sortableColumnsMap,\n sortingUIOptions,\n setSortableColumnsMap,\n setSortedData,\n isLoading,\n loadingContent,\n loadingOptions,\n emptyContent,\n rowCss,\n onRowClick,\n showCollapsedTables,\n collapsedTableConfig,\n collapsedTables,\n rowKey,\n isServerPaging,\n showPagination,\n pagination,\n nextuiPaginationProps = {},\n autoScrollToTop,\n columnSlot,\n }: {\n className: string;\n classNames?: TableClassNames;\n isHeaderSticky: boolean;\n sortedData: T[];\n dataSource: T[];\n columns: Column<T>[];\n columnOptions?: ColumnOptions<T>;\n sortableColumnsMap: { [k: string]: \"asc\" | \"desc\" | \"none\" };\n sortingUIOptions: SortingUIOptions;\n setSortableColumnsMap: (value: React.SetStateAction<{ [k: string]: \"asc\" | \"desc\" | \"none\" }>) => void;\n setSortedData: (value: React.SetStateAction<T[]>) => void;\n isLoading: boolean;\n loadingContent?: React.ReactNode;\n loadingOptions?: LoadingOptions;\n emptyContent?: React.ReactNode;\n rowCss?: string | ((item: T) => string | undefined);\n onRowClick?: (item: T) => void;\n showCollapsedTables: boolean;\n collapsedTableConfig?: CollapsedTableConfig<T>;\n collapsedTables: CollapsedTable<any>[];\n rowKey?: string;\n isServerPaging?: boolean;\n showPagination: boolean;\n pagination?: PaginationState;\n nextuiPaginationProps?: PaginationProps | {};\n autoScrollToTop: boolean;\n columnSlot?: ((props: { row: T }) => React.ReactNode) | React.ReactNode;\n }) => {\n const tableBoxRef = useRef<HTMLDivElement>(null);\n pagination = pagination\n ? pagination\n : useRef(\n new PaginationState({\n page: 1,\n limit: 10,\n }),\n ).current;\n\n useEffect(() => {\n if (!isServerPaging) {\n pagination.setData({\n total: dataSource.length,\n });\n }\n }, [dataSource]);\n\n const data = isServerPaging || !showPagination ? sortedData : sortedData.slice(pagination.offset, pagination.offset + pagination.limit);\n\n return (\n <>\n <div className={cn(\"relative w-full\", className)} ref={tableBoxRef}>\n <table className={cn(\"w-full h-auto table-auto\", classNames.table)}>\n <thead className={cn(classNames.thead, { \"sticky top-0 z-30 [&>tr]:first:shadow-small [&>tr]:first:rounded-lg\": isHeaderSticky })}>\n <tr className={classNames.tr}>\n {columns.map((item) => (\n <th\n key={item.key}\n className={cn(\"px-3 h-10 text-xs font-semibold whitespace-nowrap bg-default-100 first:rounded-l-lg last:rounded-r-lg outline-none\", classNames.th)}\n style={{\n minWidth: item.width,\n }}\n >\n <div className=\"flex items-center\">\n <span>{item.label}</span>\n {!!sortableColumnsMap[item.key] && (\n <SortingComponent\n sortingUIOptions={sortingUIOptions}\n columnOptions={columnOptions}\n sortableColumnsMap={sortableColumnsMap}\n item={item}\n onSort={({ type, key, sortKey }) => {\n const { sortableColumns, sortedData } = sortData({\n type,\n key,\n sortKey,\n sortableColumnsMap,\n dataSource,\n });\n setSortableColumnsMap(sortableColumns);\n setSortedData(sortedData);\n }}\n />\n )}\n </div>\n </th>\n ))}\n </tr>\n <tr aria-hidden=\"true\" className=\"w-px h-px block ml-[0.25rem] mt-[0.25rem]\"></tr>\n </thead>\n {isLoading ? (\n <tbody className={classNames.tbody}>\n <tr className={classNames.tr}>\n <td className={classNames.td} colSpan={columns.length}>\n {loadingContent || DefaultLoading({ loadingOptions })}\n </td>\n </tr>\n </tbody>\n ) : data.length > 0 ? (\n <tbody className={classNames.tbody}>\n {showCollapsedTables\n ? data.map((item) => {\n return (\n <CollapseBodyRow\n classNames={classNames}\n item={item}\n columns={columns}\n rowCss={rowCss}\n onRowClick={onRowClick}\n collapsedTableConfig={collapsedTableConfig}\n collapsedTables={collapsedTables}\n />\n );\n })\n : data.map((item, index) => {\n return (\n <>\n <tr\n key={rowKey ? item[rowKey] || index : index}\n className={cn(classNames.tr, typeof rowCss === \"function\" ? rowCss(item) : rowCss)}\n onClick={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column) => {\n return (\n <td\n key={column.key}\n className={cn(\"py-2 px-3 text-xs\", classNames.td)}\n style={{\n minWidth: column.width,\n }}\n >\n {column.render ? column.render(item) : renderFieldValue(item[column.key])}\n </td>\n );\n })}\n </tr>\n {columnSlot && (\n <tr>\n <td colSpan={columns.length}>{typeof columnSlot === \"function\" ? columnSlot({ row: item }) : columnSlot}</td>\n </tr>\n )}\n </>\n );\n })}\n </tbody>\n ) : (\n <tbody className={classNames.tbody}>\n <tr className={classNames.tr}>\n <td className={classNames.td} colSpan={columns.length}>\n {emptyContent ?? <DefaultEmptyContent />}\n </td>\n </tr>\n </tbody>\n )}\n </table>\n </div>\n {showPagination && pagination.total > pagination.limit && (\n <div className=\"flex justify-center\">\n <NextuiPagination\n className=\"mt-2\"\n showControls\n showShadow\n size=\"sm\"\n radius=\"sm\"\n color=\"primary\"\n initialPage={1}\n total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n if (autoScrollToTop && tableBoxRef.current) {\n scrollIntoTop(tableBoxRef.current);\n }\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </>\n );\n },\n);\n\nfunction DefaultLoading({ loadingOptions }: { loadingOptions?: LoadingOptions }) {\n const type = loadingOptions?.type || \"skeleton\";\n const skeletonOptions = loadingOptions?.skeleton;\n const spinnerOptions = loadingOptions?.spinner;\n const spinnerProps = spinnerOptions?.spinnerProps || {};\n\n if (type === \"skeleton\") {\n return <SkeletonBox className={cn(\"mt-2 flex-col\", skeletonOptions?.boxClassName)} skClassName={cn(\"h-[30px] rounded\", skeletonOptions?.skeletonClassName)} line={skeletonOptions?.line || 5} />;\n }\n\n return (\n <div className={cn(\"w-full h-[60px] flex justify-center items-center\", spinnerOptions?.boxClassName)}>\n <Spinner size=\"sm\" color=\"primary\" {...spinnerProps} />\n <div className={cn(\"ml-2 text-[#64748B] text-sm\", spinnerOptions?.textClassName)}>{spinnerOptions?.text || \"Loading...\"}</div>\n </div>\n );\n}\n\nfunction DefaultEmptyContent() {\n return <div className=\"w-full h-[60px] flex justify-center items-center text-xs text-[#64748B] dark:text-[#cacaca]\">No Data</div>;\n}\n\nfunction scrollIntoTop(target: HTMLElement) {\n if (target) {\n const { top } = target.getBoundingClientRect();\n window.scrollTo({\n top: top + window.scrollY - 100,\n behavior: \"smooth\",\n });\n }\n}\n\nfunction CollapseBodyRow<T>({\n classNames,\n item,\n columns,\n rowCss,\n onRowClick,\n collapsedTableConfig,\n collapsedTables,\n}: {\n classNames?: TableClassNames;\n item: T;\n columns: Column<T>[];\n rowCss?: string | ((item: T) => string | undefined);\n onRowClick?: (item: T) => void;\n collapsedTableConfig?: {\n classNames?: TableClassNames;\n collapsedHandlerPosition?: \"left\" | \"right\";\n collapsedHandlerBoxCss?: string;\n openedIcon?: React.ReactNode;\n closedIcon?: React.ReactNode;\n onRowClick?: (item: any) => void;\n rowCss?: string | ((item: any) => string | undefined);\n emptyContent?: React.ReactNode;\n };\n collapsedTables: CollapsedTable<any>[];\n}) {\n const [isOpen, setIsOpen] = useState(false);\n const collapsedHandlerPosition = collapsedTableConfig?.collapsedHandlerPosition || \"right\";\n\n const { OpenedIcon, ClosedIcon } = useMemo(() => {\n const defaultOpenedIcon = <ChevronDown size={18} />;\n const defaultClosedIcon = collapsedHandlerPosition === \"left\" ? <ChevronRight size={18} /> : <ChevronLeft size={18} />;\n return {\n OpenedIcon: collapsedTableConfig?.openedIcon || defaultOpenedIcon,\n ClosedIcon: collapsedTableConfig?.closedIcon || defaultClosedIcon,\n };\n }, []);\n\n return (\n <>\n <tr\n className={cn(\"text-xs cursor-pointer\", classNames?.tr, typeof rowCss === \"function\" ? rowCss(item) : rowCss)}\n onClick={(e: any) => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column) => {\n if (column.key === \"$collapsedHandler\") {\n return (\n <td\n className={classNames?.td}\n style={{\n minWidth: column.width,\n }}\n >\n <div\n className={cn(\"w-6 h-6 flex items-center justify-center rounded-sm hover:bg-[#f3f3f4] dark:hover:bg-[#1e1e1e]\", collapsedTableConfig?.collapsedHandlerBoxCss)}\n onClick={(e) => {\n e.stopPropagation();\n setIsOpen((v) => !v);\n }}\n >\n {isOpen ? OpenedIcon : ClosedIcon}\n </div>\n </td>\n );\n }\n return (\n <td\n key={column.key}\n className={cn(\"py-2 px-3 text-xs\", classNames?.td)}\n style={{\n minWidth: column.width,\n }}\n >\n {column.render ? column.render(item) : renderFieldValue(item[column.key])}\n </td>\n );\n })}\n </tr>\n <tr className={cn(classNames?.tr, isOpen ? \"table-row\" : \"hidden\")}>\n <td colSpan={columns.length} className={cn(\"py-2 px-3 text-xs\", classNames?.td)}>\n {collapsedTables.map((ex) => {\n const exColumns = ex.columns;\n const exData = item[ex.key] || [];\n return (\n <table className={cn(\"w-full h-auto table-auto\", collapsedTableConfig?.classNames?.table)} key={ex.key}>\n <thead className={collapsedTableConfig?.classNames?.thead}>\n <tr className={collapsedTableConfig?.classNames?.tr}>\n {exColumns?.map((exC) => {\n return (\n <th\n key={exC.key}\n className={cn(\"px-3 h-10 text-xs text-left font-semibold bg-default-100 first:rounded-l-lg last:rounded-r-lg outline-none\", collapsedTableConfig?.classNames?.th)}\n style={{\n minWidth: exC.width,\n }}\n >\n {exC.label}\n </th>\n );\n })}\n </tr>\n <tr aria-hidden=\"true\" className=\"w-px h-px block ml-[0.25rem] mt-[0.25rem]\"></tr>\n </thead>\n {exData.length > 0 ? (\n <tbody className={collapsedTableConfig?.classNames?.tbody}>\n {exData.map((exItem) => (\n <tr\n key={exItem.key}\n className={cn(\n \"text-xs\",\n collapsedTableConfig?.classNames?.tr,\n typeof collapsedTableConfig?.rowCss === \"function\"\n ? collapsedTableConfig?.rowCss({\n ...exItem,\n $parent: item,\n })\n : collapsedTableConfig?.rowCss,\n )}\n onClick={(e: any) => {\n collapsedTableConfig?.onRowClick?.({\n ...exItem,\n $parent: item,\n });\n }}\n >\n {exColumns?.map((exC) => {\n return (\n <td\n key={exC.key}\n className={cn(\"py-2 px-3 text-xs\", collapsedTableConfig?.classNames?.td)}\n style={{\n minWidth: exC.width,\n }}\n >\n {exC.render\n ? exC.render({\n ...exItem,\n $parent: item,\n })\n : renderFieldValue(exItem[exC.key])}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n ) : (\n <tbody className={collapsedTableConfig?.classNames?.tbody}>\n <tr className={collapsedTableConfig?.classNames?.tr}>\n <td className={collapsedTableConfig?.classNames?.td} colSpan={columns.length}>\n {collapsedTableConfig?.emptyContent ?? <DefaultEmptyContent />}\n </td>\n </tr>\n </tbody>\n )}\n </table>\n );\n })}\n </td>\n </tr>\n </>\n );\n}\n\nfunction groupByColSpan(arr: any[], colSpan: number) {\n const result = [];\n for (let i = 0; i < arr.length; i += colSpan) {\n result.push(arr.slice(i, i + colSpan));\n }\n return result;\n}\n"]}