@xyo-network/react-payload-table 5.3.10 → 5.3.12
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/browser/index.mjs +24 -17
- package/dist/browser/index.mjs.map +1 -1
- package/dist/types/components/Table/Table.d.ts +4 -1
- package/dist/types/components/Table/Table.d.ts.map +1 -1
- package/dist/types/components/Table/TableBody.d.ts.map +1 -1
- package/dist/types/components/Table/TableRow.d.ts +2 -1
- package/dist/types/components/Table/TableRow.d.ts.map +1 -1
- package/dist/types/components/Table/types/PayloadTableBodyProps.d.ts +4 -0
- package/dist/types/components/Table/types/PayloadTableBodyProps.d.ts.map +1 -1
- package/package.json +10 -9
- package/src/components/Table/Table.stories.tsx +25 -20
- package/src/components/Table/Table.tsx +7 -6
- package/src/components/Table/TableBody.tsx +2 -4
- package/src/components/Table/TableRow.tsx +27 -9
- package/src/components/Table/types/PayloadTableBodyProps.ts +5 -0
package/dist/browser/index.mjs
CHANGED
|
@@ -432,14 +432,15 @@ import React4 from "react";
|
|
|
432
432
|
|
|
433
433
|
// src/components/Table/TableRow.tsx
|
|
434
434
|
import { CheckCircleOutlineRounded as CheckCircleOutlineRoundedIcon2, ErrorOutlineRounded as ErrorOutlineRoundedIcon2, WarningAmberRounded as WarningAmberRoundedIcon2 } from "@mui/icons-material";
|
|
435
|
-
import { alpha, TableCell as TableCell3, TableRow as TableRow3, Typography as Typography3 } from "@mui/material";
|
|
435
|
+
import { alpha, Link, TableCell as TableCell3, TableRow as TableRow3, Typography as Typography3 } from "@mui/material";
|
|
436
436
|
import { usePromise as usePromise2 } from "@xylabs/react-promise";
|
|
437
437
|
import { useBreakpoint as useBreakpoint3 } from "@xylabs/react-shared";
|
|
438
|
+
import { isDefined } from "@xylabs/typeof";
|
|
438
439
|
import { PayloadValidator as PayloadValidator2 } from "@xyo-network/payload-validator";
|
|
439
440
|
import { useNetwork as useNetwork2 } from "@xyo-network/react-network";
|
|
440
441
|
import { HashTableCell as HashTableCell2, usePayloadHash as usePayloadHash2 } from "@xyo-network/react-shared";
|
|
441
442
|
import React3, { useMemo as useMemo3 } from "react";
|
|
442
|
-
var PayloadTableRow = /* @__PURE__ */ __name(({ columns, maxSchemaDepth, network: networkProp, onHashClick, payload, ...props }) => {
|
|
443
|
+
var PayloadTableRow = /* @__PURE__ */ __name(({ clickableFields, columns, maxSchemaDepth, network: networkProp, onHashClick, payload, ...props }) => {
|
|
443
444
|
const breakPoint = useBreakpoint3();
|
|
444
445
|
const payloadHash = usePayloadHash2(payload);
|
|
445
446
|
const { network } = useNetwork2();
|
|
@@ -448,16 +449,20 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ columns, maxSchemaDepth, network
|
|
|
448
449
|
]);
|
|
449
450
|
const isValid = errors.length === 0;
|
|
450
451
|
const hash = /* @__PURE__ */ __name((props2) => /* @__PURE__ */ React3.createElement(HashTableCell2, {
|
|
451
|
-
key: "hash",
|
|
452
|
-
width: "100%",
|
|
453
|
-
value: payloadHash,
|
|
454
|
-
onHashClick,
|
|
455
452
|
dataType: "payload",
|
|
453
|
+
key: "hash",
|
|
456
454
|
network: networkProp ?? network?.slug,
|
|
455
|
+
onHashClick,
|
|
456
|
+
value: payloadHash,
|
|
457
|
+
width: "100%",
|
|
457
458
|
...props2
|
|
458
|
-
}), "hash")
|
|
459
|
+
}, isDefined(payloadHash) && /* @__PURE__ */ React3.createElement(React3.Fragment, null, clickableFields?.includes("hash") ? /* @__PURE__ */ React3.createElement(Link, {
|
|
460
|
+
sx: {
|
|
461
|
+
cursor: "pointer"
|
|
462
|
+
}
|
|
463
|
+
}, payloadHash) : payloadHash)), "hash");
|
|
459
464
|
const reduceSchemaDepth = /* @__PURE__ */ __name((schema2, maxSchemaDepth2) => {
|
|
460
|
-
if (maxSchemaDepth2) {
|
|
465
|
+
if (isDefined(maxSchemaDepth2)) {
|
|
461
466
|
const parts = schema2?.split(".") ?? [];
|
|
462
467
|
const partsToRemove = Math.max(parts.length - maxSchemaDepth2, 0);
|
|
463
468
|
if (partsToRemove > 0) {
|
|
@@ -475,7 +480,11 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ columns, maxSchemaDepth, network
|
|
|
475
480
|
fontFamily: "monospace",
|
|
476
481
|
variant: "body2",
|
|
477
482
|
noWrap: true
|
|
478
|
-
},
|
|
483
|
+
}, clickableFields?.includes("schema") ? /* @__PURE__ */ React3.createElement(Link, {
|
|
484
|
+
sx: {
|
|
485
|
+
cursor: "pointer"
|
|
486
|
+
}
|
|
487
|
+
}, reduceSchemaDepth(payload?.schema, maxSchemaDepth)) : reduceSchemaDepth(payload?.schema, maxSchemaDepth))), "schema");
|
|
479
488
|
const valid = /* @__PURE__ */ __name((props2) => /* @__PURE__ */ React3.createElement(TableCell3, {
|
|
480
489
|
key: "valid",
|
|
481
490
|
align: "center",
|
|
@@ -503,7 +512,7 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ columns, maxSchemaDepth, network
|
|
|
503
512
|
const columnsMemo = useMemo3(() => columns ?? payloadTableColumnConfigDefaults(), [
|
|
504
513
|
columns
|
|
505
514
|
]);
|
|
506
|
-
return breakPoint ? /* @__PURE__ */ React3.createElement(TableRow3, {
|
|
515
|
+
return isDefined(breakPoint) ? /* @__PURE__ */ React3.createElement(TableRow3, {
|
|
507
516
|
style: {
|
|
508
517
|
maxWidth: "100vw"
|
|
509
518
|
},
|
|
@@ -514,7 +523,7 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ columns, maxSchemaDepth, network
|
|
|
514
523
|
}, "PayloadTableRow");
|
|
515
524
|
|
|
516
525
|
// src/components/Table/TableBody.tsx
|
|
517
|
-
var PayloadTableBody = /* @__PURE__ */ __name(({ children,
|
|
526
|
+
var PayloadTableBody = /* @__PURE__ */ __name(({ children, clickableFields, payloads, maxSchemaDepth, onHashClick, onRowClick, emptyRows, noResults, NoResultRowComponent, ...props }) => {
|
|
518
527
|
const payloadPairs = usePayloadHashes2(payloads);
|
|
519
528
|
return /* @__PURE__ */ React4.createElement(TableBody2, props, noResults && NoResultRowComponent ? /* @__PURE__ */ React4.createElement(NoResultRowComponent, null) : null, payloadPairs?.map(([payload, hash], index) => {
|
|
520
529
|
return /* @__PURE__ */ React4.createElement(ThrownErrorBoundary2, {
|
|
@@ -526,13 +535,12 @@ var PayloadTableBody = /* @__PURE__ */ __name(({ children, exploreDomain, payloa
|
|
|
526
535
|
fontWeight: "bold"
|
|
527
536
|
}, e.message)), "errorComponent")
|
|
528
537
|
}, /* @__PURE__ */ React4.createElement(PayloadTableRow, {
|
|
538
|
+
clickableFields,
|
|
529
539
|
maxSchemaDepth,
|
|
530
|
-
archive,
|
|
531
540
|
onClick: onRowClick ? () => {
|
|
532
541
|
onRowClick(payload);
|
|
533
542
|
} : void 0,
|
|
534
543
|
onHashClick,
|
|
535
|
-
exploreDomain,
|
|
536
544
|
payload
|
|
537
545
|
}));
|
|
538
546
|
}), children, emptyRows ? Array.from({
|
|
@@ -691,7 +699,7 @@ var StyledTableCell = styled2(TableCell5, {
|
|
|
691
699
|
}));
|
|
692
700
|
|
|
693
701
|
// src/components/Table/Table.tsx
|
|
694
|
-
var PayloadTableWithRef = /* @__PURE__ */ __name(({
|
|
702
|
+
var PayloadTableWithRef = /* @__PURE__ */ __name(({ clickableFields, onHashClick, onRowClick, fetchMorePayloads, rowsPerPage: rowsPerPageProp = 25, payloads, columns, PayloadTableHeadComponent = PayloadTableHead, PayloadTableBodyComponent = PayloadTableBody, PayloadTableFooterComponent = PayloadTableFooter, maxSchemaDepth, count = 0, loading = false, variant = "scrollable", ...props }) => {
|
|
695
703
|
const [page, setPage] = useState2(0);
|
|
696
704
|
const [rowsPerPage, setRowsPerPage] = useState2(rowsPerPageProp);
|
|
697
705
|
const [visiblePayloads, setVisiblePayloads] = useState2([]);
|
|
@@ -737,7 +745,7 @@ var PayloadTableWithRef = /* @__PURE__ */ __name(({ exploreDomain, archive, onHa
|
|
|
737
745
|
setPage(0);
|
|
738
746
|
}, "handleChangeRowsPerPage");
|
|
739
747
|
const noResults = useMemo5(() => {
|
|
740
|
-
return !loading &&
|
|
748
|
+
return !loading && visiblePayloads.length === 0;
|
|
741
749
|
}, [
|
|
742
750
|
loading,
|
|
743
751
|
visiblePayloads
|
|
@@ -748,9 +756,8 @@ var PayloadTableWithRef = /* @__PURE__ */ __name(({ exploreDomain, archive, onHa
|
|
|
748
756
|
}, /* @__PURE__ */ React9.createElement(PayloadTableHeadComponent, {
|
|
749
757
|
columns
|
|
750
758
|
}), /* @__PURE__ */ React9.createElement(PayloadTableBodyComponent, {
|
|
759
|
+
clickableFields,
|
|
751
760
|
payloads: visiblePayloads,
|
|
752
|
-
exploreDomain,
|
|
753
|
-
archive,
|
|
754
761
|
maxSchemaDepth,
|
|
755
762
|
onRowClick,
|
|
756
763
|
onHashClick,
|
|
@@ -1 +1 @@
|
|
|
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 fontFamily=\"monospace\" variant=\"body2\" noWrap>\n {payload?.schema}\n </Typography>\n </TableCell>\n )\n\n const details: TableCellRenderer = props => (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n <Typography fontFamily=\"monospace\" variant=\"body2\" noWrap>\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> </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, index) => {\n return (\n <TableCell key={index} align={column.alignment ?? 'left'} width={column.width}>\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], index) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={`${hash}-${index}`}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography fontWeight=\"bold\">{e.message}</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 SelectProps={{\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n }}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\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 } from '@xylabs/hex'\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 } 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 archive?: string\n columns?: PayloadTableColumnConfig\n /** Total number of payloads passed */\n count?: number\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 exploreDomain,\n archive,\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 [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 useMemo(() => {\n setRowsPerPage(rowsPerPageProp)\n }, [rowsPerPageProp])\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 useMemo(() => {\n if (payloads) {\n setVisiblePayloads(payloads.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage))\n }\n }, [count, page, payloads, rowsPerPage])\n\n // If the payload reference changes, assume we have a new list and reset current page\n useMemo(() => {\n setPage(0)\n }, [payloads])\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 || visiblePayloads.length === 0)\n }, [loading, visiblePayloads])\n\n return (\n <TableEx variant={variant} {...props}>\n <PayloadTableHeadComponent columns={columns} />\n <PayloadTableBodyComponent\n payloads={visiblePayloads}\n exploreDomain={exploreDomain}\n archive={archive}\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 exploreDomain,\n payloads,\n archive,\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], index) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={`${hash}-${index}`}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography fontWeight=\"bold\">{e.message}</Typography>\n </Alert>\n )}\n >\n <PayloadTableRow\n maxSchemaDepth={maxSchemaDepth}\n archive={archive}\n onClick={\n onRowClick\n ? () => {\n onRowClick(payload)\n }\n : undefined\n }\n onHashClick={onHashClick}\n exploreDomain={exploreDomain}\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, TableCell, TableRow, Typography,\n} from '@mui/material'\nimport type { Hash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { useNetwork } from '@xyo-network/react-network'\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 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 columns,\n maxSchemaDepth,\n network: networkProp,\n onHashClick,\n payload,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const payloadHash = usePayloadHash(payload)\n const { network } = useNetwork()\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 key=\"hash\"\n width=\"100%\"\n value={payloadHash}\n onHashClick={onHashClick}\n dataType=\"payload\"\n network={networkProp ?? network?.slug}\n {...props}\n />\n )\n\n const reduceSchemaDepth = (schema?: string, maxSchemaDepth?: number) => {\n if (maxSchemaDepth) {\n const parts = schema?.split('.') ?? []\n const partsToRemove = Math.max(parts.length - maxSchemaDepth, 0)\n if (partsToRemove > 0) {\n return (\n <>\n <>…</>\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 fontFamily=\"monospace\" variant=\"body2\" noWrap>\n {reduceSchemaDepth(payload?.schema, maxSchemaDepth)}\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 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 SelectProps={{\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n }}\n onPageChange={handleChangePage ?? (() => {})}\n onRowsPerPageChange={handleChangeRowsPerPage ?? (() => {})}\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 key={index} width={index === 0 ? '100%' : undefined} align={index === 0 ? 'left' : 'center'}>\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 .map((_fill, index) => <StyledTableCell key={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":["CheckCircleOutlineRounded","CheckCircleOutlineRoundedIcon","ErrorOutlineRounded","ErrorOutlineRoundedIcon","WarningAmberRounded","WarningAmberRoundedIcon","TableCell","TableRow","Typography","usePromise","useBreakpoint","PayloadBuilder","PayloadValidator","useNetwork","usePayloadRenderPluginResolver","HashTableCell","usePayloadHash","React","useMemo","payloadDynamicTableColumnConfigDefaults","xs","alignment","name","slug","width","sm","md","lg","xl","PayloadDynamicTableRow","columns","network","networkProp","payload","props","breakPoint","useBreakpoint","payloadHash","usePayloadHash","useNetwork","resolver","usePayloadRenderPluginResolver","validationErrors","usePromise","PayloadValidator","validate","undefined","isValid","length","payloadFieldCount","Object","keys","PayloadBuilder","hashableFields","hash","HashTableCell","key","align","value","dataType","slug","schema","TableCell","Typography","fontFamily","variant","noWrap","details","render","Render","resolve","components","table","cell","icon","Avatar","avatar","image","valid","WarningAmberRoundedIcon","fontSize","color","CheckCircleOutlineRoundedIcon","ErrorOutlineRoundedIcon","tableCells","columnsMemo","useMemo","payloadDynamicTableColumnConfigDefaults","TableRow","style","maxWidth","map","column","FirstPage","FirstPageIcon","KeyboardArrowLeft","KeyboardArrowRight","LastPage","LastPageIcon","Alert","Box","IconButton","Table","TableBody","TableCell","TableFooter","TableHead","TablePagination","TableRow","Typography","useTheme","ThrownErrorBoundary","useResetState","useBreakpoint","usePayloadHashes","React","useMemo","useState","TablePaginationActions","props","theme","useTheme","count","page","rowsPerPage","onPageChange","handleFirstPageButtonClick","event","handleBackButtonClick","handleNextButtonClick","handleLastPageButtonClick","Math","max","ceil","React","Box","sx","flexShrink","ml","IconButton","onClick","disabled","aria-label","direction","LastPageIcon","FirstPageIcon","KeyboardArrowRight","KeyboardArrowLeft","PayloadDynamicTable","archive","children","columns","exploreDomain","onRowClick","rowsPerPageProp","payloads","breakPoint","useBreakpoint","setPage","useState","setRowsPerPage","useResetState","payloadCount","length","emptyRows","pagedPayloads","useMemo","slice","payloadPairs","usePayloadHashes","handleChangePage","newPage","handleChangeRowsPerPage","Number","parseInt","target","value","Table","stickyHeader","TableHead","TableRow","payloadDynamicTableColumnConfigDefaults","map","column","index","TableCell","key","align","alignment","width","Typography","variant","noWrap","name","TableBody","overflowY","payload","hash","ThrownErrorBoundary","boundaryName","errorComponent","e","Alert","severity","fontWeight","message","PayloadDynamicTableRow","undefined","Array","from","fill","TableFooter","TablePagination","rowsPerPageOptions","label","colSpan","SelectProps","inputProps","native","onRowsPerPageChange","ActionsComponent","payloadColumnNames","hash","schema","valid","payloadTableColumnConfigDefaults","xs","sm","md","lg","xl","TableEx","React","useMemo","useState","Alert","TableBody","Typography","ThrownErrorBoundary","usePayloadHashes","React","CheckCircleOutlineRounded","CheckCircleOutlineRoundedIcon","ErrorOutlineRounded","ErrorOutlineRoundedIcon","WarningAmberRounded","WarningAmberRoundedIcon","alpha","TableCell","TableRow","Typography","usePromise","useBreakpoint","PayloadValidator","useNetwork","HashTableCell","usePayloadHash","React","useMemo","PayloadTableRow","columns","maxSchemaDepth","network","networkProp","onHashClick","payload","props","breakPoint","useBreakpoint","payloadHash","usePayloadHash","useNetwork","errors","usePromise","PayloadValidator","validate","undefined","isValid","length","hash","React","HashTableCell","key","width","value","dataType","slug","reduceSchemaDepth","schema","parts","split","partsToRemove","Math","max","slice","reduce","previousValue","part","TableCell","title","align","Typography","fontFamily","variant","noWrap","valid","WarningAmberRoundedIcon","fontSize","color","CheckCircleOutlineRoundedIcon","ErrorOutlineRoundedIcon","sx","alpha","tableCells","columnsMemo","useMemo","payloadTableColumnConfigDefaults","TableRow","style","maxWidth","map","column","PayloadTableBody","children","exploreDomain","payloads","archive","maxSchemaDepth","onHashClick","onRowClick","emptyRows","noResults","NoResultRowComponent","props","payloadPairs","usePayloadHashes","React","TableBody","map","payload","hash","index","ThrownErrorBoundary","boundaryName","key","errorComponent","e","Alert","severity","Typography","fontWeight","message","PayloadTableRow","onClick","undefined","Array","from","length","fill","styled","TablePagination","TableRow","TableFooterEx","React","FirstPage","FirstPageIcon","KeyboardArrowLeft","KeyboardArrowRight","LastPage","LastPageIcon","Box","CircularProgress","IconButton","useTheme","useEvent","React","TablePaginationActions","count","enableNextPage","loading","onPageChange","page","rowsPerPage","theme","useTheme","paginationRef","paginationDispatch","useEvent","handleFirstPageButtonClick","event","handleBackButtonClick","toString","handleNextButtonClick","handleLastPageButtonClick","Math","max","ceil","React","CircularProgress","size","sx","height","spacing","position","width","Box","flexShrink","ml","IconButton","onClick","disabled","aria-label","direction","LastPageIcon","FirstPageIcon","ref","KeyboardArrowRight","KeyboardArrowLeft","PayloadTableFooter","count","variant","page","rowsPerPage","handleChangePage","handleChangeRowsPerPage","fetchMorePayloads","loading","React","TableFooterEx","TableRow","StyledTablePagination","rowsPerPageOptions","label","value","SelectProps","inputProps","native","onPageChange","onRowsPerPageChange","ActionsComponent","props","TablePaginationActions","enableNextPage","styled","TablePagination","theme","paddingLeft","spacing","vars","palette","divider","TableCell","TableHead","TableRow","Typography","useBreakpoint","React","useMemo","PayloadTableHead","columns","props","breakPoint","useBreakpoint","columnsMemo","useMemo","payloadTableColumnConfigDefaults","React","TableHead","TableRow","map","column","index","TableCell","key","width","undefined","align","Typography","variant","noWrap","payloadColumnNames","styled","TableCell","TableRow","Typography","React","TableRowNoData","additionalCells","hideBorder","typographyProps","props","React","TableRow","StyledTableCell","Typography","variant","Array","from","length","fill","map","_fill","index","key","styled","TableCell","name","shouldForwardProp","prop","border","PayloadTableWithRef","exploreDomain","archive","onHashClick","onRowClick","fetchMorePayloads","rowsPerPage","rowsPerPageProp","payloads","columns","PayloadTableHeadComponent","PayloadTableHead","PayloadTableBodyComponent","PayloadTableBody","PayloadTableFooterComponent","PayloadTableFooter","maxSchemaDepth","count","loading","variant","props","page","setPage","useState","setRowsPerPage","visiblePayloads","setVisiblePayloads","emptyRows","Math","max","useMemo","slice","handleAdditionalPayloads","buffer","lastVisiblePayload","at","lastVisibleIndex","indexOf","undefined","length","handleChangePage","_event","newPage","handleChangeRowsPerPage","event","Number","parseInt","target","value","noResults","React","TableEx","NoResultRowComponent","TableRowNoData","displayName","PayloadTable"]}
|
|
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 fontFamily=\"monospace\" variant=\"body2\" noWrap>\n {payload?.schema}\n </Typography>\n </TableCell>\n )\n\n const details: TableCellRenderer = props => (\n <TableCell key=\"payloads\" align=\"left\" {...props}>\n <Typography fontFamily=\"monospace\" variant=\"body2\" noWrap>\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> </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, index) => {\n return (\n <TableCell key={index} align={column.alignment ?? 'left'} width={column.width}>\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], index) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={`${hash}-${index}`}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography fontWeight=\"bold\">{e.message}</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 SelectProps={{\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n }}\n onPageChange={handleChangePage}\n onRowsPerPageChange={handleChangeRowsPerPage}\n ActionsComponent={TablePaginationActions}\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 } from '@xylabs/hex'\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 [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 useMemo(() => {\n setRowsPerPage(rowsPerPageProp)\n }, [rowsPerPageProp])\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 useMemo(() => {\n if (payloads) {\n setVisiblePayloads(payloads.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage))\n }\n }, [count, page, payloads, rowsPerPage])\n\n // If the payload reference changes, assume we have a new list and reset current page\n useMemo(() => {\n setPage(0)\n }, [payloads])\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], index) => {\n return (\n <ThrownErrorBoundary\n boundaryName=\"PayloadTableBody\"\n key={`${hash}-${index}`}\n errorComponent={e => (\n <Alert severity=\"error\">\n Error Loading Payload:\n {' '}\n <Typography fontWeight=\"bold\">{e.message}</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 type { Hash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport { isDefined } from '@xylabs/typeof'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { PayloadValidator } from '@xyo-network/payload-validator'\nimport { useNetwork } from '@xyo-network/react-network'\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 { network } = useNetwork()\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 network={networkProp ?? network?.slug}\n onHashClick={onHashClick}\n value={payloadHash}\n width=\"100%\"\n {...props}\n >\n {isDefined(payloadHash) && (\n <>\n {clickableFields?.includes('hash')\n ? (\n <Link 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 <>…</>\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 fontFamily=\"monospace\" variant=\"body2\" noWrap>\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 SelectProps={{\n inputProps: { 'aria-label': 'rows per page' },\n native: true,\n }}\n onPageChange={handleChangePage ?? (() => {})}\n onRowsPerPageChange={handleChangeRowsPerPage ?? (() => {})}\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 key={index} width={index === 0 ? '100%' : undefined} align={index === 0 ? 'left' : 'center'}>\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 .map((_fill, index) => <StyledTableCell key={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":["CheckCircleOutlineRounded","CheckCircleOutlineRoundedIcon","ErrorOutlineRounded","ErrorOutlineRoundedIcon","WarningAmberRounded","WarningAmberRoundedIcon","TableCell","TableRow","Typography","usePromise","useBreakpoint","PayloadBuilder","PayloadValidator","useNetwork","usePayloadRenderPluginResolver","HashTableCell","usePayloadHash","React","useMemo","payloadDynamicTableColumnConfigDefaults","xs","alignment","name","slug","width","sm","md","lg","xl","PayloadDynamicTableRow","columns","network","networkProp","payload","props","breakPoint","useBreakpoint","payloadHash","usePayloadHash","useNetwork","resolver","usePayloadRenderPluginResolver","validationErrors","usePromise","PayloadValidator","validate","undefined","isValid","length","payloadFieldCount","Object","keys","PayloadBuilder","hashableFields","hash","HashTableCell","key","align","value","dataType","slug","schema","TableCell","Typography","fontFamily","variant","noWrap","details","render","Render","resolve","components","table","cell","icon","Avatar","avatar","image","valid","WarningAmberRoundedIcon","fontSize","color","CheckCircleOutlineRoundedIcon","ErrorOutlineRoundedIcon","tableCells","columnsMemo","useMemo","payloadDynamicTableColumnConfigDefaults","TableRow","style","maxWidth","map","column","FirstPage","FirstPageIcon","KeyboardArrowLeft","KeyboardArrowRight","LastPage","LastPageIcon","Alert","Box","IconButton","Table","TableBody","TableCell","TableFooter","TableHead","TablePagination","TableRow","Typography","useTheme","ThrownErrorBoundary","useResetState","useBreakpoint","usePayloadHashes","React","useMemo","useState","TablePaginationActions","props","theme","useTheme","count","page","rowsPerPage","onPageChange","handleFirstPageButtonClick","event","handleBackButtonClick","handleNextButtonClick","handleLastPageButtonClick","Math","max","ceil","React","Box","sx","flexShrink","ml","IconButton","onClick","disabled","aria-label","direction","LastPageIcon","FirstPageIcon","KeyboardArrowRight","KeyboardArrowLeft","PayloadDynamicTable","archive","children","columns","exploreDomain","onRowClick","rowsPerPageProp","payloads","breakPoint","useBreakpoint","setPage","useState","setRowsPerPage","useResetState","payloadCount","length","emptyRows","pagedPayloads","useMemo","slice","payloadPairs","usePayloadHashes","handleChangePage","newPage","handleChangeRowsPerPage","Number","parseInt","target","value","Table","stickyHeader","TableHead","TableRow","payloadDynamicTableColumnConfigDefaults","map","column","index","TableCell","key","align","alignment","width","Typography","variant","noWrap","name","TableBody","overflowY","payload","hash","ThrownErrorBoundary","boundaryName","errorComponent","e","Alert","severity","fontWeight","message","PayloadDynamicTableRow","undefined","Array","from","fill","TableFooter","TablePagination","rowsPerPageOptions","label","colSpan","SelectProps","inputProps","native","onRowsPerPageChange","ActionsComponent","payloadColumnNames","hash","schema","valid","payloadTableColumnConfigDefaults","xs","sm","md","lg","xl","TableEx","React","useMemo","useState","Alert","TableBody","Typography","ThrownErrorBoundary","usePayloadHashes","React","CheckCircleOutlineRounded","CheckCircleOutlineRoundedIcon","ErrorOutlineRounded","ErrorOutlineRoundedIcon","WarningAmberRounded","WarningAmberRoundedIcon","alpha","Link","TableCell","TableRow","Typography","usePromise","useBreakpoint","isDefined","PayloadValidator","useNetwork","HashTableCell","usePayloadHash","React","useMemo","PayloadTableRow","clickableFields","columns","maxSchemaDepth","network","networkProp","onHashClick","payload","props","breakPoint","useBreakpoint","payloadHash","usePayloadHash","useNetwork","errors","usePromise","PayloadValidator","validate","undefined","isValid","length","hash","React","HashTableCell","dataType","key","slug","value","width","isDefined","includes","Link","sx","cursor","reduceSchemaDepth","schema","parts","split","partsToRemove","Math","max","slice","reduce","previousValue","part","TableCell","title","align","Typography","fontFamily","variant","noWrap","valid","WarningAmberRoundedIcon","fontSize","color","CheckCircleOutlineRoundedIcon","ErrorOutlineRoundedIcon","alpha","tableCells","columnsMemo","useMemo","payloadTableColumnConfigDefaults","TableRow","style","maxWidth","map","column","PayloadTableBody","children","clickableFields","payloads","maxSchemaDepth","onHashClick","onRowClick","emptyRows","noResults","NoResultRowComponent","props","payloadPairs","usePayloadHashes","React","TableBody","map","payload","hash","index","ThrownErrorBoundary","boundaryName","key","errorComponent","e","Alert","severity","Typography","fontWeight","message","PayloadTableRow","onClick","undefined","Array","from","length","fill","styled","TablePagination","TableRow","TableFooterEx","React","FirstPage","FirstPageIcon","KeyboardArrowLeft","KeyboardArrowRight","LastPage","LastPageIcon","Box","CircularProgress","IconButton","useTheme","useEvent","React","TablePaginationActions","count","enableNextPage","loading","onPageChange","page","rowsPerPage","theme","useTheme","paginationRef","paginationDispatch","useEvent","handleFirstPageButtonClick","event","handleBackButtonClick","toString","handleNextButtonClick","handleLastPageButtonClick","Math","max","ceil","React","CircularProgress","size","sx","height","spacing","position","width","Box","flexShrink","ml","IconButton","onClick","disabled","aria-label","direction","LastPageIcon","FirstPageIcon","ref","KeyboardArrowRight","KeyboardArrowLeft","PayloadTableFooter","count","variant","page","rowsPerPage","handleChangePage","handleChangeRowsPerPage","fetchMorePayloads","loading","React","TableFooterEx","TableRow","StyledTablePagination","rowsPerPageOptions","label","value","SelectProps","inputProps","native","onPageChange","onRowsPerPageChange","ActionsComponent","props","TablePaginationActions","enableNextPage","styled","TablePagination","theme","paddingLeft","spacing","vars","palette","divider","TableCell","TableHead","TableRow","Typography","useBreakpoint","React","useMemo","PayloadTableHead","columns","props","breakPoint","useBreakpoint","columnsMemo","useMemo","payloadTableColumnConfigDefaults","React","TableHead","TableRow","map","column","index","TableCell","key","width","undefined","align","Typography","variant","noWrap","payloadColumnNames","styled","TableCell","TableRow","Typography","React","TableRowNoData","additionalCells","hideBorder","typographyProps","props","React","TableRow","StyledTableCell","Typography","variant","Array","from","length","fill","map","_fill","index","key","styled","TableCell","name","shouldForwardProp","prop","border","PayloadTableWithRef","clickableFields","onHashClick","onRowClick","fetchMorePayloads","rowsPerPage","rowsPerPageProp","payloads","columns","PayloadTableHeadComponent","PayloadTableHead","PayloadTableBodyComponent","PayloadTableBody","PayloadTableFooterComponent","PayloadTableFooter","maxSchemaDepth","count","loading","variant","props","page","setPage","useState","setRowsPerPage","visiblePayloads","setVisiblePayloads","emptyRows","Math","max","useMemo","slice","handleAdditionalPayloads","buffer","lastVisiblePayload","at","lastVisibleIndex","indexOf","undefined","length","handleChangePage","_event","newPage","handleChangeRowsPerPage","event","Number","parseInt","target","value","noResults","React","TableEx","NoResultRowComponent","TableRowNoData","displayName","PayloadTable"]}
|
|
@@ -3,16 +3,19 @@ import type { Payload } from '@xyo-network/payload-model';
|
|
|
3
3
|
import type { TableExProps } from '@xyo-network/react-table';
|
|
4
4
|
import type { ComponentType } from 'react';
|
|
5
5
|
import React from 'react';
|
|
6
|
-
import type { PayloadTableColumnConfig } from './PayloadTableColumnConfig.ts';
|
|
6
|
+
import type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts';
|
|
7
7
|
import type { PayloadTableBodyProps, PayloadTableFooterProps, PayloadTableHeadProps } from './types/index.ts';
|
|
8
8
|
export interface PayloadTableProps extends TableExProps {
|
|
9
9
|
PayloadTableBodyComponent?: ComponentType<PayloadTableBodyProps>;
|
|
10
10
|
PayloadTableFooterComponent?: ComponentType<PayloadTableFooterProps>;
|
|
11
11
|
PayloadTableHeadComponent?: ComponentType<PayloadTableHeadProps>;
|
|
12
|
+
/** @deprecated - archives are no longer used */
|
|
12
13
|
archive?: string;
|
|
14
|
+
clickableFields?: PayloadTableColumnSlug[];
|
|
13
15
|
columns?: PayloadTableColumnConfig;
|
|
14
16
|
/** Total number of payloads passed */
|
|
15
17
|
count?: number;
|
|
18
|
+
/** @deprecated - use events to build links instead of passing props */
|
|
16
19
|
exploreDomain?: string;
|
|
17
20
|
/** External trigger to fetch more payloads */
|
|
18
21
|
fetchMorePayloads?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAA4B,MAAM,OAAO,CAAA;AAEhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAA4B,MAAM,OAAO,CAAA;AAEhD,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAKrG,OAAO,KAAK,EACV,qBAAqB,EAAE,uBAAuB,EAAE,qBAAqB,EACtE,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,yBAAyB,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAChE,2BAA2B,CAAC,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAA;IACpE,yBAAyB,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAA;IAChE,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC1C,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,uEAAuE;IACvE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA+F3D,CAAA;AAID,eAAO,MAAM,YAAY,6BAAsB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableBody.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/TableBody.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAE7D,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"TableBody.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/TableBody.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAE7D,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoD5D,CAAA"}
|
|
@@ -2,10 +2,11 @@ import type { TableRowProps } from '@mui/material';
|
|
|
2
2
|
import type { Hash } from '@xylabs/hex';
|
|
3
3
|
import type { Payload } from '@xyo-network/payload-model';
|
|
4
4
|
import React from 'react';
|
|
5
|
-
import type { PayloadTableColumnConfig } from './PayloadTableColumnConfig.ts';
|
|
5
|
+
import type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts';
|
|
6
6
|
export interface PayloadTableRowProps extends TableRowProps {
|
|
7
7
|
/** @deprecated - archives are no longer used */
|
|
8
8
|
archive?: string;
|
|
9
|
+
clickableFields?: PayloadTableColumnSlug[];
|
|
9
10
|
columns?: PayloadTableColumnConfig;
|
|
10
11
|
/** @deprecated - use event listeners instead of link building via props */
|
|
11
12
|
exploreDomain?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/TableRow.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAIlD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/TableRow.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAIlD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAIvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAIzD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAGrG,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC1C,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;IACnC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmG1D,CAAA"}
|
|
@@ -2,10 +2,14 @@ import type { TableBodyProps, TableRowProps } from '@mui/material';
|
|
|
2
2
|
import type { Hash } from '@xylabs/hex';
|
|
3
3
|
import type { Payload } from '@xyo-network/payload-model';
|
|
4
4
|
import type { ComponentType, PropsWithChildren } from 'react';
|
|
5
|
+
import type { PayloadTableColumnSlug } from '../PayloadTableColumnConfig.ts';
|
|
5
6
|
export interface PayloadTableBodyProps<TPayload extends Payload = Payload> extends TableBodyProps, PropsWithChildren {
|
|
6
7
|
NoResultRowComponent?: ComponentType<TableRowProps>;
|
|
8
|
+
/** @deprecated - archives are no longer used */
|
|
7
9
|
archive?: string;
|
|
10
|
+
clickableFields?: PayloadTableColumnSlug[];
|
|
8
11
|
emptyRows?: number;
|
|
12
|
+
/** @deprecated - use events for link building */
|
|
9
13
|
exploreDomain?: string;
|
|
10
14
|
maxSchemaDepth?: number;
|
|
11
15
|
noResults?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PayloadTableBodyProps.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/types/PayloadTableBodyProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE7D,MAAM,WAAW,qBAAqB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,cAAc,EAAE,iBAAiB;IAClH,oBAAoB,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAA;CACtB"}
|
|
1
|
+
{"version":3,"file":"PayloadTableBodyProps.d.ts","sourceRoot":"","sources":["../../../../../src/components/Table/types/PayloadTableBodyProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAE7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAE5E,MAAM,WAAW,qBAAqB,CAAC,QAAQ,SAAS,OAAO,GAAG,OAAO,CAAE,SAAQ,cAAc,EAAE,iBAAiB;IAClH,oBAAoB,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACnD,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,sBAAsB,EAAE,CAAA;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,IAAI,CAAA;IACnC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAA;CACtB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/react-payload-table",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.12",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -44,14 +44,15 @@
|
|
|
44
44
|
"@xylabs/react-hooks": "^6.3.4",
|
|
45
45
|
"@xylabs/react-promise": "^6.3.4",
|
|
46
46
|
"@xylabs/react-shared": "^6.3.4",
|
|
47
|
+
"@xylabs/typeof": "^4.11.21",
|
|
47
48
|
"@xyo-network/payload-builder": "^3.18.8",
|
|
48
49
|
"@xyo-network/payload-model": "^3.18.8",
|
|
49
50
|
"@xyo-network/payload-validator": "^3.18.8",
|
|
50
|
-
"@xyo-network/react-event": "^5.3.
|
|
51
|
-
"@xyo-network/react-network": "^5.3.
|
|
52
|
-
"@xyo-network/react-payload-plugin-resolver": "^5.3.
|
|
53
|
-
"@xyo-network/react-shared": "^5.3.
|
|
54
|
-
"@xyo-network/react-table": "^5.3.
|
|
51
|
+
"@xyo-network/react-event": "^5.3.12",
|
|
52
|
+
"@xyo-network/react-network": "^5.3.12",
|
|
53
|
+
"@xyo-network/react-payload-plugin-resolver": "^5.3.12",
|
|
54
|
+
"@xyo-network/react-shared": "^5.3.12",
|
|
55
|
+
"@xyo-network/react-table": "^5.3.12"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"@emotion/react": "^11.14.0",
|
|
@@ -62,9 +63,9 @@
|
|
|
62
63
|
"@xylabs/delay": "^4.11.21",
|
|
63
64
|
"@xylabs/ts-scripts-yarn3": "^6.5.8",
|
|
64
65
|
"@xylabs/tsconfig-react": "^6.5.8",
|
|
65
|
-
"@xyo-network/react-crypto-market-uniswap-plugin": "^5.3.
|
|
66
|
-
"@xyo-network/react-payload-plugin": "^5.3.
|
|
67
|
-
"@xyo-network/react-storybook": "^5.3.
|
|
66
|
+
"@xyo-network/react-crypto-market-uniswap-plugin": "^5.3.12",
|
|
67
|
+
"@xyo-network/react-payload-plugin": "^5.3.12",
|
|
68
|
+
"@xyo-network/react-storybook": "^5.3.12",
|
|
68
69
|
"react": "^19.1.0",
|
|
69
70
|
"react-dom": "^19.1.0",
|
|
70
71
|
"react-router-dom": "^7.6.2",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Chip } from '@mui/material'
|
|
2
2
|
import type { Meta, StoryFn } from '@storybook/react-vite'
|
|
3
|
+
import { isDefined } from '@xylabs/typeof'
|
|
3
4
|
import type { Payload } from '@xyo-network/payload-model'
|
|
4
5
|
import { useEvent } from '@xyo-network/react-event'
|
|
5
6
|
import { sampleIdPayload, sampleSystemInfoBrowserPayload } from '@xyo-network/react-storybook'
|
|
@@ -11,6 +12,24 @@ import { PayloadTableBody } from './TableBody.tsx'
|
|
|
11
12
|
import { PayloadTableFooter } from './TableFooter.tsx'
|
|
12
13
|
import { PayloadTableHead } from './TableHead.tsx'
|
|
13
14
|
|
|
15
|
+
const payloads: Payload[] = [
|
|
16
|
+
sampleIdPayload,
|
|
17
|
+
sampleSystemInfoBrowserPayload,
|
|
18
|
+
sampleIdPayload,
|
|
19
|
+
{ schema: 'network.xyo.debug.super.long.schema.for.some.reason' },
|
|
20
|
+
sampleSystemInfoBrowserPayload,
|
|
21
|
+
sampleIdPayload,
|
|
22
|
+
sampleSystemInfoBrowserPayload,
|
|
23
|
+
sampleIdPayload,
|
|
24
|
+
sampleSystemInfoBrowserPayload,
|
|
25
|
+
sampleIdPayload,
|
|
26
|
+
sampleSystemInfoBrowserPayload,
|
|
27
|
+
sampleIdPayload,
|
|
28
|
+
sampleSystemInfoBrowserPayload,
|
|
29
|
+
sampleIdPayload,
|
|
30
|
+
sampleSystemInfoBrowserPayload,
|
|
31
|
+
]
|
|
32
|
+
|
|
14
33
|
const StorybookEntry = {
|
|
15
34
|
argTypes: {},
|
|
16
35
|
component: PayloadTable,
|
|
@@ -20,11 +39,14 @@ const StorybookEntry = {
|
|
|
20
39
|
|
|
21
40
|
const Template: StoryFn<typeof PayloadTable> = (args) => {
|
|
22
41
|
const [eventData, setEventData] = useState<string | undefined>()
|
|
23
|
-
const [ref] = useEvent<HTMLTableElement>((_noun, _verb, data) =>
|
|
42
|
+
const [ref] = useEvent<HTMLTableElement>((_noun, _verb, data) => {
|
|
43
|
+
console.log('Event received:', _noun, _verb, data)
|
|
44
|
+
setEventData(data)
|
|
45
|
+
})
|
|
24
46
|
|
|
25
47
|
return (
|
|
26
48
|
<BrowserRouter>
|
|
27
|
-
{eventData
|
|
49
|
+
{isDefined(eventData)
|
|
28
50
|
? <Chip label={`EventData: ${eventData}`} onDelete={() => setEventData(undefined)} />
|
|
29
51
|
: null}
|
|
30
52
|
<PayloadTable ref={ref} {...args}></PayloadTable>
|
|
@@ -35,30 +57,13 @@ const Template: StoryFn<typeof PayloadTable> = (args) => {
|
|
|
35
57
|
const Default = Template.bind({})
|
|
36
58
|
Default.args = {}
|
|
37
59
|
|
|
38
|
-
const payloads: Payload[] = [
|
|
39
|
-
sampleIdPayload,
|
|
40
|
-
sampleSystemInfoBrowserPayload,
|
|
41
|
-
sampleIdPayload,
|
|
42
|
-
{ schema: 'network.xyo.debug.super.long.schema.for.some.reason' },
|
|
43
|
-
sampleSystemInfoBrowserPayload,
|
|
44
|
-
sampleIdPayload,
|
|
45
|
-
sampleSystemInfoBrowserPayload,
|
|
46
|
-
sampleIdPayload,
|
|
47
|
-
sampleSystemInfoBrowserPayload,
|
|
48
|
-
sampleIdPayload,
|
|
49
|
-
sampleSystemInfoBrowserPayload,
|
|
50
|
-
sampleIdPayload,
|
|
51
|
-
sampleSystemInfoBrowserPayload,
|
|
52
|
-
sampleIdPayload,
|
|
53
|
-
sampleSystemInfoBrowserPayload,
|
|
54
|
-
]
|
|
55
|
-
|
|
56
60
|
const WithData = Template.bind({})
|
|
57
61
|
WithData.args = {
|
|
58
62
|
payloads,
|
|
59
63
|
PayloadTableBodyComponent: PayloadTableBody,
|
|
60
64
|
PayloadTableHeadComponent: PayloadTableHead,
|
|
61
65
|
PayloadTableFooterComponent: PayloadTableFooter,
|
|
66
|
+
clickableFields: ['hash'],
|
|
62
67
|
}
|
|
63
68
|
|
|
64
69
|
const WithOutStickyHeaderFooter = Template.bind({})
|
|
@@ -5,7 +5,7 @@ import { TableEx } from '@xyo-network/react-table'
|
|
|
5
5
|
import type { ComponentType } from 'react'
|
|
6
6
|
import React, { useMemo, useState } from 'react'
|
|
7
7
|
|
|
8
|
-
import type { PayloadTableColumnConfig } from './PayloadTableColumnConfig.ts'
|
|
8
|
+
import type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './PayloadTableColumnConfig.ts'
|
|
9
9
|
import { PayloadTableBody } from './TableBody.tsx'
|
|
10
10
|
import { PayloadTableFooter } from './TableFooter.tsx'
|
|
11
11
|
import { PayloadTableHead } from './TableHead.tsx'
|
|
@@ -18,10 +18,13 @@ export interface PayloadTableProps extends TableExProps {
|
|
|
18
18
|
PayloadTableBodyComponent?: ComponentType<PayloadTableBodyProps>
|
|
19
19
|
PayloadTableFooterComponent?: ComponentType<PayloadTableFooterProps>
|
|
20
20
|
PayloadTableHeadComponent?: ComponentType<PayloadTableHeadProps>
|
|
21
|
+
/** @deprecated - archives are no longer used */
|
|
21
22
|
archive?: string
|
|
23
|
+
clickableFields?: PayloadTableColumnSlug[]
|
|
22
24
|
columns?: PayloadTableColumnConfig
|
|
23
25
|
/** Total number of payloads passed */
|
|
24
26
|
count?: number
|
|
27
|
+
/** @deprecated - use events to build links instead of passing props */
|
|
25
28
|
exploreDomain?: string
|
|
26
29
|
/** External trigger to fetch more payloads */
|
|
27
30
|
fetchMorePayloads?: () => void
|
|
@@ -36,8 +39,7 @@ export interface PayloadTableProps extends TableExProps {
|
|
|
36
39
|
|
|
37
40
|
export const PayloadTableWithRef: React.FC<PayloadTableProps> = (
|
|
38
41
|
{
|
|
39
|
-
|
|
40
|
-
archive,
|
|
42
|
+
clickableFields,
|
|
41
43
|
onHashClick,
|
|
42
44
|
onRowClick,
|
|
43
45
|
fetchMorePayloads,
|
|
@@ -102,16 +104,15 @@ export const PayloadTableWithRef: React.FC<PayloadTableProps> = (
|
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
const noResults = useMemo(() => {
|
|
105
|
-
return !loading && (
|
|
107
|
+
return !loading && (visiblePayloads.length === 0)
|
|
106
108
|
}, [loading, visiblePayloads])
|
|
107
109
|
|
|
108
110
|
return (
|
|
109
111
|
<TableEx variant={variant} {...props}>
|
|
110
112
|
<PayloadTableHeadComponent columns={columns} />
|
|
111
113
|
<PayloadTableBodyComponent
|
|
114
|
+
clickableFields={clickableFields}
|
|
112
115
|
payloads={visiblePayloads}
|
|
113
|
-
exploreDomain={exploreDomain}
|
|
114
|
-
archive={archive}
|
|
115
116
|
maxSchemaDepth={maxSchemaDepth}
|
|
116
117
|
onRowClick={onRowClick}
|
|
117
118
|
onHashClick={onHashClick}
|
|
@@ -11,9 +11,8 @@ import type { PayloadTableBodyProps } from './types/index.ts'
|
|
|
11
11
|
|
|
12
12
|
export const PayloadTableBody: React.FC<PayloadTableBodyProps> = ({
|
|
13
13
|
children,
|
|
14
|
-
|
|
14
|
+
clickableFields,
|
|
15
15
|
payloads,
|
|
16
|
-
archive,
|
|
17
16
|
maxSchemaDepth,
|
|
18
17
|
onHashClick,
|
|
19
18
|
onRowClick,
|
|
@@ -43,8 +42,8 @@ export const PayloadTableBody: React.FC<PayloadTableBodyProps> = ({
|
|
|
43
42
|
)}
|
|
44
43
|
>
|
|
45
44
|
<PayloadTableRow
|
|
45
|
+
clickableFields={clickableFields}
|
|
46
46
|
maxSchemaDepth={maxSchemaDepth}
|
|
47
|
-
archive={archive}
|
|
48
47
|
onClick={
|
|
49
48
|
onRowClick
|
|
50
49
|
? () => {
|
|
@@ -53,7 +52,6 @@ export const PayloadTableBody: React.FC<PayloadTableBodyProps> = ({
|
|
|
53
52
|
: undefined
|
|
54
53
|
}
|
|
55
54
|
onHashClick={onHashClick}
|
|
56
|
-
exploreDomain={exploreDomain}
|
|
57
55
|
payload={payload}
|
|
58
56
|
/>
|
|
59
57
|
</ThrownErrorBoundary>
|
|
@@ -5,11 +5,12 @@ import {
|
|
|
5
5
|
} from '@mui/icons-material'
|
|
6
6
|
import type { TableRowProps } from '@mui/material'
|
|
7
7
|
import {
|
|
8
|
-
alpha, TableCell, TableRow, Typography,
|
|
8
|
+
alpha, Link, TableCell, TableRow, Typography,
|
|
9
9
|
} from '@mui/material'
|
|
10
10
|
import type { Hash } from '@xylabs/hex'
|
|
11
11
|
import { usePromise } from '@xylabs/react-promise'
|
|
12
12
|
import { useBreakpoint } from '@xylabs/react-shared'
|
|
13
|
+
import { isDefined } from '@xylabs/typeof'
|
|
13
14
|
import type { Payload } from '@xyo-network/payload-model'
|
|
14
15
|
import { PayloadValidator } from '@xyo-network/payload-validator'
|
|
15
16
|
import { useNetwork } from '@xyo-network/react-network'
|
|
@@ -23,6 +24,7 @@ import { payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig.ts'
|
|
|
23
24
|
export interface PayloadTableRowProps extends TableRowProps {
|
|
24
25
|
/** @deprecated - archives are no longer used */
|
|
25
26
|
archive?: string
|
|
27
|
+
clickableFields?: PayloadTableColumnSlug[]
|
|
26
28
|
columns?: PayloadTableColumnConfig
|
|
27
29
|
/** @deprecated - use event listeners instead of link building via props */
|
|
28
30
|
exploreDomain?: string
|
|
@@ -33,6 +35,7 @@ export interface PayloadTableRowProps extends TableRowProps {
|
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
|
|
38
|
+
clickableFields,
|
|
36
39
|
columns,
|
|
37
40
|
maxSchemaDepth,
|
|
38
41
|
network: networkProp,
|
|
@@ -48,18 +51,28 @@ export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
|
|
|
48
51
|
|
|
49
52
|
const hash: TableCellRenderer = props => (
|
|
50
53
|
<HashTableCell
|
|
51
|
-
key="hash"
|
|
52
|
-
width="100%"
|
|
53
|
-
value={payloadHash}
|
|
54
|
-
onHashClick={onHashClick}
|
|
55
54
|
dataType="payload"
|
|
55
|
+
key="hash"
|
|
56
56
|
network={networkProp ?? network?.slug}
|
|
57
|
+
onHashClick={onHashClick}
|
|
58
|
+
value={payloadHash}
|
|
59
|
+
width="100%"
|
|
57
60
|
{...props}
|
|
58
|
-
|
|
61
|
+
>
|
|
62
|
+
{isDefined(payloadHash) && (
|
|
63
|
+
<>
|
|
64
|
+
{clickableFields?.includes('hash')
|
|
65
|
+
? (
|
|
66
|
+
<Link sx={{ cursor: 'pointer' }}>{payloadHash}</Link>
|
|
67
|
+
)
|
|
68
|
+
: payloadHash}
|
|
69
|
+
</>
|
|
70
|
+
)}
|
|
71
|
+
</HashTableCell>
|
|
59
72
|
)
|
|
60
73
|
|
|
61
74
|
const reduceSchemaDepth = (schema?: string, maxSchemaDepth?: number) => {
|
|
62
|
-
if (maxSchemaDepth) {
|
|
75
|
+
if (isDefined(maxSchemaDepth)) {
|
|
63
76
|
const parts = schema?.split('.') ?? []
|
|
64
77
|
const partsToRemove = Math.max(parts.length - maxSchemaDepth, 0)
|
|
65
78
|
if (partsToRemove > 0) {
|
|
@@ -80,7 +93,12 @@ export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
|
|
|
80
93
|
const schema: TableCellRenderer = props => (
|
|
81
94
|
<TableCell title={payload?.schema} key="payloads" align="center" {...props}>
|
|
82
95
|
<Typography fontFamily="monospace" variant="body2" noWrap>
|
|
83
|
-
{
|
|
96
|
+
{clickableFields?.includes('schema')
|
|
97
|
+
? (
|
|
98
|
+
<Link sx={{ cursor: 'pointer' }}>{reduceSchemaDepth(payload?.schema, maxSchemaDepth)}</Link>
|
|
99
|
+
)
|
|
100
|
+
: reduceSchemaDepth(payload?.schema, maxSchemaDepth)}
|
|
101
|
+
|
|
84
102
|
</Typography>
|
|
85
103
|
</TableCell>
|
|
86
104
|
)
|
|
@@ -106,7 +124,7 @@ export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
|
|
|
106
124
|
|
|
107
125
|
const columnsMemo = useMemo(() => columns ?? payloadTableColumnConfigDefaults(), [columns])
|
|
108
126
|
|
|
109
|
-
return breakPoint
|
|
127
|
+
return isDefined(breakPoint)
|
|
110
128
|
? (
|
|
111
129
|
<TableRow style={{ maxWidth: '100vw' }} {...props}>
|
|
112
130
|
{columnsMemo[breakPoint]?.map((column) => {
|
|
@@ -3,10 +3,15 @@ import type { Hash } from '@xylabs/hex'
|
|
|
3
3
|
import type { Payload } from '@xyo-network/payload-model'
|
|
4
4
|
import type { ComponentType, PropsWithChildren } from 'react'
|
|
5
5
|
|
|
6
|
+
import type { PayloadTableColumnSlug } from '../PayloadTableColumnConfig.ts'
|
|
7
|
+
|
|
6
8
|
export interface PayloadTableBodyProps<TPayload extends Payload = Payload> extends TableBodyProps, PropsWithChildren {
|
|
7
9
|
NoResultRowComponent?: ComponentType<TableRowProps>
|
|
10
|
+
/** @deprecated - archives are no longer used */
|
|
8
11
|
archive?: string
|
|
12
|
+
clickableFields?: PayloadTableColumnSlug[]
|
|
9
13
|
emptyRows?: number
|
|
14
|
+
/** @deprecated - use events for link building */
|
|
10
15
|
exploreDomain?: string
|
|
11
16
|
maxSchemaDepth?: number
|
|
12
17
|
noResults?: boolean
|