@xyo-network/react-payload-table 8.0.0 → 9.0.0

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.
@@ -806,4 +806,4 @@ export {
806
806
  payloadDynamicTableColumnConfigDefaults,
807
807
  payloadTableColumnConfigDefaults
808
808
  };
809
- //# sourceMappingURL=index.mjs.map
809
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1,7 @@
1
- {"version":3,"sources":["../../src/components/DynamicTable/DynamicTableRow.tsx","../../src/components/DynamicTable/PayloadDynamicTableColumnConfig.ts","../../src/components/DynamicTable/Table.tsx","../../src/components/Table/PayloadTableColumnConfig.ts","../../src/components/Table/Table.tsx","../../src/components/Table/TableBody.tsx","../../src/components/Table/TableRow.tsx","../../src/components/Table/TableFooter.tsx","../../src/components/Table/TablePagination.tsx","../../src/components/Table/TableHead.tsx","../../src/components/Table/TableRowNoData.tsx"],"sourcesContent":["import {\n CheckCircleOutlineRounded as CheckCircleOutlineRoundedIcon,\n ErrorOutlineRounded as ErrorOutlineRoundedIcon,\n WarningAmberRounded as WarningAmberRoundedIcon,\n} from '@mui/icons-material'\nimport type {\n AvatarProps, TableCellProps, TableRowProps,\n} from '@mui/material'\nimport {\n TableCell, TableRow, Typography,\n} from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { useNetwork } from '@xyo-network/react-network'\nimport type { PayloadRenderProps } from '@xyo-network/react-payload-plugin'\nimport { usePayloadRenderPluginResolver } from '@xyo-network/react-payload-plugin-resolver'\nimport { HashTableCell, usePayloadHash } from '@xyo-network/react-shared'\nimport type { ComponentType } from 'react'\nimport React, { useMemo } from 'react'\n\nimport type { TableCellRenderer } from '../lib/index.ts'\nimport type {\n PayloadDynamicTableColumnConfig,\n PayloadDynamicTableColumnSlug,\n} from './PayloadDynamicTableColumnConfig.ts'\nimport { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig.ts'\n\nexport interface PayloadDynamicTableRowProps extends TableRowProps {\n /** @deprecated - archives are no longer used */\n archive?: string\n columns?: PayloadDynamicTableColumnConfig\n /** @deprecated - use event listeners instead of link building via props */\n exploreDomain?: string\n network?: string\n payload?: Payload & { sources?: string[] }\n}\n\nexport const PayloadDynamicTableRow: React.FC<PayloadDynamicTableRowProps> = ({\n columns,\n network: networkProp,\n payload,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const payloadHash = usePayloadHash(payload)\n const { network } = useNetwork()\n const { resolver } = usePayloadRenderPluginResolver()\n const [validationErrors = []] = usePromise(async () => (payload ? await new PayloadValidator(payload).validate() : undefined), [payload])\n const isValid = validationErrors.length === 0\n const payloadFieldCount = payload ? Object.keys(PayloadBuilder.hashableFields(payload)).length : 0\n\n const hash: TableCellRenderer = props => (\n <HashTableCell\n key=\"hash\"\n align=\"left\"\n value={payloadHash}\n dataType=\"payload\"\n network={networkProp ?? network?.slug}\n {...props}\n />\n )\n\n const schema: TableCellRenderer = props => (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n <Typography\n variant=\"body2\"\n noWrap\n sx={{ fontFamily: 'monospace' }}\n >\n {payload?.schema}\n </Typography>\n </TableCell>\n )\n\n const details: TableCellRenderer = props => (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n <Typography\n variant=\"body2\"\n noWrap\n sx={{ fontFamily: 'monospace' }}\n >\n {payloadFieldCount}\n </Typography>\n </TableCell>\n )\n\n const render: TableCellRenderer = (props) => {\n const Render: ComponentType<PayloadRenderProps & TableCellProps> | undefined\n = payload ? resolver?.resolve(payload)?.components.table.cell : undefined\n return Render ? <Render payload={payload} {...props} /> : <TableCell key=\"payloads\" align=\"left\" {...props}></TableCell>\n }\n\n const icon: TableCellRenderer = (props) => {\n const Avatar: ComponentType<PayloadRenderProps & AvatarProps> | undefined\n = payload ? resolver?.resolve(payload)?.components.avatar.image : undefined\n\n return (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n {Avatar\n ? <Avatar payload={payload} />\n : null}\n </TableCell>\n )\n }\n\n const valid: TableCellRenderer = props => (\n <TableCell key=\"valid\" align=\"center\" {...props}>\n {isValid === undefined && payload != undefined\n ? <WarningAmberRoundedIcon fontSize=\"small\" color=\"warning\" />\n : isValid === true\n ? <CheckCircleOutlineRoundedIcon fontSize=\"small\" color=\"success\" />\n : isValid === false\n ? <ErrorOutlineRoundedIcon color=\"error\" fontSize=\"small\" />\n // nbsp to keep row height consistent even when no data is provided for the row\n : <Typography> &nbsp;</Typography>}\n </TableCell>\n )\n\n const tableCells: Record<PayloadDynamicTableColumnSlug, TableCellRenderer> = {\n details,\n hash,\n icon,\n render,\n schema,\n valid,\n }\n\n const columnsMemo = useMemo(() => columns ?? payloadDynamicTableColumnConfigDefaults(), [columns])\n\n return breakPoint\n ? (\n <TableRow style={{ maxWidth: '100vw' }} {...props}>\n {columnsMemo[breakPoint]?.map((column) => {\n return column.slug ? tableCells[column.slug]({}) : null\n })}\n </TableRow>\n )\n : null\n}\n","export type PayloadDynamicTableColumnSlug = 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n\nexport interface PayloadDynamicTableColumnHeadData {\n alignment?: 'left' | 'center' | 'right'\n name?: string\n slug?: 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n width?: string | number\n}\n\nexport interface PayloadDynamicTableColumnConfig {\n xs?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n sm?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n md?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n lg?: PayloadDynamicTableColumnHeadData[]\n xl?: PayloadDynamicTableColumnHeadData[]\n}\n\nexport const payloadDynamicTableColumnConfigDefaults = (): PayloadDynamicTableColumnConfig => {\n const xs: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const sm: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const md: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const lg: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const xl: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n return {\n lg, md, sm, xl, xs,\n }\n}\n","import {\n FirstPage as FirstPageIcon, KeyboardArrowLeft, KeyboardArrowRight, LastPage as LastPageIcon,\n} from '@mui/icons-material'\nimport type { TableProps } from '@mui/material'\nimport {\n Alert,\n Box,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableFooter,\n TableHead,\n TablePagination,\n TableRow,\n Typography,\n useTheme,\n} from '@mui/material'\nimport { ThrownErrorBoundary } from '@xylabs/react-error'\nimport { useResetState } from '@xylabs/react-hooks'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { usePayloadHashes } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { PayloadDynamicTableRow } from './DynamicTableRow.tsx'\nimport type { PayloadDynamicTableColumnConfig } from './PayloadDynamicTableColumnConfig.ts'\nimport { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig.ts'\n\nexport interface PayloadDynamicTableProps extends TableProps {\n archive?: string\n columns?: PayloadDynamicTableColumnConfig\n exploreDomain?: string\n onRowClick?: (value: Payload) => void\n payloads?: Payload[] | null\n rowsPerPage?: number\n}\n\ninterface TablePaginationActionsProps {\n count: number\n onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void\n page: number\n rowsPerPage: number\n}\n\nconst TablePaginationActions: React.FC<TablePaginationActionsProps> = (props) => {\n const theme = useTheme()\n const {\n count, page, rowsPerPage, onPageChange,\n } = props\n\n const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label=\"first page\">\n {theme.direction === 'rtl'\n ? <LastPageIcon />\n : <FirstPageIcon />}\n </IconButton>\n <IconButton onClick={handleBackButtonClick} disabled={page === 0} aria-label=\"previous page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowRight />\n : <KeyboardArrowLeft />}\n </IconButton>\n <IconButton onClick={handleNextButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"next page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowLeft />\n : <KeyboardArrowRight />}\n </IconButton>\n <IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"last page\">\n {theme.direction === 'rtl'\n ? <FirstPageIcon />\n : <LastPageIcon />}\n </IconButton>\n </Box>\n )\n}\n\nexport const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({\n archive,\n children,\n columns,\n exploreDomain,\n onRowClick,\n rowsPerPage: rowsPerPageProp = 10,\n payloads,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const [page, setPage] = useState(0)\n const [rowsPerPage, setRowsPerPage] = useResetState(rowsPerPageProp)\n const payloadCount = payloads ? payloads.length : 0\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - payloadCount) : 0\n\n const pagedPayloads = useMemo(() => payloads?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage), [payloads, page, rowsPerPage])\n\n const payloadPairs = usePayloadHashes(pagedPayloads)\n\n const handleChangePage = (event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {\n setPage(newPage)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(Number.parseInt(event.target.value, 10))\n setPage(0)\n }\n\n return breakPoint\n ? (\n <Table stickyHeader {...props}>\n <TableHead>\n <TableRow>\n {(columns ?? payloadDynamicTableColumnConfigDefaults())[breakPoint]?.map((column) => {\n return (\n <TableCell\n key={column.name}\n align={column.alignment ?? 'left'}\n sx={{ width: column.width }}\n >\n <Typography variant=\"body2\" noWrap>\n {column.name}\n </Typography>\n </TableCell>\n )\n })}\n </TableRow>\n </TableHead>\n <TableBody sx={{ overflowY: 'scroll ' }}>\n {payloadPairs?.map(([payload, hash]) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={hash}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography sx={{ fontWeight: 'bold' }}>\n {e.message}\n </Typography>\n </Alert>\n )}\n >\n <PayloadDynamicTableRow\n archive={archive}\n onClick={\n onRowClick\n ? () => {\n onRowClick(payload)\n }\n : undefined\n }\n exploreDomain={exploreDomain}\n payload={payload}\n />\n </ThrownErrorBoundary>\n )\n })}\n {children}\n {emptyRows ? (Array.from({ length: emptyRows }).fill(<PayloadDynamicTableRow />) as ReactNode[]) : null}\n </TableBody>\n <TableFooter>\n <TableRow>\n <TablePagination\n rowsPerPageOptions={[5, 10, 25, { label: 'All', value: -1 }]}\n colSpan={5}\n count={payloadCount}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\n slotProps={{\n select: {\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n },\n }}\n />\n </TableRow>\n </TableFooter>\n </Table>\n )\n : null\n}\n","import type { TableColumnConfig, TableColumnNames } from './lib/index.ts'\n\nexport type PayloadTableColumnConfig = TableColumnConfig<PayloadTableColumnSlug>\n\nexport type PayloadTableColumnSlug = 'hash' | 'schema' | 'valid' | string\n\nexport const payloadColumnNames: TableColumnNames<PayloadTableColumnSlug> = {\n hash: 'Hash',\n schema: 'Schema',\n valid: 'Valid',\n}\n\nexport const payloadTableColumnConfigDefaults = (): PayloadTableColumnConfig => {\n const xs: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const sm: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const md: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const lg: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const xl: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n return {\n lg, md, sm, xl, xs,\n }\n}\n","import { type Hash, isDefinedNotNull } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { TableExProps } from '@xyo-network/react-table'\nimport { TableEx } from '@xyo-network/react-table'\nimport type { ComponentType } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts'\nimport { PayloadTableBody } from './TableBody.tsx'\nimport { PayloadTableFooter } from './TableFooter.tsx'\nimport { PayloadTableHead } from './TableHead.tsx'\nimport { TableRowNoData } from './TableRowNoData.tsx'\nimport type {\n PayloadTableBodyProps, PayloadTableFooterProps, PayloadTableHeadProps,\n} from './types/index.ts'\n\nexport interface PayloadTableProps extends TableExProps {\n PayloadTableBodyComponent?: ComponentType<PayloadTableBodyProps>\n PayloadTableFooterComponent?: ComponentType<PayloadTableFooterProps>\n PayloadTableHeadComponent?: ComponentType<PayloadTableHeadProps>\n /** @deprecated - archives are no longer used */\n archive?: string\n clickableFields?: PayloadTableColumnSlug[]\n columns?: PayloadTableColumnConfig\n /** Total number of payloads passed */\n count?: number\n /** @deprecated - use events to build links instead of passing props */\n exploreDomain?: string\n /** External trigger to fetch more payloads */\n fetchMorePayloads?: () => void\n loading?: boolean\n /** set number of schema parts to display starting from the end */\n maxSchemaDepth?: number\n onHashClick?: (value: Hash) => void\n onRowClick?: (value: Payload) => void\n payloads?: Payload[] | null\n rowsPerPage?: number\n}\n\nexport const PayloadTableWithRef: React.FC<PayloadTableProps> = (\n {\n clickableFields,\n onHashClick,\n onRowClick,\n fetchMorePayloads,\n rowsPerPage: rowsPerPageProp = 25,\n payloads,\n columns,\n PayloadTableHeadComponent = PayloadTableHead,\n PayloadTableBodyComponent = PayloadTableBody,\n PayloadTableFooterComponent = PayloadTableFooter,\n maxSchemaDepth,\n count = 0,\n loading = false,\n variant = 'scrollable',\n ...props\n },\n) => {\n const [page, setPage] = useState(0)\n const [rowsPerPage, setRowsPerPage] = useState(rowsPerPageProp)\n const [previousRowsPerPage, setPreviousRowsPerPage] = useState(rowsPerPageProp)\n if (rowsPerPageProp !== previousRowsPerPage) {\n setPreviousRowsPerPage(rowsPerPageProp)\n setRowsPerPage(rowsPerPageProp)\n }\n const [visiblePayloads, setVisiblePayloads] = useState<Payload[]>([])\n\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - count || 0) : 0\n\n // React to various prop changes to derive new visible payloads\n // count is needed to show initial payloads added async to the same payloads reference\n const [previousPayloads, setPreviousPayloads] = useState(payloads)\n if (payloads !== previousPayloads) {\n // If the payload reference changes, assume we have a new list and reset current page\n setPreviousPayloads(payloads)\n setPage(0)\n if (isDefinedNotNull(payloads)) {\n setVisiblePayloads(payloads.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage))\n }\n }\n\n const handleAdditionalPayloads = () => {\n if (fetchMorePayloads && payloads) {\n const buffer = rowsPerPage * 2\n const lastVisiblePayload = visiblePayloads?.at(-1)\n if (lastVisiblePayload) {\n const lastVisibleIndex = payloads?.indexOf(lastVisiblePayload)\n if (lastVisibleIndex !== undefined && payloads.length - (lastVisibleIndex + 1) <= buffer) {\n fetchMorePayloads()\n }\n }\n }\n }\n\n const handleChangePage = (_event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {\n handleAdditionalPayloads()\n setPage(newPage)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(Number.parseInt(event.target.value, 10))\n setPage(0)\n }\n\n const noResults = useMemo(() => {\n return !loading && (visiblePayloads.length === 0)\n }, [loading, visiblePayloads])\n\n return (\n <TableEx variant={variant} {...props}>\n <PayloadTableHeadComponent columns={columns} />\n <PayloadTableBodyComponent\n clickableFields={clickableFields}\n payloads={visiblePayloads}\n maxSchemaDepth={maxSchemaDepth}\n onRowClick={onRowClick}\n onHashClick={onHashClick}\n emptyRows={emptyRows}\n noResults={noResults}\n NoResultRowComponent={TableRowNoData}\n />\n <PayloadTableFooterComponent\n count={count}\n variant={variant}\n rowsPerPage={rowsPerPage}\n handleChangePage={handleChangePage}\n handleChangeRowsPerPage={handleChangeRowsPerPage}\n fetchMorePayloads={fetchMorePayloads}\n loading={loading}\n page={page}\n />\n </TableEx>\n )\n}\n\nPayloadTableWithRef.displayName = 'PayloadTable'\n\nexport const PayloadTable = PayloadTableWithRef\n","import {\n Alert, TableBody, Typography,\n} from '@mui/material'\nimport { ThrownErrorBoundary } from '@xylabs/react-error'\nimport { usePayloadHashes } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport { PayloadTableRow } from './TableRow.tsx'\nimport type { PayloadTableBodyProps } from './types/index.ts'\n\nexport const PayloadTableBody: React.FC<PayloadTableBodyProps> = ({\n children,\n clickableFields,\n payloads,\n maxSchemaDepth,\n onHashClick,\n onRowClick,\n emptyRows,\n noResults,\n NoResultRowComponent,\n ...props\n}) => {\n const payloadPairs = usePayloadHashes(payloads)\n\n return (\n <TableBody {...props}>\n {noResults && NoResultRowComponent\n ? <NoResultRowComponent />\n : null}\n {payloadPairs?.map(([payload, hash]) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={hash}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography sx={{ fontWeight: 'bold' }}>\n {e.message}\n </Typography>\n </Alert>\n )}\n >\n <PayloadTableRow\n clickableFields={clickableFields}\n maxSchemaDepth={maxSchemaDepth}\n onClick={\n onRowClick\n ? () => {\n onRowClick(payload)\n }\n : undefined\n }\n onHashClick={onHashClick}\n payload={payload}\n />\n </ThrownErrorBoundary>\n )\n })}\n {children}\n {emptyRows ? (Array.from({ length: emptyRows }).fill(<PayloadTableRow />) as ReactNode[]) : null}\n </TableBody>\n )\n}\n","import {\n CheckCircleOutlineRounded as CheckCircleOutlineRoundedIcon,\n ErrorOutlineRounded as ErrorOutlineRoundedIcon,\n WarningAmberRounded as WarningAmberRoundedIcon,\n} from '@mui/icons-material'\nimport type { TableRowProps } from '@mui/material'\nimport {\n alpha, Link, TableCell, TableRow, Typography,\n} from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { useEvent } from '@xyo-network/react-event'\nimport { HashTableCell, usePayloadHash } from '@xyo-network/react-shared'\nimport React, { useMemo } from 'react'\n\nimport type { TableCellRenderer } from '../lib/index.ts'\nimport type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts'\nimport { payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig.ts'\n\nexport interface PayloadTableRowProps extends TableRowProps {\n /** @deprecated - archives are no longer used */\n archive?: string\n clickableFields?: PayloadTableColumnSlug[]\n columns?: PayloadTableColumnConfig\n /** @deprecated - use event listeners instead of link building via props */\n exploreDomain?: string\n maxSchemaDepth?: number\n network?: string\n onHashClick?: (value: Hash) => void\n payload?: Payload\n}\n\nexport const PayloadTableRow: React.FC<PayloadTableRowProps> = ({\n clickableFields,\n columns,\n maxSchemaDepth,\n network: networkProp,\n onHashClick,\n payload,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const payloadHash = usePayloadHash(payload)\n const [anchorRef, dispatch] = useEvent<HTMLAnchorElement>()\n const [errors = []] = usePromise(async () => (payload ? await new PayloadValidator(payload).validate() : undefined), [payload])\n const isValid = errors.length === 0\n\n const hash: TableCellRenderer = props => (\n <HashTableCell\n dataType=\"payload\"\n key=\"hash\"\n onHashClick={onHashClick}\n value={payloadHash}\n width=\"100%\"\n {...props}\n >\n {isDefined(payloadHash) && (\n <>\n {clickableFields?.includes('hash')\n ? (\n <Link onClick={() => dispatch('hash', 'click', payloadHash)} ref={anchorRef} sx={{ cursor: 'pointer' }}>{payloadHash}</Link>\n )\n : payloadHash}\n </>\n )}\n </HashTableCell>\n )\n\n const reduceSchemaDepth = (schema?: string, maxSchemaDepth?: number) => {\n if (isDefined(maxSchemaDepth)) {\n const parts = schema?.split('.') ?? []\n const partsToRemove = Math.max(parts.length - maxSchemaDepth, 0)\n if (partsToRemove > 0) {\n return (\n <>\n <>&#x2026;</>\n {\n\n `${parts.slice(partsToRemove).reduce((previousValue, part) => previousValue + '.' + part, '')}`\n }\n </>\n )\n }\n }\n return schema\n }\n\n const schema: TableCellRenderer = props => (\n <TableCell title={payload?.schema} key=\"payloads\" align=\"center\" {...props}>\n <Typography\n variant=\"body2\"\n noWrap\n sx={{ fontFamily: 'monospace' }}\n >\n {clickableFields?.includes('schema')\n ? (\n <Link sx={{ cursor: 'pointer' }}>{reduceSchemaDepth(payload?.schema, maxSchemaDepth)}</Link>\n )\n : reduceSchemaDepth(payload?.schema, maxSchemaDepth)}\n\n </Typography>\n </TableCell>\n )\n\n const valid: TableCellRenderer = props => (\n <TableCell key=\"valid\" align=\"center\" {...props}>\n {isValid === undefined && payload != undefined\n ? <WarningAmberRoundedIcon fontSize=\"small\" color=\"warning\" />\n : isValid === true\n ? <CheckCircleOutlineRoundedIcon fontSize=\"small\" color=\"success\" />\n : isValid === false\n ? <ErrorOutlineRoundedIcon color=\"error\" fontSize=\"small\" />\n // to keep row height consistent when no data provided, may need fix later\n : <ErrorOutlineRoundedIcon sx={{ color: alpha('#fff', 0) }} fontSize=\"small\" />}\n </TableCell>\n )\n\n const tableCells: Record<PayloadTableColumnSlug, TableCellRenderer> = {\n hash,\n schema,\n valid,\n }\n\n const columnsMemo = useMemo(() => columns ?? payloadTableColumnConfigDefaults(), [columns])\n\n return isDefined(breakPoint)\n ? (\n <TableRow style={{ maxWidth: '100vw' }} {...props}>\n {columnsMemo[breakPoint]?.map((column) => {\n return tableCells[column]({})\n })}\n </TableRow>\n )\n : null\n}\n","import {\n styled, TablePagination, TableRow,\n} from '@mui/material'\nimport { TableFooterEx } from '@xyo-network/react-table'\nimport React from 'react'\n\nimport { TablePaginationActions } from './TablePagination.tsx'\nimport type { PayloadTableFooterProps } from './types/index.ts'\n\nexport const PayloadTableFooter: React.FC<PayloadTableFooterProps> = ({\n count,\n variant,\n page,\n rowsPerPage,\n handleChangePage,\n handleChangeRowsPerPage,\n fetchMorePayloads,\n loading,\n}) => (\n <TableFooterEx variant={variant}>\n <TableRow>\n <StyledTablePagination\n rowsPerPageOptions={[5, 10, 25, { label: 'All', value: -1 }]}\n count={count ?? 0}\n rowsPerPage={rowsPerPage ?? 10}\n page={page ?? 0}\n slotProps={{\n select: {\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n },\n }}\n onPageChange={handleChangePage ?? (() => { /* noop */ })}\n onRowsPerPageChange={handleChangeRowsPerPage ?? (() => { /* noop */ })}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ActionsComponent={(props: any) => <TablePaginationActions enableNextPage={!!fetchMorePayloads} loading={loading} {...props} />}\n />\n </TableRow>\n </TableFooterEx>\n)\n\nconst StyledTablePagination = styled(TablePagination)(({ theme }) => ({\n '& > .MuiToolbar-root': { paddingLeft: theme.spacing(1) },\n 'borderTop': '1px solid',\n 'borderTopColor': theme.vars.palette.divider,\n}))\n","import {\n FirstPage as FirstPageIcon, KeyboardArrowLeft, KeyboardArrowRight, LastPage as LastPageIcon,\n} from '@mui/icons-material'\nimport {\n Box, CircularProgress, IconButton, useTheme,\n} from '@mui/material'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport type { PaginationNouns } from './types/index.ts'\n\nexport interface TablePaginationActionsProps {\n count: number\n enableNextPage?: boolean\n loading?: boolean\n onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void\n page: number\n rowsPerPage: number\n}\n\nexport function TablePaginationActions({\n count, enableNextPage, loading, onPageChange, page, rowsPerPage,\n}: Readonly<TablePaginationActionsProps>) {\n const theme = useTheme()\n const [paginationRef, paginationDispatch] = useEvent<HTMLButtonElement, PaginationNouns>()\n\n const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('firstPage', 'click', 'true')\n onPageChange(event, 0)\n }\n\n const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('previousPage', 'click', (page - 1)?.toString())\n onPageChange(event, page - 1)\n }\n\n const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('nextPage', 'click', (page + 1)?.toString())\n onPageChange(event, page + 1)\n }\n\n const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('lastPage', 'click', 'true')\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))\n }\n\n return (\n <>\n {loading\n ? (\n <CircularProgress\n size=\"small\"\n sx={{\n height: theme.spacing(2), position: 'absolute', width: theme.spacing(2),\n }}\n />\n )\n : null}\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label=\"first page\">\n {theme.direction === 'rtl'\n ? <LastPageIcon />\n : <FirstPageIcon />}\n </IconButton>\n <IconButton ref={paginationRef} onClick={handleBackButtonClick} disabled={page === 0} aria-label=\"previous page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowRight />\n : <KeyboardArrowLeft />}\n </IconButton>\n <IconButton\n ref={paginationRef}\n onClick={handleNextButtonClick}\n disabled={!enableNextPage && page >= Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"next page\"\n >\n {theme.direction === 'rtl'\n ? <KeyboardArrowLeft />\n : <KeyboardArrowRight />}\n </IconButton>\n <IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"last page\">\n {theme.direction === 'rtl'\n ? <FirstPageIcon />\n : <LastPageIcon />}\n </IconButton>\n </Box>\n </>\n )\n}\n","import {\n TableCell, TableHead, TableRow, Typography,\n} from '@mui/material'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport React, { useMemo } from 'react'\n\nimport type { PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts'\nimport { payloadColumnNames, payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig.ts'\nimport type { PayloadTableHeadProps } from './types/index.ts'\n\nexport const PayloadTableHead: React.FC<PayloadTableHeadProps<PayloadTableColumnSlug>> = ({ columns, ...props }) => {\n const breakPoint = useBreakpoint()\n const columnsMemo = useMemo(() => columns ?? payloadTableColumnConfigDefaults(), [columns])\n return (\n <TableHead {...props}>\n <TableRow>\n {breakPoint\n ? columnsMemo[breakPoint]?.map((column, index) => {\n return (\n <TableCell\n key={column}\n align={index === 0 ? 'left' : 'center'}\n sx={{ width: index === 0 ? '100%' : undefined }}\n >\n <Typography variant=\"body2\" noWrap>\n {payloadColumnNames[column]}\n </Typography>\n </TableCell>\n )\n })\n : null}\n </TableRow>\n </TableHead>\n )\n}\n","import type { TableRowProps, TypographyProps } from '@mui/material'\nimport {\n styled, TableCell, TableRow, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface TableRowNoDataProps extends TableRowProps {\n additionalCells?: number\n hideBorder?: boolean\n typographyProps?: TypographyProps\n}\n\nexport const TableRowNoData: React.FC<TableRowNoDataProps> = ({\n additionalCells, hideBorder = false, typographyProps, ...props\n}) => {\n return (\n <TableRow {...props}>\n <StyledTableCell hideBorder={hideBorder}>\n <Typography variant=\"body2\" {...typographyProps}>\n No Data To Display...\n </Typography>\n </StyledTableCell>\n {additionalCells\n ? Array.from({ length: additionalCells })\n .fill(null)\n // eslint-disable-next-line react-x/no-array-index-key\n .map((_fill, index) => <StyledTableCell key={`empty-row-${index}`} hideBorder={hideBorder} />)\n : null}\n </TableRow>\n )\n}\n\ninterface StyledTableCellProps {\n hideBorder?: boolean\n}\n\nconst StyledTableCell = styled(TableCell, {\n name: 'StyledTableCell',\n shouldForwardProp: (prop: string) => prop !== 'hideBorder',\n})<StyledTableCellProps>(({ hideBorder }) => ({ ...(hideBorder && { border: 'none' }) }))\n"],"mappings":"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","names":["props","TableCell","TableRow","Typography","useBreakpoint","useMemo","jsx","useBreakpoint","useMemo","TableRow","TableCell","Typography","useMemo","useState","Alert","TableBody","Typography","ThrownErrorBoundary","usePayloadHashes","CheckCircleOutlineRoundedIcon","ErrorOutlineRoundedIcon","WarningAmberRoundedIcon","TableCell","TableRow","Typography","usePromise","useBreakpoint","PayloadValidator","HashTableCell","usePayloadHash","useMemo","jsx","jsxs","useBreakpoint","usePayloadHash","usePromise","PayloadValidator","props","HashTableCell","schema","maxSchemaDepth","TableCell","Typography","WarningAmberRoundedIcon","CheckCircleOutlineRoundedIcon","ErrorOutlineRoundedIcon","useMemo","TableRow","jsx","jsxs","usePayloadHashes","TableBody","ThrownErrorBoundary","Alert","Typography","TablePagination","TableRow","FirstPageIcon","KeyboardArrowLeft","KeyboardArrowRight","LastPageIcon","Box","IconButton","useTheme","useEvent","Fragment","jsx","jsxs","TablePaginationActions","jsx","TableRow","TablePaginationActions","TablePagination","TableCell","TableHead","TableRow","Typography","useBreakpoint","useMemo","jsx","useBreakpoint","useMemo","TableHead","TableRow","TableCell","Typography","styled","TableCell","TableRow","Typography","jsx","jsxs","jsx","jsxs","useState","useMemo"]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/components/DynamicTable/DynamicTableRow.tsx", "../../src/components/DynamicTable/PayloadDynamicTableColumnConfig.ts", "../../src/components/DynamicTable/Table.tsx", "../../src/components/Table/PayloadTableColumnConfig.ts", "../../src/components/Table/Table.tsx", "../../src/components/Table/TableBody.tsx", "../../src/components/Table/TableRow.tsx", "../../src/components/Table/TableFooter.tsx", "../../src/components/Table/TablePagination.tsx", "../../src/components/Table/TableHead.tsx", "../../src/components/Table/TableRowNoData.tsx"],
4
+ "sourcesContent": ["import {\n CheckCircleOutlineRounded as CheckCircleOutlineRoundedIcon,\n ErrorOutlineRounded as ErrorOutlineRoundedIcon,\n WarningAmberRounded as WarningAmberRoundedIcon,\n} from '@mui/icons-material'\nimport type {\n AvatarProps, TableCellProps, TableRowProps,\n} from '@mui/material'\nimport {\n TableCell, TableRow, Typography,\n} from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { useNetwork } from '@xyo-network/react-network'\nimport type { PayloadRenderProps } from '@xyo-network/react-payload-plugin'\nimport { usePayloadRenderPluginResolver } from '@xyo-network/react-payload-plugin-resolver'\nimport { HashTableCell, usePayloadHash } from '@xyo-network/react-shared'\nimport type { ComponentType } from 'react'\nimport React, { useMemo } from 'react'\n\nimport type { TableCellRenderer } from '../lib/index.ts'\nimport type {\n PayloadDynamicTableColumnConfig,\n PayloadDynamicTableColumnSlug,\n} from './PayloadDynamicTableColumnConfig.ts'\nimport { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig.ts'\n\nexport interface PayloadDynamicTableRowProps extends TableRowProps {\n /** @deprecated - archives are no longer used */\n archive?: string\n columns?: PayloadDynamicTableColumnConfig\n /** @deprecated - use event listeners instead of link building via props */\n exploreDomain?: string\n network?: string\n payload?: Payload & { sources?: string[] }\n}\n\nexport const PayloadDynamicTableRow: React.FC<PayloadDynamicTableRowProps> = ({\n columns,\n network: networkProp,\n payload,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const payloadHash = usePayloadHash(payload)\n const { network } = useNetwork()\n const { resolver } = usePayloadRenderPluginResolver()\n const [validationErrors = []] = usePromise(async () => (payload ? await new PayloadValidator(payload).validate() : undefined), [payload])\n const isValid = validationErrors.length === 0\n const payloadFieldCount = payload ? Object.keys(PayloadBuilder.hashableFields(payload)).length : 0\n\n const hash: TableCellRenderer = props => (\n <HashTableCell\n key=\"hash\"\n align=\"left\"\n value={payloadHash}\n dataType=\"payload\"\n network={networkProp ?? network?.slug}\n {...props}\n />\n )\n\n const schema: TableCellRenderer = props => (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n <Typography\n variant=\"body2\"\n noWrap\n sx={{ fontFamily: 'monospace' }}\n >\n {payload?.schema}\n </Typography>\n </TableCell>\n )\n\n const details: TableCellRenderer = props => (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n <Typography\n variant=\"body2\"\n noWrap\n sx={{ fontFamily: 'monospace' }}\n >\n {payloadFieldCount}\n </Typography>\n </TableCell>\n )\n\n const render: TableCellRenderer = (props) => {\n const Render: ComponentType<PayloadRenderProps & TableCellProps> | undefined\n = payload ? resolver?.resolve(payload)?.components.table.cell : undefined\n return Render ? <Render payload={payload} {...props} /> : <TableCell key=\"payloads\" align=\"left\" {...props}></TableCell>\n }\n\n const icon: TableCellRenderer = (props) => {\n const Avatar: ComponentType<PayloadRenderProps & AvatarProps> | undefined\n = payload ? resolver?.resolve(payload)?.components.avatar.image : undefined\n\n return (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n {Avatar\n ? <Avatar payload={payload} />\n : null}\n </TableCell>\n )\n }\n\n const valid: TableCellRenderer = props => (\n <TableCell key=\"valid\" align=\"center\" {...props}>\n {isValid === undefined && payload != undefined\n ? <WarningAmberRoundedIcon fontSize=\"small\" color=\"warning\" />\n : isValid === true\n ? <CheckCircleOutlineRoundedIcon fontSize=\"small\" color=\"success\" />\n : isValid === false\n ? <ErrorOutlineRoundedIcon color=\"error\" fontSize=\"small\" />\n // nbsp to keep row height consistent even when no data is provided for the row\n : <Typography> &nbsp;</Typography>}\n </TableCell>\n )\n\n const tableCells: Record<PayloadDynamicTableColumnSlug, TableCellRenderer> = {\n details,\n hash,\n icon,\n render,\n schema,\n valid,\n }\n\n const columnsMemo = useMemo(() => columns ?? payloadDynamicTableColumnConfigDefaults(), [columns])\n\n return breakPoint\n ? (\n <TableRow style={{ maxWidth: '100vw' }} {...props}>\n {columnsMemo[breakPoint]?.map((column) => {\n return column.slug ? tableCells[column.slug]({}) : null\n })}\n </TableRow>\n )\n : null\n}\n", "export type PayloadDynamicTableColumnSlug = 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n\nexport interface PayloadDynamicTableColumnHeadData {\n alignment?: 'left' | 'center' | 'right'\n name?: string\n slug?: 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n width?: string | number\n}\n\nexport interface PayloadDynamicTableColumnConfig {\n xs?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n sm?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n md?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n lg?: PayloadDynamicTableColumnHeadData[]\n xl?: PayloadDynamicTableColumnHeadData[]\n}\n\nexport const payloadDynamicTableColumnConfigDefaults = (): PayloadDynamicTableColumnConfig => {\n const xs: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const sm: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const md: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const lg: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const xl: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n return {\n lg, md, sm, xl, xs,\n }\n}\n", "import {\n FirstPage as FirstPageIcon, KeyboardArrowLeft, KeyboardArrowRight, LastPage as LastPageIcon,\n} from '@mui/icons-material'\nimport type { TableProps } from '@mui/material'\nimport {\n Alert,\n Box,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableFooter,\n TableHead,\n TablePagination,\n TableRow,\n Typography,\n useTheme,\n} from '@mui/material'\nimport { ThrownErrorBoundary } from '@xylabs/react-error'\nimport { useResetState } from '@xylabs/react-hooks'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { usePayloadHashes } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { PayloadDynamicTableRow } from './DynamicTableRow.tsx'\nimport type { PayloadDynamicTableColumnConfig } from './PayloadDynamicTableColumnConfig.ts'\nimport { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig.ts'\n\nexport interface PayloadDynamicTableProps extends TableProps {\n archive?: string\n columns?: PayloadDynamicTableColumnConfig\n exploreDomain?: string\n onRowClick?: (value: Payload) => void\n payloads?: Payload[] | null\n rowsPerPage?: number\n}\n\ninterface TablePaginationActionsProps {\n count: number\n onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void\n page: number\n rowsPerPage: number\n}\n\nconst TablePaginationActions: React.FC<TablePaginationActionsProps> = (props) => {\n const theme = useTheme()\n const {\n count, page, rowsPerPage, onPageChange,\n } = props\n\n const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label=\"first page\">\n {theme.direction === 'rtl'\n ? <LastPageIcon />\n : <FirstPageIcon />}\n </IconButton>\n <IconButton onClick={handleBackButtonClick} disabled={page === 0} aria-label=\"previous page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowRight />\n : <KeyboardArrowLeft />}\n </IconButton>\n <IconButton onClick={handleNextButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"next page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowLeft />\n : <KeyboardArrowRight />}\n </IconButton>\n <IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"last page\">\n {theme.direction === 'rtl'\n ? <FirstPageIcon />\n : <LastPageIcon />}\n </IconButton>\n </Box>\n )\n}\n\nexport const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({\n archive,\n children,\n columns,\n exploreDomain,\n onRowClick,\n rowsPerPage: rowsPerPageProp = 10,\n payloads,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const [page, setPage] = useState(0)\n const [rowsPerPage, setRowsPerPage] = useResetState(rowsPerPageProp)\n const payloadCount = payloads ? payloads.length : 0\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - payloadCount) : 0\n\n const pagedPayloads = useMemo(() => payloads?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage), [payloads, page, rowsPerPage])\n\n const payloadPairs = usePayloadHashes(pagedPayloads)\n\n const handleChangePage = (event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {\n setPage(newPage)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(Number.parseInt(event.target.value, 10))\n setPage(0)\n }\n\n return breakPoint\n ? (\n <Table stickyHeader {...props}>\n <TableHead>\n <TableRow>\n {(columns ?? payloadDynamicTableColumnConfigDefaults())[breakPoint]?.map((column) => {\n return (\n <TableCell\n key={column.name}\n align={column.alignment ?? 'left'}\n sx={{ width: column.width }}\n >\n <Typography variant=\"body2\" noWrap>\n {column.name}\n </Typography>\n </TableCell>\n )\n })}\n </TableRow>\n </TableHead>\n <TableBody sx={{ overflowY: 'scroll ' }}>\n {payloadPairs?.map(([payload, hash]) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={hash}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography sx={{ fontWeight: 'bold' }}>\n {e.message}\n </Typography>\n </Alert>\n )}\n >\n <PayloadDynamicTableRow\n archive={archive}\n onClick={\n onRowClick\n ? () => {\n onRowClick(payload)\n }\n : undefined\n }\n exploreDomain={exploreDomain}\n payload={payload}\n />\n </ThrownErrorBoundary>\n )\n })}\n {children}\n {emptyRows ? (Array.from({ length: emptyRows }).fill(<PayloadDynamicTableRow />) as ReactNode[]) : null}\n </TableBody>\n <TableFooter>\n <TableRow>\n <TablePagination\n rowsPerPageOptions={[5, 10, 25, { label: 'All', value: -1 }]}\n colSpan={5}\n count={payloadCount}\n rowsPerPage={rowsPerPage}\n page={page}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\n slotProps={{\n select: {\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n },\n }}\n />\n </TableRow>\n </TableFooter>\n </Table>\n )\n : null\n}\n", "import type { TableColumnConfig, TableColumnNames } from './lib/index.ts'\n\nexport type PayloadTableColumnConfig = TableColumnConfig<PayloadTableColumnSlug>\n\nexport type PayloadTableColumnSlug = 'hash' | 'schema' | 'valid' | string\n\nexport const payloadColumnNames: TableColumnNames<PayloadTableColumnSlug> = {\n hash: 'Hash',\n schema: 'Schema',\n valid: 'Valid',\n}\n\nexport const payloadTableColumnConfigDefaults = (): PayloadTableColumnConfig => {\n const xs: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const sm: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const md: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const lg: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n const xl: PayloadTableColumnSlug[] = ['hash', 'schema', 'valid']\n return {\n lg, md, sm, xl, xs,\n }\n}\n", "import { type Hash, isDefinedNotNull } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { TableExProps } from '@xyo-network/react-table'\nimport { TableEx } from '@xyo-network/react-table'\nimport type { ComponentType } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts'\nimport { PayloadTableBody } from './TableBody.tsx'\nimport { PayloadTableFooter } from './TableFooter.tsx'\nimport { PayloadTableHead } from './TableHead.tsx'\nimport { TableRowNoData } from './TableRowNoData.tsx'\nimport type {\n PayloadTableBodyProps, PayloadTableFooterProps, PayloadTableHeadProps,\n} from './types/index.ts'\n\nexport interface PayloadTableProps extends TableExProps {\n PayloadTableBodyComponent?: ComponentType<PayloadTableBodyProps>\n PayloadTableFooterComponent?: ComponentType<PayloadTableFooterProps>\n PayloadTableHeadComponent?: ComponentType<PayloadTableHeadProps>\n /** @deprecated - archives are no longer used */\n archive?: string\n clickableFields?: PayloadTableColumnSlug[]\n columns?: PayloadTableColumnConfig\n /** Total number of payloads passed */\n count?: number\n /** @deprecated - use events to build links instead of passing props */\n exploreDomain?: string\n /** External trigger to fetch more payloads */\n fetchMorePayloads?: () => void\n loading?: boolean\n /** set number of schema parts to display starting from the end */\n maxSchemaDepth?: number\n onHashClick?: (value: Hash) => void\n onRowClick?: (value: Payload) => void\n payloads?: Payload[] | null\n rowsPerPage?: number\n}\n\nexport const PayloadTableWithRef: React.FC<PayloadTableProps> = (\n {\n clickableFields,\n onHashClick,\n onRowClick,\n fetchMorePayloads,\n rowsPerPage: rowsPerPageProp = 25,\n payloads,\n columns,\n PayloadTableHeadComponent = PayloadTableHead,\n PayloadTableBodyComponent = PayloadTableBody,\n PayloadTableFooterComponent = PayloadTableFooter,\n maxSchemaDepth,\n count = 0,\n loading = false,\n variant = 'scrollable',\n ...props\n },\n) => {\n const [page, setPage] = useState(0)\n const [rowsPerPage, setRowsPerPage] = useState(rowsPerPageProp)\n const [previousRowsPerPage, setPreviousRowsPerPage] = useState(rowsPerPageProp)\n if (rowsPerPageProp !== previousRowsPerPage) {\n setPreviousRowsPerPage(rowsPerPageProp)\n setRowsPerPage(rowsPerPageProp)\n }\n const [visiblePayloads, setVisiblePayloads] = useState<Payload[]>([])\n\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - count || 0) : 0\n\n // React to various prop changes to derive new visible payloads\n // count is needed to show initial payloads added async to the same payloads reference\n const [previousPayloads, setPreviousPayloads] = useState(payloads)\n if (payloads !== previousPayloads) {\n // If the payload reference changes, assume we have a new list and reset current page\n setPreviousPayloads(payloads)\n setPage(0)\n if (isDefinedNotNull(payloads)) {\n setVisiblePayloads(payloads.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage))\n }\n }\n\n const handleAdditionalPayloads = () => {\n if (fetchMorePayloads && payloads) {\n const buffer = rowsPerPage * 2\n const lastVisiblePayload = visiblePayloads?.at(-1)\n if (lastVisiblePayload) {\n const lastVisibleIndex = payloads?.indexOf(lastVisiblePayload)\n if (lastVisibleIndex !== undefined && payloads.length - (lastVisibleIndex + 1) <= buffer) {\n fetchMorePayloads()\n }\n }\n }\n }\n\n const handleChangePage = (_event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {\n handleAdditionalPayloads()\n setPage(newPage)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(Number.parseInt(event.target.value, 10))\n setPage(0)\n }\n\n const noResults = useMemo(() => {\n return !loading && (visiblePayloads.length === 0)\n }, [loading, visiblePayloads])\n\n return (\n <TableEx variant={variant} {...props}>\n <PayloadTableHeadComponent columns={columns} />\n <PayloadTableBodyComponent\n clickableFields={clickableFields}\n payloads={visiblePayloads}\n maxSchemaDepth={maxSchemaDepth}\n onRowClick={onRowClick}\n onHashClick={onHashClick}\n emptyRows={emptyRows}\n noResults={noResults}\n NoResultRowComponent={TableRowNoData}\n />\n <PayloadTableFooterComponent\n count={count}\n variant={variant}\n rowsPerPage={rowsPerPage}\n handleChangePage={handleChangePage}\n handleChangeRowsPerPage={handleChangeRowsPerPage}\n fetchMorePayloads={fetchMorePayloads}\n loading={loading}\n page={page}\n />\n </TableEx>\n )\n}\n\nPayloadTableWithRef.displayName = 'PayloadTable'\n\nexport const PayloadTable = PayloadTableWithRef\n", "import {\n Alert, TableBody, Typography,\n} from '@mui/material'\nimport { ThrownErrorBoundary } from '@xylabs/react-error'\nimport { usePayloadHashes } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React from 'react'\n\nimport { PayloadTableRow } from './TableRow.tsx'\nimport type { PayloadTableBodyProps } from './types/index.ts'\n\nexport const PayloadTableBody: React.FC<PayloadTableBodyProps> = ({\n children,\n clickableFields,\n payloads,\n maxSchemaDepth,\n onHashClick,\n onRowClick,\n emptyRows,\n noResults,\n NoResultRowComponent,\n ...props\n}) => {\n const payloadPairs = usePayloadHashes(payloads)\n\n return (\n <TableBody {...props}>\n {noResults && NoResultRowComponent\n ? <NoResultRowComponent />\n : null}\n {payloadPairs?.map(([payload, hash]) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={hash}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography sx={{ fontWeight: 'bold' }}>\n {e.message}\n </Typography>\n </Alert>\n )}\n >\n <PayloadTableRow\n clickableFields={clickableFields}\n maxSchemaDepth={maxSchemaDepth}\n onClick={\n onRowClick\n ? () => {\n onRowClick(payload)\n }\n : undefined\n }\n onHashClick={onHashClick}\n payload={payload}\n />\n </ThrownErrorBoundary>\n )\n })}\n {children}\n {emptyRows ? (Array.from({ length: emptyRows }).fill(<PayloadTableRow />) as ReactNode[]) : null}\n </TableBody>\n )\n}\n", "import {\n CheckCircleOutlineRounded as CheckCircleOutlineRoundedIcon,\n ErrorOutlineRounded as ErrorOutlineRoundedIcon,\n WarningAmberRounded as WarningAmberRoundedIcon,\n} from '@mui/icons-material'\nimport type { TableRowProps } from '@mui/material'\nimport {\n alpha, Link, TableCell, TableRow, Typography,\n} from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { useEvent } from '@xyo-network/react-event'\nimport { HashTableCell, usePayloadHash } from '@xyo-network/react-shared'\nimport React, { useMemo } from 'react'\n\nimport type { TableCellRenderer } from '../lib/index.ts'\nimport type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts'\nimport { payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig.ts'\n\nexport interface PayloadTableRowProps extends TableRowProps {\n /** @deprecated - archives are no longer used */\n archive?: string\n clickableFields?: PayloadTableColumnSlug[]\n columns?: PayloadTableColumnConfig\n /** @deprecated - use event listeners instead of link building via props */\n exploreDomain?: string\n maxSchemaDepth?: number\n network?: string\n onHashClick?: (value: Hash) => void\n payload?: Payload\n}\n\nexport const PayloadTableRow: React.FC<PayloadTableRowProps> = ({\n clickableFields,\n columns,\n maxSchemaDepth,\n network: networkProp,\n onHashClick,\n payload,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const payloadHash = usePayloadHash(payload)\n const [anchorRef, dispatch] = useEvent<HTMLAnchorElement>()\n const [errors = []] = usePromise(async () => (payload ? await new PayloadValidator(payload).validate() : undefined), [payload])\n const isValid = errors.length === 0\n\n const hash: TableCellRenderer = props => (\n <HashTableCell\n dataType=\"payload\"\n key=\"hash\"\n onHashClick={onHashClick}\n value={payloadHash}\n width=\"100%\"\n {...props}\n >\n {isDefined(payloadHash) && (\n <>\n {clickableFields?.includes('hash')\n ? (\n <Link onClick={() => dispatch('hash', 'click', payloadHash)} ref={anchorRef} sx={{ cursor: 'pointer' }}>{payloadHash}</Link>\n )\n : payloadHash}\n </>\n )}\n </HashTableCell>\n )\n\n const reduceSchemaDepth = (schema?: string, maxSchemaDepth?: number) => {\n if (isDefined(maxSchemaDepth)) {\n const parts = schema?.split('.') ?? []\n const partsToRemove = Math.max(parts.length - maxSchemaDepth, 0)\n if (partsToRemove > 0) {\n return (\n <>\n <>&#x2026;</>\n {\n\n `${parts.slice(partsToRemove).reduce((previousValue, part) => previousValue + '.' + part, '')}`\n }\n </>\n )\n }\n }\n return schema\n }\n\n const schema: TableCellRenderer = props => (\n <TableCell title={payload?.schema} key=\"payloads\" align=\"center\" {...props}>\n <Typography\n variant=\"body2\"\n noWrap\n sx={{ fontFamily: 'monospace' }}\n >\n {clickableFields?.includes('schema')\n ? (\n <Link sx={{ cursor: 'pointer' }}>{reduceSchemaDepth(payload?.schema, maxSchemaDepth)}</Link>\n )\n : reduceSchemaDepth(payload?.schema, maxSchemaDepth)}\n\n </Typography>\n </TableCell>\n )\n\n const valid: TableCellRenderer = props => (\n <TableCell key=\"valid\" align=\"center\" {...props}>\n {isValid === undefined && payload != undefined\n ? <WarningAmberRoundedIcon fontSize=\"small\" color=\"warning\" />\n : isValid === true\n ? <CheckCircleOutlineRoundedIcon fontSize=\"small\" color=\"success\" />\n : isValid === false\n ? <ErrorOutlineRoundedIcon color=\"error\" fontSize=\"small\" />\n // to keep row height consistent when no data provided, may need fix later\n : <ErrorOutlineRoundedIcon sx={{ color: alpha('#fff', 0) }} fontSize=\"small\" />}\n </TableCell>\n )\n\n const tableCells: Record<PayloadTableColumnSlug, TableCellRenderer> = {\n hash,\n schema,\n valid,\n }\n\n const columnsMemo = useMemo(() => columns ?? payloadTableColumnConfigDefaults(), [columns])\n\n return isDefined(breakPoint)\n ? (\n <TableRow style={{ maxWidth: '100vw' }} {...props}>\n {columnsMemo[breakPoint]?.map((column) => {\n return tableCells[column]({})\n })}\n </TableRow>\n )\n : null\n}\n", "import {\n styled, TablePagination, TableRow,\n} from '@mui/material'\nimport { TableFooterEx } from '@xyo-network/react-table'\nimport React from 'react'\n\nimport { TablePaginationActions } from './TablePagination.tsx'\nimport type { PayloadTableFooterProps } from './types/index.ts'\n\nexport const PayloadTableFooter: React.FC<PayloadTableFooterProps> = ({\n count,\n variant,\n page,\n rowsPerPage,\n handleChangePage,\n handleChangeRowsPerPage,\n fetchMorePayloads,\n loading,\n}) => (\n <TableFooterEx variant={variant}>\n <TableRow>\n <StyledTablePagination\n rowsPerPageOptions={[5, 10, 25, { label: 'All', value: -1 }]}\n count={count ?? 0}\n rowsPerPage={rowsPerPage ?? 10}\n page={page ?? 0}\n slotProps={{\n select: {\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n },\n }}\n onPageChange={handleChangePage ?? (() => { /* noop */ })}\n onRowsPerPageChange={handleChangeRowsPerPage ?? (() => { /* noop */ })}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ActionsComponent={(props: any) => <TablePaginationActions enableNextPage={!!fetchMorePayloads} loading={loading} {...props} />}\n />\n </TableRow>\n </TableFooterEx>\n)\n\nconst StyledTablePagination = styled(TablePagination)(({ theme }) => ({\n '& > .MuiToolbar-root': { paddingLeft: theme.spacing(1) },\n 'borderTop': '1px solid',\n 'borderTopColor': theme.vars.palette.divider,\n}))\n", "import {\n FirstPage as FirstPageIcon, KeyboardArrowLeft, KeyboardArrowRight, LastPage as LastPageIcon,\n} from '@mui/icons-material'\nimport {\n Box, CircularProgress, IconButton, useTheme,\n} from '@mui/material'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport type { PaginationNouns } from './types/index.ts'\n\nexport interface TablePaginationActionsProps {\n count: number\n enableNextPage?: boolean\n loading?: boolean\n onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void\n page: number\n rowsPerPage: number\n}\n\nexport function TablePaginationActions({\n count, enableNextPage, loading, onPageChange, page, rowsPerPage,\n}: Readonly<TablePaginationActionsProps>) {\n const theme = useTheme()\n const [paginationRef, paginationDispatch] = useEvent<HTMLButtonElement, PaginationNouns>()\n\n const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('firstPage', 'click', 'true')\n onPageChange(event, 0)\n }\n\n const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('previousPage', 'click', (page - 1)?.toString())\n onPageChange(event, page - 1)\n }\n\n const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('nextPage', 'click', (page + 1)?.toString())\n onPageChange(event, page + 1)\n }\n\n const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n paginationDispatch('lastPage', 'click', 'true')\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))\n }\n\n return (\n <>\n {loading\n ? (\n <CircularProgress\n size=\"small\"\n sx={{\n height: theme.spacing(2), position: 'absolute', width: theme.spacing(2),\n }}\n />\n )\n : null}\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label=\"first page\">\n {theme.direction === 'rtl'\n ? <LastPageIcon />\n : <FirstPageIcon />}\n </IconButton>\n <IconButton ref={paginationRef} onClick={handleBackButtonClick} disabled={page === 0} aria-label=\"previous page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowRight />\n : <KeyboardArrowLeft />}\n </IconButton>\n <IconButton\n ref={paginationRef}\n onClick={handleNextButtonClick}\n disabled={!enableNextPage && page >= Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"next page\"\n >\n {theme.direction === 'rtl'\n ? <KeyboardArrowLeft />\n : <KeyboardArrowRight />}\n </IconButton>\n <IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"last page\">\n {theme.direction === 'rtl'\n ? <FirstPageIcon />\n : <LastPageIcon />}\n </IconButton>\n </Box>\n </>\n )\n}\n", "import {\n TableCell, TableHead, TableRow, Typography,\n} from '@mui/material'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport React, { useMemo } from 'react'\n\nimport type { PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts'\nimport { payloadColumnNames, payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig.ts'\nimport type { PayloadTableHeadProps } from './types/index.ts'\n\nexport const PayloadTableHead: React.FC<PayloadTableHeadProps<PayloadTableColumnSlug>> = ({ columns, ...props }) => {\n const breakPoint = useBreakpoint()\n const columnsMemo = useMemo(() => columns ?? payloadTableColumnConfigDefaults(), [columns])\n return (\n <TableHead {...props}>\n <TableRow>\n {breakPoint\n ? columnsMemo[breakPoint]?.map((column, index) => {\n return (\n <TableCell\n key={column}\n align={index === 0 ? 'left' : 'center'}\n sx={{ width: index === 0 ? '100%' : undefined }}\n >\n <Typography variant=\"body2\" noWrap>\n {payloadColumnNames[column]}\n </Typography>\n </TableCell>\n )\n })\n : null}\n </TableRow>\n </TableHead>\n )\n}\n", "import type { TableRowProps, TypographyProps } from '@mui/material'\nimport {\n styled, TableCell, TableRow, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface TableRowNoDataProps extends TableRowProps {\n additionalCells?: number\n hideBorder?: boolean\n typographyProps?: TypographyProps\n}\n\nexport const TableRowNoData: React.FC<TableRowNoDataProps> = ({\n additionalCells, hideBorder = false, typographyProps, ...props\n}) => {\n return (\n <TableRow {...props}>\n <StyledTableCell hideBorder={hideBorder}>\n <Typography variant=\"body2\" {...typographyProps}>\n No Data To Display...\n </Typography>\n </StyledTableCell>\n {additionalCells\n ? Array.from({ length: additionalCells })\n .fill(null)\n // eslint-disable-next-line react-x/no-array-index-key\n .map((_fill, index) => <StyledTableCell key={`empty-row-${index}`} hideBorder={hideBorder} />)\n : null}\n </TableRow>\n )\n}\n\ninterface StyledTableCellProps {\n hideBorder?: boolean\n}\n\nconst StyledTableCell = styled(TableCell, {\n name: 'StyledTableCell',\n shouldForwardProp: (prop: string) => prop !== 'hideBorder',\n})<StyledTableCellProps>(({ hideBorder }) => ({ ...(hideBorder && { border: 'none' }) }))\n"],
5
+ "mappings": "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",
6
+ "names": ["props", "TableCell", "TableRow", "Typography", "useBreakpoint", "useMemo", "jsx", "useBreakpoint", "useMemo", "TableRow", "TableCell", "Typography", "useMemo", "useState", "Alert", "TableBody", "Typography", "ThrownErrorBoundary", "usePayloadHashes", "CheckCircleOutlineRoundedIcon", "ErrorOutlineRoundedIcon", "WarningAmberRoundedIcon", "TableCell", "TableRow", "Typography", "usePromise", "useBreakpoint", "PayloadValidator", "HashTableCell", "usePayloadHash", "useMemo", "jsx", "jsxs", "useBreakpoint", "usePayloadHash", "usePromise", "PayloadValidator", "props", "HashTableCell", "schema", "maxSchemaDepth", "TableCell", "Typography", "WarningAmberRoundedIcon", "CheckCircleOutlineRoundedIcon", "ErrorOutlineRoundedIcon", "useMemo", "TableRow", "jsx", "jsxs", "usePayloadHashes", "TableBody", "ThrownErrorBoundary", "Alert", "Typography", "TablePagination", "TableRow", "FirstPageIcon", "KeyboardArrowLeft", "KeyboardArrowRight", "LastPageIcon", "Box", "IconButton", "useTheme", "useEvent", "Fragment", "jsx", "jsxs", "TablePaginationActions", "jsx", "TableRow", "TablePaginationActions", "TablePagination", "TableCell", "TableHead", "TableRow", "Typography", "useBreakpoint", "useMemo", "jsx", "useBreakpoint", "useMemo", "TableHead", "TableRow", "TableCell", "Typography", "styled", "TableCell", "TableRow", "Typography", "jsx", "jsxs", "jsx", "jsxs", "useState", "useMemo"]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-payload-table",
3
- "version": "8.0.0",
3
+ "version": "9.0.0",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -41,165 +41,166 @@
41
41
  "README.md"
