@dappworks/kit 0.4.73 → 0.4.74
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-SUA5V6VE.mjs → chunk-RH5VZB32.mjs} +12 -12
- package/dist/{chunk-SUA5V6VE.mjs.map → chunk-RH5VZB32.mjs.map} +1 -1
- package/dist/index.d.mts +13 -1
- package/dist/index.mjs +39 -3
- package/dist/index.mjs.map +1 -1
- package/dist/jsontable.mjs +1 -1
- package/dist/metrics.mjs +1 -1
- package/package.json +2 -2
|
@@ -267,17 +267,17 @@ var JSONTable = observer((props) => {
|
|
|
267
267
|
}
|
|
268
268
|
);
|
|
269
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-
|
|
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
271
|
var _a;
|
|
272
|
-
return /* @__PURE__ */ React2__default.createElement(TableHead, { className: cn("font-meidum text-
|
|
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
273
|
Dropdown,
|
|
274
274
|
{
|
|
275
275
|
showArrow: true,
|
|
276
276
|
backdrop: "opaque",
|
|
277
277
|
placement: "bottom"
|
|
278
278
|
},
|
|
279
|
-
/* @__PURE__ */ React2__default.createElement(DropdownTrigger, null, /* @__PURE__ */ React2__default.createElement("
|
|
280
|
-
/* @__PURE__ */ React2__default.createElement(DropdownMenu, { selectionMode: "single", selectedKeys: [store.sortableColumns[item.key]] }, /* @__PURE__ */ React2__default.createElement(
|
|
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
281
|
DropdownItem,
|
|
282
282
|
{
|
|
283
283
|
key: "asc",
|
|
@@ -321,7 +321,7 @@ var JSONTable = observer((props) => {
|
|
|
321
321
|
/* @__PURE__ */ React2__default.createElement("span", { className: "text-sm font-bold" }, "Sort none")
|
|
322
322
|
))
|
|
323
323
|
)));
|
|
324
|
-
}), actionsPlacement === "right" && /* @__PURE__ */ React2__default.createElement(TableHead, { className: "font-meidum text-
|
|
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
325
|
(item, index) => needExtendedTable ? /* @__PURE__ */ React2__default.createElement(CollapseBody, { key: item[rowKey] || index, item, columns, extendedTables, rowCss, actions, actionsPlacement }) : /* @__PURE__ */ React2__default.createElement(
|
|
326
326
|
Body,
|
|
327
327
|
{
|
|
@@ -405,7 +405,7 @@ function Body({
|
|
|
405
405
|
return /* @__PURE__ */ React2__default.createElement(
|
|
406
406
|
TableRow,
|
|
407
407
|
{
|
|
408
|
-
className: cn("text-
|
|
408
|
+
className: cn("text-xs hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]", typeof rowCss === "function" ? rowCss(item) : rowCss),
|
|
409
409
|
onClick: () => {
|
|
410
410
|
onRowClick == null ? void 0 : onRowClick(item);
|
|
411
411
|
}
|
|
@@ -430,7 +430,7 @@ function CollapseBody({
|
|
|
430
430
|
return /* @__PURE__ */ React2__default.createElement(React2__default.Fragment, null, /* @__PURE__ */ React2__default.createElement(
|
|
431
431
|
TableRow,
|
|
432
432
|
{
|
|
433
|
-
className: cn("text-
|
|
433
|
+
className: cn("text-xs cursor-pointer hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]", typeof rowCss === "function" ? rowCss(item) : rowCss),
|
|
434
434
|
onClick: (e) => {
|
|
435
435
|
const { nodeName } = e.target;
|
|
436
436
|
if (nodeName === "TD" || nodeName === "svg") {
|
|
@@ -448,8 +448,8 @@ function CollapseBody({
|
|
|
448
448
|
const exColumns = ex.columns;
|
|
449
449
|
const exRow = item[ex.key];
|
|
450
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-
|
|
452
|
-
}))), /* @__PURE__ */ React2__default.createElement(TableBody, null, exRow.map((exItem) => /* @__PURE__ */ React2__default.createElement(TableRow, { className: "text-
|
|
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
453
|
return /* @__PURE__ */ React2__default.createElement(TableCell, { key: exC.key, className: "max-w-[200px] overflow-auto" }, exC.render ? exC.render(__spreadProps(__spreadValues({}, exItem), {
|
|
454
454
|
$parent: item
|
|
455
455
|
})) : renderFieldValue(exItem[exC.key]));
|
|
@@ -483,7 +483,7 @@ function CardUI({
|
|
|
483
483
|
},
|
|
484
484
|
columns.map((column, i) => {
|
|
485
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-
|
|
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
487
|
}),
|
|
488
488
|
/* @__PURE__ */ React2__default.createElement(Actions, { asCard: true, item, actions, actionsOptions })
|
|
489
489
|
);
|
|
@@ -519,7 +519,7 @@ async function scrollIntoTop(tableBoxElementId) {
|
|
|
519
519
|
}
|
|
520
520
|
}
|
|
521
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-
|
|
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
523
|
}
|
|
524
524
|
function DefaultNoData({ className, columns }) {
|
|
525
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")));
|
|
@@ -537,4 +537,4 @@ function DefaultLoading({ className, columns, loadingOptions }) {
|
|
|
537
537
|
|
|
538
538
|
export { JSONTable, TableHeaderOfLoading, TableHeaderOfNoData };
|
|
539
539
|
//# sourceMappingURL=out.js.map
|
|
540
|
-
//# sourceMappingURL=chunk-
|
|
540
|
+
//# sourceMappingURL=chunk-RH5VZB32.mjs.map
|
|
@@ -1 +1 @@
|
|
|
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-[12px] text-[#64748B] dark:text-gray-300\">{actionsHeadLabel}</TableHead>}\n {columns.map((item, index) => (\n <TableHead className={cn('font-meidum text-[12px] text-[#64748B] dark:text-gray-300', columnOptions?.[item.key]?.thClassName)} key={item.key}>\n <div className=\"flex items-center\">\n <div className=\"text-xs\">{item.label}</div>\n {!!store.sortableColumns[item.key] && (\n <Dropdown\n showArrow\n backdrop=\"opaque\"\n placement=\"bottom\"\n >\n <DropdownTrigger>\n <div className=\"cursor-pointer\">\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 </div>\n </DropdownTrigger>\n <DropdownMenu 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-[12px] 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-[12px] 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-[12px] 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-[12px] 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-[12px] 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-[12px] text-[#64748B] dark:text-gray-300', option?.labelClassName)}>{column.label}</div>\n <div className={cn('text-[12px]', 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-[12px] 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;"]}
|
|
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;"]}
|
package/dist/index.d.mts
CHANGED
|
@@ -76,6 +76,18 @@ declare class BigNumberInputState {
|
|
|
76
76
|
get isZero(): boolean;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
declare class StorageState<T> {
|
|
80
|
+
key: string;
|
|
81
|
+
value: T | any;
|
|
82
|
+
default: T | any;
|
|
83
|
+
constructor(args: Partial<StorageState<T>>);
|
|
84
|
+
static safeParse(val: any): any;
|
|
85
|
+
load(): any;
|
|
86
|
+
save(value?: T): void;
|
|
87
|
+
setValue(value?: T): void;
|
|
88
|
+
clear(): void;
|
|
89
|
+
}
|
|
90
|
+
|
|
79
91
|
declare const AppProvider: (({ children }: {
|
|
80
92
|
children?: React.ReactNode;
|
|
81
93
|
}) => React.JSX.Element) & {
|
|
@@ -204,4 +216,4 @@ declare const helper: {
|
|
|
204
216
|
};
|
|
205
217
|
};
|
|
206
218
|
|
|
207
|
-
export { AppProvider, BigNumberInputState, BigNumberState, EventMap, PromiseHook, RootStore, cache, helper, rootStore, useStore };
|
|
219
|
+
export { AppProvider, BigNumberInputState, BigNumberState, EventMap, PromiseHook, RootStore, StorageState, cache, helper, rootStore, useStore };
|
package/dist/index.mjs
CHANGED
|
@@ -122,12 +122,11 @@ var BigNumberInputState = class {
|
|
|
122
122
|
}
|
|
123
123
|
setValue(value) {
|
|
124
124
|
this.value = new BigNumber(value);
|
|
125
|
-
this.format = helper.number.
|
|
125
|
+
this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: "0.000", fallback: "" }).format;
|
|
126
126
|
this.setLoading(false);
|
|
127
127
|
}
|
|
128
128
|
setFormat(val) {
|
|
129
129
|
this.format = val;
|
|
130
|
-
this.format = helper.number.toPrecisionFloor(this.format);
|
|
131
130
|
this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);
|
|
132
131
|
}
|
|
133
132
|
setLoading(val) {
|
|
@@ -140,6 +139,43 @@ var BigNumberInputState = class {
|
|
|
140
139
|
return this.value.isZero() && this.format == "";
|
|
141
140
|
}
|
|
142
141
|
};
|
|
142
|
+
var StorageState = class _StorageState {
|
|
143
|
+
constructor(args) {
|
|
144
|
+
this.value = null;
|
|
145
|
+
this.default = null;
|
|
146
|
+
Object.assign(this, args);
|
|
147
|
+
makeAutoObservable(this);
|
|
148
|
+
this.load();
|
|
149
|
+
}
|
|
150
|
+
static safeParse(val) {
|
|
151
|
+
try {
|
|
152
|
+
return JSON.parse(val);
|
|
153
|
+
} catch (error) {
|
|
154
|
+
return val;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
load() {
|
|
158
|
+
var _a;
|
|
159
|
+
const value = (_a = global == null ? void 0 : global.localStorage) == null ? void 0 : _a.getItem(this.key);
|
|
160
|
+
this.value = _StorageState.safeParse(value);
|
|
161
|
+
if (this.value == null) {
|
|
162
|
+
this.value = this.default;
|
|
163
|
+
}
|
|
164
|
+
return this.value;
|
|
165
|
+
}
|
|
166
|
+
save(value) {
|
|
167
|
+
if (value !== null || value !== void 0) {
|
|
168
|
+
this.value = value;
|
|
169
|
+
}
|
|
170
|
+
global == null ? void 0 : global.localStorage.setItem(this.key, JSON.stringify(value));
|
|
171
|
+
}
|
|
172
|
+
setValue(value) {
|
|
173
|
+
this.save(value);
|
|
174
|
+
}
|
|
175
|
+
clear() {
|
|
176
|
+
localStorage.removeItem(this.key);
|
|
177
|
+
}
|
|
178
|
+
};
|
|
143
179
|
var AppProvider = observer(({ children }) => {
|
|
144
180
|
const rootStore2 = RootStore.init();
|
|
145
181
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, rootStore2.providers.map((store) => {
|
|
@@ -232,6 +268,6 @@ var DexieCache = class {
|
|
|
232
268
|
};
|
|
233
269
|
var cache = new DexieCache();
|
|
234
270
|
|
|
235
|
-
export { AppProvider, BigNumberInputState, PromiseHook, cache };
|
|
271
|
+
export { AppProvider, BigNumberInputState, PromiseHook, StorageState, cache };
|
|
236
272
|
//# sourceMappingURL=out.js.map
|
|
237
273
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberInputState.ts","../module/AppProvider.tsx","../lib/dexie.ts"],"names":["makeAutoObservable","rootStore"],"mappings":"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","sourcesContent":["\n\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T, loading: boolean }\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(cls: ContractClass<T>): (args: { args: Partial<T>; id?: string, select?: { [key in keyof Partial<T>]: boolean }, unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false\n if (select && !select[i[0]]) return false\n if (unselect && unselect[i[0]]) return false\n return true\n }).map(i => {\n const hook = instance[i[0]]\n return hook\n })\n\n await Promise.all(hooks.map((i) => i.call()));\n }\n if (id) {\n //@ts-ignore\n this.entities[id] = instance\n }\n } else {\n instance = this.entities[id!]\n }\n\n\n await instance.refresh()\n return instance;\n };\n } catch (e) {\n throw e\n }\n }\n\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\"\n }\n\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue }: { func: T; defaultValue?: Awaited<U>; }): PromiseHookData<T, U> {\n let context;\n const call = () => {\n context.loading = true;\n if (!context._call) {\n context._call = func()\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null\n return i\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue\n context._call = null\n context.loading = false;\n throw i;\n });\n }\n\n\n return context._call\n };\n const get = async () => {\n if (!context.value) {\n\n return call();\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: 'promiseHook',\n _value: defaultValue,\n get value() {\n return context['_value'];\n },\n set value(val) {\n context['_value'] = val;\n },\n get,\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value\n },\n toString() {\n return context.value\n },\n });\n }\n\n return context;\n }\n\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n this.format = helper.number.toPrecisionFloor(this.format);\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})","import DataLoader from \"dataloader\";\nimport { Dexie, type Table } from \"dexie\";\n\nexport class DexieStorage extends Dexie {\n kv: Table<{ key: string; value: { value: any; expiration: number } }>;\n\n constructor() {\n super(\"cache\");\n this.version(1).stores({\n kv: \"key, value\",\n });\n }\n}\nexport const dexie = new DexieStorage();\n\nexport class DexieCache {\n kv = dexie.kv;\n kv_get = new DataLoader(\n async (ids: string[]) => {\n const res = await this.kv.bulkGet(ids);\n return res.map((i) => i?.value);\n },\n { cache: false },\n );\n kv_set = new DataLoader(\n async (ids: { key: string; value: any; ttl: number }[]) => {\n const now = new Date();\n await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));\n return ids;\n },\n { cache: false },\n );\n options = {\n ttl: 60 * 1000,\n prefix: \"\",\n };\n\n async get(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data?.value;\n }\n\n async getRaw(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data;\n }\n\n async set(_key, value, options?: { ttl?: number }) {\n const key = this.options.prefix + _key;\n this.kv_set.load({ key, value, ttl: options?.ttl || this.options.ttl });\n\n return this;\n }\n\n async delete(key) {\n // return this.dataloader.load(['del', key]);\n return;\n }\n\n async clear() {}\n\n async wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key, fn: T, args?: { ttl?: number; alowStale?: boolean }): Promise<Awaited<U>> {\n let data = await this.kv_get.load(key);\n if (data?.expiration && new Date(data.expiration) <= new Date()) {\n // console.log(\"cache expired\", key)\n\n if (args?.alowStale) {\n fn()\n .then((value) => {\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n })\n .catch((err) => {\n console.error(err);\n });\n } else {\n //@ts-ignore\n data = null;\n }\n }\n if (!data) {\n // console.log(\"miss cache\", key)\n const value = await fn();\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n return value;\n }\n return data.value;\n }\n}\n\nexport const cache = new DexieCache();\n"]}
|
|
1
|
+
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberInputState.ts","../store/standard/StorageState.ts","../module/AppProvider.tsx","../lib/dexie.ts"],"names":["makeAutoObservable","rootStore"],"mappings":"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","sourcesContent":["\n\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T, loading: boolean }\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(cls: ContractClass<T>): (args: { args: Partial<T>; id?: string, select?: { [key in keyof Partial<T>]: boolean }, unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false\n if (select && !select[i[0]]) return false\n if (unselect && unselect[i[0]]) return false\n return true\n }).map(i => {\n const hook = instance[i[0]]\n return hook\n })\n\n await Promise.all(hooks.map((i) => i.call()));\n }\n if (id) {\n //@ts-ignore\n this.entities[id] = instance\n }\n } else {\n instance = this.entities[id!]\n }\n\n\n await instance.refresh()\n return instance;\n };\n } catch (e) {\n throw e\n }\n }\n\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\"\n }\n\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue }: { func: T; defaultValue?: Awaited<U>; }): PromiseHookData<T, U> {\n let context;\n const call = () => {\n context.loading = true;\n if (!context._call) {\n context._call = func()\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null\n return i\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue\n context._call = null\n context.loading = false;\n throw i;\n });\n }\n\n\n return context._call\n };\n const get = async () => {\n if (!context.value) {\n\n return call();\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: 'promiseHook',\n _value: defaultValue,\n get value() {\n return context['_value'];\n },\n set value(val) {\n context['_value'] = val;\n },\n get,\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value\n },\n toString() {\n return context.value\n },\n });\n }\n\n return context;\n }\n\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n // this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n // this.format = helper.number.toPrecisionFloor(this.format);\n // this.format = helper.number.warpBigNumber(this.value.toFixed(), this.decimals, { format: '0.000', fallback: '' }).format;\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import { makeAutoObservable } from 'mobx';\n\nexport class StorageState<T> {\n key: string;\n value: T | any = null;\n default: T | any = null;\n constructor(args: Partial<StorageState<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n this.load();\n }\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n load() {\n const value = global?.localStorage?.getItem(this.key);\n this.value = StorageState.safeParse(value);\n if (this.value == null) {\n this.value = this.default;\n }\n return this.value;\n }\n\n save(value?: T) {\n if (value !== null || value !== undefined) {\n this.value = value;\n }\n global?.localStorage.setItem(this.key, JSON.stringify(value));\n }\n\n setValue(value?: T) {\n this.save(value);\n }\n\n clear() {\n localStorage.removeItem(this.key);\n }\n}\n","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})","import DataLoader from \"dataloader\";\nimport { Dexie, type Table } from \"dexie\";\n\nexport class DexieStorage extends Dexie {\n kv: Table<{ key: string; value: { value: any; expiration: number } }>;\n\n constructor() {\n super(\"cache\");\n this.version(1).stores({\n kv: \"key, value\",\n });\n }\n}\nexport const dexie = new DexieStorage();\n\nexport class DexieCache {\n kv = dexie.kv;\n kv_get = new DataLoader(\n async (ids: string[]) => {\n const res = await this.kv.bulkGet(ids);\n return res.map((i) => i?.value);\n },\n { cache: false },\n );\n kv_set = new DataLoader(\n async (ids: { key: string; value: any; ttl: number }[]) => {\n const now = new Date();\n await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));\n return ids;\n },\n { cache: false },\n );\n options = {\n ttl: 60 * 1000,\n prefix: \"\",\n };\n\n async get(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data?.value;\n }\n\n async getRaw(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data;\n }\n\n async set(_key, value, options?: { ttl?: number }) {\n const key = this.options.prefix + _key;\n this.kv_set.load({ key, value, ttl: options?.ttl || this.options.ttl });\n\n return this;\n }\n\n async delete(key) {\n // return this.dataloader.load(['del', key]);\n return;\n }\n\n async clear() {}\n\n async wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key, fn: T, args?: { ttl?: number; alowStale?: boolean }): Promise<Awaited<U>> {\n let data = await this.kv_get.load(key);\n if (data?.expiration && new Date(data.expiration) <= new Date()) {\n // console.log(\"cache expired\", key)\n\n if (args?.alowStale) {\n fn()\n .then((value) => {\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n })\n .catch((err) => {\n console.error(err);\n });\n } else {\n //@ts-ignore\n data = null;\n }\n }\n if (!data) {\n // console.log(\"miss cache\", key)\n const value = await fn();\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n return value;\n }\n return data.value;\n }\n}\n\nexport const cache = new DexieCache();\n"]}
|
package/dist/jsontable.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { JSONTable, TableHeaderOfLoading, TableHeaderOfNoData } from './chunk-
|
|
1
|
+
export { JSONTable, TableHeaderOfLoading, TableHeaderOfNoData } from './chunk-RH5VZB32.mjs';
|
|
2
2
|
import './chunk-ONVPCAMQ.mjs';
|
|
3
3
|
import './chunk-OZ3JSH5J.mjs';
|
|
4
4
|
import './chunk-DZMNL4BZ.mjs';
|
package/dist/metrics.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dappworks/kit",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.74",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.mjs",
|
|
6
6
|
"types": "./dist/index.d.mts",
|
|
@@ -127,4 +127,4 @@
|
|
|
127
127
|
"access": "public",
|
|
128
128
|
"registry": "https://registry.npmjs.org/"
|
|
129
129
|
}
|
|
130
|
-
}
|
|
130
|
+
}
|