@dappworks/kit 0.4.74 → 0.4.75
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/chunk-ONASYMZR.mjs +434 -0
- package/dist/chunk-ONASYMZR.mjs.map +1 -0
- package/dist/dev.mjs.map +1 -1
- package/dist/form.mjs +1 -1
- package/dist/form.mjs.map +1 -1
- package/dist/jsontable.d.mts +24 -40
- package/dist/jsontable.mjs +1 -1
- package/dist/metrics.d.mts +2 -6
- package/dist/metrics.mjs +1 -1
- package/dist/metrics.mjs.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-RH5VZB32.mjs +0 -540
- package/dist/chunk-RH5VZB32.mjs.map +0 -1
package/dist/chunk-RH5VZB32.mjs
DELETED
|
@@ -1,540 +0,0 @@
|
|
|
1
|
-
import { PaginationState } from './chunk-ONVPCAMQ.mjs';
|
|
2
|
-
import { DialogStore } from './chunk-OZ3JSH5J.mjs';
|
|
3
|
-
import { SkeletonBox, JSONHighlight } from './chunk-WVBSQHB6.mjs';
|
|
4
|
-
import { _ } from './chunk-MGU3KYGC.mjs';
|
|
5
|
-
import { cn } from './chunk-6UHBBDKI.mjs';
|
|
6
|
-
import { __objRest, __spreadValues, __spreadProps } from './chunk-6F7H4PAA.mjs';
|
|
7
|
-
import * as React2 from 'react';
|
|
8
|
-
import React2__default, { useRef, useEffect, useState } from 'react';
|
|
9
|
-
import { observer, useLocalObservable } from 'mobx-react-lite';
|
|
10
|
-
import { Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, Pagination, Card, Divider, Spinner, Button } from '@nextui-org/react';
|
|
11
|
-
import { ChevronDown, ChevronUp, ChevronsUpDown, ChevronRight } from 'lucide-react';
|
|
12
|
-
import crypto from 'crypto';
|
|
13
|
-
|
|
14
|
-
var Table = React2.forwardRef((_a, ref) => {
|
|
15
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
16
|
-
return /* @__PURE__ */ React2.createElement("table", __spreadValues({ ref, className: cn("w-full caption-bottom text-sm", className) }, props));
|
|
17
|
-
});
|
|
18
|
-
Table.displayName = "Table";
|
|
19
|
-
var TableHeader = React2.forwardRef((_a, ref) => {
|
|
20
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
21
|
-
return /* @__PURE__ */ React2.createElement("thead", __spreadValues({ ref, className: cn("", className) }, props));
|
|
22
|
-
});
|
|
23
|
-
TableHeader.displayName = "TableHeader";
|
|
24
|
-
var TableBody = React2.forwardRef((_a, ref) => {
|
|
25
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
26
|
-
return /* @__PURE__ */ React2.createElement("tbody", __spreadValues({ ref, className: cn("[&_tr:last-child]:border-0", className) }, props));
|
|
27
|
-
});
|
|
28
|
-
TableBody.displayName = "TableBody";
|
|
29
|
-
var TableFooter = React2.forwardRef((_a, ref) => {
|
|
30
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
31
|
-
return /* @__PURE__ */ React2.createElement("tfoot", __spreadValues({ ref, className: cn("bg-primary font-medium text-primary-foreground", className) }, props));
|
|
32
|
-
});
|
|
33
|
-
TableFooter.displayName = "TableFooter";
|
|
34
|
-
var TableRow = React2.forwardRef((_a, ref) => {
|
|
35
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
36
|
-
return /* @__PURE__ */ React2.createElement("tr", __spreadValues({ ref, className: cn("", className) }, props));
|
|
37
|
-
});
|
|
38
|
-
TableRow.displayName = "TableRow";
|
|
39
|
-
var TableHead = React2.forwardRef((_a, ref) => {
|
|
40
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
41
|
-
return /* @__PURE__ */ React2.createElement("th", __spreadValues({ ref, className: cn("h-8 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0", className) }, props));
|
|
42
|
-
});
|
|
43
|
-
TableHead.displayName = "TableHead";
|
|
44
|
-
var TableCell = React2.forwardRef((_a, ref) => {
|
|
45
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
46
|
-
return /* @__PURE__ */ React2.createElement("td", __spreadValues({ ref, className: cn("p-2 align-middle [&:has([role=checkbox])]:pr-0", className) }, props));
|
|
47
|
-
});
|
|
48
|
-
TableCell.displayName = "TableCell";
|
|
49
|
-
var TableCaption = React2.forwardRef((_a, ref) => {
|
|
50
|
-
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
|
51
|
-
return /* @__PURE__ */ React2.createElement("caption", __spreadValues({ ref, className: cn("mt-4 text-sm text-muted-foreground", className) }, props));
|
|
52
|
-
});
|
|
53
|
-
TableCaption.displayName = "TableCaption";
|
|
54
|
-
var rnds8Pool = new Uint8Array(256);
|
|
55
|
-
var poolPtr = rnds8Pool.length;
|
|
56
|
-
function rng() {
|
|
57
|
-
if (poolPtr > rnds8Pool.length - 16) {
|
|
58
|
-
crypto.randomFillSync(rnds8Pool);
|
|
59
|
-
poolPtr = 0;
|
|
60
|
-
}
|
|
61
|
-
return rnds8Pool.slice(poolPtr, poolPtr += 16);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
// ../../node_modules/uuid/dist/esm-node/regex.js
|
|
65
|
-
var regex_default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
|
|
66
|
-
|
|
67
|
-
// ../../node_modules/uuid/dist/esm-node/validate.js
|
|
68
|
-
function validate(uuid) {
|
|
69
|
-
return typeof uuid === "string" && regex_default.test(uuid);
|
|
70
|
-
}
|
|
71
|
-
var validate_default = validate;
|
|
72
|
-
|
|
73
|
-
// ../../node_modules/uuid/dist/esm-node/stringify.js
|
|
74
|
-
var byteToHex = [];
|
|
75
|
-
for (let i = 0; i < 256; ++i) {
|
|
76
|
-
byteToHex.push((i + 256).toString(16).substr(1));
|
|
77
|
-
}
|
|
78
|
-
function stringify(arr, offset = 0) {
|
|
79
|
-
const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
|
|
80
|
-
if (!validate_default(uuid)) {
|
|
81
|
-
throw TypeError("Stringified UUID is invalid");
|
|
82
|
-
}
|
|
83
|
-
return uuid;
|
|
84
|
-
}
|
|
85
|
-
var stringify_default = stringify;
|
|
86
|
-
|
|
87
|
-
// ../../node_modules/uuid/dist/esm-node/v4.js
|
|
88
|
-
function v4(options, buf, offset) {
|
|
89
|
-
options = options || {};
|
|
90
|
-
const rnds = options.random || (options.rng || rng)();
|
|
91
|
-
rnds[6] = rnds[6] & 15 | 64;
|
|
92
|
-
rnds[8] = rnds[8] & 63 | 128;
|
|
93
|
-
if (buf) {
|
|
94
|
-
offset = offset || 0;
|
|
95
|
-
for (let i = 0; i < 16; ++i) {
|
|
96
|
-
buf[offset + i] = rnds[i];
|
|
97
|
-
}
|
|
98
|
-
return buf;
|
|
99
|
-
}
|
|
100
|
-
return stringify_default(rnds);
|
|
101
|
-
}
|
|
102
|
-
var v4_default = v4;
|
|
103
|
-
|
|
104
|
-
// components/JSONTable/index.tsx
|
|
105
|
-
var JSONTable = observer((props) => {
|
|
106
|
-
const {
|
|
107
|
-
className,
|
|
108
|
-
dataSource,
|
|
109
|
-
columnOptions,
|
|
110
|
-
headerKeys,
|
|
111
|
-
isServerPaging,
|
|
112
|
-
pagination = new PaginationState({
|
|
113
|
-
page: 1,
|
|
114
|
-
limit: 8
|
|
115
|
-
}),
|
|
116
|
-
nextuiPaginationProps = {},
|
|
117
|
-
extendedTableOptions = [],
|
|
118
|
-
rowKey = "id",
|
|
119
|
-
onRowClick,
|
|
120
|
-
rowCss,
|
|
121
|
-
actions,
|
|
122
|
-
actionsOptions,
|
|
123
|
-
asCard = false,
|
|
124
|
-
cardOptions = {
|
|
125
|
-
boxClassName: "",
|
|
126
|
-
cardClassName: "",
|
|
127
|
-
itemClassName: "",
|
|
128
|
-
showDivider: true,
|
|
129
|
-
dividerClassName: ""
|
|
130
|
-
},
|
|
131
|
-
autoScrollToTop = false,
|
|
132
|
-
NoData = DefaultNoData,
|
|
133
|
-
isLoading = false,
|
|
134
|
-
loadingOptions,
|
|
135
|
-
Loading = DefaultLoading
|
|
136
|
-
} = props;
|
|
137
|
-
const actionsHeadLabel = (actionsOptions == null ? void 0 : actionsOptions.headLabel) || "";
|
|
138
|
-
const actionsPlacement = actions ? (actionsOptions == null ? void 0 : actionsOptions.placement) || "right" : void 0;
|
|
139
|
-
const store = useLocalObservable(() => ({
|
|
140
|
-
columns: [],
|
|
141
|
-
sortableColumns: {},
|
|
142
|
-
sortedData: [],
|
|
143
|
-
extendedTables: [],
|
|
144
|
-
setData(data2) {
|
|
145
|
-
Object.assign(store, data2);
|
|
146
|
-
}
|
|
147
|
-
}));
|
|
148
|
-
const tableBoxElementId = useRef(autoScrollToTop ? `table-box-${v4_default().slice(0, 8)}` : void 0).current;
|
|
149
|
-
useEffect(() => {
|
|
150
|
-
const firstData = dataSource[0];
|
|
151
|
-
const allKeys = firstData ? Object.keys(firstData) : [];
|
|
152
|
-
const keys = headerKeys ? headerKeys : columnOptions ? allKeys.filter((key) => {
|
|
153
|
-
var _a;
|
|
154
|
-
return !((_a = columnOptions[key]) == null ? void 0 : _a.hidden);
|
|
155
|
-
}) : allKeys;
|
|
156
|
-
const sortableColumns = {};
|
|
157
|
-
const columns2 = keys.map((key) => {
|
|
158
|
-
var _a, _b, _c;
|
|
159
|
-
const sortable = (_a = columnOptions == null ? void 0 : columnOptions[key]) == null ? void 0 : _a.sortable;
|
|
160
|
-
if (sortable) {
|
|
161
|
-
sortableColumns[key] = "none";
|
|
162
|
-
}
|
|
163
|
-
return {
|
|
164
|
-
key,
|
|
165
|
-
label: ((_b = columnOptions == null ? void 0 : columnOptions[key]) == null ? void 0 : _b.label) || key,
|
|
166
|
-
render: (_c = columnOptions == null ? void 0 : columnOptions[key]) == null ? void 0 : _c.render
|
|
167
|
-
};
|
|
168
|
-
});
|
|
169
|
-
if (!headerKeys && columnOptions) {
|
|
170
|
-
columns2.sort((a, b) => {
|
|
171
|
-
var _a, _b;
|
|
172
|
-
const aOrder = ((_a = columnOptions[a.key]) == null ? void 0 : _a.order) || 0;
|
|
173
|
-
const bOrder = ((_b = columnOptions[b.key]) == null ? void 0 : _b.order) || 0;
|
|
174
|
-
return bOrder - aOrder;
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
const extendedTables2 = firstData ? extendedTableOptions.filter((item) => {
|
|
178
|
-
return Array.isArray(firstData[item.key]);
|
|
179
|
-
}).map((item) => {
|
|
180
|
-
const index = columns2.findIndex((c) => c.key === item.key);
|
|
181
|
-
if (index > -1) {
|
|
182
|
-
columns2.splice(index, 1);
|
|
183
|
-
}
|
|
184
|
-
const keys2 = Object.keys(item.columnOptions);
|
|
185
|
-
return {
|
|
186
|
-
key: item.key,
|
|
187
|
-
columns: keys2.map((k) => {
|
|
188
|
-
const option = item.columnOptions[k];
|
|
189
|
-
return {
|
|
190
|
-
key: k,
|
|
191
|
-
label: (option == null ? void 0 : option.label) || k,
|
|
192
|
-
render: option == null ? void 0 : option.render
|
|
193
|
-
};
|
|
194
|
-
})
|
|
195
|
-
};
|
|
196
|
-
}) : [];
|
|
197
|
-
store.setData({
|
|
198
|
-
sortableColumns,
|
|
199
|
-
columns: columns2,
|
|
200
|
-
extendedTables: extendedTables2,
|
|
201
|
-
sortedData: dataSource
|
|
202
|
-
});
|
|
203
|
-
if (!isServerPaging) {
|
|
204
|
-
pagination.setData({
|
|
205
|
-
total: dataSource.length
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
}, [dataSource, columnOptions]);
|
|
209
|
-
const onSort = ({ sortKey, key, type }) => {
|
|
210
|
-
const sortableColumns = {};
|
|
211
|
-
Object.keys(store.sortableColumns).map((k) => {
|
|
212
|
-
sortableColumns[k] = k === key ? type : "none";
|
|
213
|
-
});
|
|
214
|
-
let sortedData2 = dataSource;
|
|
215
|
-
if (type !== "none") {
|
|
216
|
-
const result = _.orderBy(
|
|
217
|
-
dataSource,
|
|
218
|
-
(o) => {
|
|
219
|
-
const v = _.get(o, sortKey || key);
|
|
220
|
-
if (v == null) {
|
|
221
|
-
return type === "desc" ? "" : v;
|
|
222
|
-
}
|
|
223
|
-
if (typeof v === "string") {
|
|
224
|
-
const _v = Number(v);
|
|
225
|
-
if (isNaN(_v)) {
|
|
226
|
-
return v.toLowerCase();
|
|
227
|
-
} else {
|
|
228
|
-
return _v;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return v;
|
|
232
|
-
},
|
|
233
|
-
type
|
|
234
|
-
);
|
|
235
|
-
sortedData2 = result;
|
|
236
|
-
}
|
|
237
|
-
store.setData({
|
|
238
|
-
sortableColumns,
|
|
239
|
-
sortedData: sortedData2
|
|
240
|
-
});
|
|
241
|
-
};
|
|
242
|
-
const { columns, extendedTables, sortedData } = store;
|
|
243
|
-
const needExtendedTable = !!extendedTables.length;
|
|
244
|
-
const data = isServerPaging ? sortedData : sortedData.slice(pagination.offset, pagination.offset + pagination.limit);
|
|
245
|
-
if (isLoading) {
|
|
246
|
-
return /* @__PURE__ */ React2__default.createElement(Loading, { className, columns, loadingOptions });
|
|
247
|
-
}
|
|
248
|
-
if (data.length === 0) {
|
|
249
|
-
return /* @__PURE__ */ React2__default.createElement(NoData, { className, columns });
|
|
250
|
-
}
|
|
251
|
-
if (asCard) {
|
|
252
|
-
return /* @__PURE__ */ React2__default.createElement(
|
|
253
|
-
CardUI,
|
|
254
|
-
{
|
|
255
|
-
className,
|
|
256
|
-
rowKey,
|
|
257
|
-
data,
|
|
258
|
-
columns,
|
|
259
|
-
columnOptions,
|
|
260
|
-
actions,
|
|
261
|
-
actionsOptions,
|
|
262
|
-
cardOptions,
|
|
263
|
-
pagination,
|
|
264
|
-
nextuiPaginationProps,
|
|
265
|
-
onRowClick,
|
|
266
|
-
tableBoxElementId
|
|
267
|
-
}
|
|
268
|
-
);
|
|
269
|
-
}
|
|
270
|
-
return /* @__PURE__ */ React2__default.createElement(React2__default.Fragment, null, /* @__PURE__ */ React2__default.createElement("div", { className: cn("relative w-full overflow-auto h-[400px]", className), id: tableBoxElementId }, /* @__PURE__ */ React2__default.createElement(Table, null, /* @__PURE__ */ React2__default.createElement(TableHeader, { className: "sticky top-0" }, /* @__PURE__ */ React2__default.createElement(TableRow, { className: "bg-[#F4F4F5] dark:bg-[#3F3F45] shadow-sm" }, needExtendedTable && /* @__PURE__ */ React2__default.createElement(TableHead, null), actionsPlacement === "left" && /* @__PURE__ */ React2__default.createElement(TableHead, { className: "font-meidum text-xs text-[#64748B] dark:text-gray-300" }, actionsHeadLabel), columns.map((item, index) => {
|
|
271
|
-
var _a;
|
|
272
|
-
return /* @__PURE__ */ React2__default.createElement(TableHead, { className: cn("font-meidum text-xs text-[#64748B] dark:text-gray-300", (_a = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a.thClassName), key: item.key }, /* @__PURE__ */ React2__default.createElement("div", { className: "flex items-center" }, /* @__PURE__ */ React2__default.createElement("span", null, item.label), !!store.sortableColumns[item.key] && /* @__PURE__ */ React2__default.createElement(
|
|
273
|
-
Dropdown,
|
|
274
|
-
{
|
|
275
|
-
showArrow: true,
|
|
276
|
-
backdrop: "opaque",
|
|
277
|
-
placement: "bottom"
|
|
278
|
-
},
|
|
279
|
-
/* @__PURE__ */ React2__default.createElement(DropdownTrigger, null, /* @__PURE__ */ React2__default.createElement("button", { className: "outline-none p-0" }, store.sortableColumns[item.key] === "desc" && /* @__PURE__ */ React2__default.createElement(ChevronDown, { size: 14 }), store.sortableColumns[item.key] === "asc" && /* @__PURE__ */ React2__default.createElement(ChevronUp, { size: 14 }), store.sortableColumns[item.key] === "none" && /* @__PURE__ */ React2__default.createElement(ChevronsUpDown, { size: 14 }))),
|
|
280
|
-
/* @__PURE__ */ React2__default.createElement(DropdownMenu, { variant: "flat", selectionMode: "single", selectedKeys: [store.sortableColumns[item.key]] }, /* @__PURE__ */ React2__default.createElement(
|
|
281
|
-
DropdownItem,
|
|
282
|
-
{
|
|
283
|
-
key: "asc",
|
|
284
|
-
onClick: () => {
|
|
285
|
-
var _a2;
|
|
286
|
-
onSort({
|
|
287
|
-
type: "asc",
|
|
288
|
-
key: item.key,
|
|
289
|
-
sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
},
|
|
293
|
-
/* @__PURE__ */ React2__default.createElement("span", { className: "text-sm font-bold" }, "Sort ascending")
|
|
294
|
-
), /* @__PURE__ */ React2__default.createElement(
|
|
295
|
-
DropdownItem,
|
|
296
|
-
{
|
|
297
|
-
key: "desc",
|
|
298
|
-
onClick: () => {
|
|
299
|
-
var _a2;
|
|
300
|
-
onSort({
|
|
301
|
-
type: "desc",
|
|
302
|
-
key: item.key,
|
|
303
|
-
sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
},
|
|
307
|
-
/* @__PURE__ */ React2__default.createElement("span", { className: "text-sm font-bold" }, "Sort descending")
|
|
308
|
-
), /* @__PURE__ */ React2__default.createElement(
|
|
309
|
-
DropdownItem,
|
|
310
|
-
{
|
|
311
|
-
key: "none",
|
|
312
|
-
onClick: () => {
|
|
313
|
-
var _a2;
|
|
314
|
-
onSort({
|
|
315
|
-
type: "none",
|
|
316
|
-
key: item.key,
|
|
317
|
-
sortKey: (_a2 = columnOptions == null ? void 0 : columnOptions[item.key]) == null ? void 0 : _a2.sortKey
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
},
|
|
321
|
-
/* @__PURE__ */ React2__default.createElement("span", { className: "text-sm font-bold" }, "Sort none")
|
|
322
|
-
))
|
|
323
|
-
)));
|
|
324
|
-
}), actionsPlacement === "right" && /* @__PURE__ */ React2__default.createElement(TableHead, { className: "font-meidum text-xs text-[#64748B] dark:text-gray-300" }, actionsHeadLabel))), /* @__PURE__ */ React2__default.createElement(TableBody, null, data.map(
|
|
325
|
-
(item, index) => needExtendedTable ? /* @__PURE__ */ React2__default.createElement(CollapseBody, { key: item[rowKey] || index, item, columns, extendedTables, rowCss, actions, actionsPlacement }) : /* @__PURE__ */ React2__default.createElement(
|
|
326
|
-
Body,
|
|
327
|
-
{
|
|
328
|
-
key: item[rowKey] || index,
|
|
329
|
-
item,
|
|
330
|
-
columns,
|
|
331
|
-
columnOptions,
|
|
332
|
-
onRowClick,
|
|
333
|
-
rowCss,
|
|
334
|
-
actions,
|
|
335
|
-
actionsPlacement
|
|
336
|
-
}
|
|
337
|
-
)
|
|
338
|
-
)))), pagination.total > pagination.limit && /* @__PURE__ */ React2__default.createElement("div", { className: "flex justify-center h-[30px] mt-4" }, /* @__PURE__ */ React2__default.createElement(
|
|
339
|
-
Pagination,
|
|
340
|
-
__spreadValues({
|
|
341
|
-
showControls: true,
|
|
342
|
-
size: "sm",
|
|
343
|
-
radius: "sm",
|
|
344
|
-
initialPage: 1,
|
|
345
|
-
total: Math.ceil(pagination.total / pagination.limit),
|
|
346
|
-
page: pagination.page,
|
|
347
|
-
onChange: (currentPage) => {
|
|
348
|
-
pagination.setData({
|
|
349
|
-
page: currentPage
|
|
350
|
-
});
|
|
351
|
-
scrollIntoTop(tableBoxElementId);
|
|
352
|
-
}
|
|
353
|
-
}, nextuiPaginationProps)
|
|
354
|
-
)));
|
|
355
|
-
});
|
|
356
|
-
function ActionButton({ props, children }) {
|
|
357
|
-
return /* @__PURE__ */ React2__default.createElement(Button, __spreadValues({}, props), children);
|
|
358
|
-
}
|
|
359
|
-
function renderFieldValue(v) {
|
|
360
|
-
if (typeof v == "string" || typeof v == "number") {
|
|
361
|
-
return v;
|
|
362
|
-
}
|
|
363
|
-
if (v == null) {
|
|
364
|
-
return null;
|
|
365
|
-
}
|
|
366
|
-
return /* @__PURE__ */ React2__default.createElement(
|
|
367
|
-
"p",
|
|
368
|
-
{
|
|
369
|
-
className: "cursor-pointer",
|
|
370
|
-
onClick: (e) => {
|
|
371
|
-
e.stopPropagation();
|
|
372
|
-
DialogStore.show({
|
|
373
|
-
content: /* @__PURE__ */ React2__default.createElement(JSONHighlight, { className: "w-full lg:w-[900px]", jsonStr: JSON.stringify(v, null, 2) })
|
|
374
|
-
});
|
|
375
|
-
}
|
|
376
|
-
},
|
|
377
|
-
JSON.stringify(v).slice(0, 50) + "..."
|
|
378
|
-
);
|
|
379
|
-
}
|
|
380
|
-
function Actions({ actions, actionsOptions, item, asCard }) {
|
|
381
|
-
if (!actions) {
|
|
382
|
-
return null;
|
|
383
|
-
}
|
|
384
|
-
const Com = actions(item);
|
|
385
|
-
if (Array.isArray(Com)) {
|
|
386
|
-
if (asCard) {
|
|
387
|
-
return /* @__PURE__ */ React2__default.createElement("div", { className: cn("w-full flex items-center space-x-2", actionsOptions == null ? void 0 : actionsOptions.className) }, Com.map((btn, index) => /* @__PURE__ */ React2__default.createElement(ActionButton, { key: index, props: btn.props, children: btn.children })));
|
|
388
|
-
}
|
|
389
|
-
return /* @__PURE__ */ React2__default.createElement(TableCell, { className: "max-w-[200px] overflow-auto space-x-2" }, Com.map((btn, index) => /* @__PURE__ */ React2__default.createElement(ActionButton, { key: index, props: btn.props, children: btn.children })));
|
|
390
|
-
}
|
|
391
|
-
if (asCard) {
|
|
392
|
-
return /* @__PURE__ */ React2__default.createElement("div", { className: cn("w-full flex items-center space-x-2", actionsOptions == null ? void 0 : actionsOptions.className) }, Com);
|
|
393
|
-
}
|
|
394
|
-
return /* @__PURE__ */ React2__default.createElement(TableCell, { className: "max-w-[200px] overflow-auto space-x-2" }, Com);
|
|
395
|
-
}
|
|
396
|
-
function Body({
|
|
397
|
-
item,
|
|
398
|
-
columns,
|
|
399
|
-
columnOptions,
|
|
400
|
-
onRowClick,
|
|
401
|
-
rowCss,
|
|
402
|
-
actions,
|
|
403
|
-
actionsPlacement
|
|
404
|
-
}) {
|
|
405
|
-
return /* @__PURE__ */ React2__default.createElement(
|
|
406
|
-
TableRow,
|
|
407
|
-
{
|
|
408
|
-
className: cn("text-xs hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]", typeof rowCss === "function" ? rowCss(item) : rowCss),
|
|
409
|
-
onClick: () => {
|
|
410
|
-
onRowClick == null ? void 0 : onRowClick(item);
|
|
411
|
-
}
|
|
412
|
-
},
|
|
413
|
-
actionsPlacement === "left" && /* @__PURE__ */ React2__default.createElement(Actions, { item, actions }),
|
|
414
|
-
columns.map((column) => {
|
|
415
|
-
var _a;
|
|
416
|
-
return /* @__PURE__ */ React2__default.createElement(TableCell, { key: column.key, className: cn("max-w-[200px] overflow-auto", (_a = columnOptions == null ? void 0 : columnOptions[column.key]) == null ? void 0 : _a.tdClassName) }, column.render ? column.render(item) : renderFieldValue(item[column.key]));
|
|
417
|
-
}),
|
|
418
|
-
actionsPlacement === "right" && /* @__PURE__ */ React2__default.createElement(Actions, { item, actions })
|
|
419
|
-
);
|
|
420
|
-
}
|
|
421
|
-
function CollapseBody({
|
|
422
|
-
item,
|
|
423
|
-
columns,
|
|
424
|
-
extendedTables,
|
|
425
|
-
rowCss,
|
|
426
|
-
actions,
|
|
427
|
-
actionsPlacement
|
|
428
|
-
}) {
|
|
429
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
430
|
-
return /* @__PURE__ */ React2__default.createElement(React2__default.Fragment, null, /* @__PURE__ */ React2__default.createElement(
|
|
431
|
-
TableRow,
|
|
432
|
-
{
|
|
433
|
-
className: cn("text-xs cursor-pointer hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]", typeof rowCss === "function" ? rowCss(item) : rowCss),
|
|
434
|
-
onClick: (e) => {
|
|
435
|
-
const { nodeName } = e.target;
|
|
436
|
-
if (nodeName === "TD" || nodeName === "svg") {
|
|
437
|
-
setIsOpen((v) => !v);
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
},
|
|
441
|
-
/* @__PURE__ */ React2__default.createElement(TableCell, { className: "w-10" }, isOpen ? /* @__PURE__ */ React2__default.createElement(ChevronDown, { size: 18 }) : /* @__PURE__ */ React2__default.createElement(ChevronRight, { size: 18 })),
|
|
442
|
-
actionsPlacement === "left" && /* @__PURE__ */ React2__default.createElement(Actions, { item, actions }),
|
|
443
|
-
columns.map((column) => {
|
|
444
|
-
return /* @__PURE__ */ React2__default.createElement(TableCell, { key: column.key, className: "max-w-[200px] overflow-auto" }, column.render ? column.render(item) : renderFieldValue(item[column.key]));
|
|
445
|
-
}),
|
|
446
|
-
actionsPlacement === "right" && /* @__PURE__ */ React2__default.createElement(Actions, { item, actions })
|
|
447
|
-
), /* @__PURE__ */ React2__default.createElement(TableRow, { className: cn(isOpen ? "table-row" : "hidden") }, /* @__PURE__ */ React2__default.createElement(TableCell, null), /* @__PURE__ */ React2__default.createElement(TableCell, { colSpan: columns.length }, extendedTables.map((ex) => {
|
|
448
|
-
const exColumns = ex.columns;
|
|
449
|
-
const exRow = item[ex.key];
|
|
450
|
-
return /* @__PURE__ */ React2__default.createElement(Table, { className: "mt-[10px]", key: ex.key }, /* @__PURE__ */ React2__default.createElement(TableHeader, null, /* @__PURE__ */ React2__default.createElement(TableRow, { className: "bg-[#F4F4F5] dark:bg-[#3F3F45]" }, exColumns.map((exC) => {
|
|
451
|
-
return /* @__PURE__ */ React2__default.createElement(TableHead, { key: exC.key, className: "text-xs text-[#64748B] dark:text-gray-300" }, exC.label);
|
|
452
|
-
}))), /* @__PURE__ */ React2__default.createElement(TableBody, null, exRow.map((exItem) => /* @__PURE__ */ React2__default.createElement(TableRow, { className: "text-xs hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]", key: exItem.key }, exColumns.map((exC) => {
|
|
453
|
-
return /* @__PURE__ */ React2__default.createElement(TableCell, { key: exC.key, className: "max-w-[200px] overflow-auto" }, exC.render ? exC.render(__spreadProps(__spreadValues({}, exItem), {
|
|
454
|
-
$parent: item
|
|
455
|
-
})) : renderFieldValue(exItem[exC.key]));
|
|
456
|
-
})))));
|
|
457
|
-
}))));
|
|
458
|
-
}
|
|
459
|
-
function CardUI({
|
|
460
|
-
className,
|
|
461
|
-
data,
|
|
462
|
-
columns,
|
|
463
|
-
columnOptions,
|
|
464
|
-
rowKey,
|
|
465
|
-
actions,
|
|
466
|
-
actionsOptions,
|
|
467
|
-
cardOptions,
|
|
468
|
-
pagination,
|
|
469
|
-
nextuiPaginationProps,
|
|
470
|
-
onRowClick,
|
|
471
|
-
tableBoxElementId
|
|
472
|
-
}) {
|
|
473
|
-
return /* @__PURE__ */ React2__default.createElement("div", { className, id: tableBoxElementId }, /* @__PURE__ */ React2__default.createElement("div", { className: cn("space-y-2", cardOptions == null ? void 0 : cardOptions.boxClassName) }, data.map((item, index) => {
|
|
474
|
-
return /* @__PURE__ */ React2__default.createElement(
|
|
475
|
-
Card,
|
|
476
|
-
{
|
|
477
|
-
key: item[rowKey] || index,
|
|
478
|
-
className: cn("w-full shadow-none p-4", cardOptions == null ? void 0 : cardOptions.cardClassName),
|
|
479
|
-
isPressable: !!onRowClick,
|
|
480
|
-
onPress: () => {
|
|
481
|
-
onRowClick == null ? void 0 : onRowClick(item);
|
|
482
|
-
}
|
|
483
|
-
},
|
|
484
|
-
columns.map((column, i) => {
|
|
485
|
-
const option = columnOptions == null ? void 0 : columnOptions[column.key];
|
|
486
|
-
return /* @__PURE__ */ React2__default.createElement("div", { className: "w-full", key: column.key }, /* @__PURE__ */ React2__default.createElement("div", { className: cn("w-full", cardOptions == null ? void 0 : cardOptions.itemClassName) }, /* @__PURE__ */ React2__default.createElement("div", { className: cn("font-meidum text-xs text-[#64748B] dark:text-gray-300", option == null ? void 0 : option.labelClassName) }, column.label), /* @__PURE__ */ React2__default.createElement("div", { className: cn("text-xs", option == null ? void 0 : option.valueClassName) }, column.render ? column.render(item) : renderFieldValue(item[column.key]))), (cardOptions == null ? void 0 : cardOptions.showDivider) && i !== columns.length - 1 && /* @__PURE__ */ React2__default.createElement(Divider, { className: cn("my-2", cardOptions == null ? void 0 : cardOptions.dividerClassName) }));
|
|
487
|
-
}),
|
|
488
|
-
/* @__PURE__ */ React2__default.createElement(Actions, { asCard: true, item, actions, actionsOptions })
|
|
489
|
-
);
|
|
490
|
-
})), pagination.total > pagination.limit && /* @__PURE__ */ React2__default.createElement("div", { className: "flex justify-center h-[30px] mt-4" }, /* @__PURE__ */ React2__default.createElement(
|
|
491
|
-
Pagination,
|
|
492
|
-
__spreadValues({
|
|
493
|
-
showControls: true,
|
|
494
|
-
size: "sm",
|
|
495
|
-
radius: "sm",
|
|
496
|
-
initialPage: 1,
|
|
497
|
-
total: Math.ceil(pagination.total / pagination.limit),
|
|
498
|
-
page: pagination.page,
|
|
499
|
-
onChange: (currentPage) => {
|
|
500
|
-
pagination.setData({
|
|
501
|
-
page: currentPage
|
|
502
|
-
});
|
|
503
|
-
scrollIntoTop(tableBoxElementId);
|
|
504
|
-
}
|
|
505
|
-
}, nextuiPaginationProps)
|
|
506
|
-
)));
|
|
507
|
-
}
|
|
508
|
-
async function scrollIntoTop(tableBoxElementId) {
|
|
509
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
510
|
-
if (tableBoxElementId) {
|
|
511
|
-
const el = document.getElementById(tableBoxElementId);
|
|
512
|
-
if (el) {
|
|
513
|
-
const { top } = el.getBoundingClientRect();
|
|
514
|
-
window.scrollTo({
|
|
515
|
-
top: top + window.scrollY - 100,
|
|
516
|
-
behavior: "smooth"
|
|
517
|
-
});
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
function TableHeaderOfNoData({ className, columns }) {
|
|
522
|
-
return /* @__PURE__ */ React2__default.createElement("div", { className: cn("flex items-center justify-between bg-[#F4F4F5] dark:bg-[#3F3F45] shadow-sm overflow-auto rounded-l-lg rounded-r-lg", className) }, columns.map((item) => /* @__PURE__ */ React2__default.createElement("div", { key: item.key, className: "p-2 text-left font-medium text-xs text-[#64748B] dark:text-gray-300 whitespace-nowrap" }, item.label)));
|
|
523
|
-
}
|
|
524
|
-
function DefaultNoData({ className, columns }) {
|
|
525
|
-
return /* @__PURE__ */ React2__default.createElement(Card, { className: cn("w-full shadow-sm border dark:border-[#3e3e3e] rounded-lg", className) }, /* @__PURE__ */ React2__default.createElement(TableHeaderOfNoData, { columns }), /* @__PURE__ */ React2__default.createElement("div", { className: "w-full h-[100px] flex flex-col justify-center items-center" }, /* @__PURE__ */ React2__default.createElement("div", { className: "text-[#64748B] text-sm" }, "No Data")));
|
|
526
|
-
}
|
|
527
|
-
function TableHeaderOfLoading({ className, columns }) {
|
|
528
|
-
return /* @__PURE__ */ React2__default.createElement(TableHeaderOfNoData, { columns, className });
|
|
529
|
-
}
|
|
530
|
-
function DefaultLoading({ className, columns, loadingOptions }) {
|
|
531
|
-
const type = (loadingOptions == null ? void 0 : loadingOptions.type) || "skeleton";
|
|
532
|
-
const skeletonOptions = loadingOptions == null ? void 0 : loadingOptions.skeleton;
|
|
533
|
-
const spinnerOptions = loadingOptions == null ? void 0 : loadingOptions.spinner;
|
|
534
|
-
const spinnerProps = (spinnerOptions == null ? void 0 : spinnerOptions.spinnerProps) || {};
|
|
535
|
-
return /* @__PURE__ */ React2__default.createElement("div", { className: cn("w-full shadow-sm", className) }, /* @__PURE__ */ React2__default.createElement(TableHeaderOfLoading, { columns }), type === "skeleton" ? /* @__PURE__ */ React2__default.createElement(SkeletonBox, { className: cn("mt-2 flex-col", skeletonOptions == null ? void 0 : skeletonOptions.boxClassName), skClassName: cn("h-[30px] rounded", skeletonOptions == null ? void 0 : skeletonOptions.skeletonClassName), line: (skeletonOptions == null ? void 0 : skeletonOptions.line) || 5 }) : /* @__PURE__ */ React2__default.createElement("div", { className: cn("w-full h-[100px] flex justify-center items-center", spinnerOptions == null ? void 0 : spinnerOptions.boxClassName) }, /* @__PURE__ */ React2__default.createElement(Spinner, __spreadValues({ size: "sm", color: "primary" }, spinnerProps)), /* @__PURE__ */ React2__default.createElement("div", { className: cn("ml-2 text-[#64748B] text-sm", spinnerOptions == null ? void 0 : spinnerOptions.textClassName) }, (spinnerOptions == null ? void 0 : spinnerOptions.text) || "Loading...")));
|
|
536
|
-
}
|
|
537
|
-
|
|
538
|
-
export { JSONTable, TableHeaderOfLoading, TableHeaderOfNoData };
|
|
539
|
-
//# sourceMappingURL=out.js.map
|
|
540
|
-
//# sourceMappingURL=chunk-RH5VZB32.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/JSONTable/index.tsx","../components/ui/table.tsx","../../../node_modules/uuid/dist/esm-node/rng.js","../../../node_modules/uuid/dist/esm-node/regex.js","../../../node_modules/uuid/dist/esm-node/validate.js","../../../node_modules/uuid/dist/esm-node/stringify.js","../../../node_modules/uuid/dist/esm-node/v4.js"],"names":["React","data","columns","extendedTables","keys","sortedData","_a"],"mappings":"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","sourcesContent":["\"use client\";\n\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../ui/table\";\nimport { Button, ButtonProps, Card, Divider, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger, Pagination as NextuiPagination, PaginationProps, Spinner, SpinnerProps } from '@nextui-org/react';\nimport { ChevronDown, ChevronRight, ChevronUp, ChevronsUpDown } from \"lucide-react\";\nimport JSONHighlight from \"../Common/JSONHighlight\";\nimport { SkeletonBox } from \"../Common/SkeletonBox\";\nimport { _ } from \"../../lib/lodash\";\nimport { cn } from \"../../lib/utils\";\nimport { DialogStore } from \"../../module/Dialog\";\nimport { PaginationState } from \"../../store/standard/PaginationState\";\nimport { v4 as uuid } from \"uuid\";\n\nexport type ActionButtonType = {\n props?: ButtonProps;\n children: React.ReactNode;\n};\n\nexport type ActionsOptions = {\n headLabel?: string;\n placement?: 'left' | 'right';\n className?: string;\n};\n\nexport type HeaderKeys<T extends Record<string, any>> = Array<keyof T>;\n\nexport type ColumnOptions<T extends Record<string, any>> = {\n [key in keyof T]?: {\n label?: React.ReactNode;\n hidden?: boolean;\n sortable?: boolean;\n sortKey?: string;\n order?: number;\n render?: (item: T) => any;\n thClassName?: string;\n tdClassName?: string;\n labelClassName?: string;\n valueClassName?: string;\n };\n};\n\nexport type Column<T extends Record<string, any>> = {\n key: string;\n label: React.ReactNode;\n render?: (item: T) => any;\n};\n\nexport type ExtendedTable<U> = {\n key: string;\n columns: Column<U>[];\n};\n\nexport type ActionsType<T> = (item: T) => ActionButtonType[] | React.ReactNode;\n\nexport type CardOptions = {\n boxClassName?: string;\n cardClassName?: string;\n itemClassName?: string;\n showDivider?: boolean;\n dividerClassName?: string;\n};\n\ntype LoadingOptions = {\n className?: string;\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 interface JSONTableProps<T extends Record<string, any>> {\n className?: string;\n dataSource: T[];\n columnOptions?: ColumnOptions<T>;\n headerKeys?: HeaderKeys<T>;\n isServerPaging?: boolean;\n extendedTableOptions?: {\n key: keyof T;\n columnOptions: ColumnOptions<any>;\n }[];\n rowKey?: string;\n pagination?: PaginationState;\n nextuiPaginationProps?: PaginationProps | {};\n onRowClick?: (item: T) => void;\n rowCss?: string | ((item: T) => string | undefined);\n actions?: ActionsType<T>;\n actionsOptions?: ActionsOptions;\n asCard?: boolean;\n cardOptions?: CardOptions;\n autoScrollToTop?: boolean;\n NoData?: ({ className, columns }: { className?: string; columns: Column<T>[] }) => React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n Loading?: ({ className, columns }: { className?: string; columns: Column<T>[] }) => React.ReactNode;\n}\n\nexport const JSONTable = observer(<T extends Record<string, any>>(props: JSONTableProps<T>) => {\n const {\n className,\n dataSource,\n columnOptions,\n headerKeys,\n isServerPaging,\n pagination = new PaginationState({\n page: 1,\n limit: 8,\n }),\n nextuiPaginationProps = {},\n extendedTableOptions = [],\n rowKey = 'id',\n onRowClick,\n rowCss,\n actions,\n actionsOptions,\n asCard = false,\n cardOptions = {\n boxClassName: '',\n cardClassName: '',\n itemClassName: '',\n showDivider: true,\n dividerClassName: '',\n },\n autoScrollToTop = false,\n NoData = DefaultNoData,\n isLoading = false,\n loadingOptions,\n Loading = DefaultLoading,\n } = props;\n\n const actionsHeadLabel = actionsOptions?.headLabel || '';\n const actionsPlacement = actions ? actionsOptions?.placement || 'right' : undefined;\n\n const store = useLocalObservable<{\n columns: Column<T>[],\n sortableColumns: { [k: string]: 'asc' | 'desc' | 'none' };\n sortedData: T[];\n extendedTables: ExtendedTable<any>[];\n setData: (data: Partial<typeof store>) => void;\n }>(() => ({\n columns: [],\n sortableColumns: {},\n sortedData: [],\n extendedTables: [],\n setData(data: Partial<typeof store>) {\n Object.assign(store, data);\n },\n }));\n\n const tableBoxElementId = useRef(autoScrollToTop ? `table-box-${uuid().slice(0, 8)}` : undefined).current;\n\n useEffect(() => {\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\n const sortableColumns: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n\n const columns: Column<T>[] = keys\n .map((key: string) => {\n const sortable = columnOptions?.[key]?.sortable;\n if (sortable) {\n sortableColumns[key] = 'none';\n }\n return {\n key,\n label: columnOptions?.[key]?.label || key,\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 const extendedTables = firstData ? extendedTableOptions\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\n const keys = Object.keys(item.columnOptions);\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 render: option?.render,\n };\n }),\n };\n }) : [];\n\n store.setData({\n sortableColumns,\n columns,\n extendedTables,\n sortedData: dataSource,\n });\n\n if (!isServerPaging) {\n pagination.setData({\n total: dataSource.length,\n });\n }\n }, [dataSource, columnOptions]);\n\n const onSort = ({ sortKey, key, type }: { sortKey: string; key: string; type: 'asc' | 'desc' | 'none' }) => {\n const sortableColumns: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n Object.keys(store.sortableColumns).map((k) => {\n sortableColumns[k] = k === key ? type : 'none';\n });\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);\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\n store.setData({\n sortableColumns,\n sortedData,\n });\n };\n\n const { columns, extendedTables, sortedData } = store;\n const needExtendedTable = !!extendedTables.length;\n const data = isServerPaging ? sortedData : sortedData.slice(pagination.offset, pagination.offset + pagination.limit);\n\n if (isLoading) {\n return <Loading className={className} columns={columns} loadingOptions={loadingOptions} />;\n }\n\n if (data.length === 0) {\n return <NoData className={className} columns={columns} />;\n }\n\n if (asCard) {\n return (\n <CardUI\n className={className}\n rowKey={rowKey}\n data={data}\n columns={columns}\n columnOptions={columnOptions}\n actions={actions}\n actionsOptions={actionsOptions}\n cardOptions={cardOptions}\n pagination={pagination}\n nextuiPaginationProps={nextuiPaginationProps}\n onRowClick={onRowClick}\n tableBoxElementId={tableBoxElementId}\n />\n );\n }\n\n return (\n <>\n <div className={cn('relative w-full overflow-auto h-[400px]', className)} id={tableBoxElementId}>\n <Table>\n <TableHeader className=\"sticky top-0\">\n <TableRow className=\"bg-[#F4F4F5] dark:bg-[#3F3F45] shadow-sm\">\n {needExtendedTable && <TableHead></TableHead>}\n {actionsPlacement === 'left' && <TableHead className=\"font-meidum text-xs text-[#64748B] dark:text-gray-300\">{actionsHeadLabel}</TableHead>}\n {columns.map((item, index) => (\n <TableHead className={cn('font-meidum text-xs text-[#64748B] dark:text-gray-300', columnOptions?.[item.key]?.thClassName)} key={item.key}>\n <div className=\"flex items-center\">\n <span>{item.label}</span>\n {!!store.sortableColumns[item.key] && (\n <Dropdown\n showArrow\n backdrop=\"opaque\"\n placement=\"bottom\"\n >\n <DropdownTrigger>\n <button className=\"outline-none p-0\">\n {store.sortableColumns[item.key] === 'desc' && <ChevronDown size={14} />}\n {store.sortableColumns[item.key] === 'asc' && <ChevronUp size={14} />}\n {store.sortableColumns[item.key] === 'none' && <ChevronsUpDown size={14} />}\n </button>\n </DropdownTrigger>\n <DropdownMenu variant=\"flat\" selectionMode=\"single\" selectedKeys={[store.sortableColumns[item.key]]}>\n <DropdownItem\n key=\"asc\"\n onClick={() => {\n onSort({\n type: 'asc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n <span className=\"text-sm font-bold\">Sort ascending</span>\n </DropdownItem>\n <DropdownItem\n key=\"desc\"\n onClick={() => {\n onSort({\n type: 'desc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n <span className=\"text-sm font-bold\">Sort descending</span>\n </DropdownItem>\n <DropdownItem\n key=\"none\"\n onClick={() => {\n onSort({\n type: 'none',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n <span className=\"text-sm font-bold\">Sort none</span>\n </DropdownItem>\n </DropdownMenu>\n </Dropdown>\n )}\n </div>\n </TableHead>\n ))}\n {actionsPlacement === 'right' && <TableHead className=\"font-meidum text-xs text-[#64748B] dark:text-gray-300\">{actionsHeadLabel}</TableHead>}\n </TableRow>\n </TableHeader>\n <TableBody>\n {data.map((item, index) =>\n needExtendedTable ? (\n <CollapseBody key={item[rowKey] || index} item={item} columns={columns} extendedTables={extendedTables} rowCss={rowCss} actions={actions} actionsPlacement={actionsPlacement} />\n ) : (\n <Body\n key={item[rowKey] || index}\n item={item}\n columns={columns}\n columnOptions={columnOptions}\n onRowClick={onRowClick}\n rowCss={rowCss}\n actions={actions}\n actionsPlacement={actionsPlacement}\n />\n ),\n )}\n </TableBody>\n </Table>\n </div>\n {pagination.total > pagination.limit && (\n <div className=\"flex justify-center h-[30px] mt-4\">\n <NextuiPagination\n showControls\n size=\"sm\"\n radius=\"sm\"\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 scrollIntoTop(tableBoxElementId);\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </>\n );\n});\n\nfunction ActionButton({ props, children }: ActionButtonType) {\n return <Button {...props}>{children}</Button>;\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 (\n <p\n className=\"cursor-pointer\"\n onClick={(e) => {\n e.stopPropagation();\n DialogStore.show({\n content: <JSONHighlight className=\"w-full lg:w-[900px]\" jsonStr={JSON.stringify(v, null, 2)} />,\n });\n }}\n >\n {JSON.stringify(v).slice(0, 50) + '...'}\n </p>\n );\n}\n\nfunction Actions<T>({ actions, actionsOptions, item, asCard }: { item: T; actions?: ActionsType<T>; actionsOptions?: ActionsOptions; asCard?: boolean }) {\n if (!actions) {\n return null;\n }\n\n const Com = actions(item);\n if (Array.isArray(Com)) {\n if (asCard) {\n return (\n <div className={cn('w-full flex items-center space-x-2', actionsOptions?.className)}>\n {Com.map((btn, index) => (\n <ActionButton key={index} props={btn.props} children={btn.children} />\n ))}\n </div>\n );\n }\n return (\n <TableCell className=\"max-w-[200px] overflow-auto space-x-2\">\n {Com.map((btn, index) => (\n <ActionButton key={index} props={btn.props} children={btn.children} />\n ))}\n </TableCell>\n );\n }\n\n if (asCard) {\n return <div className={cn('w-full flex items-center space-x-2', actionsOptions?.className)}>{Com}</div>;\n }\n return <TableCell className=\"max-w-[200px] overflow-auto space-x-2\">{Com}</TableCell>;\n}\n\nfunction Body<T>({\n item,\n columns,\n columnOptions,\n onRowClick,\n rowCss,\n actions,\n actionsPlacement,\n}: {\n item: T;\n columns: Column<T>[];\n columnOptions?: ColumnOptions<T>;\n onRowClick?: (item: T) => void;\n rowCss?: string | ((item: T) => string | undefined);\n actions?: ActionsType<T>;\n actionsPlacement?: 'left' | 'right';\n}) {\n return (\n <TableRow\n className={cn('text-xs hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]', typeof rowCss === 'function' ? rowCss(item) : rowCss)}\n onClick={() => {\n onRowClick?.(item);\n }}\n >\n {actionsPlacement === 'left' && <Actions item={item} actions={actions} />}\n {columns.map((column) => {\n return (\n <TableCell key={column.key} className={cn('max-w-[200px] overflow-auto', columnOptions?.[column.key]?.tdClassName)}>\n {column.render\n ? column.render(item)\n : renderFieldValue(item[column.key])}\n </TableCell>\n );\n })}\n {actionsPlacement === 'right' && <Actions item={item} actions={actions} />}\n </TableRow>\n );\n}\n\nfunction CollapseBody<T>({ item,\n columns,\n extendedTables,\n rowCss,\n actions,\n actionsPlacement }: {\n item: T;\n columns: Column<T>[];\n extendedTables: ExtendedTable<any>[];\n rowCss?: string | ((item: T) => string | undefined);\n actions?: ActionsType<T>;\n actionsPlacement?: 'left' | 'right';\n }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <TableRow\n className={cn('text-xs cursor-pointer hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]', typeof rowCss === 'function' ? rowCss(item) : rowCss)}\n onClick={(e: any) => {\n const { nodeName } = e.target;\n if (nodeName === 'TD' || nodeName === 'svg') {\n setIsOpen((v) => !v);\n }\n }}\n >\n <TableCell className=\"w-10\">{isOpen ? <ChevronDown size={18} /> : <ChevronRight size={18} />}</TableCell>\n {actionsPlacement === 'left' && <Actions item={item} actions={actions} />}\n {columns.map((column) => {\n return (\n <TableCell key={column.key} className=\"max-w-[200px] overflow-auto\">\n {column.render\n ? column.render(item)\n : renderFieldValue(item[column.key])}\n </TableCell>\n );\n })}\n {actionsPlacement === 'right' && <Actions item={item} actions={actions} />}\n </TableRow>\n <TableRow className={cn(isOpen ? 'table-row' : 'hidden')}>\n <TableCell></TableCell>\n <TableCell colSpan={columns.length}>\n {extendedTables.map((ex) => {\n const exColumns = ex.columns;\n const exRow = item[ex.key];\n return (\n <Table className=\"mt-[10px]\" key={ex.key}>\n <TableHeader>\n <TableRow className=\"bg-[#F4F4F5] dark:bg-[#3F3F45]\">\n {exColumns.map((exC) => {\n return (\n <TableHead key={exC.key} className=\"text-xs text-[#64748B] dark:text-gray-300\">\n {exC.label}\n </TableHead>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody>\n {exRow.map((exItem) => (\n <TableRow className=\"text-xs hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]\" key={exItem.key}>\n {exColumns.map((exC) => {\n return (\n <TableCell key={exC.key} className=\"max-w-[200px] overflow-auto\">\n {exC.render\n ? exC.render({\n ...exItem,\n $parent: item,\n })\n : renderFieldValue(exItem[exC.key])}\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n })}\n </TableCell>\n </TableRow>\n </>\n );\n}\n\nfunction CardUI<T>({\n className,\n data,\n columns,\n columnOptions,\n rowKey,\n actions,\n actionsOptions,\n cardOptions,\n pagination,\n nextuiPaginationProps,\n onRowClick,\n tableBoxElementId,\n}: {\n className?: string;\n data: T[];\n columns: Column<T>[];\n columnOptions?: ColumnOptions<T>;\n rowKey: string;\n actions?: ActionsType<T>;\n actionsOptions?: ActionsOptions;\n cardOptions?: CardOptions;\n pagination: PaginationState;\n nextuiPaginationProps: PaginationProps | {};\n onRowClick?: (item: T) => void;\n tableBoxElementId?: string;\n}) {\n return (\n <div className={className} id={tableBoxElementId}>\n <div className={cn('space-y-2', cardOptions?.boxClassName)}>\n {data.map((item, index) => {\n return (\n <Card\n key={item[rowKey] || index}\n className={cn('w-full shadow-none p-4', cardOptions?.cardClassName)}\n isPressable={!!onRowClick}\n onPress={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column, i) => {\n const option = columnOptions?.[column.key];\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-[#64748B] dark:text-gray-300', option?.labelClassName)}>{column.label}</div>\n <div className={cn('text-xs', option?.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 <Actions asCard item={item} actions={actions} actionsOptions={actionsOptions} />\n </Card>\n );\n })}\n </div>\n {pagination.total > pagination.limit && (\n <div className=\"flex justify-center h-[30px] mt-4\">\n <NextuiPagination\n showControls\n size=\"sm\"\n radius=\"sm\"\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 scrollIntoTop(tableBoxElementId);\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </div>\n );\n}\n\nasync function scrollIntoTop(tableBoxElementId?: string) {\n await new Promise((resolve) => setTimeout(resolve, 500));\n if (tableBoxElementId) {\n const el = document.getElementById(tableBoxElementId);\n if (el) {\n const { top } = el.getBoundingClientRect();\n window.scrollTo({\n top: top + window.scrollY - 100,\n behavior: 'smooth',\n });\n }\n }\n}\n\nexport function TableHeaderOfNoData<T>({ className, columns }: { className?: string; columns: Column<T>[] }) {\n return (\n <div className={cn('flex items-center justify-between bg-[#F4F4F5] dark:bg-[#3F3F45] shadow-sm overflow-auto rounded-l-lg rounded-r-lg', className)}>\n {columns.map((item) => (\n <div key={item.key} className=\"p-2 text-left font-medium text-xs text-[#64748B] dark:text-gray-300 whitespace-nowrap\">\n {item.label}\n </div>\n ))}\n </div>\n );\n}\n\nfunction DefaultNoData<T>({ className, columns }: { className?: string; columns: Column<T>[] }) {\n return (\n <Card className={cn('w-full shadow-sm border dark:border-[#3e3e3e] rounded-lg', className)}>\n <TableHeaderOfNoData columns={columns} />\n <div className=\"w-full h-[100px] flex flex-col justify-center items-center\">\n <div className=\"text-[#64748B] text-sm\">No Data</div>\n </div>\n </Card>\n );\n}\n\nexport function TableHeaderOfLoading<T>({ className, columns }: { className?: string; columns: Column<T>[] }) {\n return <TableHeaderOfNoData columns={columns} className={className} />;\n}\n\nfunction DefaultLoading<T>({ className, columns, loadingOptions }: { className?: string; columns: Column<T>[]; loadingOptions?: LoadingOptions }) {\n const type = loadingOptions?.type || 'skeleton';\n const skeletonOptions = loadingOptions?.skeleton;\n const spinnerOptions = loadingOptions?.spinner;\n const spinnerProps = spinnerOptions?.spinnerProps || {};\n return (\n <div className={cn('w-full shadow-sm', className)}>\n <TableHeaderOfLoading columns={columns} />\n {type === 'skeleton' ? (\n <SkeletonBox className={cn('mt-2 flex-col', skeletonOptions?.boxClassName)} skClassName={cn('h-[30px] rounded', skeletonOptions?.skeletonClassName)} line={skeletonOptions?.line || 5} />\n ) : (\n <div className={cn('w-full h-[100px] 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 </div>\n );\n}\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(({ className, ...props }, ref) => (\n <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n));\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('', className)} {...props} />\n));\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n));\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(({ className, ...props }, ref) => (\n <tfoot ref={ref} className={cn('bg-primary font-medium text-primary-foreground', className)} {...props} />\n));\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(({ className, ...props }, ref) => (\n <tr ref={ref} className={cn('', className)} {...props} />\n));\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(({ className, ...props }, ref) => (\n <th ref={ref} className={cn('h-8 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0', className)} {...props} />\n));\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(({ className, ...props }, ref) => (\n <td ref={ref} className={cn('p-2 align-middle [&:has([role=checkbox])]:pr-0', className)} {...props} />\n));\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n crypto.randomFillSync(rnds8Pool);\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;"]}
|