@dappworks/kit 0.4.57 → 0.4.59
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-URBJCMAK.mjs → chunk-AJ6UVJXP.mjs} +3 -2
- package/dist/chunk-AJ6UVJXP.mjs.map +1 -0
- package/dist/form.d.mts +6 -2
- package/dist/form.mjs +30 -23
- package/dist/form.mjs.map +1 -1
- package/dist/jsontable.mjs +1 -1
- package/dist/metrics.mjs +1 -1
- package/package.json +1 -1
- package/dist/chunk-URBJCMAK.mjs.map +0 -1
|
@@ -429,7 +429,8 @@ function CollapseBody({ item, columns, extendedTables }) {
|
|
|
429
429
|
})))));
|
|
430
430
|
}))));
|
|
431
431
|
}
|
|
432
|
-
function scrollIntoTop(tableBoxElementId) {
|
|
432
|
+
async function scrollIntoTop(tableBoxElementId) {
|
|
433
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
433
434
|
if (tableBoxElementId) {
|
|
434
435
|
const el = document.getElementById(tableBoxElementId);
|
|
435
436
|
if (el) {
|
|
@@ -495,4 +496,4 @@ export {
|
|
|
495
496
|
JSONTable,
|
|
496
497
|
JSONTable_default
|
|
497
498
|
};
|
|
498
|
-
//# sourceMappingURL=chunk-
|
|
499
|
+
//# sourceMappingURL=chunk-AJ6UVJXP.mjs.map
|
|
@@ -0,0 +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"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../ui/table\";\nimport JSONHighlight from \"../Common/JSONHighlight\";\nimport { Button, ButtonProps, Card, Divider, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger, Pagination as NextuiPagination } from '@nextui-org/react';\nimport { ChevronDown, ChevronRight, ChevronUp, ChevronsUpDown } from \"lucide-react\";\nimport { _ } from \"../../lib/lodash\";\nimport { DialogStore } from \"../../module/Dialog\";\nimport { cn } from \"../../lib/utils\";\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 ColumnOptions<T = { [x: 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 = { [x: 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\nexport interface JSONTableProps<T = { [x: string]: any }> {\n className?: string;\n dataSource: T[];\n columnOptions?: ColumnOptions<T>;\n headerKeys?: string[];\n isServerPaging?: boolean;\n extendedTableOptions?: {\n key: string;\n columnOptions?: ColumnOptions<any>;\n // actions?: (item: any) => ActionButtonType[];\n }[];\n rowKey?: string;\n pagination?: PaginationState;\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}\n\nconst JSONTable = observer(<T extends {},>(props: JSONTableProps<T>) => {\n const {\n dataSource,\n columnOptions,\n headerKeys,\n isServerPaging,\n pagination = new PaginationState({\n page: 1,\n limit: 8,\n }),\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 } = 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 useEffect(() => {\n const _keys = dataSource.length > 0 ? Object.keys(dataSource[0]) : [];\n const keys = headerKeys ? headerKeys : columnOptions ? _keys.filter((key) => !columnOptions[key]?.hidden) : _keys;\n const sortableColumns: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n const columns: Column<T>[] = keys\n .map((key) => {\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 className: columnOptions?.[key]?.className,\n };\n })\n .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 store.setData({\n sortableColumns,\n columns,\n sortedData: dataSource,\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 } = store;\n const needExtendedTable = !!extendedTables.length;\n const data = isServerPaging ? store.sortedData : store.sortedData.slice(pagination.offset, pagination.offset + pagination.limit);\n\n const tableBoxElementId = useMemo(() => {\n return autoScrollToTop ? `table-card-${uuid().slice(0, 8)}` : undefined;\n }, []);\n\n if (asCard) {\n return (\n <CardOnMobile\n className={props.className}\n data={data}\n columns={columns}\n columnOptions={columnOptions}\n actions={actions}\n actionsOptions={actionsOptions}\n cardOptions={cardOptions}\n pagination={pagination}\n onRowClick={onRowClick}\n tableBoxElementId={tableBoxElementId}\n />\n );\n }\n\n return (\n <>\n <div className={cn('relative w-full overflow-auto h-[400px]', props.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-[0.8125rem] text-[#64748B] dark:text-gray-300\">{actionsHeadLabel}</TableHead>}\n {columns.map((item, index) => (\n <TableHead className={cn('font-meidum text-[0.8125rem] 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-[0.8125rem] 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} />\n ) : (\n <Body\n key={item[rowKey] || index}\n item={item}\n columns={columns}\n onRowClick={onRowClick}\n rowCss={rowCss}\n actions={actions}\n actionsPlacement={actionsPlacement}\n columnOptions={columnOptions}\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 total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n initialPage={1}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n scrollIntoTop(tableBoxElementId);\n }}\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-[0.8125rem] 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, columns, extendedTables }: { item: T; columns: Column<T>[]; extendedTables: ExtendedTable<any>[] }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <TableRow\n className=\"text-[13px] cursor-pointer\"\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={30} /> : <ChevronRight size={30} />}</TableCell>\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 </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=\"font-bold text-sm 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-sm\" 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(exItem)\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\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 default JSONTable;\nexport { JSONTable }\n\nfunction CardOnMobile<T>({\n className,\n data,\n columns,\n columnOptions,\n rowKey,\n actions,\n actionsOptions,\n cardOptions,\n pagination,\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 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-[0.8125rem] text-[#64748B] dark:text-gray-300', option?.labelClassName)}>{column.label}</div>\n <div className={cn('text-[0.8125rem]', 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 total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n initialPage={1}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n scrollIntoTop(tableBoxElementId);\n }}\n />\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;"],"mappings":"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","names":["React","data","columns","React","_a","React"]}
|
package/dist/form.d.mts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React, { LegacyRef, Ref, Dispatch, SetStateAction } from 'react';
|
|
2
|
-
import { ButtonProps, TabsProps, SlotsToClasses, ModalSlots } from '@nextui-org/react';
|
|
2
|
+
import { ButtonProps, CardProps, TabsProps, SlotsToClasses, ModalSlots } from '@nextui-org/react';
|
|
3
3
|
import { UiSchema, RJSFSchema, WidgetProps } from '@rjsf/utils';
|
|
4
4
|
import * as _rjsf_validator_ajv8_lib_validator from '@rjsf/validator-ajv8/lib/validator';
|
|
5
5
|
import Form, { IChangeEvent } from '@rjsf/core';
|
|
6
|
+
import { EditorProps } from '@monaco-editor/react';
|
|
6
7
|
import { S as Store, R as RootStore } from './root-766ae985.js';
|
|
7
8
|
import EventEmitter from 'events';
|
|
8
9
|
export { P as PaginationState } from './PaginationState-c19e621a.js';
|
|
@@ -68,6 +69,7 @@ type FormLayoutType<T, L> = L extends 'TabLayout' | 'ListLayout' | 'SimpleLayout
|
|
|
68
69
|
titleBoxCss?: string;
|
|
69
70
|
fieldLayout?: FieldLayoutType<T, F>;
|
|
70
71
|
colSpan?: number;
|
|
72
|
+
cardProps?: CardProps;
|
|
71
73
|
submitButtonProps?: ButtonProps & {
|
|
72
74
|
onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void;
|
|
73
75
|
};
|
|
@@ -132,7 +134,8 @@ declare const JSONEditor: ({ className, height, initialJson, onChange, onSubmit
|
|
|
132
134
|
|
|
133
135
|
type Options$5 = {
|
|
134
136
|
className?: string;
|
|
135
|
-
size:
|
|
137
|
+
size: 'sm' | 'md' | 'lg';
|
|
138
|
+
color: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
|
|
136
139
|
};
|
|
137
140
|
interface CheckboxWidgetProps extends WidgetProps {
|
|
138
141
|
options: Options$5;
|
|
@@ -152,6 +155,7 @@ type Options$4 = {
|
|
|
152
155
|
}[];
|
|
153
156
|
onChangeLanguage?: (v: string) => void;
|
|
154
157
|
onRun?: (v: string) => void;
|
|
158
|
+
onMount?: EditorProps['onMount'];
|
|
155
159
|
};
|
|
156
160
|
interface EditorWidgetProps extends WidgetProps {
|
|
157
161
|
options: Options$4;
|
package/dist/form.mjs
CHANGED
|
@@ -39,27 +39,33 @@ import { Button as Button2 } from "@nextui-org/react";
|
|
|
39
39
|
// components/JSONFormWidgets/CheckboxWidget/index.tsx
|
|
40
40
|
import React2 from "react";
|
|
41
41
|
import { Checkbox } from "@nextui-org/react";
|
|
42
|
-
import {
|
|
42
|
+
import { Check } from "lucide-react";
|
|
43
43
|
function CheckboxWidget({
|
|
44
44
|
onChange,
|
|
45
45
|
options,
|
|
46
46
|
id,
|
|
47
47
|
label,
|
|
48
48
|
value,
|
|
49
|
-
required,
|
|
50
49
|
disabled,
|
|
51
50
|
schema
|
|
52
51
|
}) {
|
|
53
|
-
const {
|
|
54
|
-
|
|
52
|
+
const { size = "sm", color = "primary" } = options;
|
|
53
|
+
const { description } = schema;
|
|
54
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(
|
|
55
55
|
Checkbox,
|
|
56
56
|
{
|
|
57
57
|
id,
|
|
58
|
+
classNames: {
|
|
59
|
+
base: cn(
|
|
60
|
+
"m-0 flex items-center justify-start w-full",
|
|
61
|
+
"cursor-pointer rounded-lg gap-2 p-2.5 bg-content2 border-1 border-transparent",
|
|
62
|
+
`data-[selected=true]:border-${color}`
|
|
63
|
+
)
|
|
64
|
+
},
|
|
58
65
|
defaultSelected: value,
|
|
59
|
-
isRequired: required,
|
|
60
66
|
isDisabled: disabled,
|
|
61
|
-
icon: /* @__PURE__ */ React2.createElement(
|
|
62
|
-
color
|
|
67
|
+
icon: /* @__PURE__ */ React2.createElement(Check, { color: "white" }),
|
|
68
|
+
color,
|
|
63
69
|
size,
|
|
64
70
|
onChange: (e) => {
|
|
65
71
|
const checked = e.target.checked;
|
|
@@ -67,7 +73,7 @@ function CheckboxWidget({
|
|
|
67
73
|
}
|
|
68
74
|
},
|
|
69
75
|
label
|
|
70
|
-
);
|
|
76
|
+
), description && /* @__PURE__ */ React2.createElement("div", { className: "mt-1 text-xs text-[#A1A1A9] dark:text-[#717179]" }, description));
|
|
71
77
|
}
|
|
72
78
|
var CheckboxWidget_default = CheckboxWidget;
|
|
73
79
|
|
|
@@ -85,7 +91,7 @@ function InputWidget(props) {
|
|
|
85
91
|
disabled,
|
|
86
92
|
schema
|
|
87
93
|
} = props;
|
|
88
|
-
const { className, labelPlacement = "inside", size = "
|
|
94
|
+
const { className, labelPlacement = "inside", size = "sm" } = options;
|
|
89
95
|
const placeholder = props.placeholder || options.placeholder;
|
|
90
96
|
return /* @__PURE__ */ React3.createElement(
|
|
91
97
|
Input,
|
|
@@ -146,8 +152,8 @@ var SelectWidget_default = SelectWidget;
|
|
|
146
152
|
import React5, { useState } from "react";
|
|
147
153
|
import { Button } from "@nextui-org/react";
|
|
148
154
|
import MonacoEditor from "@monaco-editor/react";
|
|
149
|
-
var EditorWidget = ({ id, label, options = {}, value, required, schema, onChange }) => {
|
|
150
|
-
const { editorHeight = "200px", readOnly = false, language = "json", languageSelectorOptions = [], onChangeLanguage, onRun } = options;
|
|
155
|
+
var EditorWidget = ({ id, label, options = {}, value, required, schema, disabled, onChange }) => {
|
|
156
|
+
const { editorHeight = "200px", readOnly = false, language = "json", languageSelectorOptions = [], onChangeLanguage, onRun, onMount } = options;
|
|
151
157
|
const [selectedLanguage, setSelectedLanguage] = useState("");
|
|
152
158
|
const [runLoading, setRunLoading] = useState(false);
|
|
153
159
|
const showLanguageSelector = languageSelectorOptions.length > 0;
|
|
@@ -175,12 +181,13 @@ var EditorWidget = ({ id, label, options = {}, value, required, schema, onChange
|
|
|
175
181
|
)), schema.description && /* @__PURE__ */ React5.createElement("div", { className: "mb-2 text-xs text-[#A1A1A9]" }, schema.description), /* @__PURE__ */ React5.createElement("div", { className: "rounded-lg overflow-hidden" }, /* @__PURE__ */ React5.createElement(
|
|
176
182
|
MonacoEditor,
|
|
177
183
|
{
|
|
178
|
-
options: { readOnly, minimap: { enabled: false } },
|
|
184
|
+
options: { readOnly: readOnly || disabled, minimap: { enabled: false } },
|
|
179
185
|
height: editorHeight,
|
|
180
186
|
theme: "vs-dark",
|
|
181
187
|
language: selectedLanguage ? selectedLanguage : language,
|
|
182
188
|
value,
|
|
183
|
-
onChange: (v) => onChange(v)
|
|
189
|
+
onChange: (v) => onChange(v),
|
|
190
|
+
onMount
|
|
184
191
|
}
|
|
185
192
|
)), onRun && /* @__PURE__ */ React5.createElement(
|
|
186
193
|
Button,
|
|
@@ -499,17 +506,17 @@ var renderLayout = (layout, fields, n = 1) => {
|
|
|
499
506
|
return layout.map((item, index) => {
|
|
500
507
|
if (Array.isArray(item)) {
|
|
501
508
|
const even = (n & 1) === 0;
|
|
502
|
-
return /* @__PURE__ */ React7.createElement("div", { key: index, className: cn("w-full flex justify-between items-center space-x-2", even ? "flex-row" : "flex-col") }, renderLayout(item, fields, n));
|
|
509
|
+
return /* @__PURE__ */ React7.createElement("div", { key: index, className: cn("w-full flex justify-between items-center space-x-2", even ? "flex-row items-end" : "flex-col") }, renderLayout(item, fields, n));
|
|
503
510
|
} else {
|
|
504
|
-
return /* @__PURE__ */ React7.createElement("div", { className: "w-full
|
|
511
|
+
return /* @__PURE__ */ React7.createElement("div", { className: "w-full", key: index }, fields[item]);
|
|
505
512
|
}
|
|
506
513
|
});
|
|
507
514
|
};
|
|
508
515
|
var ObjectFieldTemplate = ({ title, idSchema: { $id }, properties, uiSchema: { layout } }) => {
|
|
509
516
|
const [opened, setOpened] = useState3(false);
|
|
510
517
|
const fields = Object.fromEntries(properties.map((item) => [item.name, item.content]));
|
|
511
|
-
return /* @__PURE__ */ React7.createElement("div", { className: "w-full" }, $id === "root" ? layout ? renderLayout(layout, fields) : properties.map((element) => {
|
|
512
|
-
return /* @__PURE__ */ React7.createElement("div", { key: element.content.key
|
|
518
|
+
return /* @__PURE__ */ React7.createElement("div", { className: "w-full space-y-2.5" }, $id === "root" ? layout ? renderLayout(layout, fields) : properties.map((element) => {
|
|
519
|
+
return /* @__PURE__ */ React7.createElement("div", { key: element.content.key }, element.content);
|
|
513
520
|
}) : /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement(
|
|
514
521
|
"div",
|
|
515
522
|
{
|
|
@@ -518,8 +525,8 @@ var ObjectFieldTemplate = ({ title, idSchema: { $id }, properties, uiSchema: { l
|
|
|
518
525
|
},
|
|
519
526
|
/* @__PURE__ */ React7.createElement("div", { className: "text-gray-900 dark:text-gray-100 font-bold text-base" }, title),
|
|
520
527
|
opened ? /* @__PURE__ */ React7.createElement(ChevronUp, null) : /* @__PURE__ */ React7.createElement(ChevronDown, null)
|
|
521
|
-
), /* @__PURE__ */ React7.createElement("div", { className: cn("mt-2", opened ? "block" : "hidden") }, layout ? renderLayout(layout, fields) : properties.map((element) => {
|
|
522
|
-
return /* @__PURE__ */ React7.createElement("div", { key: element.content.key
|
|
528
|
+
), /* @__PURE__ */ React7.createElement("div", { className: cn("mt-2 space-y-2.5", opened ? "block" : "hidden") }, layout ? renderLayout(layout, fields) : properties.map((element) => {
|
|
529
|
+
return /* @__PURE__ */ React7.createElement("div", { key: element.content.key }, element.content);
|
|
523
530
|
}))));
|
|
524
531
|
};
|
|
525
532
|
var ErrorListTemplate = ({ errors }) => {
|
|
@@ -741,7 +748,7 @@ var GridLayout = (props) => {
|
|
|
741
748
|
return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(grid_default, { numItems: $gridColumn != null ? $gridColumn : 1, className: "gap-2" }, Object.keys(formStates).map((key) => {
|
|
742
749
|
var _a2;
|
|
743
750
|
const layout = formLayout[key];
|
|
744
|
-
return /* @__PURE__ */ React10.createElement(col_default, { numColSpan: (_a2 = layout == null ? void 0 : layout.colSpan) != null ? _a2 : 1, key, id: `form-${key}` }, /* @__PURE__ */ React10.createElement(Card, { className: "h-full m-0 p-4",
|
|
751
|
+
return /* @__PURE__ */ React10.createElement(col_default, { numColSpan: (_a2 = layout == null ? void 0 : layout.colSpan) != null ? _a2 : 1, key, id: `form-${key}` }, /* @__PURE__ */ React10.createElement(Card, { className: cn("h-full m-0 p-4 shadow-sm border-1", layout == null ? void 0 : layout.cardProps) }, /* @__PURE__ */ React10.createElement("div", { className: cn("mb-2 font-bold text-center", layout == null ? void 0 : layout.titleBoxCss) }, (layout == null ? void 0 : layout.title) || key), /* @__PURE__ */ React10.createElement(JSONSchemaForm, { formState: formStates[key] }, (layout == null ? void 0 : layout.submitButtonProps) && /* @__PURE__ */ React10.createElement(SubmitButton, { formKey: key, formState: formStates[key], buttonProps: layout.submitButtonProps }))));
|
|
745
752
|
})), (onBatchSubmit || (batchSubmitButtonProps == null ? void 0 : batchSubmitButtonProps.onBatchSubmit)) && /* @__PURE__ */ React10.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ React10.createElement(BatchSubmitButton, { formStates, onSubmit: onBatchSubmit, buttonProps: batchSubmitButtonProps })));
|
|
746
753
|
};
|
|
747
754
|
|
|
@@ -787,10 +794,10 @@ var SimpleLayout = (props) => {
|
|
|
787
794
|
onReady(formStates);
|
|
788
795
|
}
|
|
789
796
|
}, [formStates]);
|
|
790
|
-
return /* @__PURE__ */ React12.createElement(React12.Fragment, null, Object.keys(formStates).map((key) => {
|
|
797
|
+
return /* @__PURE__ */ React12.createElement(React12.Fragment, null, /* @__PURE__ */ React12.createElement("div", { className: "space-y-2" }, Object.keys(formStates).map((key) => {
|
|
791
798
|
const layout = formLayout[key];
|
|
792
|
-
return /* @__PURE__ */ React12.createElement("div", { key,
|
|
793
|
-
}), (onBatchSubmit || (batchSubmitButtonProps == null ? void 0 : batchSubmitButtonProps.onBatchSubmit)) && /* @__PURE__ */ React12.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ React12.createElement(BatchSubmitButton, { formStates, onSubmit: onBatchSubmit, buttonProps: batchSubmitButtonProps })));
|
|
799
|
+
return /* @__PURE__ */ React12.createElement("div", { key, id: `form-${key}` }, /* @__PURE__ */ React12.createElement(JSONSchemaForm, { formState: formStates[key] }, (layout == null ? void 0 : layout.submitButtonProps) && /* @__PURE__ */ React12.createElement(SubmitButton, { formKey: key, formState: formStates[key], buttonProps: layout.submitButtonProps })));
|
|
800
|
+
})), (onBatchSubmit || (batchSubmitButtonProps == null ? void 0 : batchSubmitButtonProps.onBatchSubmit)) && /* @__PURE__ */ React12.createElement("div", { className: "w-full flex" }, /* @__PURE__ */ React12.createElement(BatchSubmitButton, { formStates, onSubmit: onBatchSubmit, buttonProps: batchSubmitButtonProps })));
|
|
794
801
|
};
|
|
795
802
|
|
|
796
803
|
// components/JSONForm/Layouts/tabLayout.tsx
|
package/dist/form.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/JSONForm/index.tsx","../components/JSONForm/Layouts/gridLayout.tsx","../components/JSONForm/Layouts/format.tsx","../components/JSONFormWidgets/CheckboxWidget/index.tsx","../components/JSONFormWidgets/InputWidget/index.tsx","../components/JSONFormWidgets/SelectWidget/index.tsx","../components/JSONFormWidgets/EditorWidget/index.tsx","../store/standard/JSONSchemaState.ts","../components/JSONSchemaForm/index.tsx","../components/ui/grid/col.tsx","../components/ui/grid/styles.tsx","../components/ui/grid/grid.tsx","../components/JSONForm/Layouts/listLayout.tsx","../components/JSONForm/Layouts/simpleLayout.tsx","../components/JSONForm/Layouts/tabLayout.tsx","../components/JSONFormWidgets/TextareaWidget/index.tsx","../module/ComplexFormModal/Provider.tsx","../module/ComplexFormModal/index.tsx","../module/FormModal/index.tsx","../module/FormModal/Provider.tsx","../module/JSONView/index.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, TabsProps } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { GridLayout } from \"./Layouts/gridLayout\";\nimport { ListLayout } from \"./Layouts/listLayout\";\nimport { SimpleLayout } from \"./Layouts/simpleLayout\";\nimport { TabLayout } from \"./Layouts/tabLayout\";\n\nexport type LayoutType = 'TabLayout' | 'GridLayout' | 'ListLayout' | 'SimpleLayout';\n\nexport type FieldLayoutType<T, F extends keyof T> = Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;\n\nexport type FormLayoutType<T, L> = L extends 'TabLayout' | 'ListLayout' | 'SimpleLayout'\n ? {\n [F in keyof T]?: {\n title?: string;\n titleBoxCss?: string;\n fieldLayout?: FieldLayoutType<T, F>;\n submitButtonProps?: ButtonProps & { onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n };\n }\n : L extends 'GridLayout'\n ? {\n [F in keyof T]?: {\n title?: string;\n titleBoxCss?: string;\n fieldLayout?: FieldLayoutType<T, F>;\n colSpan?: number;\n submitButtonProps?: ButtonProps & { onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n };\n }\n : never;\n\nexport type LayoutConfigType<T, L> = L extends 'TabLayout'\n ? { $type: 'TabLayout'; $tabsProps?: TabsProps } & FormLayoutType<T, L>\n : L extends 'GridLayout'\n ? { $type: 'GridLayout'; $gridColumn?: number } & FormLayoutType<T, L>\n : L extends 'ListLayout'\n ? { $type: 'ListLayout' } & FormLayoutType<T, L>\n : L extends 'SimpleLayout'\n ? { $type: 'SimpleLayout' } & FormLayoutType<T, L>\n : never;\n\nexport type FormDataType = {\n [key: string]: {\n [key: string]: string | number | boolean;\n };\n};\n\nexport type FormConfigType<T> = {\n [F in keyof T]?: {\n [X in keyof T[F]]?: {\n title?: string;\n description?: string;\n required?: boolean;\n selectOptions?: { label: string; value: string }[];\n } & UiSchema;\n };\n};\n\nexport type FormKey<T = FormDataType> = keyof T;\n\nexport type FormDataOfKey<T = FormDataType> = T[FormKey<T>];\n\nexport type JSONFormProps<T = FormDataType> = {\n className?: string;\n formData: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n children?: any;\n onBatchSubmit?: (data: T, setLoading: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n};\n\nconst components = {\n GridLayout,\n TabLayout,\n ListLayout,\n SimpleLayout,\n};\n\nexport const JSONForm = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const type = props.layoutConfig?.$type || 'SimpleLayout';\n const Component = components[type];\n return (\n <div className={props.className}>\n {\n // @ts-ignore\n <Component {...props} />\n }\n </div>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { Card } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { Grid, Col } from '../../../components/ui/grid';\nimport { cn } from '../../../lib/utils';\n\nexport const GridLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const { $type, $gridColumn, ...formLayout } = layoutConfig as LayoutConfigType<T, 'GridLayout'>;\n const formStates = getFormState(props, formLayout);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n <Grid numItems={$gridColumn ?? 1} className=\"gap-2\">\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <Col numColSpan={layout?.colSpan ?? 1} key={key} id={`form-${key}`}>\n <Card className=\"h-full m-0 p-4\" shadow=\"sm\">\n <div className={cn('mb-2 font-bold text-center', layout?.titleBoxCss)}>{layout?.title || key}</div>\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n </JSONSchemaForm>\n </Card>\n </Col>\n );\n })}\n </Grid>\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};","import React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { FormDataOfKey, JSONFormProps } from \"..\";\nimport CheckboxWidget from \"../../../components/JSONFormWidgets/CheckboxWidget\";\nimport InputWidget from \"../../../components/JSONFormWidgets/InputWidget\";\nimport SelectWidget from \"../../../components/JSONFormWidgets/SelectWidget\";\nimport EditorWidget from '../../../components/JSONFormWidgets/EditorWidget';\nimport {\n JSONSchemaFormState,\n JSONValue,\n} from \"../../../store/standard/JSONSchemaState\";\nimport { helper } from \"../../../lib/helper\";\nimport { cn } from \"../../../lib/utils\";\n\nexport const getFormState = <T,>(\n props: JSONFormProps<T>,\n formLayout: { [x: string]: { fieldLayout?: any[] } } = {},\n) => {\n const { formData, formConfig, onSet, onChange } = props;\n\n const formStates: {\n [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;\n } = {};\n\n Object.keys(formData).forEach((key) => {\n const metadata = formData[key];\n const formConfigData = formConfig?.[key] || {};\n const value = {};\n const required = [];\n const properties = Object.entries(metadata).reduce((p, c: any) => {\n const [k, v] = c;\n const type = typeof v;\n p[k] = {\n type,\n };\n if (!formConfigData[k]) {\n formConfigData[k] = {};\n }\n const uiOptions = formConfigData[k]['ui:options'] || {};\n if (type === \"string\" || type === \"number\") {\n if (formConfigData[k]?.selectOptions) {\n formConfigData[k][\"ui:widget\"] = SelectWidget;\n p[k].selectOptions = formConfigData[k].selectOptions;\n formConfigData[k]['ui:options'] = {\n size: 'sm',\n ...uiOptions,\n };\n } else {\n if (!formConfigData[k][\"ui:widget\"]) {\n formConfigData[k][\"ui:widget\"] = InputWidget;\n formConfigData[k][\"ui:options\"] = {\n labelPlacement: \"inside\",\n size: \"sm\",\n ...uiOptions,\n };\n if (type === \"number\") {\n p[k].inputType = \"number\";\n }\n if (helper.json.isJsonString(v)) {\n formConfigData[k]['ui:widget'] = EditorWidget;\n }\n }\n }\n }\n if (type === \"boolean\") {\n formConfigData[k][\"ui:widget\"] = CheckboxWidget;\n formConfigData[k][\"ui:options\"] = {\n size: \"sm\",\n ...uiOptions,\n };\n }\n if (formConfigData[k]?.inputType) {\n p[k].inputType = formConfigData[k].inputType;\n }\n if (formConfigData[k]?.title) {\n p[k].title = formConfigData[k].title || k;\n }\n if (formConfigData[k]?.description) {\n p[k].description = formConfigData[k].description;\n }\n // if (formConfigData[k]?.selectOptions) {\n // p[k].enum = formConfigData[k].selectOptions.map((i) => i.value);\n // p[k].enumNames = formConfigData[k].selectOptions.map((i) => i.label);\n // }\n if (formConfigData[k]?.required) {\n //@ts-ignore\n required.push(k);\n }\n value[k] = v;\n return p;\n }, {});\n const schema = {\n type: \"object\",\n properties,\n required,\n };\n const form = new JSONSchemaFormState({\n //@ts-ignore\n schema,\n uiSchema: {\n \"ui:submitButtonOptions\": {\n norender: true,\n },\n ...formConfigData,\n layout: formLayout[key]?.fieldLayout,\n },\n // afterSubmit: async (e) => {\n // onSubmit?.(key as FormKey<T>, e.formData as FormDataOfKey<T>);\n // },\n afterChange: (e, id) => {\n const { formData } = e;\n if (formData) {\n const field = id.replace('root_', '');\n const data = {\n [key]: {\n [field]: formData[field],\n }\n };\n //@ts-ignore\n onChange?.(data);\n }\n },\n value: new JSONValue({\n default: value,\n //@ts-ignore\n onSet: (v) => {\n if (onSet) {\n return onSet(v as FormDataOfKey<T>, form);\n }\n return v;\n },\n }),\n });\n\n formStates[key] = form;\n });\n\n return formStates;\n};\n\nexport const BatchSubmitButton = ({ formStates, onSubmit, buttonProps }) => {\n const { className, onClick, children, isLoading, onBatchSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <Button\n className={cn('mt-4 ml-auto', className)}\n size=\"sm\"\n color=\"primary\"\n isLoading={loading}\n onClick={(e) => {\n const formData = {};\n const formKeys = Object.keys(formStates);\n for (const key of formKeys) {\n const form = formStates[key];\n const current = form.formRef.current;\n if (current) {\n current.submit();\n const data = current.state.formData;\n const required = current.state.schema.required;\n for (const i of required) {\n if (!data[i]) {\n return;\n }\n }\n const errors = current.state.errors;\n if (errors.length > 0) {\n return;\n }\n formData[key] = data;\n } else {\n console.error('formRef.current is null');\n return;\n }\n }\n onSubmit?.(formData, setLoading);\n onBatchSubmit?.(formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n );\n};\n\nexport const SubmitButton = ({ formKey, formState, buttonProps }) => {\n const { className, onClick, children, isLoading, onAfterSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <div className=\"w-full flex\">\n <Button\n className={cn('mt-4 ml-auto', className)}\n type=\"submit\"\n color=\"primary\"\n size=\"sm\"\n isLoading={loading}\n onClick={(e) => {\n let formData = {};\n const current = formState.formRef.current;\n if (current) {\n current.submit();\n formData = current.state.formData;\n const required = current.state.schema.required;\n for (const i of required) {\n if (!formData[i]) {\n return;\n }\n }\n const errors = current.state.errors;\n if (errors.length > 0) {\n return;\n }\n }\n onAfterSubmit?.(formKey, formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n </div>\n );\n};\n","import React from \"react\";\nimport { Checkbox } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { PlusIcon } from \"lucide-react\";\n\ntype Options = {\n className?: string;\n size: \"sm\" | \"md\" | \"lg\";\n};\n\nexport interface CheckboxWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface CheckboxWidgetUIOptions {\n \"ui:widget\": (props: CheckboxWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nfunction CheckboxWidget({\n onChange,\n options,\n id,\n label,\n value,\n required,\n disabled,\n schema,\n}: CheckboxWidgetProps) {\n const { className, size = \"sm\" } = options;\n\n return (\n <Checkbox\n id={id}\n defaultSelected={value}\n isRequired={required}\n isDisabled={disabled}\n icon={<PlusIcon color=\"white\" />}\n color=\"success\"\n size={size}\n onChange={(e: any) => {\n const checked = e.target.checked;\n onChange(checked);\n }}\n >\n {label}\n </Checkbox>\n );\n}\n\nexport default CheckboxWidget;\n","import React from \"react\";\nimport { Input } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\n\nimport { cn } from \"../../../lib/utils\";\n\ntype Options = {\n className?: string;\n labelPlacement?: \"inside\" | \"outside\" | \"outside-left\";\n size: \"sm\" | \"md\" | \"lg\";\n placeholder?: string;\n};\n\nexport interface InputWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface InputWidgetUIOptions {\n \"ui:widget\": (props: InputWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nfunction InputWidget(props: InputWidgetProps) {\n const {\n onChange,\n options,\n id,\n label,\n value,\n required,\n disabled,\n schema,\n } = props;\n const { className, labelPlacement = \"inside\", size = \"md\" } = options;\n const placeholder = props.placeholder || options.placeholder;\n return (\n <Input\n id={id}\n className={cn(\"w-full\", className)}\n label={label}\n placeholder={placeholder}\n value={value}\n defaultValue=\"\"\n isRequired={required}\n isDisabled={disabled}\n size={size}\n labelPlacement={labelPlacement}\n description={schema.description || \"\"}\n type={schema.inputType || \"text\"}\n onChange={(e) => onChange(e.target.value)}\n />\n );\n}\n\nexport default InputWidget;\n","import React from \"react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { cn } from \"../../../lib/utils\";\n\ntype Options = {\n className?: string;\n labelPlacement?: \"top\" | \"left\";\n size: \"sm\" | \"md\" | \"lg\";\n placeholder?: string;\n};\n\nexport interface SelectWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface SelectWidgetUIOptions {\n \"ui:widget\": (props: SelectWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nfunction SelectWidget(props: SelectWidgetProps) {\n const { onChange, options, id, label, value, required, disabled, schema } = props;\n const { className, labelPlacement = 'top', placeholder = 'Select an option' } = options;\n const { selectOptions = [], description } = schema;\n const labelText = label?.trim();\n const placeholderText = props.placeholder || placeholder;\n\n return (\n <div className={cn(\"\", className)}>\n <div\n className={cn(\"flex flex-col\", {\n \"flex-row items-center\": labelPlacement === \"left\",\n })}\n id={id}\n >\n {labelText && (\n <label\n className={cn(\"flex items-center text-sm whitespace-nowrap\", {\n \"mb-2\": labelPlacement === \"top\",\n \"mr-2\": labelPlacement === \"left\",\n })}\n >\n {labelText}\n {required && <span className=\"ml-[2px] font-bold text-red-600\">*</span>}\n </label>\n )}\n <select className=\"w-full p-3 text-sm rounded-md bg-[#F4F4F5] dark:bg-[#27272A]\" defaultValue={value} disabled={disabled} onChange={(event) => onChange(event.target.value)}>\n <option value=\"\" disabled selected>\n {placeholderText}\n </option>\n {selectOptions.map((item) => {\n return (\n <option key={item.value} value={item.value}>\n {item.label}\n </option>\n );\n })}\n </select>\n </div>\n {description && <div className=\"mt-1 text-xs text-[#A1A1A9] dark:text-[#717179]\">{description}</div>}\n </div>\n );\n}\n\nexport default SelectWidget;\n","import React, { useState } from \"react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Button } from \"@nextui-org/react\";\nimport { cn } from \"../../../lib/utils\";\nimport MonacoEditor from \"@monaco-editor/react\";\n\n\n\ntype Options = {\n editorHeight?: string;\n readOnly?: boolean;\n language?: string;\n languageSelectorOptions?: { label: string; value: string }[];\n onChangeLanguage?: (v: string) => void;\n onRun?: (v: string) => void;\n};\n\nexport interface EditorWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport type EditorWidgetUIOptions = {\n \"ui:widget\": (props: EditorWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n};\n\nconst EditorWidget = ({ id, label, options = {}, value, required, schema, onChange }: EditorWidgetProps) => {\n const { editorHeight = '200px', readOnly = false, language = 'json', languageSelectorOptions = [], onChangeLanguage, onRun } = options;\n const [selectedLanguage, setSelectedLanguage] = useState('');\n const [runLoading, setRunLoading] = useState(false);\n const showLanguageSelector = languageSelectorOptions.length > 0;\n\n return (\n <div className='flex flex-col relative'>\n <div className={cn('flex justify-between items-center', { 'mb-[10px]': label.trim() || showLanguageSelector })}>\n {label && (\n <label\n className=\"mr-2 flex items-center text-sm\"\n >\n {label}\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n {showLanguageSelector && (\n <select\n className=\"w-full p-3 text-sm rounded-md bg-[#F4F4F5] dark:bg-[#27272A]\"\n value={selectedLanguage}\n onChange={(event) => {\n const v = event.target.value;\n setSelectedLanguage(v);\n onChangeLanguage && onChangeLanguage(v);\n }}\n >\n {languageSelectorOptions.map((item) => {\n return <option key={item.value} value={item.value}>{item.label}</option>\n })}\n </select>\n )}\n </div>\n {schema.description && <div className='mb-2 text-xs text-[#A1A1A9]'>{schema.description}</div>}\n <div className=\"rounded-lg overflow-hidden\">\n <MonacoEditor\n options={{ readOnly, minimap: { enabled: false } }}\n height={editorHeight}\n theme=\"vs-dark\"\n language={selectedLanguage ? selectedLanguage : language}\n value={value}\n onChange={(v) => onChange(v)}\n />\n </div>\n {onRun && (\n <Button\n className=\"absolute bottom-2 right-4\"\n size=\"sm\"\n isLoading={runLoading}\n onClick={async () => {\n setRunLoading(true);\n await onRun(value);\n setRunLoading(false);\n }}\n >\n Run\n </Button>\n )}\n </div>\n );\n};\n\nexport default EditorWidget;\n","import { createRef, LegacyRef, Ref } from \"react\";\nimport Form, { IChangeEvent } from \"@rjsf/core\";\nimport { RJSFSchema, UiSchema } from \"@rjsf/utils\";\nimport validator from \"@rjsf/validator-ajv8\";\nimport { action, computed, makeObservable, observable, toJS } from \"mobx\";\n\nimport { helper } from \"../../lib/helper\";\n\nexport class JSONSchemaFormState<T, U = UiSchema> {\n formRef: LegacyRef<Form<any, RJSFSchema, any>> & Ref<Form<any, RJSFSchema, any>>;\n value: JSONValue<T> = new JSONValue();\n schema: RJSFSchema;\n uiSchema: U;\n reactive: boolean = true;\n readonly = false;\n liveValidate = false;\n validator = validator\n\n get formData() {\n return this.value.get();\n }\n set formData(value: T) {\n this.value.set(value);\n }\n get dynamicData() {\n return this.getDymaicData();\n }\n getDymaicData = () => {\n return { ready: true };\n };\n onChange = (e: IChangeEvent<T>, id: string) => {\n this.value.set(e.formData);\n if (this.afterChange) {\n this.afterChange(e, id);\n }\n };\n onSubmit = (e: IChangeEvent<T>) => {\n if (this.afterSubmit) {\n this.afterSubmit(e);\n }\n };\n afterSubmit: (e: IChangeEvent<T>) => void;\n afterChange: (e: IChangeEvent<T>, id: string) => void;\n reset({ force = false } = {}) {\n if (force) {\n this.value.value = this.value.default;\n } else {\n this.value.reset();\n }\n return this;\n }\n customValidate = (formData: T, errors: any) => errors;\n\n constructor(args: Partial<JSONSchemaFormState<T, U>> = {}) {\n const formRef = createRef();\n Object.assign(this, args, { formRef });\n if (this.reactive) {\n //@ts-ignore\n makeObservable(this, {\n formData: computed,\n });\n }\n }\n}\n\nexport abstract class JSONSchemaValue<T> {\n value?: T = null as T;\n default?: T = null as T;\n constructor(args: Partial<JSONSchemaValue<T>> = {}) {\n if (!args.value && args.default) {\n args.value = args.default;\n }\n Object.assign(this, args);\n makeObservable(this, {\n value: observable,\n set: action,\n });\n }\n set(value: Partial<T>, { onSet = true } = {}) {\n value = this.onSet(value);\n const newVal = helper.deepMerge(this.value, value);\n this.value = toJS(newVal);\n return this.value;\n }\n onSet(value: Partial<T>) {\n return value;\n }\n get() {\n return this.getFormat(this.value);\n }\n getFormat(value: T) {\n return value;\n }\n reset() {\n this.set(this.default);\n }\n}\n\nexport class JSONValue<T> extends JSONSchemaValue<T> {\n constructor(args: Partial<JSONValue<T>> = {}) {\n super(args);\n }\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport Form from \"@rjsf/core\";\nimport {\n type ErrorListProps,\n type FieldTemplateProps,\n type ObjectFieldTemplateProps,\n type SubmitButtonProps,\n} from \"@rjsf/utils\";\nimport * as Utils from \"@rjsf/utils\"\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { observer } from \"mobx-react-lite\";\n\nimport { cn } from \"../../lib/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\n\nfunction FieldTemplate(props: FieldTemplateProps) {\n const { id, classNames, label, help, required, description, errors, children, schema, uiSchema } = props;\n\n if (uiSchema && uiSchema['ui:widget'] === 'hidden') { return null; }\n\n // const hideLabel = schema.type === 'object' || schema.type === 'boolean';\n\n const isDate = uiSchema && uiSchema['ui:widget'] === 'date';\n const isDateTime = uiSchema && uiSchema['ui:widget'] === 'date-time';\n const isTime = uiSchema && uiSchema['ui:widget'] === 'time';\n const showLabel = isDate || isDateTime || isTime;\n\n return (\n <div className={cn(classNames)}>\n {showLabel && (\n <label htmlFor={id} className={cn('flex items-center h-8')}>\n <span className=\"text-sm\">{label}</span>\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n\n {/* {description} */}\n {/* {children} */}\n {/* {help} */}\n\n {children}\n </div>\n );\n}\n\nconst renderLayout = (layout: any[], fields: { [k: string]: React.ReactElement }, n = 1) => {\n n++;\n return layout.map((item, index) => {\n if (Array.isArray(item)) {\n const even = (n & 1) === 0;\n return (\n <div key={index} className={cn('w-full flex justify-between items-center space-x-2', even ? 'flex-row' : 'flex-col')}>\n {renderLayout(item, fields, n)}\n </div>\n );\n } else {\n return (\n <div className=\"w-full mb-[10px]\" key={index}>\n {fields[item]}\n </div>\n );\n }\n });\n};\n\nconst ObjectFieldTemplate = ({ title, idSchema: { $id }, properties, uiSchema: { layout } }: ObjectFieldTemplateProps) => {\n const [opened, setOpened] = useState(false);\n const fields = Object.fromEntries(properties.map((item) => [item.name, item.content]));\n return (\n <div className=\"w-full\">\n {$id === 'root' ? (\n layout ? (\n renderLayout(layout, fields)\n ) : (\n properties.map((element) => {\n return (\n <div key={element.content.key} className=\"mb-[10px]\">\n {element.content}\n </div>\n );\n })\n )\n ) : (\n <>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px] hover:bg-[#F2F2F7] dark:hover:bg-gray-900\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className=\"text-gray-900 dark:text-gray-100 font-bold text-base\">{title}</div>\n {opened ? <ChevronUp /> : <ChevronDown />}\n </div>\n <div className={cn('mt-2', opened ? 'block' : 'hidden')}>\n {layout\n ? renderLayout(layout, fields)\n : properties.map((element) => {\n return (\n <div key={element.content.key} className=\"mb-[10px]\">\n {element.content}\n </div>\n );\n })}\n </div>\n </>\n )}\n </div>\n );\n};\n\nconst ErrorListTemplate = ({ errors }: ErrorListProps) => {\n return (\n <div>\n <div className=\"font-bold\">Errors</div>\n <div className=\"mt-[10px]\">\n {errors.map((error) => (\n <div className=\"mb-[10px]\" color=\"red\" key={error.property}>\n {error.stack}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nconst SubmitButton = ({ uiSchema }: SubmitButtonProps) => {\n const { submitText, norender, props: submitButtonProps = {} } = Utils.getSubmitButtonOptions(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div className=\"flex justify-end\">\n <Button type=\"submit\" color='primary' size='sm'>{submitText}</Button>\n </div>\n );\n};\n\ninterface Props {\n formState: JSONSchemaFormState<any>;\n children?: any;\n}\n\nexport const JSONSchemaForm = observer(({ children, formState }: Props) => {\n if (!formState?.dynamicData?.ready) return <></>;\n return (\n <Form\n showErrorList=\"bottom\"\n templates={{\n ObjectFieldTemplate,\n FieldTemplate,\n ErrorListTemplate,\n ButtonTemplates: { SubmitButton },\n }}\n formData={formState.formData}\n readonly={formState.readonly}\n uiSchema={formState.uiSchema}\n schema={formState.schema}\n onChange={formState.onChange}\n onSubmit={formState.onSubmit}\n validator={formState.validator}\n customValidate={formState.customValidate}\n ref={formState.formRef}\n >\n {children && children}\n </Form>\n );\n});\n","import React from 'react';\nimport { colSpan, colSpanLg, colSpanMd, colSpanSm, GridClassesMapping } from './styles';\nimport { cn } from '../../../lib/utils';\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n numColSpan?: number;\n numColSpanSm?: number;\n numColSpanMd?: number;\n numColSpanLg?: number;\n}\n\nconst Col = React.forwardRef<HTMLDivElement, ColProps>((props, ref) => {\n const { numColSpan = 1, numColSpanSm, numColSpanMd, numColSpanLg, children, className, ...other } = props;\n const getColSpan = (numColSpan: number | undefined, colSpanMapping: GridClassesMapping): string => {\n if (!numColSpan) return '';\n if (!Object.keys(colSpanMapping).includes(String(numColSpan))) return '';\n return colSpanMapping[numColSpan];\n };\n\n const getColSpanClassNames = () => {\n const spanBase = getColSpan(numColSpan, colSpan);\n const spanSm = getColSpan(numColSpanSm, colSpanSm);\n const spanMd = getColSpan(numColSpanMd, colSpanMd);\n const spanLg = getColSpan(numColSpanLg, colSpanLg);\n return cn(spanBase, spanSm, spanMd, spanLg);\n };\n\n return (\n <div ref={ref} className={cn(getColSpanClassNames(), className)} {...other}>\n {children}\n </div>\n );\n});\n\nCol.displayName = 'Col';\n\nexport default Col;\n","export type GridClassesMapping = {\n [key: string]: string;\n};\n\nexport const gridCols: GridClassesMapping = {\n 0: 'grid-cols-none',\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 7: 'grid-cols-7',\n 8: 'grid-cols-8',\n 9: 'grid-cols-9',\n 10: 'grid-cols-10',\n 11: 'grid-cols-11',\n 12: 'grid-cols-12',\n};\n\nexport const gridColsSm: GridClassesMapping = {\n 0: 'sm:grid-cols-none',\n 1: 'sm:grid-cols-1',\n 2: 'sm:grid-cols-2',\n 3: 'sm:grid-cols-3',\n 4: 'sm:grid-cols-4',\n 5: 'sm:grid-cols-5',\n 6: 'sm:grid-cols-6',\n 7: 'sm:grid-cols-7',\n 8: 'sm:grid-cols-8',\n 9: 'sm:grid-cols-9',\n 10: 'sm:grid-cols-10',\n 11: 'sm:grid-cols-11',\n 12: 'sm:grid-cols-12',\n};\n\nexport const gridColsMd: GridClassesMapping = {\n 0: 'md:grid-cols-none',\n 1: 'md:grid-cols-1',\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-3',\n 4: 'md:grid-cols-4',\n 5: 'md:grid-cols-5',\n 6: 'md:grid-cols-6',\n 7: 'md:grid-cols-7',\n 8: 'md:grid-cols-8',\n 9: 'md:grid-cols-9',\n 10: 'md:grid-cols-10',\n 11: 'md:grid-cols-11',\n 12: 'md:grid-cols-12',\n};\n\nexport const gridColsLg: GridClassesMapping = {\n 0: 'lg:grid-cols-none',\n 1: 'lg:grid-cols-1',\n 2: 'lg:grid-cols-2',\n 3: 'lg:grid-cols-3',\n 4: 'lg:grid-cols-4',\n 5: 'lg:grid-cols-5',\n 6: 'lg:grid-cols-6',\n 7: 'lg:grid-cols-7',\n 8: 'lg:grid-cols-8',\n 9: 'lg:grid-cols-9',\n 10: 'lg:grid-cols-10',\n 11: 'lg:grid-cols-11',\n 12: 'lg:grid-cols-12',\n};\n\nexport const colSpan: GridClassesMapping = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n 13: 'col-span-13',\n};\n\nexport const colSpanSm: GridClassesMapping = {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n 13: 'sm:col-span-13',\n};\n\nexport const colSpanMd: GridClassesMapping = {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n 13: 'md:col-span-13',\n};\n\nexport const colSpanLg: GridClassesMapping = {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n 13: 'lg:col-span-13',\n};\n","import React from 'react';\nimport { GridClassesMapping, gridCols, gridColsLg, gridColsMd, gridColsSm } from './styles';\nimport { cn } from '../../../lib/utils';\n\nconst getGridCols = (numCols: number | undefined, gridColsMapping: GridClassesMapping): string => {\n if (!numCols) return '';\n if (!Object.keys(gridColsMapping).includes(String(numCols))) return '';\n return gridColsMapping[numCols];\n};\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n numItems?: number;\n numItemsSm?: number;\n numItemsMd?: number;\n numItemsLg?: number;\n children: React.ReactNode;\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>((props, ref) => {\n const { numItems = 1, numItemsSm, numItemsMd, numItemsLg, children, className, ...other } = props;\n\n const colsBase = getGridCols(numItems, gridCols);\n const colsSm = getGridCols(numItemsSm, gridColsSm);\n const colsMd = getGridCols(numItemsMd, gridColsMd);\n const colsLg = getGridCols(numItemsLg, gridColsLg);\n\n const colClassNames = cn(colsBase, colsSm, colsMd, colsLg);\n\n return (\n <div ref={ref} className={cn('grid', colClassNames, className)} {...other}>\n {children}\n </div>\n );\n});\n\nGrid.displayName = 'Grid';\n\nexport default Grid;\n","import React, { useEffect, useState } from \"react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { cn } from \"../../../lib/utils\";\nimport { JSONSchemaFormState } from \"../../../store/standard/JSONSchemaState\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\n\nconst CollapsibleBox = ({ formKey, title, titleBoxCss, formState, submitButtonProps }: { formKey: string; title: string; titleBoxCss?: string; formState: JSONSchemaFormState<{ [key: string]: any }, UiSchema>; submitButtonProps: any }) => {\n const [opened, setOpened] = useState(true);\n return (\n <div id={`form-${formKey}`}>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px] hover:bg-[#F2F2F7] dark:hover:bg-gray-900\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className={cn('text-gray-900 dark:text-gray-100 font-bold text-base', titleBoxCss)}>{title}</div>\n {opened ? <ChevronUp /> : <ChevronDown />}\n </div>\n <div className={cn('mt-2', opened ? 'block' : 'hidden')}>\n <JSONSchemaForm formState={formState}>{submitButtonProps && <SubmitButton formKey={formKey} formState={formState} buttonProps={submitButtonProps} />}</JSONSchemaForm>\n </div>\n </div>\n );\n};\n\nexport const ListLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const { $type, ...formLayout } = layoutConfig as LayoutConfigType<T, 'ListLayout'>;\n const formStates = getFormState(props, formLayout);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n const formState = formStates[key];\n return <CollapsibleBox key={key} formKey={key} title={layout?.title || key} titleBoxCss={layout?.titleBoxCss} formState={formState} submitButtonProps={layout?.submitButtonProps} />;\n })}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};","import React, { useEffect } from 'react';\nimport { FormDataType, JSONFormProps, LayoutConfigType } from '..';\nimport { JSONSchemaForm } from '../../../components/JSONSchemaForm';\nimport { BatchSubmitButton, SubmitButton, getFormState } from './format';\n\nexport const SimpleLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const { $type, ...formLayout } = layoutConfig as LayoutConfigType<T, 'SimpleLayout'>;\n const formStates = getFormState(props, formLayout);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <div key={key} className=\"space-y-2\" id={`form-${key}`}>\n <JSONSchemaForm formState={formStates[key]}>{layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}</JSONSchemaForm>\n </div>\n );\n })}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Tab, Tabs } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { cn } from \"../../../lib/utils\";\n\nexport const TabLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const {\n $type,\n $tabsProps = {\n color: 'default',\n },\n ...formLayout\n } = layoutConfig as LayoutConfigType<T, 'TabLayout'>;\n const formStates = useMemo(() => getFormState(props, formLayout), [props.formData, props.formConfig, props.layoutConfig]);\n const formKeys = Object.keys(formStates);\n const [selectedTab, setSelectedTab] = useState(formKeys[0] || '');\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n <Tabs\n {...$tabsProps}\n selectedKey={selectedTab}\n onSelectionChange={(key: string) => {\n setSelectedTab(key);\n }}\n >\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return <Tab id={`form-${key}-tab-menu`} key={key} title={<div className={layout?.titleBoxCss}>{layout?.title || key}</div>} />;\n })}\n </Tabs>\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return (\n <div\n key={key}\n id={`form-${key}-tab-content`}\n className={cn('mt-4', selectedTab === key ? '' : 'hidden')}\n >\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n </JSONSchemaForm>\n </div>\n );\n })}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Textarea } from '@nextui-org/react';\nimport { WidgetProps } from '@rjsf/utils';\nimport { cn } from \"../../../lib/utils\";\n\ntype Options = {\n className?: string;\n labelPlacement?: 'inside' | 'outside' | 'outside-left';\n size: 'sm' | 'md' | 'lg',\n maxRows?: number;\n placeholder?: string;\n};\n\nexport interface TextareaWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface TextareaWidgetUIOptions {\n 'ui:widget': (props: TextareaWidgetProps) => JSX.Element;\n 'ui:options': Options;\n}\n\nfunction TextareaWidget(props: TextareaWidgetProps) {\n const { onChange, options, id, label, value, required, disabled, schema } = props;\n const { className, labelPlacement = 'inside', size = 'md', maxRows = 8 } = options;\n const placeholder = props.placeholder || options.placeholder;\n return (\n <Textarea\n id={id}\n className={cn('w-full', className)}\n label={label}\n placeholder={placeholder}\n value={value}\n isRequired={required}\n isDisabled={disabled}\n minRows={3}\n maxRows={maxRows}\n size={size}\n labelPlacement={labelPlacement}\n description={schema.description || ''}\n type={schema.inputType || 'text'}\n onChange={e => onChange(e.target.value)}\n />\n );\n}\n\nexport default TextareaWidget;\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { JSONForm } from \"../../components/JSONForm\";\nimport { useEffect, useMemo } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { FormPlugin } from \".\";\nimport React from \"react\";\n\nconst JSONViewModal = observer(() => {\n const rootStore = useStore();\n const complexFormModal = rootStore.get(FormPlugin);\n const { formData, isOpen } = complexFormModal;\n const store = useLocalObservable(() => ({\n isMobile: false,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n store.isMobile = window.innerWidth < 991;\n };\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const isMobile = store.isMobile;\n\n const ModalMemo = useMemo(() => {\n if (!formData) {\n return null;\n }\n\n const layoutConfig = { ...complexFormModal.layoutConfig };\n if (isMobile && layoutConfig.$type === 'GridLayout') {\n layoutConfig.$gridColumn = 1;\n Object.keys(layoutConfig).forEach((key) => {\n if (typeof layoutConfig[key] === 'object') {\n // @ts-ignore\n layoutConfig[key].colSpan = 1;\n }\n });\n }\n\n return (\n <Modal\n className={complexFormModal.className}\n classNames={complexFormModal.classNames}\n scrollBehavior={complexFormModal.scrollBehavior}\n isDismissable={complexFormModal.isDismissable}\n isOpen={isOpen}\n size={complexFormModal.modalSize}\n onOpenChange={(open: boolean) => {\n if (!open) {\n complexFormModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {complexFormModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{complexFormModal.title}</ModalHeader>}\n <ModalBody className={cn('max-h-[90vh] overflow-auto')}>\n <JSONForm\n formData={formData}\n formConfig={complexFormModal.formConfig}\n layoutConfig={layoutConfig}\n onBatchSubmit={\n complexFormModal.onBatchSubmit\n ? complexFormModal.onBatchSubmit\n : (data) => {\n complexFormModal.event.emit('batchSubmit', data);\n }\n }\n onSet={complexFormModal.onSet}\n onChange={complexFormModal.onChange}\n onReady={complexFormModal.onReady}\n batchSubmitButtonProps={complexFormModal.batchSubmitButtonProps}\n />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n }, [isOpen, formData, isMobile]);\n\n return ModalMemo;\n});\n\nexport default JSONViewModal;\n","import { Store } from \"../../store/standard/base\";\nimport Provider from \"./Provider\";\nimport { FormConfigType, FormDataOfKey, FormDataType, LayoutConfigType, LayoutType } from \"../../components/JSONForm\";\nimport EventEmitter from \"events\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\nimport { RootStore } from \"../../store\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\n\nexport class FormPlugin<T extends FormDataType> implements Store {\n sid = 'FormPlugin';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n formData?: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n className = '';\n classNames?: SlotsToClasses<ModalSlots>;\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n isDismissable = true;\n event = new EventEmitter();\n onBatchSubmit?: (data: T, setLoading?: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n\n constructor(args?: Partial<FormPlugin<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n\n setData(v: Partial<FormPlugin<T>>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.formData = undefined;\n this.formConfig = undefined;\n this.layoutConfig = undefined;\n this.className = '';\n this.classNames = undefined;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.isDismissable = true;\n this.onBatchSubmit = undefined;\n this.onSet = undefined;\n this.onChange = undefined;\n this.onReady = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getComplexFormData<T extends FormDataType>(v: Partial<FormPlugin<T>>) {\n return new Promise<T>((resolve, reject) => {\n const complexFormModal = RootStore.Get(FormPlugin);\n // @ts-ignore\n complexFormModal.setData({\n ...v,\n isOpen: true,\n });\n complexFormModal.event.on('batchSubmit', (formData: T) => {\n if (complexFormModal.onBatchSubmit) {\n complexFormModal.onBatchSubmit(formData);\n } else {\n complexFormModal.close();\n resolve(formData);\n }\n });\n complexFormModal.event.on('abort', () => {\n complexFormModal.close();\n reject('abort');\n });\n });\n}\n","import EventEmitter from \"events\";\nimport React from \"react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\n\n\nimport { Store } from \"../../store/standard/base\";\nimport {\n JSONSchemaFormState,\n JSONValue,\n} from \"../../store/standard/JSONSchemaState\";\nimport Provider from \"./Provider\";\nimport SelectWidget from \"../../components/JSONFormWidgets/SelectWidget\";\nimport InputWidget from \"../../components/JSONFormWidgets/InputWidget\";\nimport CheckboxWidget from \"../../components/JSONFormWidgets/CheckboxWidget\";\nimport { RootStore } from \"../../store\";\nimport { SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\n\nexport class FormModalStore<T = { [key: string]: any }> implements Store {\n sid = 'FormModalStore';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n //@ts-ignore\n form: JSONSchemaFormState<T> = null;\n className: string = '';\n classNames?: SlotsToClasses<ModalSlots>;\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n closeOnOverlayClick = false;\n event = new EventEmitter();\n onAfterSubmit?: (data: T) => void;\n\n constructor(args?: Partial<FormModalStore>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n\n setData(v: Partial<FormModalStore>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.form = null;\n this.className = '';\n this.classNames = undefined;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.closeOnOverlayClick = false;\n this.onAfterSubmit = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getFormData<T = { [key: string]: any }>(v: Partial<FormModalStore>) {\n return new Promise<T>((resolve, reject) => {\n const formModal = RootStore.Get(FormModalStore);\n formModal.setData({\n ...v,\n isOpen: true,\n });\n formModal.event.on('afterSubmit', (formData: T) => {\n if (formModal.onAfterSubmit) {\n formModal.onAfterSubmit(formData);\n } else {\n formModal.close();\n resolve(formData);\n }\n });\n formModal.event.on('abort', () => {\n formModal.close();\n reject('abort');\n });\n });\n}\n\nexport function getFormState<T>(\n {\n data,\n metadata = {},\n onSet = (v: T, form) => v,\n onSubmit,\n }: {\n data: T;\n metadata?: { [key: string]: any } & Partial<JSONSchemaFormState<any>>;\n onSet?: (v: T, form: JSONSchemaFormState<T, UiSchema>) => T;\n onSubmit?: (data: T) => void;\n }\n): JSONSchemaFormState<T, UiSchema> {\n const value = {};\n const required = [];\n const props = Object.entries(data).reduce((p, c) => {\n const [k, v] = c;\n const type = typeof v;\n p[k] = {\n type\n };\n if (!metadata[k]) {\n metadata[k] = {};\n }\n if (type === 'string' || type === 'number') {\n if (metadata[k]?.selectOptions) {\n metadata[k]['ui:widget'] = SelectWidget;\n p[k].selectOptions = metadata[k].selectOptions;\n } else {\n if (!metadata[k]['ui:widget']) {\n metadata[k]['ui:widget'] = InputWidget;\n metadata[k]['ui:options'] = {\n // labelPlacement: 'outside-left',\n size: 'sm',\n };\n if (type === 'number') {\n p[k].inputType = 'number';\n }\n }\n }\n }\n if (type === 'boolean') {\n metadata[k]['ui:widget'] = CheckboxWidget;\n metadata[k]['ui:options'] = {\n size: 'sm',\n }\n }\n if (metadata[k]?.inputType) {\n p[k].inputType = metadata[k].inputType;\n delete metadata[k].inputType;\n }\n if (metadata[k]?.title) {\n p[k].title = metadata[k].title || v;\n delete metadata[k].title;\n }\n if (metadata[k]?.description) {\n p[k].description = metadata[k].description;\n delete metadata[k].description;\n }\n // if (metadata[k]?.enum) {\n // p[k].enum = metadata[k].enum;\n // delete metadata[k].enum;\n // }\n // if (metadata[k]?.enumNames) {\n // p[k].enumNames = metadata[k].enumNames;\n // delete metadata[k].enumNames;\n // }\n if (metadata[k]?.required) {\n required.push(k);\n delete metadata[k].required;\n }\n value[k] = v;\n return p;\n }, {});\n const schema = {\n type: 'object',\n properties: props,\n required,\n };\n const form = new JSONSchemaFormState({\n //@ts-ignore\n schema,\n uiSchema: {\n 'ui:submitButtonOptions': {\n norender: false,\n submitText: 'Submit',\n },\n ...metadata,\n },\n afterSubmit(e) {\n if (onSubmit) {\n onSubmit(e.formData as T);\n } else {\n const formModal = RootStore.Get(FormModalStore);\n formModal.event.emit('afterSubmit', e.formData);\n }\n },\n value: new JSONValue({\n default: value,\n //@ts-ignore\n onSet: (v: T) => onSet(v, form),\n }),\n });\n return form;\n}\n\nexport async function getSimpleFormData<T>(\n data: T,\n metadata: { [key: string]: any } & Partial<JSONSchemaFormState<any>> = {},\n config: Partial<FormModalStore>,\n onSet = (v: T, form: JSONSchemaFormState<T, UiSchema>) => {\n return v;\n },\n) {\n const form = getFormState({ data, metadata, onSet });\n return getFormData<T>({\n ...config,\n //@ts-ignore\n form\n });\n}\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer } from \"mobx-react-lite\";\nimport { JSONSchemaForm } from \"../../components/JSONSchemaForm\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { FormModalStore } from \".\";\nimport React from 'react';\n\nconst JSONFormModal = observer(() => {\n const rootStore = useStore();\n const formModal = rootStore.get(FormModalStore);\n const { form, closeOnOverlayClick } = formModal;\n if (!form) {\n return null;\n }\n return (\n <Modal\n className={formModal.className}\n classNames={formModal.classNames}\n scrollBehavior={formModal.scrollBehavior}\n isOpen={formModal.isOpen}\n size={formModal.modalSize}\n isDismissable={!closeOnOverlayClick}\n onOpenChange={(open: boolean) => {\n if (!open) {\n formModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen flex items-center justify-center\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {formModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{formModal.title}</ModalHeader>}\n <ModalBody className='max-h-[90vh] overflow-auto'>\n <JSONSchemaForm formState={form} />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n});\n\nexport default JSONFormModal;\n\n","import React from \"react\";\n\nimport { _ } from \"../../lib/lodash\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\n\nexport type JSONViewType = {\n className?: string;\n children?: any;\n data?: Record<string, JSONDataType>;\n datas?: Record<string, Record<string, JSONDataType> | JSONDataType[]>;\n uiConfig?: {\n type: string;\n className?: Record<string, string>;\n slots?: Record<string, any>;\n [key: string]: any;\n };\n uiConfigs?: Record<string, JSONViewType[\"uiConfig\"]>;\n};\n\nexport type JSONDataType = {\n title?: string;\n icon?: any;\n render?: any;\n className?: string;\n type?: \"divider\" | \"checkbox\" | \"label\" | \"radio\";\n shortcut?: string;\n disabled?: boolean;\n children?: Record<string, JSONDataType>;\n value?: any;\n link?: any;\n events?: Record<string, any>;\n onChange?: (args: { e: any; v: any }) => void;\n onClick?: (args: { e: any; v: any }) => void;\n};\n\nexport class JSONViewPlugin implements Store {\n sid = \"JSONViewPlugin\";\n autoObservable?: boolean = false;\n\n JSONView = {\n Test: {\n name: \"Test\",\n render: () => <div>Test</div>,\n },\n };\n\n onNewStore({\n rootStore,\n store,\n }: {\n rootStore: RootStore<any>;\n store: Store;\n }): void {\n this.crawl(store);\n }\n\n crawl(store: Store) {\n if (store?.JSONView) {\n this.JSONView = { ...this.JSONView, ...store.JSONView };\n }\n }\n\n static JSONView = (props: JSONViewType) => {\n const jsonviewplugin = RootStore.Get(JSONViewPlugin);\n\n return (\n <>\n {/* @ts-ignore */}\n {Object.keys(props.uiConfigs).map((key) => {\n /* @ts-ignore */\n const config = props.uiConfigs[key] as any;\n const data = _.get(props.datas, key);\n const Component = jsonviewplugin.JSONView[config.type].render;\n const rootStore = RootStore.init();\n Object.values(data).forEach((i) => {\n /* @ts-ignore */\n if (i.events) {\n /* @ts-ignore */\n Object.entries(i.events).forEach(([k, v]) => {\n // @ts-ignore \n i[k] = (args) =>\n rootStore.events.emit(v as any, { ...args, action: k });\n });\n }\n });\n\n return <Component key={key} data={data} uiConfig={config} />;\n })}\n </>\n );\n };\n}\n"],"mappings":"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","names":["React","React","React","useState","Button","React","React","React","React","React","React","React","_a","formData","useState","React","Button","React","useState","Button","React","useState","SubmitButton","Button","React","React","numColSpan","React","React","React","_a","React","useEffect","useState","ChevronDown","ChevronUp","useState","React","ChevronUp","ChevronDown","useEffect","React","useEffect","useEffect","React","React","useEffect","useState","useState","useEffect","React","React","React","observer","useEffect","useMemo","React","observer","useEffect","useMemo","React","React","React","EventEmitter","React","makeAutoObservable","Modal","ModalBody","ModalContent","ModalHeader","observer","Draggable","React","observer","Modal","Draggable","ModalContent","ModalHeader","ModalBody","Provider_default","React","Provider_default","EventEmitter","makeAutoObservable","getFormState","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../components/JSONForm/index.tsx","../components/JSONForm/Layouts/gridLayout.tsx","../components/JSONForm/Layouts/format.tsx","../components/JSONFormWidgets/CheckboxWidget/index.tsx","../components/JSONFormWidgets/InputWidget/index.tsx","../components/JSONFormWidgets/SelectWidget/index.tsx","../components/JSONFormWidgets/EditorWidget/index.tsx","../store/standard/JSONSchemaState.ts","../components/JSONSchemaForm/index.tsx","../components/ui/grid/col.tsx","../components/ui/grid/styles.tsx","../components/ui/grid/grid.tsx","../components/JSONForm/Layouts/listLayout.tsx","../components/JSONForm/Layouts/simpleLayout.tsx","../components/JSONForm/Layouts/tabLayout.tsx","../components/JSONFormWidgets/TextareaWidget/index.tsx","../module/ComplexFormModal/Provider.tsx","../module/ComplexFormModal/index.tsx","../module/FormModal/index.tsx","../module/FormModal/Provider.tsx","../module/JSONView/index.tsx"],"sourcesContent":["import React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, CardProps, TabsProps } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { GridLayout } from \"./Layouts/gridLayout\";\nimport { ListLayout } from \"./Layouts/listLayout\";\nimport { SimpleLayout } from \"./Layouts/simpleLayout\";\nimport { TabLayout } from \"./Layouts/tabLayout\";\n\nexport type LayoutType = 'TabLayout' | 'GridLayout' | 'ListLayout' | 'SimpleLayout';\n\nexport type FieldLayoutType<T, F extends keyof T> = Array<keyof NonNullable<T[F]>> | Array<Array<keyof NonNullable<T[F]>> | keyof NonNullable<T[F]>>;\n\nexport type FormLayoutType<T, L> = L extends 'TabLayout' | 'ListLayout' | 'SimpleLayout'\n ? {\n [F in keyof T]?: {\n title?: string;\n titleBoxCss?: string;\n fieldLayout?: FieldLayoutType<T, F>;\n submitButtonProps?: ButtonProps & { onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n };\n }\n : L extends 'GridLayout'\n ? {\n [F in keyof T]?: {\n title?: string;\n titleBoxCss?: string;\n fieldLayout?: FieldLayoutType<T, F>;\n colSpan?: number;\n cardProps?: CardProps;\n submitButtonProps?: ButtonProps & { onAfterSubmit?: (formKey: FormKey<T>, data: FormDataOfKey<T>, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n };\n }\n : never;\n\nexport type LayoutConfigType<T, L> = L extends 'TabLayout'\n ? { $type: 'TabLayout'; $tabsProps?: TabsProps } & FormLayoutType<T, L>\n : L extends 'GridLayout'\n ? { $type: 'GridLayout'; $gridColumn?: number; } & FormLayoutType<T, L>\n : L extends 'ListLayout'\n ? { $type: 'ListLayout' } & FormLayoutType<T, L>\n : L extends 'SimpleLayout'\n ? { $type: 'SimpleLayout' } & FormLayoutType<T, L>\n : never;\n\nexport type FormDataType = {\n [key: string]: {\n [key: string]: string | number | boolean;\n };\n};\n\nexport type FormConfigType<T> = {\n [F in keyof T]?: {\n [X in keyof T[F]]?: {\n title?: string;\n description?: string;\n required?: boolean;\n selectOptions?: { label: string; value: string }[];\n } & UiSchema;\n };\n};\n\nexport type FormKey<T = FormDataType> = keyof T;\n\nexport type FormDataOfKey<T = FormDataType> = T[FormKey<T>];\n\nexport type JSONFormProps<T = FormDataType> = {\n className?: string;\n formData: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n children?: any;\n onBatchSubmit?: (data: T, setLoading: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n};\n\nconst components = {\n GridLayout,\n TabLayout,\n ListLayout,\n SimpleLayout,\n};\n\nexport const JSONForm = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const type = props.layoutConfig?.$type || 'SimpleLayout';\n const Component = components[type];\n return (\n <div className={props.className}>\n {\n // @ts-ignore\n <Component {...props} />\n }\n </div>\n );\n};\n","import React, { useEffect } from \"react\";\nimport { Card } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { Grid, Col } from '../../../components/ui/grid';\nimport { cn } from '../../../lib/utils';\n\nexport const GridLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const { $type, $gridColumn, ...formLayout } = layoutConfig as LayoutConfigType<T, 'GridLayout'>;\n const formStates = getFormState(props, formLayout);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n <Grid numItems={$gridColumn ?? 1} className=\"gap-2\">\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <Col numColSpan={layout?.colSpan ?? 1} key={key} id={`form-${key}`}>\n <Card className={cn(\"h-full m-0 p-4 shadow-sm border-1\", layout?.cardProps)}>\n <div className={cn('mb-2 font-bold text-center', layout?.titleBoxCss)}>{layout?.title || key}</div>\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n </JSONSchemaForm>\n </Card>\n </Col>\n );\n })}\n </Grid>\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};","import React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { FormDataOfKey, JSONFormProps } from \"..\";\nimport CheckboxWidget from \"../../../components/JSONFormWidgets/CheckboxWidget\";\nimport InputWidget from \"../../../components/JSONFormWidgets/InputWidget\";\nimport SelectWidget from \"../../../components/JSONFormWidgets/SelectWidget\";\nimport EditorWidget from '../../../components/JSONFormWidgets/EditorWidget';\nimport {\n JSONSchemaFormState,\n JSONValue,\n} from \"../../../store/standard/JSONSchemaState\";\nimport { helper } from \"../../../lib/helper\";\nimport { cn } from \"../../../lib/utils\";\n\nexport const getFormState = <T,>(\n props: JSONFormProps<T>,\n formLayout: { [x: string]: { fieldLayout?: any[] } } = {},\n) => {\n const { formData, formConfig, onSet, onChange } = props;\n\n const formStates: {\n [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>;\n } = {};\n\n Object.keys(formData).forEach((key) => {\n const metadata = formData[key];\n const formConfigData = formConfig?.[key] || {};\n const value = {};\n const required = [];\n const properties = Object.entries(metadata).reduce((p, c: any) => {\n const [k, v] = c;\n const type = typeof v;\n p[k] = {\n type,\n };\n if (!formConfigData[k]) {\n formConfigData[k] = {};\n }\n const uiOptions = formConfigData[k]['ui:options'] || {};\n if (type === \"string\" || type === \"number\") {\n if (formConfigData[k]?.selectOptions) {\n formConfigData[k][\"ui:widget\"] = SelectWidget;\n p[k].selectOptions = formConfigData[k].selectOptions;\n formConfigData[k]['ui:options'] = {\n size: 'sm',\n ...uiOptions,\n };\n } else {\n if (!formConfigData[k][\"ui:widget\"]) {\n formConfigData[k][\"ui:widget\"] = InputWidget;\n formConfigData[k][\"ui:options\"] = {\n labelPlacement: \"inside\",\n size: \"sm\",\n ...uiOptions,\n };\n if (type === \"number\") {\n p[k].inputType = \"number\";\n }\n if (helper.json.isJsonString(v)) {\n formConfigData[k]['ui:widget'] = EditorWidget;\n }\n }\n }\n }\n if (type === \"boolean\") {\n formConfigData[k][\"ui:widget\"] = CheckboxWidget;\n formConfigData[k][\"ui:options\"] = {\n size: \"sm\",\n ...uiOptions,\n };\n }\n if (formConfigData[k]?.inputType) {\n p[k].inputType = formConfigData[k].inputType;\n }\n if (formConfigData[k]?.title) {\n p[k].title = formConfigData[k].title || k;\n }\n if (formConfigData[k]?.description) {\n p[k].description = formConfigData[k].description;\n }\n // if (formConfigData[k]?.selectOptions) {\n // p[k].enum = formConfigData[k].selectOptions.map((i) => i.value);\n // p[k].enumNames = formConfigData[k].selectOptions.map((i) => i.label);\n // }\n if (formConfigData[k]?.required) {\n //@ts-ignore\n required.push(k);\n }\n value[k] = v;\n return p;\n }, {});\n const schema = {\n type: \"object\",\n properties,\n required,\n };\n const form = new JSONSchemaFormState({\n //@ts-ignore\n schema,\n uiSchema: {\n \"ui:submitButtonOptions\": {\n norender: true,\n },\n ...formConfigData,\n layout: formLayout[key]?.fieldLayout,\n },\n // afterSubmit: async (e) => {\n // onSubmit?.(key as FormKey<T>, e.formData as FormDataOfKey<T>);\n // },\n afterChange: (e, id) => {\n const { formData } = e;\n if (formData) {\n const field = id.replace('root_', '');\n const data = {\n [key]: {\n [field]: formData[field],\n }\n };\n //@ts-ignore\n onChange?.(data);\n }\n },\n value: new JSONValue({\n default: value,\n //@ts-ignore\n onSet: (v) => {\n if (onSet) {\n return onSet(v as FormDataOfKey<T>, form);\n }\n return v;\n },\n }),\n });\n\n formStates[key] = form;\n });\n\n return formStates;\n};\n\nexport const BatchSubmitButton = ({ formStates, onSubmit, buttonProps }) => {\n const { className, onClick, children, isLoading, onBatchSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <Button\n className={cn('mt-4 ml-auto', className)}\n size=\"sm\"\n color=\"primary\"\n isLoading={loading}\n onClick={(e) => {\n const formData = {};\n const formKeys = Object.keys(formStates);\n for (const key of formKeys) {\n const form = formStates[key];\n const current = form.formRef.current;\n if (current) {\n current.submit();\n const data = current.state.formData;\n const required = current.state.schema.required;\n for (const i of required) {\n if (!data[i]) {\n return;\n }\n }\n const errors = current.state.errors;\n if (errors.length > 0) {\n return;\n }\n formData[key] = data;\n } else {\n console.error('formRef.current is null');\n return;\n }\n }\n onSubmit?.(formData, setLoading);\n onBatchSubmit?.(formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n );\n};\n\nexport const SubmitButton = ({ formKey, formState, buttonProps }) => {\n const { className, onClick, children, isLoading, onAfterSubmit, ...rest } = buttonProps || {};\n const [loading, setLoading] = useState(false);\n return (\n <div className=\"w-full flex\">\n <Button\n className={cn('mt-4 ml-auto', className)}\n type=\"submit\"\n color=\"primary\"\n size=\"sm\"\n isLoading={loading}\n onClick={(e) => {\n let formData = {};\n const current = formState.formRef.current;\n if (current) {\n current.submit();\n formData = current.state.formData;\n const required = current.state.schema.required;\n for (const i of required) {\n if (!formData[i]) {\n return;\n }\n }\n const errors = current.state.errors;\n if (errors.length > 0) {\n return;\n }\n }\n onAfterSubmit?.(formKey, formData, setLoading);\n }}\n {...rest}\n >\n {children || 'Submit'}\n </Button>\n </div>\n );\n};\n","import React from \"react\";\nimport { Checkbox } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"../../../lib/utils\";\n\ntype Options = {\n className?: string;\n size: 'sm' | 'md' | 'lg';\n color: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n};\n\nexport interface CheckboxWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface CheckboxWidgetUIOptions {\n \"ui:widget\": (props: CheckboxWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nfunction CheckboxWidget({\n onChange,\n options,\n id,\n label,\n value,\n disabled,\n schema,\n}: CheckboxWidgetProps) {\n const { size = 'sm', color = 'primary' } = options;\n const { description } = schema;\n\n return (\n <>\n <Checkbox\n id={id}\n classNames={{\n base: cn(\n 'm-0 flex items-center justify-start w-full',\n 'cursor-pointer rounded-lg gap-2 p-2.5 bg-content2 border-1 border-transparent',\n `data-[selected=true]:border-${color}`,\n ),\n }}\n defaultSelected={value}\n isDisabled={disabled}\n icon={<Check color=\"white\" />}\n color={color}\n size={size}\n onChange={(e: any) => {\n const checked = e.target.checked;\n onChange(checked);\n }}\n >\n {label}\n </Checkbox>\n {description && <div className=\"mt-1 text-xs text-[#A1A1A9] dark:text-[#717179]\">{description}</div>}\n </>\n );\n}\n\nexport default CheckboxWidget;\n","import React from \"react\";\nimport { Input } from \"@nextui-org/react\";\nimport { WidgetProps } from \"@rjsf/utils\";\n\nimport { cn } from \"../../../lib/utils\";\n\ntype Options = {\n className?: string;\n labelPlacement?: \"inside\" | \"outside\" | \"outside-left\";\n size: \"sm\" | \"md\" | \"lg\";\n placeholder?: string;\n};\n\nexport interface InputWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface InputWidgetUIOptions {\n \"ui:widget\": (props: InputWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nfunction InputWidget(props: InputWidgetProps) {\n const {\n onChange,\n options,\n id,\n label,\n value,\n required,\n disabled,\n schema,\n } = props;\n const { className, labelPlacement = \"inside\", size = \"sm\" } = options;\n const placeholder = props.placeholder || options.placeholder;\n return (\n <Input\n id={id}\n className={cn(\"w-full\", className)}\n label={label}\n placeholder={placeholder}\n value={value}\n defaultValue=\"\"\n isRequired={required}\n isDisabled={disabled}\n size={size}\n labelPlacement={labelPlacement}\n description={schema.description || \"\"}\n type={schema.inputType || \"text\"}\n onChange={(e) => onChange(e.target.value)}\n />\n );\n}\n\nexport default InputWidget;\n","import React from \"react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { cn } from \"../../../lib/utils\";\n\ntype Options = {\n className?: string;\n labelPlacement?: \"top\" | \"left\";\n size: \"sm\" | \"md\" | \"lg\";\n placeholder?: string;\n};\n\nexport interface SelectWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface SelectWidgetUIOptions {\n \"ui:widget\": (props: SelectWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n}\n\nfunction SelectWidget(props: SelectWidgetProps) {\n const { onChange, options, id, label, value, required, disabled, schema } = props;\n const { className, labelPlacement = 'top', placeholder = 'Select an option' } = options;\n const { selectOptions = [], description } = schema;\n const labelText = label?.trim();\n const placeholderText = props.placeholder || placeholder;\n\n return (\n <div className={cn(\"\", className)}>\n <div\n className={cn(\"flex flex-col\", {\n \"flex-row items-center\": labelPlacement === \"left\",\n })}\n id={id}\n >\n {labelText && (\n <label\n className={cn(\"flex items-center text-sm whitespace-nowrap\", {\n \"mb-2\": labelPlacement === \"top\",\n \"mr-2\": labelPlacement === \"left\",\n })}\n >\n {labelText}\n {required && <span className=\"ml-[2px] font-bold text-red-600\">*</span>}\n </label>\n )}\n <select className=\"w-full p-3 text-sm rounded-md bg-[#F4F4F5] dark:bg-[#27272A]\" defaultValue={value} disabled={disabled} onChange={(event) => onChange(event.target.value)}>\n <option value=\"\" disabled selected>\n {placeholderText}\n </option>\n {selectOptions.map((item) => {\n return (\n <option key={item.value} value={item.value}>\n {item.label}\n </option>\n );\n })}\n </select>\n </div>\n {description && <div className=\"mt-1 text-xs text-[#A1A1A9] dark:text-[#717179]\">{description}</div>}\n </div>\n );\n}\n\nexport default SelectWidget;\n","import React, { useState } from \"react\";\nimport { WidgetProps } from \"@rjsf/utils\";\nimport { Button } from \"@nextui-org/react\";\nimport { cn } from \"../../../lib/utils\";\nimport MonacoEditor, { EditorProps } from \"@monaco-editor/react\";\n\ntype Options = {\n editorHeight?: string;\n readOnly?: boolean;\n language?: string;\n languageSelectorOptions?: { label: string; value: string }[];\n onChangeLanguage?: (v: string) => void;\n onRun?: (v: string) => void;\n onMount?: EditorProps['onMount'];\n};\n\nexport interface EditorWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport type EditorWidgetUIOptions = {\n \"ui:widget\": (props: EditorWidgetProps) => JSX.Element;\n \"ui:options\": Options;\n};\n\nconst EditorWidget = ({ id, label, options = {}, value, required, schema, disabled, onChange }: EditorWidgetProps) => {\n const { editorHeight = '200px', readOnly = false, language = 'json', languageSelectorOptions = [], onChangeLanguage, onRun, onMount } = options;\n const [selectedLanguage, setSelectedLanguage] = useState('');\n const [runLoading, setRunLoading] = useState(false);\n const showLanguageSelector = languageSelectorOptions.length > 0;\n\n return (\n <div className='flex flex-col relative'>\n <div className={cn('flex justify-between items-center', { 'mb-[10px]': label.trim() || showLanguageSelector })}>\n {label && (\n <label\n className=\"mr-2 flex items-center text-sm\"\n >\n {label}\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n {showLanguageSelector && (\n <select\n className=\"w-full p-3 text-sm rounded-md bg-[#F4F4F5] dark:bg-[#27272A]\"\n value={selectedLanguage}\n onChange={(event) => {\n const v = event.target.value;\n setSelectedLanguage(v);\n onChangeLanguage && onChangeLanguage(v);\n }}\n >\n {languageSelectorOptions.map((item) => {\n return <option key={item.value} value={item.value}>{item.label}</option>\n })}\n </select>\n )}\n </div>\n {schema.description && <div className='mb-2 text-xs text-[#A1A1A9]'>{schema.description}</div>}\n <div className=\"rounded-lg overflow-hidden\">\n <MonacoEditor\n options={{ readOnly: readOnly || disabled, minimap: { enabled: false } }}\n height={editorHeight}\n theme=\"vs-dark\"\n language={selectedLanguage ? selectedLanguage : language}\n value={value}\n onChange={(v) => onChange(v)}\n onMount={onMount}\n />\n </div>\n {onRun && (\n <Button\n className=\"absolute bottom-2 right-4\"\n size=\"sm\"\n isLoading={runLoading}\n onClick={async () => {\n setRunLoading(true);\n await onRun(value);\n setRunLoading(false);\n }}\n >\n Run\n </Button>\n )}\n </div>\n );\n};\n\nexport default EditorWidget;\n","import { createRef, LegacyRef, Ref } from \"react\";\nimport Form, { IChangeEvent } from \"@rjsf/core\";\nimport { RJSFSchema, UiSchema } from \"@rjsf/utils\";\nimport validator from \"@rjsf/validator-ajv8\";\nimport { action, computed, makeObservable, observable, toJS } from \"mobx\";\n\nimport { helper } from \"../../lib/helper\";\n\nexport class JSONSchemaFormState<T, U = UiSchema> {\n formRef: LegacyRef<Form<any, RJSFSchema, any>> & Ref<Form<any, RJSFSchema, any>>;\n value: JSONValue<T> = new JSONValue();\n schema: RJSFSchema;\n uiSchema: U;\n reactive: boolean = true;\n readonly = false;\n liveValidate = false;\n validator = validator\n\n get formData() {\n return this.value.get();\n }\n set formData(value: T) {\n this.value.set(value);\n }\n get dynamicData() {\n return this.getDymaicData();\n }\n getDymaicData = () => {\n return { ready: true };\n };\n onChange = (e: IChangeEvent<T>, id: string) => {\n this.value.set(e.formData);\n if (this.afterChange) {\n this.afterChange(e, id);\n }\n };\n onSubmit = (e: IChangeEvent<T>) => {\n if (this.afterSubmit) {\n this.afterSubmit(e);\n }\n };\n afterSubmit: (e: IChangeEvent<T>) => void;\n afterChange: (e: IChangeEvent<T>, id: string) => void;\n reset({ force = false } = {}) {\n if (force) {\n this.value.value = this.value.default;\n } else {\n this.value.reset();\n }\n return this;\n }\n customValidate = (formData: T, errors: any) => errors;\n\n constructor(args: Partial<JSONSchemaFormState<T, U>> = {}) {\n const formRef = createRef();\n Object.assign(this, args, { formRef });\n if (this.reactive) {\n //@ts-ignore\n makeObservable(this, {\n formData: computed,\n });\n }\n }\n}\n\nexport abstract class JSONSchemaValue<T> {\n value?: T = null as T;\n default?: T = null as T;\n constructor(args: Partial<JSONSchemaValue<T>> = {}) {\n if (!args.value && args.default) {\n args.value = args.default;\n }\n Object.assign(this, args);\n makeObservable(this, {\n value: observable,\n set: action,\n });\n }\n set(value: Partial<T>, { onSet = true } = {}) {\n value = this.onSet(value);\n const newVal = helper.deepMerge(this.value, value);\n this.value = toJS(newVal);\n return this.value;\n }\n onSet(value: Partial<T>) {\n return value;\n }\n get() {\n return this.getFormat(this.value);\n }\n getFormat(value: T) {\n return value;\n }\n reset() {\n this.set(this.default);\n }\n}\n\nexport class JSONValue<T> extends JSONSchemaValue<T> {\n constructor(args: Partial<JSONValue<T>> = {}) {\n super(args);\n }\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Button } from \"@nextui-org/react\";\nimport Form from \"@rjsf/core\";\nimport {\n type ErrorListProps,\n type FieldTemplateProps,\n type ObjectFieldTemplateProps,\n type SubmitButtonProps,\n} from \"@rjsf/utils\";\nimport * as Utils from \"@rjsf/utils\"\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { observer } from \"mobx-react-lite\";\n\nimport { cn } from \"../../lib/utils\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\n\nfunction FieldTemplate(props: FieldTemplateProps) {\n const { id, classNames, label, help, required, description, errors, children, schema, uiSchema } = props;\n\n if (uiSchema && uiSchema['ui:widget'] === 'hidden') { return null; }\n\n // const hideLabel = schema.type === 'object' || schema.type === 'boolean';\n\n const isDate = uiSchema && uiSchema['ui:widget'] === 'date';\n const isDateTime = uiSchema && uiSchema['ui:widget'] === 'date-time';\n const isTime = uiSchema && uiSchema['ui:widget'] === 'time';\n const showLabel = isDate || isDateTime || isTime;\n\n return (\n <div className={cn(classNames)}>\n {showLabel && (\n <label htmlFor={id} className={cn('flex items-center h-8')}>\n <span className=\"text-sm\">{label}</span>\n {required && <span className=\"font-bold text-red-600\">*</span>}\n </label>\n )}\n\n {/* {description} */}\n {/* {children} */}\n {/* {help} */}\n\n {children}\n </div>\n );\n}\n\nconst renderLayout = (layout: any[], fields: { [k: string]: React.ReactElement }, n = 1) => {\n n++;\n return layout.map((item, index) => {\n if (Array.isArray(item)) {\n const even = (n & 1) === 0;\n return (\n <div key={index} className={cn('w-full flex justify-between items-center space-x-2', even ? 'flex-row items-end' : 'flex-col')}>\n {renderLayout(item, fields, n)}\n </div>\n );\n } else {\n return (\n <div className=\"w-full\" key={index}>\n {fields[item]}\n </div>\n );\n }\n });\n};\n\nconst ObjectFieldTemplate = ({ title, idSchema: { $id }, properties, uiSchema: { layout } }: ObjectFieldTemplateProps) => {\n const [opened, setOpened] = useState(false);\n const fields = Object.fromEntries(properties.map((item) => [item.name, item.content]));\n return (\n <div className=\"w-full space-y-2.5\">\n {$id === 'root' ? (\n layout ? (\n renderLayout(layout, fields)\n ) : (\n properties.map((element) => {\n return (\n <div key={element.content.key}>\n {element.content}\n </div>\n );\n })\n )\n ) : (\n <>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px] hover:bg-[#F2F2F7] dark:hover:bg-gray-900\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className=\"text-gray-900 dark:text-gray-100 font-bold text-base\">{title}</div>\n {opened ? <ChevronUp /> : <ChevronDown />}\n </div>\n <div className={cn('mt-2 space-y-2.5', opened ? 'block' : 'hidden')}>\n {layout\n ? renderLayout(layout, fields)\n : properties.map((element) => {\n return (\n <div key={element.content.key}>\n {element.content}\n </div>\n );\n })}\n </div>\n </>\n )}\n </div>\n );\n};\n\nconst ErrorListTemplate = ({ errors }: ErrorListProps) => {\n return (\n <div>\n <div className=\"font-bold\">Errors</div>\n <div className=\"mt-[10px]\">\n {errors.map((error) => (\n <div className=\"mb-[10px]\" color=\"red\" key={error.property}>\n {error.stack}\n </div>\n ))}\n </div>\n </div>\n );\n};\n\nconst SubmitButton = ({ uiSchema }: SubmitButtonProps) => {\n const { submitText, norender, props: submitButtonProps = {} } = Utils.getSubmitButtonOptions(uiSchema);\n if (norender) {\n return null;\n }\n return (\n <div className=\"flex justify-end\">\n <Button type=\"submit\" color='primary' size='sm'>{submitText}</Button>\n </div>\n );\n};\n\ninterface Props {\n formState: JSONSchemaFormState<any>;\n children?: any;\n}\n\nexport const JSONSchemaForm = observer(({ children, formState }: Props) => {\n if (!formState?.dynamicData?.ready) return <></>;\n return (\n <Form\n showErrorList=\"bottom\"\n templates={{\n ObjectFieldTemplate,\n FieldTemplate,\n ErrorListTemplate,\n ButtonTemplates: { SubmitButton },\n }}\n formData={formState.formData}\n readonly={formState.readonly}\n uiSchema={formState.uiSchema}\n schema={formState.schema}\n onChange={formState.onChange}\n onSubmit={formState.onSubmit}\n validator={formState.validator}\n customValidate={formState.customValidate}\n ref={formState.formRef}\n >\n {children && children}\n </Form>\n );\n});\n","import React from 'react';\nimport { colSpan, colSpanLg, colSpanMd, colSpanSm, GridClassesMapping } from './styles';\nimport { cn } from '../../../lib/utils';\n\nexport interface ColProps extends React.HTMLAttributes<HTMLDivElement> {\n numColSpan?: number;\n numColSpanSm?: number;\n numColSpanMd?: number;\n numColSpanLg?: number;\n}\n\nconst Col = React.forwardRef<HTMLDivElement, ColProps>((props, ref) => {\n const { numColSpan = 1, numColSpanSm, numColSpanMd, numColSpanLg, children, className, ...other } = props;\n const getColSpan = (numColSpan: number | undefined, colSpanMapping: GridClassesMapping): string => {\n if (!numColSpan) return '';\n if (!Object.keys(colSpanMapping).includes(String(numColSpan))) return '';\n return colSpanMapping[numColSpan];\n };\n\n const getColSpanClassNames = () => {\n const spanBase = getColSpan(numColSpan, colSpan);\n const spanSm = getColSpan(numColSpanSm, colSpanSm);\n const spanMd = getColSpan(numColSpanMd, colSpanMd);\n const spanLg = getColSpan(numColSpanLg, colSpanLg);\n return cn(spanBase, spanSm, spanMd, spanLg);\n };\n\n return (\n <div ref={ref} className={cn(getColSpanClassNames(), className)} {...other}>\n {children}\n </div>\n );\n});\n\nCol.displayName = 'Col';\n\nexport default Col;\n","export type GridClassesMapping = {\n [key: string]: string;\n};\n\nexport const gridCols: GridClassesMapping = {\n 0: 'grid-cols-none',\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 7: 'grid-cols-7',\n 8: 'grid-cols-8',\n 9: 'grid-cols-9',\n 10: 'grid-cols-10',\n 11: 'grid-cols-11',\n 12: 'grid-cols-12',\n};\n\nexport const gridColsSm: GridClassesMapping = {\n 0: 'sm:grid-cols-none',\n 1: 'sm:grid-cols-1',\n 2: 'sm:grid-cols-2',\n 3: 'sm:grid-cols-3',\n 4: 'sm:grid-cols-4',\n 5: 'sm:grid-cols-5',\n 6: 'sm:grid-cols-6',\n 7: 'sm:grid-cols-7',\n 8: 'sm:grid-cols-8',\n 9: 'sm:grid-cols-9',\n 10: 'sm:grid-cols-10',\n 11: 'sm:grid-cols-11',\n 12: 'sm:grid-cols-12',\n};\n\nexport const gridColsMd: GridClassesMapping = {\n 0: 'md:grid-cols-none',\n 1: 'md:grid-cols-1',\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-3',\n 4: 'md:grid-cols-4',\n 5: 'md:grid-cols-5',\n 6: 'md:grid-cols-6',\n 7: 'md:grid-cols-7',\n 8: 'md:grid-cols-8',\n 9: 'md:grid-cols-9',\n 10: 'md:grid-cols-10',\n 11: 'md:grid-cols-11',\n 12: 'md:grid-cols-12',\n};\n\nexport const gridColsLg: GridClassesMapping = {\n 0: 'lg:grid-cols-none',\n 1: 'lg:grid-cols-1',\n 2: 'lg:grid-cols-2',\n 3: 'lg:grid-cols-3',\n 4: 'lg:grid-cols-4',\n 5: 'lg:grid-cols-5',\n 6: 'lg:grid-cols-6',\n 7: 'lg:grid-cols-7',\n 8: 'lg:grid-cols-8',\n 9: 'lg:grid-cols-9',\n 10: 'lg:grid-cols-10',\n 11: 'lg:grid-cols-11',\n 12: 'lg:grid-cols-12',\n};\n\nexport const colSpan: GridClassesMapping = {\n 1: 'col-span-1',\n 2: 'col-span-2',\n 3: 'col-span-3',\n 4: 'col-span-4',\n 5: 'col-span-5',\n 6: 'col-span-6',\n 7: 'col-span-7',\n 8: 'col-span-8',\n 9: 'col-span-9',\n 10: 'col-span-10',\n 11: 'col-span-11',\n 12: 'col-span-12',\n 13: 'col-span-13',\n};\n\nexport const colSpanSm: GridClassesMapping = {\n 1: 'sm:col-span-1',\n 2: 'sm:col-span-2',\n 3: 'sm:col-span-3',\n 4: 'sm:col-span-4',\n 5: 'sm:col-span-5',\n 6: 'sm:col-span-6',\n 7: 'sm:col-span-7',\n 8: 'sm:col-span-8',\n 9: 'sm:col-span-9',\n 10: 'sm:col-span-10',\n 11: 'sm:col-span-11',\n 12: 'sm:col-span-12',\n 13: 'sm:col-span-13',\n};\n\nexport const colSpanMd: GridClassesMapping = {\n 1: 'md:col-span-1',\n 2: 'md:col-span-2',\n 3: 'md:col-span-3',\n 4: 'md:col-span-4',\n 5: 'md:col-span-5',\n 6: 'md:col-span-6',\n 7: 'md:col-span-7',\n 8: 'md:col-span-8',\n 9: 'md:col-span-9',\n 10: 'md:col-span-10',\n 11: 'md:col-span-11',\n 12: 'md:col-span-12',\n 13: 'md:col-span-13',\n};\n\nexport const colSpanLg: GridClassesMapping = {\n 1: 'lg:col-span-1',\n 2: 'lg:col-span-2',\n 3: 'lg:col-span-3',\n 4: 'lg:col-span-4',\n 5: 'lg:col-span-5',\n 6: 'lg:col-span-6',\n 7: 'lg:col-span-7',\n 8: 'lg:col-span-8',\n 9: 'lg:col-span-9',\n 10: 'lg:col-span-10',\n 11: 'lg:col-span-11',\n 12: 'lg:col-span-12',\n 13: 'lg:col-span-13',\n};\n","import React from 'react';\nimport { GridClassesMapping, gridCols, gridColsLg, gridColsMd, gridColsSm } from './styles';\nimport { cn } from '../../../lib/utils';\n\nconst getGridCols = (numCols: number | undefined, gridColsMapping: GridClassesMapping): string => {\n if (!numCols) return '';\n if (!Object.keys(gridColsMapping).includes(String(numCols))) return '';\n return gridColsMapping[numCols];\n};\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n numItems?: number;\n numItemsSm?: number;\n numItemsMd?: number;\n numItemsLg?: number;\n children: React.ReactNode;\n}\n\nconst Grid = React.forwardRef<HTMLDivElement, GridProps>((props, ref) => {\n const { numItems = 1, numItemsSm, numItemsMd, numItemsLg, children, className, ...other } = props;\n\n const colsBase = getGridCols(numItems, gridCols);\n const colsSm = getGridCols(numItemsSm, gridColsSm);\n const colsMd = getGridCols(numItemsMd, gridColsMd);\n const colsLg = getGridCols(numItemsLg, gridColsLg);\n\n const colClassNames = cn(colsBase, colsSm, colsMd, colsLg);\n\n return (\n <div ref={ref} className={cn('grid', colClassNames, className)} {...other}>\n {children}\n </div>\n );\n});\n\nGrid.displayName = 'Grid';\n\nexport default Grid;\n","import React, { useEffect, useState } from \"react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { ChevronDown, ChevronUp } from \"lucide-react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { cn } from \"../../../lib/utils\";\nimport { JSONSchemaFormState } from \"../../../store/standard/JSONSchemaState\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\n\nconst CollapsibleBox = ({ formKey, title, titleBoxCss, formState, submitButtonProps }: { formKey: string; title: string; titleBoxCss?: string; formState: JSONSchemaFormState<{ [key: string]: any }, UiSchema>; submitButtonProps: any }) => {\n const [opened, setOpened] = useState(true);\n return (\n <div id={`form-${formKey}`}>\n <div\n className=\"mt-5 mb-[10px] flex justify-between items-center cursor-pointer border-t-[1px solid #E5E5EA] py-[5px] hover:bg-[#F2F2F7] dark:hover:bg-gray-900\"\n onClick={() => setOpened((o) => !o)}\n >\n <div className={cn('text-gray-900 dark:text-gray-100 font-bold text-base', titleBoxCss)}>{title}</div>\n {opened ? <ChevronUp /> : <ChevronDown />}\n </div>\n <div className={cn('mt-2', opened ? 'block' : 'hidden')}>\n <JSONSchemaForm formState={formState}>{submitButtonProps && <SubmitButton formKey={formKey} formState={formState} buttonProps={submitButtonProps} />}</JSONSchemaForm>\n </div>\n </div>\n );\n};\n\nexport const ListLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const { $type, ...formLayout } = layoutConfig as LayoutConfigType<T, 'ListLayout'>;\n const formStates = getFormState(props, formLayout);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n const formState = formStates[key];\n return <CollapsibleBox key={key} formKey={key} title={layout?.title || key} titleBoxCss={layout?.titleBoxCss} formState={formState} submitButtonProps={layout?.submitButtonProps} />;\n })}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};","import React, { useEffect } from 'react';\nimport { FormDataType, JSONFormProps, LayoutConfigType } from '..';\nimport { JSONSchemaForm } from '../../../components/JSONSchemaForm';\nimport { BatchSubmitButton, SubmitButton, getFormState } from './format';\n\nexport const SimpleLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const { $type, ...formLayout } = layoutConfig as LayoutConfigType<T, 'SimpleLayout'>;\n const formStates = getFormState(props, formLayout);\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n <div className=\"space-y-2\">\n {Object.keys(formStates).map((key) => {\n const layout = formLayout[key];\n return (\n <div key={key} id={`form-${key}`}>\n <JSONSchemaForm formState={formStates[key]}>{layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}</JSONSchemaForm>\n </div>\n );\n })}\n </div>\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};\n","import React, { useEffect, useMemo, useState } from \"react\";\nimport { Tab, Tabs } from \"@nextui-org/react\";\nimport { FormDataType, JSONFormProps, LayoutConfigType } from \"..\";\nimport { JSONSchemaForm } from \"../../../components/JSONSchemaForm\";\nimport { BatchSubmitButton, SubmitButton, getFormState } from \"./format\";\nimport { cn } from \"../../../lib/utils\";\n\nexport const TabLayout = <T extends FormDataType>(props: JSONFormProps<T>) => {\n const { layoutConfig = {}, onBatchSubmit, batchSubmitButtonProps, onReady } = props;\n const {\n $type,\n $tabsProps = {\n color: 'default',\n },\n ...formLayout\n } = layoutConfig as LayoutConfigType<T, 'TabLayout'>;\n const formStates = useMemo(() => getFormState(props, formLayout), [props.formData, props.formConfig, props.layoutConfig]);\n const formKeys = Object.keys(formStates);\n const [selectedTab, setSelectedTab] = useState(formKeys[0] || '');\n\n useEffect(() => {\n if (formStates && onReady) {\n onReady(formStates);\n }\n }, [formStates]);\n\n return (\n <>\n <Tabs\n {...$tabsProps}\n selectedKey={selectedTab}\n onSelectionChange={(key: string) => {\n setSelectedTab(key);\n }}\n >\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return <Tab id={`form-${key}-tab-menu`} key={key} title={<div className={layout?.titleBoxCss}>{layout?.title || key}</div>} />;\n })}\n </Tabs>\n {formKeys.map((key) => {\n const layout = formLayout[key];\n return (\n <div\n key={key}\n id={`form-${key}-tab-content`}\n className={cn('mt-4', selectedTab === key ? '' : 'hidden')}\n >\n <JSONSchemaForm formState={formStates[key]}>\n {layout?.submitButtonProps && <SubmitButton formKey={key} formState={formStates[key]} buttonProps={layout.submitButtonProps} />}\n </JSONSchemaForm>\n </div>\n );\n })}\n {(onBatchSubmit || batchSubmitButtonProps?.onBatchSubmit) && (\n <div className=\"w-full flex\">\n <BatchSubmitButton formStates={formStates} onSubmit={onBatchSubmit} buttonProps={batchSubmitButtonProps} />\n </div>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { Textarea } from '@nextui-org/react';\nimport { WidgetProps } from '@rjsf/utils';\nimport { cn } from \"../../../lib/utils\";\n\ntype Options = {\n className?: string;\n labelPlacement?: 'inside' | 'outside' | 'outside-left';\n size: 'sm' | 'md' | 'lg',\n maxRows?: number;\n placeholder?: string;\n};\n\nexport interface TextareaWidgetProps extends WidgetProps {\n options: Options;\n}\n\nexport interface TextareaWidgetUIOptions {\n 'ui:widget': (props: TextareaWidgetProps) => JSX.Element;\n 'ui:options': Options;\n}\n\nfunction TextareaWidget(props: TextareaWidgetProps) {\n const { onChange, options, id, label, value, required, disabled, schema } = props;\n const { className, labelPlacement = 'inside', size = 'md', maxRows = 8 } = options;\n const placeholder = props.placeholder || options.placeholder;\n return (\n <Textarea\n id={id}\n className={cn('w-full', className)}\n label={label}\n placeholder={placeholder}\n value={value}\n isRequired={required}\n isDisabled={disabled}\n minRows={3}\n maxRows={maxRows}\n size={size}\n labelPlacement={labelPlacement}\n description={schema.description || ''}\n type={schema.inputType || 'text'}\n onChange={e => onChange(e.target.value)}\n />\n );\n}\n\nexport default TextareaWidget;\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { JSONForm } from \"../../components/JSONForm\";\nimport { useEffect, useMemo } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { FormPlugin } from \".\";\nimport React from \"react\";\n\nconst JSONViewModal = observer(() => {\n const rootStore = useStore();\n const complexFormModal = rootStore.get(FormPlugin);\n const { formData, isOpen } = complexFormModal;\n const store = useLocalObservable(() => ({\n isMobile: false,\n }));\n\n useEffect(() => {\n const handleResize = () => {\n store.isMobile = window.innerWidth < 991;\n };\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => {\n window.removeEventListener('resize', handleResize);\n };\n }, []);\n\n const isMobile = store.isMobile;\n\n const ModalMemo = useMemo(() => {\n if (!formData) {\n return null;\n }\n\n const layoutConfig = { ...complexFormModal.layoutConfig };\n if (isMobile && layoutConfig.$type === 'GridLayout') {\n layoutConfig.$gridColumn = 1;\n Object.keys(layoutConfig).forEach((key) => {\n if (typeof layoutConfig[key] === 'object') {\n // @ts-ignore\n layoutConfig[key].colSpan = 1;\n }\n });\n }\n\n return (\n <Modal\n className={complexFormModal.className}\n classNames={complexFormModal.classNames}\n scrollBehavior={complexFormModal.scrollBehavior}\n isDismissable={complexFormModal.isDismissable}\n isOpen={isOpen}\n size={complexFormModal.modalSize}\n onOpenChange={(open: boolean) => {\n if (!open) {\n complexFormModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {complexFormModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{complexFormModal.title}</ModalHeader>}\n <ModalBody className={cn('max-h-[90vh] overflow-auto')}>\n <JSONForm\n formData={formData}\n formConfig={complexFormModal.formConfig}\n layoutConfig={layoutConfig}\n onBatchSubmit={\n complexFormModal.onBatchSubmit\n ? complexFormModal.onBatchSubmit\n : (data) => {\n complexFormModal.event.emit('batchSubmit', data);\n }\n }\n onSet={complexFormModal.onSet}\n onChange={complexFormModal.onChange}\n onReady={complexFormModal.onReady}\n batchSubmitButtonProps={complexFormModal.batchSubmitButtonProps}\n />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n }, [isOpen, formData, isMobile]);\n\n return ModalMemo;\n});\n\nexport default JSONViewModal;\n","import { Store } from \"../../store/standard/base\";\nimport Provider from \"./Provider\";\nimport { FormConfigType, FormDataOfKey, FormDataType, LayoutConfigType, LayoutType } from \"../../components/JSONForm\";\nimport EventEmitter from \"events\";\nimport { JSONSchemaFormState } from \"../../store/standard/JSONSchemaState\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\nimport { RootStore } from \"../../store\";\nimport React, { Dispatch, SetStateAction } from \"react\";\nimport { ButtonProps, SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\n\nexport class FormPlugin<T extends FormDataType> implements Store {\n sid = 'FormPlugin';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n formData?: T;\n formConfig?: FormConfigType<T>;\n layoutConfig?: LayoutConfigType<T, LayoutType>;\n className = '';\n classNames?: SlotsToClasses<ModalSlots>;\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n isDismissable = true;\n event = new EventEmitter();\n onBatchSubmit?: (data: T, setLoading?: Dispatch<SetStateAction<boolean>>) => void;\n onSet?: (v: FormDataOfKey<T>, form: JSONSchemaFormState<FormDataOfKey<T>, UiSchema>) => FormDataOfKey<T>;\n onChange?: (data: Partial<T>) => void;\n onReady?: (formStates: { [F in keyof T]?: JSONSchemaFormState<FormDataOfKey<T>, UiSchema> }) => void;\n batchSubmitButtonProps?: ButtonProps & { onBatchSubmit?: (formData: T, setLoading: Dispatch<SetStateAction<boolean>>) => void };\n\n constructor(args?: Partial<FormPlugin<T>>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n\n setData(v: Partial<FormPlugin<T>>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.formData = undefined;\n this.formConfig = undefined;\n this.layoutConfig = undefined;\n this.className = '';\n this.classNames = undefined;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.isDismissable = true;\n this.onBatchSubmit = undefined;\n this.onSet = undefined;\n this.onChange = undefined;\n this.onReady = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getComplexFormData<T extends FormDataType>(v: Partial<FormPlugin<T>>) {\n return new Promise<T>((resolve, reject) => {\n const complexFormModal = RootStore.Get(FormPlugin);\n // @ts-ignore\n complexFormModal.setData({\n ...v,\n isOpen: true,\n });\n complexFormModal.event.on('batchSubmit', (formData: T) => {\n if (complexFormModal.onBatchSubmit) {\n complexFormModal.onBatchSubmit(formData);\n } else {\n complexFormModal.close();\n resolve(formData);\n }\n });\n complexFormModal.event.on('abort', () => {\n complexFormModal.close();\n reject('abort');\n });\n });\n}\n","import EventEmitter from \"events\";\nimport React from \"react\";\nimport { UiSchema } from \"@rjsf/utils\";\nimport { makeAutoObservable } from \"mobx\";\n\n\nimport { Store } from \"../../store/standard/base\";\nimport {\n JSONSchemaFormState,\n JSONValue,\n} from \"../../store/standard/JSONSchemaState\";\nimport Provider from \"./Provider\";\nimport SelectWidget from \"../../components/JSONFormWidgets/SelectWidget\";\nimport InputWidget from \"../../components/JSONFormWidgets/InputWidget\";\nimport CheckboxWidget from \"../../components/JSONFormWidgets/CheckboxWidget\";\nimport { RootStore } from \"../../store\";\nimport { SlotsToClasses, ModalSlots } from \"@nextui-org/react\";\n\nexport class FormModalStore<T = { [key: string]: any }> implements Store {\n sid = 'FormModalStore';\n provider = () => <Provider />;\n\n isOpen = false;\n title = '';\n //@ts-ignore\n form: JSONSchemaFormState<T> = null;\n className: string = '';\n classNames?: SlotsToClasses<ModalSlots>;\n modalSize: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full' | 'xs' | '3xl' | '4xl' | '5xl' = 'md';\n scrollBehavior?: 'normal' | 'inside' | 'outside' = 'normal';\n closeOnOverlayClick = false;\n event = new EventEmitter();\n onAfterSubmit?: (data: T) => void;\n\n constructor(args?: Partial<FormModalStore>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n\n setData(v: Partial<FormModalStore>) {\n Object.assign(this, v);\n }\n\n close() {\n this.isOpen = false;\n this.title = '';\n this.form = null;\n this.className = '';\n this.classNames = undefined;\n this.modalSize = 'md';\n this.scrollBehavior = 'normal';\n this.closeOnOverlayClick = false;\n this.onAfterSubmit = undefined;\n this.event.removeAllListeners();\n }\n}\n\nexport async function getFormData<T = { [key: string]: any }>(v: Partial<FormModalStore>) {\n return new Promise<T>((resolve, reject) => {\n const formModal = RootStore.Get(FormModalStore);\n formModal.setData({\n ...v,\n isOpen: true,\n });\n formModal.event.on('afterSubmit', (formData: T) => {\n if (formModal.onAfterSubmit) {\n formModal.onAfterSubmit(formData);\n } else {\n formModal.close();\n resolve(formData);\n }\n });\n formModal.event.on('abort', () => {\n formModal.close();\n reject('abort');\n });\n });\n}\n\nexport function getFormState<T>(\n {\n data,\n metadata = {},\n onSet = (v: T, form) => v,\n onSubmit,\n }: {\n data: T;\n metadata?: { [key: string]: any } & Partial<JSONSchemaFormState<any>>;\n onSet?: (v: T, form: JSONSchemaFormState<T, UiSchema>) => T;\n onSubmit?: (data: T) => void;\n }\n): JSONSchemaFormState<T, UiSchema> {\n const value = {};\n const required = [];\n const props = Object.entries(data).reduce((p, c) => {\n const [k, v] = c;\n const type = typeof v;\n p[k] = {\n type\n };\n if (!metadata[k]) {\n metadata[k] = {};\n }\n if (type === 'string' || type === 'number') {\n if (metadata[k]?.selectOptions) {\n metadata[k]['ui:widget'] = SelectWidget;\n p[k].selectOptions = metadata[k].selectOptions;\n } else {\n if (!metadata[k]['ui:widget']) {\n metadata[k]['ui:widget'] = InputWidget;\n metadata[k]['ui:options'] = {\n // labelPlacement: 'outside-left',\n size: 'sm',\n };\n if (type === 'number') {\n p[k].inputType = 'number';\n }\n }\n }\n }\n if (type === 'boolean') {\n metadata[k]['ui:widget'] = CheckboxWidget;\n metadata[k]['ui:options'] = {\n size: 'sm',\n }\n }\n if (metadata[k]?.inputType) {\n p[k].inputType = metadata[k].inputType;\n delete metadata[k].inputType;\n }\n if (metadata[k]?.title) {\n p[k].title = metadata[k].title || v;\n delete metadata[k].title;\n }\n if (metadata[k]?.description) {\n p[k].description = metadata[k].description;\n delete metadata[k].description;\n }\n // if (metadata[k]?.enum) {\n // p[k].enum = metadata[k].enum;\n // delete metadata[k].enum;\n // }\n // if (metadata[k]?.enumNames) {\n // p[k].enumNames = metadata[k].enumNames;\n // delete metadata[k].enumNames;\n // }\n if (metadata[k]?.required) {\n required.push(k);\n delete metadata[k].required;\n }\n value[k] = v;\n return p;\n }, {});\n const schema = {\n type: 'object',\n properties: props,\n required,\n };\n const form = new JSONSchemaFormState({\n //@ts-ignore\n schema,\n uiSchema: {\n 'ui:submitButtonOptions': {\n norender: false,\n submitText: 'Submit',\n },\n ...metadata,\n },\n afterSubmit(e) {\n if (onSubmit) {\n onSubmit(e.formData as T);\n } else {\n const formModal = RootStore.Get(FormModalStore);\n formModal.event.emit('afterSubmit', e.formData);\n }\n },\n value: new JSONValue({\n default: value,\n //@ts-ignore\n onSet: (v: T) => onSet(v, form),\n }),\n });\n return form;\n}\n\nexport async function getSimpleFormData<T>(\n data: T,\n metadata: { [key: string]: any } & Partial<JSONSchemaFormState<any>> = {},\n config: Partial<FormModalStore>,\n onSet = (v: T, form: JSONSchemaFormState<T, UiSchema>) => {\n return v;\n },\n) {\n const form = getFormState({ data, metadata, onSet });\n return getFormData<T>({\n ...config,\n //@ts-ignore\n form\n });\n}\n","import { Modal, ModalBody, ModalContent, ModalHeader } from '@nextui-org/react';\nimport { observer } from \"mobx-react-lite\";\nimport { JSONSchemaForm } from \"../../components/JSONSchemaForm\";\nimport { useStore } from \"../../store/index\";\nimport Draggable from \"react-draggable\";\nimport { FormModalStore } from \".\";\nimport React from 'react';\n\nconst JSONFormModal = observer(() => {\n const rootStore = useStore();\n const formModal = rootStore.get(FormModalStore);\n const { form, closeOnOverlayClick } = formModal;\n if (!form) {\n return null;\n }\n return (\n <Modal\n className={formModal.className}\n classNames={formModal.classNames}\n scrollBehavior={formModal.scrollBehavior}\n isOpen={formModal.isOpen}\n size={formModal.modalSize}\n isDismissable={!closeOnOverlayClick}\n onOpenChange={(open: boolean) => {\n if (!open) {\n formModal.event.emit('abort');\n }\n }}\n >\n <div className=\"z-50 fixed top-0 left-0 w-screen h-screen flex items-center justify-center\">\n <Draggable handle=\".draggable-handle\">\n <ModalContent>\n {formModal.title && <ModalHeader className=\"flex flex-col gap-1 draggable-handle cursor-move\">{formModal.title}</ModalHeader>}\n <ModalBody className='max-h-[90vh] overflow-auto'>\n <JSONSchemaForm formState={form} />\n </ModalBody>\n </ModalContent>\n </Draggable>\n </div>\n </Modal>\n );\n});\n\nexport default JSONFormModal;\n\n","import React from \"react\";\n\nimport { _ } from \"../../lib/lodash\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\n\nexport type JSONViewType = {\n className?: string;\n children?: any;\n data?: Record<string, JSONDataType>;\n datas?: Record<string, Record<string, JSONDataType> | JSONDataType[]>;\n uiConfig?: {\n type: string;\n className?: Record<string, string>;\n slots?: Record<string, any>;\n [key: string]: any;\n };\n uiConfigs?: Record<string, JSONViewType[\"uiConfig\"]>;\n};\n\nexport type JSONDataType = {\n title?: string;\n icon?: any;\n render?: any;\n className?: string;\n type?: \"divider\" | \"checkbox\" | \"label\" | \"radio\";\n shortcut?: string;\n disabled?: boolean;\n children?: Record<string, JSONDataType>;\n value?: any;\n link?: any;\n events?: Record<string, any>;\n onChange?: (args: { e: any; v: any }) => void;\n onClick?: (args: { e: any; v: any }) => void;\n};\n\nexport class JSONViewPlugin implements Store {\n sid = \"JSONViewPlugin\";\n autoObservable?: boolean = false;\n\n JSONView = {\n Test: {\n name: \"Test\",\n render: () => <div>Test</div>,\n },\n };\n\n onNewStore({\n rootStore,\n store,\n }: {\n rootStore: RootStore<any>;\n store: Store;\n }): void {\n this.crawl(store);\n }\n\n crawl(store: Store) {\n if (store?.JSONView) {\n this.JSONView = { ...this.JSONView, ...store.JSONView };\n }\n }\n\n static JSONView = (props: JSONViewType) => {\n const jsonviewplugin = RootStore.Get(JSONViewPlugin);\n\n return (\n <>\n {/* @ts-ignore */}\n {Object.keys(props.uiConfigs).map((key) => {\n /* @ts-ignore */\n const config = props.uiConfigs[key] as any;\n const data = _.get(props.datas, key);\n const Component = jsonviewplugin.JSONView[config.type].render;\n const rootStore = RootStore.init();\n Object.values(data).forEach((i) => {\n /* @ts-ignore */\n if (i.events) {\n /* @ts-ignore */\n Object.entries(i.events).forEach(([k, v]) => {\n // @ts-ignore \n i[k] = (args) =>\n rootStore.events.emit(v as any, { ...args, action: k });\n });\n }\n });\n\n return <Component key={key} data={data} uiConfig={config} />;\n })}\n </>\n );\n };\n}\n"],"mappings":"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","names":["React","React","React","useState","Button","React","React","React","React","React","React","React","React","_a","formData","useState","React","Button","React","useState","Button","React","useState","SubmitButton","Button","React","React","numColSpan","React","React","React","_a","React","useEffect","useState","ChevronDown","ChevronUp","useState","React","ChevronUp","ChevronDown","useEffect","React","useEffect","useEffect","React","React","useEffect","useState","useState","useEffect","React","React","React","observer","useEffect","useMemo","React","observer","useEffect","useMemo","React","React","React","EventEmitter","React","makeAutoObservable","Modal","ModalBody","ModalContent","ModalHeader","observer","Draggable","React","observer","Modal","Draggable","ModalContent","ModalHeader","ModalBody","Provider_default","React","Provider_default","EventEmitter","makeAutoObservable","getFormState","React","React"]}
|
package/dist/jsontable.mjs
CHANGED
package/dist/metrics.mjs
CHANGED
package/package.json
CHANGED
|
@@ -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"],"sourcesContent":["\"use client\";\n\nimport React, { useEffect, useMemo, useState } from \"react\";\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from \"../ui/table\";\nimport JSONHighlight from \"../Common/JSONHighlight\";\nimport { Button, ButtonProps, Card, Divider, Dropdown, DropdownItem, DropdownMenu, DropdownTrigger, Pagination as NextuiPagination } from '@nextui-org/react';\nimport { ChevronDown, ChevronRight, ChevronUp, ChevronsUpDown } from \"lucide-react\";\nimport { _ } from \"../../lib/lodash\";\nimport { DialogStore } from \"../../module/Dialog\";\nimport { cn } from \"../../lib/utils\";\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 ColumnOptions<T = { [x: 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 = { [x: 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\nexport interface JSONTableProps<T = { [x: string]: any }> {\n className?: string;\n dataSource: T[];\n columnOptions?: ColumnOptions<T>;\n headerKeys?: string[];\n isServerPaging?: boolean;\n extendedTableOptions?: {\n key: string;\n columnOptions?: ColumnOptions<any>;\n // actions?: (item: any) => ActionButtonType[];\n }[];\n rowKey?: string;\n pagination?: PaginationState;\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}\n\nconst JSONTable = observer(<T extends {},>(props: JSONTableProps<T>) => {\n const {\n dataSource,\n columnOptions,\n headerKeys,\n isServerPaging,\n pagination = new PaginationState({\n page: 1,\n limit: 8,\n }),\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 } = 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 useEffect(() => {\n const _keys = dataSource.length > 0 ? Object.keys(dataSource[0]) : [];\n const keys = headerKeys ? headerKeys : columnOptions ? _keys.filter((key) => !columnOptions[key]?.hidden) : _keys;\n const sortableColumns: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n const columns: Column<T>[] = keys\n .map((key) => {\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 className: columnOptions?.[key]?.className,\n };\n })\n .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 store.setData({\n sortableColumns,\n columns,\n sortedData: dataSource,\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 } = store;\n const needExtendedTable = !!extendedTables.length;\n const data = isServerPaging ? store.sortedData : store.sortedData.slice(pagination.offset, pagination.offset + pagination.limit);\n\n const tableBoxElementId = useMemo(() => {\n return autoScrollToTop ? `table-card-${uuid().slice(0, 8)}` : undefined;\n }, []);\n\n if (asCard) {\n return (\n <CardOnMobile\n className={props.className}\n data={data}\n columns={columns}\n columnOptions={columnOptions}\n actions={actions}\n actionsOptions={actionsOptions}\n cardOptions={cardOptions}\n pagination={pagination}\n onRowClick={onRowClick}\n tableBoxElementId={tableBoxElementId}\n />\n );\n }\n\n return (\n <>\n <div className={cn('relative w-full overflow-auto h-[400px]', props.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-[0.8125rem] text-[#64748B] dark:text-gray-300\">{actionsHeadLabel}</TableHead>}\n {columns.map((item, index) => (\n <TableHead className={cn('font-meidum text-[0.8125rem] 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-[0.8125rem] 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} />\n ) : (\n <Body\n key={item[rowKey] || index}\n item={item}\n columns={columns}\n onRowClick={onRowClick}\n rowCss={rowCss}\n actions={actions}\n actionsPlacement={actionsPlacement}\n columnOptions={columnOptions}\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 total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n initialPage={1}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n scrollIntoTop(tableBoxElementId);\n }}\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-[0.8125rem] 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, columns, extendedTables }: { item: T; columns: Column<T>[]; extendedTables: ExtendedTable<any>[] }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <TableRow\n className=\"text-[13px] cursor-pointer\"\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={30} /> : <ChevronRight size={30} />}</TableCell>\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 </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=\"font-bold text-sm 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-sm\" 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(exItem)\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 scrollIntoTop(tableBoxElementId?: string) {\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 default JSONTable;\nexport { JSONTable }\n\nfunction CardOnMobile<T>({\n className,\n data,\n columns,\n columnOptions,\n rowKey,\n actions,\n actionsOptions,\n cardOptions,\n pagination,\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 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-[0.8125rem] text-[#64748B] dark:text-gray-300', option?.labelClassName)}>{column.label}</div>\n <div className={cn('text-[0.8125rem]', 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 total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n initialPage={1}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n scrollIntoTop(tableBoxElementId);\n }}\n />\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;"],"mappings":"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","names":["React","data","columns","React","_a","React"]}
|