42
42
  ],
43
43
  "dependencies": {
44
- "@xyo-network/react-event": "~8.0.0",
45
- "@xyo-network/react-network": "~8.0.0",
46
- "@xyo-network/react-table": "~8.0.0",
47
- "@xyo-network/react-payload-plugin-resolver": "~8.0.0",
48
- "@xyo-network/react-shared": "~8.0.0"
44
+ "@xyo-network/react-network": "~9.0.0",
45
+ "@xyo-network/react-event": "~9.0.0",
46
+ "@xyo-network/react-payload-plugin-resolver": "~9.0.0",
47
+ "@xyo-network/react-shared": "~9.0.0",
48
+ "@xyo-network/react-table": "~9.0.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "@bitauth/libauth": "~3.0.0",
52
- "@emotion/react": "^11.14.0",
53
- "@emotion/styled": "^11.14.1",
54
- "@mui/icons-material": "~9.0",
55
- "@mui/material": "~9.0",
56
- "@mui/system": "~9.0",
57
- "@mui/x-tree-view": "~9.1",
52
+ "@mui/icons-material": "^9.0.1",
53
+ "@mui/material": "^9.0.1",
54
+ "@mui/system": "^9.0.1",
55
+ "@mui/x-tree-view": "~9.1.0",
58
56
  "@opentelemetry/api": "^1.9.1",
59
57
  "@opentelemetry/sdk-trace-base": "^2.7.1",
60
58
  "@react-spring/web": "~10.0.3",
61
59
  "@scure/base": "~2.2.0",
62
- "@storybook/react-vite": "~10.3.6",
63
- "@textea/json-viewer": "~4.0.1",
64
- "@types/react": "^19.2.14",
65
- "@xylabs/pixel": "~5.1.2",
66
- "@xylabs/react-async-effect": "~8.0",
67
- "@xylabs/react-button": "~8.0",
68
- "@xylabs/react-error": "~8.0",
69
- "@xylabs/react-flexbox": "~8.0",
70
- "@xylabs/react-hooks": "~8.0",
71
- "@xylabs/react-identicon": "~8.0",
72
- "@xylabs/react-link": "~8.0",
73
- "@xylabs/react-promise": "~8.0",
74
- "@xylabs/react-quick-tip-button": "~8.0",
75
- "@xylabs/react-select": "~8.0",
76
- "@xylabs/react-shared": "~8.0",
77
- "@xylabs/react-theme": "~8.0",
78
- "@xylabs/sdk-js": "^5.1.2",
79
- "@xylabs/threads": "~5.1.2",
80
- "@xylabs/toolchain": "~7.13.22",
81
- "@xylabs/tsconfig": "^7.13.22",
82
- "@xylabs/tsconfig-dom": "^7.13.22",
83
- "@xylabs/tsconfig-react": "~7.13.22",
84
- "@xyo-network/account": "~5.6.2",
85
- "@xyo-network/account-model": "^5.6.3",
86
- "@xyo-network/boundwitness-builder": "^5.6.2",
87
- "@xyo-network/boundwitness-model": "^5.6.3",
88
- "@xyo-network/boundwitness-validator": "^5.6.2",
89
- "@xyo-network/boundwitness-wrapper": "~5.6.2",
90
- "@xyo-network/config-payload-plugin": "~5.6.3",
91
- "@xyo-network/diviner-model": "^5.6.4",
92
- "@xyo-network/diviner-schema-list": "~5.6.4",
93
- "@xyo-network/diviner-schema-stats": "~5.6.4",
94
- "@xyo-network/manifest-model": "~5.6.3",
95
- "@xyo-network/module-model": "^5.6.4",
96
- "@xyo-network/network": "~5.6.3",
60
+ "@storybook/react-vite": "~10.4.0",
61
+ "@types/react": "^19.2.15",
62
+ "@xylabs/pixel": "~6.0.2",
63
+ "@xylabs/react-async-effect": "~9.0.0",
64
+ "@xylabs/react-button": "~9.0.0",
65
+ "@xylabs/react-error": "~9.0.0",
66
+ "@xylabs/react-flexbox": "~9.0.0",
67
+ "@xylabs/react-hooks": "~9.0.0",
68
+ "@xylabs/react-identicon": "~9.0.0",
69
+ "@xylabs/react-link": "~9.0.0",
70
+ "@xylabs/react-promise": "~9.0.0",
71
+ "@xylabs/react-quick-tip-button": "~9.0.0",
72
+ "@xylabs/react-select": "~9.0.0",
73
+ "@xylabs/react-shared": "~9.0.0",
74
+ "@xylabs/react-theme": "~9.0.0",
75
+ "@xylabs/sdk-js": "^6.0.2",
76
+ "@xylabs/sdk-react": "~9.0",
77
+ "@xylabs/threads": "~6.0.2",
78
+ "@xylabs/toolchain": "~8.1.1",
79
+ "@xylabs/tsconfig": "^8.1.1",
80
+ "@xylabs/tsconfig-dom": "^8.1.1",
81
+ "@xylabs/tsconfig-react": "~8.1.1",
82
+ "@xyo-network/account": "~6.0.0",
83
+ "@xyo-network/account-model": "^6.0.0",
84
+ "@xyo-network/boundwitness-builder": "^6.0.0",
85
+ "@xyo-network/boundwitness-model": "^6.0.0",
86
+ "@xyo-network/boundwitness-validator": "^6.0.0",
87
+ "@xyo-network/boundwitness-wrapper": "~6.0.0",
88
+ "@xyo-network/config-payload-plugin": "~6.0.0",
89
+ "@xyo-network/diviner-model": "^6.0.0",
90
+ "@xyo-network/diviner-schema-list": "~6.0.0",
91
+ "@xyo-network/diviner-schema-stats": "~6.0.0",
92
+ "@xyo-network/manifest-model": "~6.0.0",
93
+ "@xyo-network/module-model": "^6.0.0",
94
+ "@xyo-network/network": "~6.0.0",
97
95
  "@xyo-network/node-core-types": "~4.2.2",
98
- "@xyo-network/node-memory": "~5.6.4",
99
- "@xyo-network/node-model": "^5.6.4",
100
- "@xyo-network/payload-builder": "^5.6.2",
101
- "@xyo-network/payload-model": "^5.6.3",
102
- "@xyo-network/payload-plugin": "^5.6.3",
103
- "@xyo-network/payload-validator": "^5.6.3",
104
- "@xyo-network/payloadset-plugin": "^5.6.4",
105
- "@xyo-network/query-payload-plugin": "~5.6.3",
106
- "@xyo-network/schema-cache": "~5.6.3",
107
- "@xyo-network/schema-payload-plugin": "~5.6.3",
96
+ "@xyo-network/node-memory": "~6.0.0",
97
+ "@xyo-network/node-model": "^6.0.0",
98
+ "@xyo-network/payload-builder": "^6.0.0",
99
+ "@xyo-network/payload-model": "^6.0.0",
100
+ "@xyo-network/payload-plugin": "^6.0.0",
101
+ "@xyo-network/payload-validator": "^6.0.0",
102
+ "@xyo-network/payloadset-plugin": "^6.0.0",
103
+ "@xyo-network/query-payload-plugin": "~6.0.0",
104
+ "@xyo-network/schema-cache": "~6.0.0",
105
+ "@xyo-network/schema-payload-plugin": "~6.0.0",
108
106
  "@xyo-network/typeof": "~5.3.30",
109
- "@xyo-network/wallet-model": "^5.6.3",
107
+ "@xyo-network/wallet-model": "^6.0.0",
110
108
  "ajv": "^8.20.0",
111
109
  "async-mutex": "^0.5.0",
112
110
  "bn.js": "^5.2.3",
113
111
  "bowser": "^2.14.1",
114
112
  "buffer": "^6.0.3",
115
113
  "chalk": "^5.6.2",
114
+ "clsx": "~2.1.1",
116
115
  "debug": "~4.4.3",
117
- "eslint": "^10.3.0",
116
+ "eslint": "^10.4.0",
118
117
  "ethers": "^6.16.0",
119
118
  "fast-deep-equal": "~3.1.3",
120
119
  "hash-wasm": "~4.12.0",
121
- "js-cookie": "~3.0.5",
122
- "lru-cache": "^11.3.6",
120
+ "js-cookie": "~3.0.7",
121
+ "lru-cache": "^11.5.0",
123
122
  "md5": "~2.3.0",
124
- "mixpanel-browser": "~2.78.0",
123
+ "mixpanel-browser": "~2.79.0",
124
+ "numeral": "~2.0.6",
125
125
  "observable-fns": "~0.6.1",
126
126
  "pako": "^2.1.0",
127
127
  "query-string": "~9.3.1",
128
128
  "react": "^19.2.6",
129
129
  "react-dom": "^19.2.6",
130
130
  "react-is": "^19.2.6",
131
- "react-router-dom": "^7.15.0",
131
+ "react-router-dom": "^7.15.1",
132
132
  "recharts": "~3.8.1",
133
133
  "spark-md5": "~3.0.2",
134
- "storybook": "^10.3.6",
135
- "typescript": "^5.9.3",
136
- "vite": "^8.0.11",
134
+ "storybook": "^10.4.0",
135
+ "typescript": "^6.0.3",
136
+ "viem": "^2.50.4",
137
+ "vite": "^8.0.13",
137
138
  "wasm-feature-detect": "~1.8.0",
138
139
  "zod": "^4.4.3",
139
- "@xyo-network/react-storybook": "~8.0.0",
140
- "@xyo-network/react-crypto-market-uniswap-plugin": "~8.0.0",
141
- "@xyo-network/react-payload-plugin": "~8.0.0"
140
+ "zustand": "~5.0.13",
141
+ "@xyo-network/react-crypto-market-uniswap-plugin": "~9.0.0",
142
+ "@xyo-network/react-payload-plugin": "~9.0.0",
143
+ "@xyo-network/react-storybook": "~9.0.0"
142
144
  },
143
145
  "peerDependencies": {
144
146
  "@bitauth/libauth": "~3.0",
145
- "@emotion/react": "^11.14",
146
- "@emotion/styled": "^11.14",
147
- "@mui/icons-material": "~9.0",
148
- "@mui/material": "~9.0",
149
- "@mui/system": "~9.0",
147
+ "@mui/icons-material": "^9.0",
148
+ "@mui/material": "^9.0",
149
+ "@mui/system": "^9.0",
150
150
  "@mui/x-tree-view": "~9.1",
151
151
  "@opentelemetry/api": "^1.9",
152
152
  "@opentelemetry/sdk-trace-base": "^2.7",
153
153
  "@react-spring/web": "~10.0",
154
154
  "@scure/base": "~2.2",
155
- "@textea/json-viewer": "~4.0",
156
- "@xylabs/pixel": "~5.1",
157
- "@xylabs/react-async-effect": "~8.0",
158
- "@xylabs/react-button": "~8.0",
159
- "@xylabs/react-error": "~8.0",
160
- "@xylabs/react-flexbox": "~8.0",
161
- "@xylabs/react-hooks": "~8.0",
162
- "@xylabs/react-identicon": "~8.0",
163
- "@xylabs/react-link": "~8.0",
164
- "@xylabs/react-promise": "~8.0",
165
- "@xylabs/react-quick-tip-button": "~8.0",
166
- "@xylabs/react-select": "~8.0",
167
- "@xylabs/react-shared": "~8.0",
168
- "@xylabs/react-theme": "~8.0",
169
- "@xylabs/sdk-js": "^5.1",
170
- "@xylabs/threads": "~5.1",
171
- "@xyo-network/account": "~5.6",
172
- "@xyo-network/account-model": "^5.6",
173
- "@xyo-network/boundwitness-builder": "^5.6",
174
- "@xyo-network/boundwitness-model": "^5.6",
175
- "@xyo-network/boundwitness-validator": "^5.6",
176
- "@xyo-network/boundwitness-wrapper": "~5.6",
177
- "@xyo-network/config-payload-plugin": "~5.6",
178
- "@xyo-network/diviner-model": "^5.6",
179
- "@xyo-network/diviner-schema-list": "~5.6",
180
- "@xyo-network/diviner-schema-stats": "~5.6",
181
- "@xyo-network/manifest-model": "~5.6",
182
- "@xyo-network/module-model": "^5.6",
183
- "@xyo-network/network": "~5.6",
155
+ "@xylabs/pixel": "~6.0",
156
+ "@xylabs/react-async-effect": "~9.0",
157
+ "@xylabs/react-button": "~9.0",
158
+ "@xylabs/react-error": "~9.0",
159
+ "@xylabs/react-flexbox": "~9.0",
160
+ "@xylabs/react-hooks": "~9.0",
161
+ "@xylabs/react-identicon": "~9.0",
162
+ "@xylabs/react-link": "~9.0",
163
+ "@xylabs/react-promise": "~9.0",
164
+ "@xylabs/react-quick-tip-button": "~9.0",
165
+ "@xylabs/react-select": "~9.0",
166
+ "@xylabs/react-shared": "~9.0",
167
+ "@xylabs/react-theme": "~9.0",
168
+ "@xylabs/sdk-js": "^6.0",
169
+ "@xylabs/sdk-react": "~9.0",
170
+ "@xylabs/threads": "~6.0",
171
+ "@xyo-network/account": "~6.0",
172
+ "@xyo-network/account-model": "^6.0",
173
+ "@xyo-network/boundwitness-builder": "^6.0",
174
+ "@xyo-network/boundwitness-model": "^6.0",
175
+ "@xyo-network/boundwitness-validator": "^6.0",
176
+ "@xyo-network/boundwitness-wrapper": "~6.0",
177
+ "@xyo-network/config-payload-plugin": "~6.0",
178
+ "@xyo-network/diviner-model": "^6.0",
179
+ "@xyo-network/diviner-schema-list": "~6.0",
180
+ "@xyo-network/diviner-schema-stats": "~6.0",
181
+ "@xyo-network/manifest-model": "~6.0",
182
+ "@xyo-network/module-model": "^6.0",
183
+ "@xyo-network/network": "~6.0",
184
184
  "@xyo-network/node-core-types": "~4.2",
185
- "@xyo-network/node-memory": "~5.6",
186
- "@xyo-network/node-model": "^5.6",
187
- "@xyo-network/payload-builder": "^5.6",
188
- "@xyo-network/payload-model": "^5.6",
189
- "@xyo-network/payload-plugin": "^5.6",
190
- "@xyo-network/payload-validator": "^5.6",
191
- "@xyo-network/payloadset-plugin": "^5.6",
192
- "@xyo-network/query-payload-plugin": "~5.6",
193
- "@xyo-network/schema-cache": "~5.6",
194
- "@xyo-network/schema-payload-plugin": "~5.6",
185
+ "@xyo-network/node-memory": "~6.0",
186
+ "@xyo-network/node-model": "^6.0",
187
+ "@xyo-network/payload-builder": "^6.0",
188
+ "@xyo-network/payload-model": "^6.0",
189
+ "@xyo-network/payload-plugin": "^6.0",
190
+ "@xyo-network/payload-validator": "^6.0",
191
+ "@xyo-network/payloadset-plugin": "^6.0",
192
+ "@xyo-network/query-payload-plugin": "~6.0",
193
+ "@xyo-network/schema-cache": "~6.0",
194
+ "@xyo-network/schema-payload-plugin": "~6.0",
195
195
  "@xyo-network/typeof": "~5.3",
196
- "@xyo-network/wallet-model": "^5.6",
196
+ "@xyo-network/wallet-model": "^6.0",
197
197
  "ajv": "^8.20",
198
198
  "async-mutex": "^0.5",
199
199
  "bn.js": "^5.2",
200
200
  "bowser": "^2.14",
201
201
  "buffer": "^6.0",
202
202
  "chalk": "^5.6",
203
+ "clsx": "~2.1",
203
204
  "debug": "~4.4",
204
205
  "ethers": "^6.16",
205
206
  "fast-deep-equal": "~3.1",
@@ -207,7 +208,8 @@
207
208
  "js-cookie": "~3.0",
208
209
  "lru-cache": "^11.3",
209
210
  "md5": "~2.3",
210
- "mixpanel-browser": "~2.78",
211
+ "mixpanel-browser": "~2.79",
212
+ "numeral": "~2.0",
211
213
  "observable-fns": "~0.6",
212
214
  "pako": "^2.1",
213
215
  "query-string": "~9.3",
@@ -217,8 +219,10 @@
217
219
  "react-router-dom": "^7.15",
218
220
  "recharts": "~3.8",
219
221
  "spark-md5": "~3.0",
222
+ "viem": "^2.48",
220
223
  "wasm-feature-detect": "~1.8",
221
- "zod": "^4.4"
224
+ "zod": "^4.4",
225
+ "zustand": "~5.0"
222
226
  },
223
227
  "publishConfig": {
224
228
  "access": "public"