@xyo-network/react-payload-table 5.3.9 → 5.3.11

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.
@@ -161,7 +161,7 @@ var payloadDynamicTableColumnConfigDefaults = /* @__PURE__ */ __name(() => {
161
161
  }, "payloadDynamicTableColumnConfigDefaults");
162
162
 
163
163
  // src/components/DynamicTable/DynamicTableRow.tsx
164
- var PayloadDynamicTableRow = /* @__PURE__ */ __name(({ archive, columns, exploreDomain, network: networkProp, payload, ...props }) => {
164
+ var PayloadDynamicTableRow = /* @__PURE__ */ __name(({ columns, network: networkProp, payload, ...props }) => {
165
165
  const breakPoint = useBreakpoint();
166
166
  const payloadHash = usePayloadHash(payload);
167
167
  const { network } = useNetwork();
@@ -174,10 +174,8 @@ var PayloadDynamicTableRow = /* @__PURE__ */ __name(({ archive, columns, explore
174
174
  const hash = /* @__PURE__ */ __name((props2) => /* @__PURE__ */ React.createElement(HashTableCell, {
175
175
  key: "hash",
176
176
  align: "left",
177
- archive,
178
177
  value: payloadHash,
179
178
  dataType: "payload",
180
- exploreDomain,
181
179
  network: networkProp ?? network?.slug,
182
180
  ...props2
183
181
  }), "hash");
@@ -434,14 +432,15 @@ import React4 from "react";
434
432
 
435
433
  // src/components/Table/TableRow.tsx
436
434
  import { CheckCircleOutlineRounded as CheckCircleOutlineRoundedIcon2, ErrorOutlineRounded as ErrorOutlineRoundedIcon2, WarningAmberRounded as WarningAmberRoundedIcon2 } from "@mui/icons-material";
437
- 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";
438
436
  import { usePromise as usePromise2 } from "@xylabs/react-promise";
439
437
  import { useBreakpoint as useBreakpoint3 } from "@xylabs/react-shared";
438
+ import { isDefined } from "@xylabs/typeof";
440
439
  import { PayloadValidator as PayloadValidator2 } from "@xyo-network/payload-validator";
441
440
  import { useNetwork as useNetwork2 } from "@xyo-network/react-network";
442
441
  import { HashTableCell as HashTableCell2, usePayloadHash as usePayloadHash2 } from "@xyo-network/react-shared";
443
442
  import React3, { useMemo as useMemo3 } from "react";
444
- var PayloadTableRow = /* @__PURE__ */ __name(({ archive, columns, exploreDomain, maxSchemaDepth, network: networkProp, onHashClick, payload, ...props }) => {
443
+ var PayloadTableRow = /* @__PURE__ */ __name(({ clickableFields, columns, maxSchemaDepth, network: networkProp, onHashClick, payload, ...props }) => {
445
444
  const breakPoint = useBreakpoint3();
446
445
  const payloadHash = usePayloadHash2(payload);
447
446
  const { network } = useNetwork2();
@@ -450,18 +449,20 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ archive, columns, exploreDomain,
450
449
  ]);
451
450
  const isValid = errors.length === 0;
452
451
  const hash = /* @__PURE__ */ __name((props2) => /* @__PURE__ */ React3.createElement(HashTableCell2, {
453
- key: "hash",
454
- archive,
455
- width: "100%",
456
- value: payloadHash,
457
- onHashClick,
458
452
  dataType: "payload",
459
- exploreDomain,
453
+ key: "hash",
460
454
  network: networkProp ?? network?.slug,
455
+ onHashClick,
456
+ value: payloadHash,
457
+ width: "100%",
461
458
  ...props2
462
- }), "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");
463
464
  const reduceSchemaDepth = /* @__PURE__ */ __name((schema2, maxSchemaDepth2) => {
464
- if (maxSchemaDepth2) {
465
+ if (isDefined(maxSchemaDepth2)) {
465
466
  const parts = schema2?.split(".") ?? [];
466
467
  const partsToRemove = Math.max(parts.length - maxSchemaDepth2, 0);
467
468
  if (partsToRemove > 0) {
@@ -479,7 +480,11 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ archive, columns, exploreDomain,
479
480
  fontFamily: "monospace",
480
481
  variant: "body2",
481
482
  noWrap: true
482
- }, reduceSchemaDepth(payload?.schema, maxSchemaDepth))), "schema");
483
+ }, clickableFields?.includes("schema") ? /* @__PURE__ */ React3.createElement(Link, {
484
+ sx: {
485
+ cursor: "pointer"
486
+ }
487
+ }, reduceSchemaDepth(payload?.schema, maxSchemaDepth)) : reduceSchemaDepth(payload?.schema, maxSchemaDepth))), "schema");
483
488
  const valid = /* @__PURE__ */ __name((props2) => /* @__PURE__ */ React3.createElement(TableCell3, {
484
489
  key: "valid",
485
490
  align: "center",
@@ -507,7 +512,7 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ archive, columns, exploreDomain,
507
512
  const columnsMemo = useMemo3(() => columns ?? payloadTableColumnConfigDefaults(), [
508
513
  columns
509
514
  ]);
510
- return breakPoint ? /* @__PURE__ */ React3.createElement(TableRow3, {
515
+ return isDefined(breakPoint) ? /* @__PURE__ */ React3.createElement(TableRow3, {
511
516
  style: {
512
517
  maxWidth: "100vw"
513
518
  },
@@ -518,7 +523,7 @@ var PayloadTableRow = /* @__PURE__ */ __name(({ archive, columns, exploreDomain,
518
523
  }, "PayloadTableRow");
519
524
 
520
525
  // src/components/Table/TableBody.tsx
521
- var PayloadTableBody = /* @__PURE__ */ __name(({ children, exploreDomain, payloads, archive, maxSchemaDepth, onHashClick, onRowClick, emptyRows, noResults, NoResultRowComponent, ...props }) => {
526
+ var PayloadTableBody = /* @__PURE__ */ __name(({ children, clickableFields, payloads, maxSchemaDepth, onHashClick, onRowClick, emptyRows, noResults, NoResultRowComponent, ...props }) => {
522
527
  const payloadPairs = usePayloadHashes2(payloads);
523
528
  return /* @__PURE__ */ React4.createElement(TableBody2, props, noResults && NoResultRowComponent ? /* @__PURE__ */ React4.createElement(NoResultRowComponent, null) : null, payloadPairs?.map(([payload, hash], index) => {
524
529
  return /* @__PURE__ */ React4.createElement(ThrownErrorBoundary2, {
@@ -530,13 +535,12 @@ var PayloadTableBody = /* @__PURE__ */ __name(({ children, exploreDomain, payloa
530
535
  fontWeight: "bold"
531
536
  }, e.message)), "errorComponent")
532
537
  }, /* @__PURE__ */ React4.createElement(PayloadTableRow, {
538
+ clickableFields,
533
539
  maxSchemaDepth,
534
- archive,
535
540
  onClick: onRowClick ? () => {
536
541
  onRowClick(payload);
537
542
  } : void 0,
538
543
  onHashClick,
539
- exploreDomain,
540
544
  payload
541
545
  }));
542
546
  }), children, emptyRows ? Array.from({
@@ -695,7 +699,7 @@ var StyledTableCell = styled2(TableCell5, {
695
699
  }));
696
700
 
697
701
  // src/components/Table/Table.tsx
698
- var PayloadTableWithRef = /* @__PURE__ */ __name(({ exploreDomain, archive, onHashClick, onRowClick, fetchMorePayloads, rowsPerPage: rowsPerPageProp = 25, payloads, columns, PayloadTableHeadComponent = PayloadTableHead, PayloadTableBodyComponent = PayloadTableBody, PayloadTableFooterComponent = PayloadTableFooter, maxSchemaDepth, count = 0, loading = false, variant = "scrollable", ...props }) => {
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 }) => {
699
703
  const [page, setPage] = useState2(0);
700
704
  const [rowsPerPage, setRowsPerPage] = useState2(rowsPerPageProp);
701
705
  const [visiblePayloads, setVisiblePayloads] = useState2([]);
@@ -741,7 +745,7 @@ var PayloadTableWithRef = /* @__PURE__ */ __name(({ exploreDomain, archive, onHa
741
745
  setPage(0);
742
746
  }, "handleChangeRowsPerPage");
743
747
  const noResults = useMemo5(() => {
744
- return !loading && (!visiblePayloads || visiblePayloads.length === 0);
748
+ return !loading && visiblePayloads.length === 0;
745
749
  }, [
746
750
  loading,
747
751
  visiblePayloads
@@ -752,9 +756,8 @@ var PayloadTableWithRef = /* @__PURE__ */ __name(({ exploreDomain, archive, onHa
752
756
  }, /* @__PURE__ */ React9.createElement(PayloadTableHeadComponent, {
753
757
  columns
754
758
  }), /* @__PURE__ */ React9.createElement(PayloadTableBodyComponent, {
759
+ clickableFields,
755
760
  payloads: visiblePayloads,
756
- exploreDomain,
757
- archive,
758
761
  maxSchemaDepth,
759
762
  onRowClick,
760
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 archive?: string\n columns?: PayloadDynamicTableColumnConfig\n exploreDomain?: string\n network?: string\n payload?: Payload & { sources?: string[] }\n}\n\nexport const PayloadDynamicTableRow: React.FC<PayloadDynamicTableRowProps> = ({\n archive,\n columns,\n exploreDomain,\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 archive={archive}\n value={payloadHash}\n dataType=\"payload\"\n exploreDomain={exploreDomain}\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> &nbsp;</Typography>}\n </TableCell>\n )\n\n const tableCells: Record<PayloadDynamicTableColumnSlug, TableCellRenderer> = {\n details,\n hash,\n icon,\n render,\n schema,\n valid,\n }\n\n const columnsMemo = useMemo(() => columns ?? payloadDynamicTableColumnConfigDefaults(), [columns])\n\n return breakPoint\n ? (\n <TableRow style={{ maxWidth: '100vw' }} {...props}>\n {columnsMemo[breakPoint]?.map((column) => {\n return column.slug ? tableCells[column.slug]({}) : null\n })}\n </TableRow>\n )\n : null\n}\n","export type PayloadDynamicTableColumnSlug = 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n\nexport interface PayloadDynamicTableColumnHeadData {\n alignment?: 'left' | 'center' | 'right'\n name?: string\n slug?: 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n width?: string | number\n}\n\nexport interface PayloadDynamicTableColumnConfig {\n xs?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n sm?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n md?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n lg?: PayloadDynamicTableColumnHeadData[]\n xl?: PayloadDynamicTableColumnHeadData[]\n}\n\nexport const payloadDynamicTableColumnConfigDefaults = (): PayloadDynamicTableColumnConfig => {\n const xs: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const sm: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const md: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const lg: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const xl: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n return {\n lg, md, sm, xl, xs,\n }\n}\n","import {\n FirstPage as FirstPageIcon, KeyboardArrowLeft, KeyboardArrowRight, LastPage as LastPageIcon,\n} from '@mui/icons-material'\nimport type { TableProps } from '@mui/material'\nimport {\n Alert,\n Box,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableFooter,\n TableHead,\n TablePagination,\n TableRow,\n Typography,\n useTheme,\n} from '@mui/material'\nimport { ThrownErrorBoundary } from '@xylabs/react-error'\nimport { useResetState } from '@xylabs/react-hooks'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { usePayloadHashes } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { PayloadDynamicTableRow } from './DynamicTableRow.tsx'\nimport type { PayloadDynamicTableColumnConfig } from './PayloadDynamicTableColumnConfig.ts'\nimport { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig.ts'\n\nexport interface PayloadDynamicTableProps extends TableProps {\n archive?: string\n columns?: PayloadDynamicTableColumnConfig\n exploreDomain?: string\n onRowClick?: (value: Payload) => void\n payloads?: Payload[] | null\n rowsPerPage?: number\n}\n\ninterface TablePaginationActionsProps {\n count: number\n onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void\n page: number\n rowsPerPage: number\n}\n\nconst TablePaginationActions: React.FC<TablePaginationActionsProps> = (props) => {\n const theme = useTheme()\n const {\n count, page, rowsPerPage, onPageChange,\n } = props\n\n const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label=\"first page\">\n {theme.direction === 'rtl'\n ? <LastPageIcon />\n : <FirstPageIcon />}\n </IconButton>\n <IconButton onClick={handleBackButtonClick} disabled={page === 0} aria-label=\"previous page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowRight />\n : <KeyboardArrowLeft />}\n </IconButton>\n <IconButton onClick={handleNextButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"next page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowLeft />\n : <KeyboardArrowRight />}\n </IconButton>\n <IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"last page\">\n {theme.direction === 'rtl'\n ? <FirstPageIcon />\n : <LastPageIcon />}\n </IconButton>\n </Box>\n )\n}\n\nexport const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({\n archive,\n children,\n columns,\n exploreDomain,\n onRowClick,\n rowsPerPage: rowsPerPageProp = 10,\n payloads,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const [page, setPage] = useState(0)\n const [rowsPerPage, setRowsPerPage] = useResetState(rowsPerPageProp)\n const payloadCount = payloads ? payloads.length : 0\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - payloadCount) : 0\n\n const pagedPayloads = useMemo(() => payloads?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage), [payloads, page, rowsPerPage])\n\n const payloadPairs = usePayloadHashes(pagedPayloads)\n\n const handleChangePage = (event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {\n setPage(newPage)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(Number.parseInt(event.target.value, 10))\n setPage(0)\n }\n\n return breakPoint\n ? (\n <Table stickyHeader {...props}>\n <TableHead>\n <TableRow>\n {(columns ?? payloadDynamicTableColumnConfigDefaults())[breakPoint]?.map((column, 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 archive?: string\n columns?: PayloadTableColumnConfig\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 archive,\n columns,\n exploreDomain,\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 archive={archive}\n width=\"100%\"\n value={payloadHash}\n onHashClick={onHashClick}\n dataType=\"payload\"\n exploreDomain={exploreDomain}\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 <>&#x2026;</>\n {\n\n `${parts.slice(partsToRemove).reduce((previousValue, part) => previousValue + '.' + part, '')}`\n }\n </>\n )\n }\n }\n return schema\n }\n\n const schema: TableCellRenderer = props => (\n <TableCell title={payload?.schema} key=\"payloads\" align=\"center\" {...props}>\n <Typography 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":";;;;AAAA,SACEA,6BAA6BC,+BAC7BC,uBAAuBC,yBACvBC,uBAAuBC,+BAClB;AAIP,SACEC,WAAWC,UAAUC,kBAChB;AACP,SAASC,kBAAkB;AAC3B,SAASC,qBAAqB;AAC9B,SAASC,sBAAsB;AAE/B,SAASC,wBAAwB;AACjC,SAASC,kBAAkB;AAE3B,SAASC,sCAAsC;AAC/C,SAASC,eAAeC,sBAAsB;AAE9C,OAAOC,SAASC,eAAe;;;ACDxB,IAAMC,0CAA0C,6BAAA;AACrD,QAAMC,KAA0C;IAC9C;MACEC,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAUC,MAAM;MAAUC,OAAO;IAC5D;IACA;MACEH,WAAW;MAAQC,MAAM;MAASC,MAAM;MAASC,OAAO;IAC1D;;AAEF,QAAMC,KAA0C;IAC9C;MACEJ,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAUC,MAAM;MAAUC,OAAO;IAC5D;IACA;MACEH,WAAW;MAAQC,MAAM;MAASC,MAAM;MAASC,OAAO;IAC1D;;AAEF,QAAME,KAA0C;IAC9C;MACEL,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAUC,MAAM;MAAUC,OAAO;IAC5D;IACA;MACEH,WAAW;MAAQC,MAAM;MAASC,MAAM;MAASC,OAAO;IAC1D;;AAEF,QAAMG,KAA0C;IAC9C;MACEN,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAUC,MAAM;MAAUC,OAAO;IAC5D;IACA;MACEH,WAAW;MAAQC,MAAM;MAAUC,MAAM;MAAUC,OAAO;IAC5D;IACA;MACEH,WAAW;MAAQC,MAAM;MAASC,MAAM;MAASC,OAAO;IAC1D;;AAEF,QAAMI,KAA0C;IAC9C;MACEP,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAQC,MAAM;MAAQC,OAAO;IACxD;IACA;MACEH,WAAW;MAAQC,MAAM;MAAUC,MAAM;MAAUC,OAAO;IAC5D;IACA;MACEH,WAAW;MAAQC,MAAM;MAAUC,MAAM;MAAUC,OAAO;IAC5D;IACA;MACEH,WAAW;MAAQC,MAAM;MAASC,MAAM;MAASC,OAAO;IAC1D;;AAEF,SAAO;IACLG;IAAID;IAAID;IAAIG;IAAIR;EAClB;AACF,GA7EuD;;;ADkBhD,IAAMS,yBAAgE,wBAAC,EAC5EC,SACAC,SACAC,eACAC,SAASC,aACTC,SACA,GAAGC,MAAAA,MACJ;AACC,QAAMC,aAAaC,cAAAA;AACnB,QAAMC,cAAcC,eAAeL,OAAAA;AACnC,QAAM,EAAEF,QAAO,IAAKQ,WAAAA;AACpB,QAAM,EAAEC,SAAQ,IAAKC,+BAAAA;AACrB,QAAM,CAACC,mBAAmB,CAAA,CAAE,IAAIC,WAAW,YAAaV,UAAU,MAAM,IAAIW,iBAAiBX,OAAAA,EAASY,SAAQ,IAAKC,QAAY;IAACb;GAAQ;AACxI,QAAMc,UAAUL,iBAAiBM,WAAW;AAC5C,QAAMC,oBAAoBhB,UAAUiB,OAAOC,KAAKC,eAAeC,eAAepB,OAAAA,CAAAA,EAAUe,SAAS;AAEjG,QAAMM,OAA0BpB,wBAAAA,WAC9B,sBAAA,cAACqB,eAAAA;IACCC,KAAI;IACJC,OAAM;IACN7B;IACA8B,OAAOrB;IACPsB,UAAS;IACT7B;IACAC,SAASC,eAAeD,SAAS6B;IAChC,GAAG1B;MATwBA;AAahC,QAAM2B,SAA4B3B,wBAAAA,WAChC,sBAAA,cAAC4B,WAAAA;IAAUN,KAAI;IAAWC,OAAM;IAAQ,GAAGvB;KACzC,sBAAA,cAAC6B,YAAAA;IAAWC,YAAW;IAAYC,SAAQ;IAAQC,QAAAA;KAChDjC,SAAS4B,MAAAA,CAAAA,GAHkB3B;AAQlC,QAAMiC,UAA6BjC,wBAAAA,WACjC,sBAAA,cAAC4B,WAAAA;IAAUN,KAAI;IAAWC,OAAM;IAAQ,GAAGvB;KACzC,sBAAA,cAAC6B,YAAAA;IAAWC,YAAW;IAAYC,SAAQ;IAAQC,QAAAA;KAChDjB,iBAAAA,CAAAA,GAH4Bf;AAQnC,QAAMkC,SAA4B,wBAAClC,WAAAA;AACjC,UAAMmC,SACFpC,UAAUO,UAAU8B,QAAQrC,OAAAA,GAAUsC,WAAWC,MAAMC,OAAO3B;AAClE,WAAOuB,SAAS,sBAAA,cAACA,QAAAA;MAAOpC;MAAmB,GAAGC;SAAY,sBAAA,cAAC4B,WAAAA;MAAUN,KAAI;MAAWC,OAAM;MAAQ,GAAGvB;;EACvG,GAJkC;AAMlC,QAAMwC,OAA0B,wBAACxC,WAAAA;AAC/B,UAAMyC,SACF1C,UAAUO,UAAU8B,QAAQrC,OAAAA,GAAUsC,WAAWK,OAAOC,QAAQ/B;AAEpE,WACE,sBAAA,cAACgB,WAAAA;MAAUN,KAAI;MAAWC,OAAM;MAAQ,GAAGvB;OACxCyC,SACG,sBAAA,cAACA,QAAAA;MAAO1C;SACR,IAAA;EAGV,GAXgC;AAahC,QAAM6C,QAA2B5C,wBAAAA,WAC/B,sBAAA,cAAC4B,WAAAA;IAAUN,KAAI;IAAQC,OAAM;IAAU,GAAGvB;KACvCa,YAAYD,UAAab,WAAWa,SACjC,sBAAA,cAACiC,yBAAAA;IAAwBC,UAAS;IAAQC,OAAM;OAChDlC,YAAY,OACV,sBAAA,cAACmC,+BAAAA;IAA8BF,UAAS;IAAQC,OAAM;OACtDlC,YAAY,QACV,sBAAA,cAACoC,yBAAAA;IAAwBF,OAAM;IAAQD,UAAS;OAEhD,sBAAA,cAACjB,YAAAA,MAAW,OAAA,CAAA,GATS7B;AAajC,QAAMkD,aAAuE;IAC3EjB;IACAb;IACAoB;IACAN;IACAP;IACAiB;EACF;AAEA,QAAMO,cAAcC,QAAQ,MAAMzD,WAAW0D,wCAAAA,GAA2C;IAAC1D;GAAQ;AAEjG,SAAOM,aAED,sBAAA,cAACqD,UAAAA;IAASC,OAAO;MAAEC,UAAU;IAAQ;IAAI,GAAGxD;KACzCmD,YAAYlD,UAAAA,GAAawD,IAAI,CAACC,WAAAA;AAC7B,WAAOA,OAAOhC,OAAOwB,WAAWQ,OAAOhC,IAAI,EAAE,CAAC,CAAA,IAAK;EACrD,CAAA,CAAA,IAGJ;AACN,GAjG6E;;;AEtC7E,SACEiC,aAAaC,eAAeC,mBAAmBC,oBAAoBC,YAAYC,oBAC1E;AAEP,SACEC,OACAC,KACAC,YACAC,OACAC,WACAC,aAAAA,YACAC,aACAC,WACAC,iBACAC,YAAAA,WACAC,cAAAA,aACAC,gBACK;AACP,SAASC,2BAA2B;AACpC,SAASC,qBAAqB;AAC9B,SAASC,iBAAAA,sBAAqB;AAE9B,SAASC,wBAAwB;AAEjC,OAAOC,UAASC,WAAAA,UAASC,gBAAgB;AAsBzC,IAAMC,yBAAgE,wBAACC,UAAAA;AACrE,QAAMC,QAAQC,SAAAA;AACd,QAAM,EACJC,OAAOC,MAAMC,aAAaC,aAAY,IACpCN;AAEJ,QAAMO,6BAA6B,wBAACC,UAAAA;AAClCF,iBAAaE,OAAO,CAAA;EACtB,GAFmC;AAInC,QAAMC,wBAAwB,wBAACD,UAAAA;AAC7BF,iBAAaE,OAAOJ,OAAO,CAAA;EAC7B,GAF8B;AAI9B,QAAMM,wBAAwB,wBAACF,UAAAA;AAC7BF,iBAAaE,OAAOJ,OAAO,CAAA;EAC7B,GAF8B;AAI9B,QAAMO,4BAA4B,wBAACH,UAAAA;AACjCF,iBAAaE,OAAOI,KAAKC,IAAI,GAAGD,KAAKE,KAAKX,QAAQE,WAAAA,IAAe,CAAA,CAAA;EACnE,GAFkC;AAIlC,SACE,gBAAAU,OAAA,cAACC,KAAAA;IAAIC,IAAI;MAAEC,YAAY;MAAGC,IAAI;IAAI;KAChC,gBAAAJ,OAAA,cAACK,YAAAA;IAAWC,SAASd;IAA4Be,UAAUlB,SAAS;IAAGmB,cAAW;KAC/EtB,MAAMuB,cAAc,QACjB,gBAAAT,OAAA,cAACU,cAAAA,IAAAA,IACD,gBAAAV,OAAA,cAACW,eAAAA,IAAAA,CAAAA,GAEP,gBAAAX,OAAA,cAACK,YAAAA;IAAWC,SAASZ;IAAuBa,UAAUlB,SAAS;IAAGmB,cAAW;KAC1EtB,MAAMuB,cAAc,QACjB,gBAAAT,OAAA,cAACY,oBAAAA,IAAAA,IACD,gBAAAZ,OAAA,cAACa,mBAAAA,IAAAA,CAAAA,GAEP,gBAAAb,OAAA,cAACK,YAAAA;IAAWC,SAASX;IAAuBY,UAAUlB,QAAQQ,KAAKE,KAAKX,QAAQE,WAAAA,IAAe;IAAGkB,cAAW;KAC1GtB,MAAMuB,cAAc,QACjB,gBAAAT,OAAA,cAACa,mBAAAA,IAAAA,IACD,gBAAAb,OAAA,cAACY,oBAAAA,IAAAA,CAAAA,GAEP,gBAAAZ,OAAA,cAACK,YAAAA;IAAWC,SAASV;IAA2BW,UAAUlB,QAAQQ,KAAKE,KAAKX,QAAQE,WAAAA,IAAe;IAAGkB,cAAW;KAC9GtB,MAAMuB,cAAc,QACjB,gBAAAT,OAAA,cAACW,eAAAA,IAAAA,IACD,gBAAAX,OAAA,cAACU,cAAAA,IAAAA,CAAAA,CAAAA;AAIb,GA9CsE;AAgD/D,IAAMI,sBAA0D,wBAAC,EACtEC,SACAC,UACAC,SACAC,eACAC,YACA7B,aAAa8B,kBAAkB,IAC/BC,UACA,GAAGpC,MAAAA,MACJ;AACC,QAAMqC,aAAaC,eAAAA;AACnB,QAAM,CAAClC,MAAMmC,OAAAA,IAAWC,SAAS,CAAA;AACjC,QAAM,CAACnC,aAAaoC,cAAAA,IAAkBC,cAAcP,eAAAA;AACpD,QAAMQ,eAAeP,WAAWA,SAASQ,SAAS;AAElD,QAAMC,YAAYzC,OAAO,IAAIQ,KAAKC,IAAI,IAAI,IAAIT,QAAQC,cAAcsC,YAAAA,IAAgB;AAEpF,QAAMG,gBAAgBC,SAAQ,MAAMX,UAAUY,MAAM5C,OAAOC,aAAaD,OAAOC,cAAcA,WAAAA,GAAc;IAAC+B;IAAUhC;IAAMC;GAAY;AAExI,QAAM4C,eAAeC,iBAAiBJ,aAAAA;AAEtC,QAAMK,mBAAmB,wBAAC3C,OAAmD4C,YAAAA;AAC3Eb,YAAQa,OAAAA;EACV,GAFyB;AAIzB,QAAMC,0BAA0B,wBAAC7C,UAAAA;AAC/BiC,mBAAea,OAAOC,SAAS/C,MAAMgD,OAAOC,OAAO,EAAA,CAAA;AACnDlB,YAAQ,CAAA;EACV,GAHgC;AAKhC,SAAOF,aAED,gBAAAtB,OAAA,cAAC2C,OAAAA;IAAMC,cAAAA;IAAc,GAAG3D;KACtB,gBAAAe,OAAA,cAAC6C,WAAAA,MACC,gBAAA7C,OAAA,cAAC8C,WAAAA,OACG7B,WAAW8B,wCAAAA,GAA2CzB,UAAAA,GAAa0B,IAAI,CAACC,QAAQC,UAAAA;AAChF,WACE,gBAAAlD,OAAA,cAACmD,YAAAA;MAAUC,KAAKF;MAAOG,OAAOJ,OAAOK,aAAa;MAAQC,OAAON,OAAOM;OACtE,gBAAAvD,OAAA,cAACwD,aAAAA;MAAWC,SAAQ;MAAQC,QAAAA;OACzBT,OAAOU,IAAI,CAAA;EAIpB,CAAA,CAAA,CAAA,GAGJ,gBAAA3D,OAAA,cAAC4D,WAAAA;IAAU1D,IAAI;MAAE2D,WAAW;IAAU;KACnC3B,cAAcc,IAAI,CAAC,CAACc,SAASC,IAAAA,GAAOb,UAAAA;AACnC,WACE,gBAAAlD,OAAA,cAACgE,qBAAAA;MACCC,cAAa;MACbb,KAAK,GAAGW,IAAAA,IAAQb,KAAAA;MAChBgB,gBAAgBC,wBAAAA,MACd,gBAAAnE,OAAA,cAACoE,OAAAA;QAAMC,UAAS;SAAQ,0BAErB,KACD,gBAAArE,OAAA,cAACwD,aAAAA;QAAWc,YAAW;SAAQH,EAAEI,OAAO,CAAA,GAJ5BJ;OAQhB,gBAAAnE,OAAA,cAACwE,wBAAAA;MACCzD;MACAT,SACEa,aACI,MAAA;AACEA,mBAAW2C,OAAAA;MACb,IACAW;MAENvD;MACA4C;;EAIR,CAAA,GACC9C,UACAc,YAAa4C,MAAMC,KAAK;IAAE9C,QAAQC;EAAU,CAAA,EAAG8C,KAAK,gBAAA5E,OAAA,cAACwE,wBAAAA,IAAAA,CAAAA,IAA6C,IAAA,GAErG,gBAAAxE,OAAA,cAAC6E,aAAAA,MACC,gBAAA7E,OAAA,cAAC8C,WAAAA,MACC,gBAAA9C,OAAA,cAAC8E,iBAAAA;IACCC,oBAAoB;MAAC;MAAG;MAAI;MAAI;QAAEC,OAAO;QAAOtC,OAAO;MAAG;;IAC1DuC,SAAS;IACT7F,OAAOwC;IACPtC;IACAD;IACA6F,aAAa;MACXC,YAAY;QAAE,cAAc;MAAgB;MAC5CC,QAAQ;IACV;IACA7F,cAAc6C;IACdiD,qBAAqB/C;IACrBgD,kBAAkBtG;UAM5B;AACN,GAnGuE;;;ACxFhE,IAAMuG,qBAA+D;EAC1EC,MAAM;EACNC,QAAQ;EACRC,OAAO;AACT;AAEO,IAAMC,mCAAmC,6BAAA;AAC9C,QAAMC,KAA+B;IAAC;IAAQ;IAAU;;AACxD,QAAMC,KAA+B;IAAC;IAAQ;IAAU;;AACxD,QAAMC,KAA+B;IAAC;IAAQ;IAAU;;AACxD,QAAMC,KAA+B;IAAC;IAAQ;IAAU;;AACxD,QAAMC,KAA+B;IAAC;IAAQ;IAAU;;AACxD,SAAO;IACLD;IAAID;IAAID;IAAIG;IAAIJ;EAClB;AACF,GATgD;;;ACThD,SAASK,eAAe;AAExB,OAAOC,UAASC,WAAAA,UAASC,YAAAA,iBAAgB;;;ACLzC,SACEC,SAAAA,QAAOC,aAAAA,YAAWC,cAAAA,mBACb;AACP,SAASC,uBAAAA,4BAA2B;AACpC,SAASC,oBAAAA,yBAAwB;AAEjC,OAAOC,YAAW;;;ACNlB,SACEC,6BAA6BC,gCAC7BC,uBAAuBC,0BACvBC,uBAAuBC,gCAClB;AAEP,SACEC,OAAOC,aAAAA,YAAWC,YAAAA,WAAUC,cAAAA,mBACvB;AAEP,SAASC,cAAAA,mBAAkB;AAC3B,SAASC,iBAAAA,sBAAqB;AAE9B,SAASC,oBAAAA,yBAAwB;AACjC,SAASC,cAAAA,mBAAkB;AAC3B,SAASC,iBAAAA,gBAAeC,kBAAAA,uBAAsB;AAC9C,OAAOC,UAASC,WAAAA,gBAAe;AAgBxB,IAAMC,kBAAkD,wBAAC,EAC9DC,SACAC,SACAC,eACAC,gBACAC,SAASC,aACTC,aACAC,SACA,GAAGC,MAAAA,MACJ;AACC,QAAMC,aAAaC,eAAAA;AACnB,QAAMC,cAAcC,gBAAeL,OAAAA;AACnC,QAAM,EAAEH,QAAO,IAAKS,YAAAA;AACpB,QAAM,CAACC,SAAS,CAAA,CAAE,IAAIC,YAAW,YAAaR,UAAU,MAAM,IAAIS,kBAAiBT,OAAAA,EAASU,SAAQ,IAAKC,QAAY;IAACX;GAAQ;AAC9H,QAAMY,UAAUL,OAAOM,WAAW;AAElC,QAAMC,OAA0Bb,wBAAAA,WAC9B,gBAAAc,OAAA,cAACC,gBAAAA;IACCC,KAAI;IACJxB;IACAyB,OAAM;IACNC,OAAOf;IACPL;IACAqB,UAAS;IACTzB;IACAE,SAASC,eAAeD,SAASwB;IAChC,GAAGpB;MAVwBA;AAchC,QAAMqB,oBAAoB,wBAACC,SAAiB3B,oBAAAA;AAC1C,QAAIA,iBAAgB;AAClB,YAAM4B,QAAQD,SAAQE,MAAM,GAAA,KAAQ,CAAA;AACpC,YAAMC,gBAAgBC,KAAKC,IAAIJ,MAAMX,SAASjB,iBAAgB,CAAA;AAC9D,UAAI8B,gBAAgB,GAAG;AACrB,eACE,gBAAAX,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAAAA,OAAA,UAAA,MAAE,QAAA,GAGA,GAAGS,MAAMK,MAAMH,aAAAA,EAAeI,OAAO,CAACC,eAAeC,SAASD,gBAAgB,MAAMC,MAAM,EAAA,CAAA,EAAK;MAIvG;IACF;AACA,WAAOT;EACT,GAjB0B;AAmB1B,QAAMA,SAA4BtB,wBAAAA,WAChC,gBAAAc,OAAA,cAACkB,YAAAA;IAAUC,OAAOlC,SAASuB;IAAQN,KAAI;IAAWkB,OAAM;IAAU,GAAGlC;KACnE,gBAAAc,OAAA,cAACqB,aAAAA;IAAWC,YAAW;IAAYC,SAAQ;IAAQC,QAAAA;KAChDjB,kBAAkBtB,SAASuB,QAAQ3B,cAAAA,CAAAA,CAAAA,GAHRK;AAQlC,QAAMuC,QAA2BvC,wBAAAA,WAC/B,gBAAAc,OAAA,cAACkB,YAAAA;IAAUhB,KAAI;IAAQkB,OAAM;IAAU,GAAGlC;KACvCW,YAAYD,UAAaX,WAAWW,SACjC,gBAAAI,OAAA,cAAC0B,0BAAAA;IAAwBC,UAAS;IAAQC,OAAM;OAChD/B,YAAY,OACV,gBAAAG,OAAA,cAAC6B,gCAAAA;IAA8BF,UAAS;IAAQC,OAAM;OACtD/B,YAAY,QACV,gBAAAG,OAAA,cAAC8B,0BAAAA;IAAwBF,OAAM;IAAQD,UAAS;OAEhD,gBAAA3B,OAAA,cAAC8B,0BAAAA;IAAwBC,IAAI;MAAEH,OAAOI,MAAM,QAAQ,CAAA;IAAG;IAAGL,UAAS;OAT9CzC;AAajC,QAAM+C,aAAgE;IACpElC;IACAS;IACAiB;EACF;AAEA,QAAMS,cAAcC,SAAQ,MAAMxD,WAAWyD,iCAAAA,GAAoC;IAACzD;GAAQ;AAE1F,SAAOQ,aAED,gBAAAa,OAAA,cAACqC,WAAAA;IAASC,OAAO;MAAEC,UAAU;IAAQ;IAAI,GAAGrD;KACzCgD,YAAY/C,UAAAA,GAAaqD,IAAI,CAACC,WAAAA;AAC7B,WAAOR,WAAWQ,MAAAA,EAAQ,CAAC,CAAA;EAC7B,CAAA,CAAA,IAGJ;AACN,GAvF+D;;;ADrBxD,IAAMC,mBAAoD,wBAAC,EAChEC,UACAC,eACAC,UACAC,SACAC,gBACAC,aACAC,YACAC,WACAC,WACAC,sBACA,GAAGC,MAAAA,MACJ;AACC,QAAMC,eAAeC,kBAAiBV,QAAAA;AAEtC,SACE,gBAAAW,OAAA,cAACC,YAAcJ,OACZF,aAAaC,uBACV,gBAAAI,OAAA,cAACJ,sBAAAA,IAAAA,IACD,MACHE,cAAcI,IAAI,CAAC,CAACC,SAASC,IAAAA,GAAOC,UAAAA;AACnC,WACE,gBAAAL,OAAA,cAACM,sBAAAA;MACCC,cAAa;MACbC,KAAK,GAAGJ,IAAAA,IAAQC,KAAAA;MAChBI,gBAAgBC,wBAAAA,MACd,gBAAAV,OAAA,cAACW,QAAAA;QAAMC,UAAS;SAAQ,0BAErB,KACD,gBAAAZ,OAAA,cAACa,aAAAA;QAAWC,YAAW;SAAQJ,EAAEK,OAAO,CAAA,GAJ5BL;OAQhB,gBAAAV,OAAA,cAACgB,iBAAAA;MACCzB;MACAD;MACA2B,SACExB,aACI,MAAA;AACEA,mBAAWU,OAAAA;MACb,IACAe;MAEN1B;MACAJ;MACAe;;EAIR,CAAA,GACChB,UACAO,YAAayB,MAAMC,KAAK;IAAEC,QAAQ3B;EAAU,CAAA,EAAG4B,KAAK,gBAAAtB,OAAA,cAACgB,iBAAAA,IAAAA,CAAAA,IAAsC,IAAA;AAGlG,GAtDiE;;;AEXjE,SACEO,QAAQC,mBAAAA,kBAAiBC,YAAAA,iBACpB;AACP,SAASC,qBAAqB;AAC9B,OAAOC,YAAW;;;ACJlB,SACEC,aAAaC,gBAAeC,qBAAAA,oBAAmBC,sBAAAA,qBAAoBC,YAAYC,qBAC1E;AACP,SACEC,OAAAA,MAAKC,kBAAkBC,cAAAA,aAAYC,YAAAA,iBAC9B;AACP,SAASC,gBAAgB;AACzB,OAAOC,YAAW;AAaX,SAASC,wBAAuB,EACrCC,OAAOC,gBAAgBC,SAASC,cAAcC,MAAMC,YAAW,GACzB;AACtC,QAAMC,QAAQC,UAAAA;AACd,QAAM,CAACC,eAAeC,kBAAAA,IAAsBC,SAAAA;AAE5C,QAAMC,6BAA6B,wBAACC,UAAAA;AAClCH,uBAAmB,aAAa,SAAS,MAAA;AACzCN,iBAAaS,OAAO,CAAA;EACtB,GAHmC;AAKnC,QAAMC,wBAAwB,wBAACD,UAAAA;AAC7BH,uBAAmB,gBAAgB,UAAUL,OAAO,IAAIU,SAAAA,CAAAA;AACxDX,iBAAaS,OAAOR,OAAO,CAAA;EAC7B,GAH8B;AAK9B,QAAMW,wBAAwB,wBAACH,UAAAA;AAC7BH,uBAAmB,YAAY,UAAUL,OAAO,IAAIU,SAAAA,CAAAA;AACpDX,iBAAaS,OAAOR,OAAO,CAAA;EAC7B,GAH8B;AAK9B,QAAMY,4BAA4B,wBAACJ,UAAAA;AACjCH,uBAAmB,YAAY,SAAS,MAAA;AACxCN,iBAAaS,OAAOK,KAAKC,IAAI,GAAGD,KAAKE,KAAKnB,QAAQK,WAAAA,IAAe,CAAA,CAAA;EACnE,GAHkC;AAKlC,SACE,gBAAAe,OAAA,cAAAA,OAAA,UAAA,MACGlB,UAEK,gBAAAkB,OAAA,cAACC,kBAAAA;IACCC,MAAK;IACLC,IAAI;MACFC,QAAQlB,MAAMmB,QAAQ,CAAA;MAAIC,UAAU;MAAYC,OAAOrB,MAAMmB,QAAQ,CAAA;IACvE;OAGJ,MACJ,gBAAAL,OAAA,cAACQ,MAAAA;IAAIL,IAAI;MAAEM,YAAY;MAAGC,IAAI;IAAI;KAChC,gBAAAV,OAAA,cAACW,aAAAA;IAAWC,SAASrB;IAA4BsB,UAAU7B,SAAS;IAAG8B,cAAW;KAC/E5B,MAAM6B,cAAc,QACjB,gBAAAf,OAAA,cAACgB,eAAAA,IAAAA,IACD,gBAAAhB,OAAA,cAACiB,gBAAAA,IAAAA,CAAAA,GAEP,gBAAAjB,OAAA,cAACW,aAAAA;IAAWO,KAAK9B;IAAewB,SAASnB;IAAuBoB,UAAU7B,SAAS;IAAG8B,cAAW;KAC9F5B,MAAM6B,cAAc,QACjB,gBAAAf,OAAA,cAACmB,qBAAAA,IAAAA,IACD,gBAAAnB,OAAA,cAACoB,oBAAAA,IAAAA,CAAAA,GAEP,gBAAApB,OAAA,cAACW,aAAAA;IACCO,KAAK9B;IACLwB,SAASjB;IACTkB,UAAU,CAAChC,kBAAkBG,QAAQa,KAAKE,KAAKnB,QAAQK,WAAAA,IAAe;IACtE6B,cAAW;KAEV5B,MAAM6B,cAAc,QACjB,gBAAAf,OAAA,cAACoB,oBAAAA,IAAAA,IACD,gBAAApB,OAAA,cAACmB,qBAAAA,IAAAA,CAAAA,GAEP,gBAAAnB,OAAA,cAACW,aAAAA;IAAWC,SAAShB;IAA2BiB,UAAU7B,QAAQa,KAAKE,KAAKnB,QAAQK,WAAAA,IAAe;IAAG6B,cAAW;KAC9G5B,MAAM6B,cAAc,QACjB,gBAAAf,OAAA,cAACiB,gBAAAA,IAAAA,IACD,gBAAAjB,OAAA,cAACgB,eAAAA,IAAAA,CAAAA,CAAAA,CAAAA;AAKf;AAnEgBrC,OAAAA,yBAAAA;;;ADXT,IAAM0C,qBAAwD,wBAAC,EACpEC,OACAC,SACAC,MACAC,aACAC,kBACAC,yBACAC,mBACAC,QAAO,MAEP,gBAAAC,OAAA,cAACC,eAAAA;EAAcR;GACb,gBAAAO,OAAA,cAACE,WAAAA,MACC,gBAAAF,OAAA,cAACG,uBAAAA;EACCC,oBAAoB;IAAC;IAAG;IAAI;IAAI;MAAEC,OAAO;MAAOC,OAAO;IAAG;;EAC1Dd,OAAOA,SAAS;EAChBG,aAAaA,eAAe;EAC5BD,MAAMA,QAAQ;EACda,aAAa;IACXC,YAAY;MAAE,cAAc;IAAgB;IAC5CC,QAAQ;EACV;EACAC,cAAcd,qBAAqB,MAAA;EAAO;EAC1Ce,qBAAqBd,4BAA4B,MAAA;EAAO;;EAExDe,kBAAkB,wBAACC,UAAe,gBAAAb,OAAA,cAACc,yBAAAA;IAAuBC,gBAAgB,CAAC,CAACjB;IAAmBC;IAAmB,GAAGc;MAAnG;MAxB2C;AA8BrE,IAAMV,wBAAwBa,OAAOC,gBAAAA,EAAiB,CAAC,EAAEC,MAAK,OAAQ;EACpE,wBAAwB;IAAEC,aAAaD,MAAME,QAAQ,CAAA;EAAG;EACxD,aAAa;EACb,kBAAkBF,MAAMG,KAAKC,QAAQC;AACvC,EAAA;;;AE3CA,SACEC,aAAAA,YAAWC,aAAAA,YAAWC,YAAAA,WAAUC,cAAAA,mBAC3B;AACP,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,UAASC,WAAAA,gBAAe;AAMxB,IAAMC,mBAA4E,wBAAC,EAAEC,SAAS,GAAGC,MAAAA,MAAO;AAC7G,QAAMC,aAAaC,eAAAA;AACnB,QAAMC,cAAcC,SAAQ,MAAML,WAAWM,iCAAAA,GAAoC;IAACN;GAAQ;AAC1F,SACE,gBAAAO,OAAA,cAACC,YAAcP,OACb,gBAAAM,OAAA,cAACE,WAAAA,MACEP,aACGE,YAAYF,UAAAA,GAAaQ,IAAI,CAACC,QAAQC,UAAAA;AACpC,WACE,gBAAAL,OAAA,cAACM,YAAAA;MAAUC,KAAKF;MAAOG,OAAOH,UAAU,IAAI,SAASI;MAAWC,OAAOL,UAAU,IAAI,SAAS;OAC5F,gBAAAL,OAAA,cAACW,aAAAA;MAAWC,SAAQ;MAAQC,QAAAA;OACzBC,mBAAmBV,MAAAA,CAAO,CAAA;EAInC,CAAA,IACA,IAAA,CAAA;AAIZ,GApByF;;;ACTzF,SACEW,UAAAA,SAAQC,aAAAA,YAAWC,YAAAA,WAAUC,cAAAA,mBACxB;AACP,OAAOC,YAAW;AAQX,IAAMC,iBAAgD,wBAAC,EAC5DC,iBAAiBC,aAAa,OAAOC,iBAAiB,GAAGC,MAAAA,MAC1D;AACC,SACE,gBAAAC,OAAA,cAACC,WAAaF,OACZ,gBAAAC,OAAA,cAACE,iBAAAA;IAAgBL;KACf,gBAAAG,OAAA,cAACG,aAAAA;IAAWC,SAAQ;IAAS,GAAGN;KAAiB,uBAAA,CAAA,GAIlDF,kBACGS,MAAMC,KAAK;IAAEC,QAAQX;EAAgB,CAAA,EAClCY,KAAK,IAAA,EACLC,IAAI,CAACC,OAAOC,UAAU,gBAAAX,OAAA,cAACE,iBAAAA;IAAgBU,KAAKD;IAAOd;QACtD,IAAA;AAGV,GAjB6D;AAuB7D,IAAMK,kBAAkBW,QAAOC,YAAW;EACxCC,MAAM;EACNC,mBAAmB,wBAACC,SAAiBA,SAAS,cAA3B;AACrB,CAAA,EAAyB,CAAC,EAAEpB,WAAU,OAAQ;EAAE,GAAIA,cAAc;IAAEqB,QAAQ;EAAO;AAAG,EAAA;;;ANF/E,IAAMC,sBAAmD,wBAC9D,EACEC,eACAC,SACAC,aACAC,YACAC,mBACAC,aAAaC,kBAAkB,IAC/BC,UACAC,SACAC,4BAA4BC,kBAC5BC,4BAA4BC,kBAC5BC,8BAA8BC,oBAC9BC,gBACAC,QAAQ,GACRC,UAAU,OACVC,UAAU,cACV,GAAGC,MAAAA,MACJ;AAED,QAAM,CAACC,MAAMC,OAAAA,IAAWC,UAAS,CAAA;AACjC,QAAM,CAACjB,aAAakB,cAAAA,IAAkBD,UAAShB,eAAAA;AAC/C,QAAM,CAACkB,iBAAiBC,kBAAAA,IAAsBH,UAAoB,CAAA,CAAE;AAGpE,QAAMI,YAAYN,OAAO,IAAIO,KAAKC,IAAI,IAAI,IAAIR,QAAQf,cAAcW,SAAS,CAAA,IAAK;AAElFa,EAAAA,SAAQ,MAAA;AACNN,mBAAejB,eAAAA;EACjB,GAAG;IAACA;GAAgB;AAIpBuB,EAAAA,SAAQ,MAAA;AACN,QAAItB,UAAU;AACZkB,yBAAmBlB,SAASuB,MAAMV,OAAOf,aAAae,OAAOf,cAAcA,WAAAA,CAAAA;IAC7E;EACF,GAAG;IAACW;IAAOI;IAAMb;IAAUF;GAAY;AAGvCwB,EAAAA,SAAQ,MAAA;AACNR,YAAQ,CAAA;EACV,GAAG;IAACd;GAAS;AAEb,QAAMwB,2BAA2B,6BAAA;AAC/B,QAAI3B,qBAAqBG,UAAU;AACjC,YAAMyB,SAAS3B,cAAc;AAC7B,YAAM4B,qBAAqBT,iBAAiBU,GAAG,EAAC;AAChD,UAAID,oBAAoB;AACtB,cAAME,mBAAmB5B,UAAU6B,QAAQH,kBAAAA;AAC3C,YAAIE,qBAAqBE,UAAa9B,SAAS+B,UAAUH,mBAAmB,MAAMH,QAAQ;AACxF5B,4BAAAA;QACF;MACF;IACF;EACF,GAXiC;AAajC,QAAMmC,mBAAmB,wBAACC,QAAoDC,YAAAA;AAC5EV,6BAAAA;AACAV,YAAQoB,OAAAA;EACV,GAHyB;AAKzB,QAAMC,0BAA0B,wBAACC,UAAAA;AAC/BpB,mBAAeqB,OAAOC,SAASF,MAAMG,OAAOC,OAAO,EAAA,CAAA;AACnD1B,YAAQ,CAAA;EACV,GAHgC;AAKhC,QAAM2B,YAAYnB,SAAQ,MAAA;AACxB,WAAO,CAACZ,YAAY,CAACO,mBAAmBA,gBAAgBc,WAAW;EACrE,GAAG;IAACrB;IAASO;GAAgB;AAE7B,SACE,gBAAAyB,OAAA,cAACC,SAAAA;IAAQhC;IAAmB,GAAGC;KAC7B,gBAAA8B,OAAA,cAACxC,2BAAAA;IAA0BD;MAC3B,gBAAAyC,OAAA,cAACtC,2BAAAA;IACCJ,UAAUiB;IACVxB;IACAC;IACAc;IACAZ;IACAD;IACAwB;IACAsB;IACAG,sBAAsBC;MAExB,gBAAAH,OAAA,cAACpC,6BAAAA;IACCG;IACAE;IACAb;IACAkC;IACAG;IACAtC;IACAa;IACAG;;AAIR,GAjGgE;AAmGhErB,oBAAoBsD,cAAc;AAE3B,IAAMC,eAAevD;","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","archive","columns","exploreDomain","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","archive","columns","exploreDomain","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> &nbsp;</Typography>}\n </TableCell>\n )\n\n const tableCells: Record<PayloadDynamicTableColumnSlug, TableCellRenderer> = {\n details,\n hash,\n icon,\n render,\n schema,\n valid,\n }\n\n const columnsMemo = useMemo(() => columns ?? payloadDynamicTableColumnConfigDefaults(), [columns])\n\n return breakPoint\n ? (\n <TableRow style={{ maxWidth: '100vw' }} {...props}>\n {columnsMemo[breakPoint]?.map((column) => {\n return column.slug ? tableCells[column.slug]({}) : null\n })}\n </TableRow>\n )\n : null\n}\n","export type PayloadDynamicTableColumnSlug = 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n\nexport interface PayloadDynamicTableColumnHeadData {\n alignment?: 'left' | 'center' | 'right'\n name?: string\n slug?: 'hash' | 'schema' | 'valid' | 'details' | 'render' | 'icon'\n width?: string | number\n}\n\nexport interface PayloadDynamicTableColumnConfig {\n xs?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n sm?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n md?: PayloadDynamicTableColumnHeadData[]\n // eslint-disable-next-line @typescript-eslint/member-ordering\n lg?: PayloadDynamicTableColumnHeadData[]\n xl?: PayloadDynamicTableColumnHeadData[]\n}\n\nexport const payloadDynamicTableColumnConfigDefaults = (): PayloadDynamicTableColumnConfig => {\n const xs: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const sm: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const md: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const lg: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n const xl: PayloadDynamicTableColumnHeadData[] = [\n {\n alignment: 'left', name: 'Icon', slug: 'icon', width: '50px',\n },\n {\n alignment: 'left', name: 'Hash', slug: 'hash', width: '100%',\n },\n {\n alignment: 'left', name: 'Schema', slug: 'schema', width: '50px',\n },\n {\n alignment: 'left', name: 'Render', slug: 'render', width: '50px',\n },\n {\n alignment: 'left', name: 'Valid', slug: 'valid', width: '50px',\n },\n ]\n return {\n lg, md, sm, xl, xs,\n }\n}\n","import {\n FirstPage as FirstPageIcon, KeyboardArrowLeft, KeyboardArrowRight, LastPage as LastPageIcon,\n} from '@mui/icons-material'\nimport type { TableProps } from '@mui/material'\nimport {\n Alert,\n Box,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableFooter,\n TableHead,\n TablePagination,\n TableRow,\n Typography,\n useTheme,\n} from '@mui/material'\nimport { ThrownErrorBoundary } from '@xylabs/react-error'\nimport { useResetState } from '@xylabs/react-hooks'\nimport { useBreakpoint } from '@xylabs/react-shared'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { usePayloadHashes } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { PayloadDynamicTableRow } from './DynamicTableRow.tsx'\nimport type { PayloadDynamicTableColumnConfig } from './PayloadDynamicTableColumnConfig.ts'\nimport { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig.ts'\n\nexport interface PayloadDynamicTableProps extends TableProps {\n archive?: string\n columns?: PayloadDynamicTableColumnConfig\n exploreDomain?: string\n onRowClick?: (value: Payload) => void\n payloads?: Payload[] | null\n rowsPerPage?: number\n}\n\ninterface TablePaginationActionsProps {\n count: number\n onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void\n page: number\n rowsPerPage: number\n}\n\nconst TablePaginationActions: React.FC<TablePaginationActionsProps> = (props) => {\n const theme = useTheme()\n const {\n count, page, rowsPerPage, onPageChange,\n } = props\n\n const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, 0)\n }\n\n const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page - 1)\n }\n\n const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, page + 1)\n }\n\n const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))\n }\n\n return (\n <Box sx={{ flexShrink: 0, ml: 2.5 }}>\n <IconButton onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label=\"first page\">\n {theme.direction === 'rtl'\n ? <LastPageIcon />\n : <FirstPageIcon />}\n </IconButton>\n <IconButton onClick={handleBackButtonClick} disabled={page === 0} aria-label=\"previous page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowRight />\n : <KeyboardArrowLeft />}\n </IconButton>\n <IconButton onClick={handleNextButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"next page\">\n {theme.direction === 'rtl'\n ? <KeyboardArrowLeft />\n : <KeyboardArrowRight />}\n </IconButton>\n <IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label=\"last page\">\n {theme.direction === 'rtl'\n ? <FirstPageIcon />\n : <LastPageIcon />}\n </IconButton>\n </Box>\n )\n}\n\nexport const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({\n archive,\n children,\n columns,\n exploreDomain,\n onRowClick,\n rowsPerPage: rowsPerPageProp = 10,\n payloads,\n ...props\n}) => {\n const breakPoint = useBreakpoint()\n const [page, setPage] = useState(0)\n const [rowsPerPage, setRowsPerPage] = useResetState(rowsPerPageProp)\n const payloadCount = payloads ? payloads.length : 0\n // Avoid a layout jump when reaching the last page with empty rows.\n const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - payloadCount) : 0\n\n const pagedPayloads = useMemo(() => payloads?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage), [payloads, page, rowsPerPage])\n\n const payloadPairs = usePayloadHashes(pagedPayloads)\n\n const handleChangePage = (event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {\n setPage(newPage)\n }\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n setRowsPerPage(Number.parseInt(event.target.value, 10))\n setPage(0)\n }\n\n return breakPoint\n ? (\n <Table stickyHeader {...props}>\n <TableHead>\n <TableRow>\n {(columns ?? payloadDynamicTableColumnConfigDefaults())[breakPoint]?.map((column, 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 <>&#x2026;</>\n {\n\n `${parts.slice(partsToRemove).reduce((previousValue, part) => previousValue + '.' + part, '')}`\n }\n </>\n )\n }\n }\n return schema\n }\n\n const schema: TableCellRenderer = props => (\n <TableCell title={payload?.schema} key=\"payloads\" align=\"center\" {...props}>\n <Typography 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,8 +3,10 @@ import type { Payload } from '@xyo-network/payload-model';
3
3
  import React from 'react';
4
4
  import type { PayloadDynamicTableColumnConfig } from './PayloadDynamicTableColumnConfig.ts';
5
5
  export interface PayloadDynamicTableRowProps extends TableRowProps {
6
+ /** @deprecated - archives are no longer used */
6
7
  archive?: string;
7
8
  columns?: PayloadDynamicTableColumnConfig;
9
+ /** @deprecated - use event listeners instead of link building via props */
8
10
  exploreDomain?: string;
9
11
  network?: string;
10
12
  payload?: Payload & {
@@ -1 +1 @@
1
- {"version":3,"file":"DynamicTableRow.d.ts","sourceRoot":"","sources":["../../../../src/components/DynamicTable/DynamicTableRow.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACmB,aAAa,EAC3C,MAAM,eAAe,CAAA;AAOtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAOzD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EACV,+BAA+B,EAEhC,MAAM,sCAAsC,CAAA;AAG7C,MAAM,WAAW,2BAA4B,SAAQ,aAAa;IAChE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,+BAA+B,CAAA;IACzC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC3C;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CAiGxE,CAAA"}
1
+ {"version":3,"file":"DynamicTableRow.d.ts","sourceRoot":"","sources":["../../../../src/components/DynamicTable/DynamicTableRow.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACmB,aAAa,EAC3C,MAAM,eAAe,CAAA;AAOtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAOzD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EACV,+BAA+B,EAEhC,MAAM,sCAAsC,CAAA;AAG7C,MAAM,WAAW,2BAA4B,SAAQ,aAAa;IAChE,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,+BAA+B,CAAA;IACzC,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC3C;AAED,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,2BAA2B,CA6FxE,CAAA"}
@@ -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;AAK7E,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,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,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,CAiG3D,CAAA;AAID,eAAO,MAAM,YAAY,6BAAsB,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,CAsD5D,CAAA"}
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,13 @@ 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
+ /** @deprecated - archives are no longer used */
7
8
  archive?: string;
9
+ clickableFields?: PayloadTableColumnSlug[];
8
10
  columns?: PayloadTableColumnConfig;
11
+ /** @deprecated - use event listeners instead of link building via props */
9
12
  exploreDomain?: string;
10
13
  maxSchemaDepth?: number;
11
14
  network?: 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;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAIzD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAGtC,OAAO,KAAK,EAAE,wBAAwB,EAA0B,MAAM,+BAA+B,CAAA;AAGrG,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC,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,CAuF1D,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.9",
3
+ "version": "5.3.11",
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.9",
51
- "@xyo-network/react-network": "^5.3.9",
52
- "@xyo-network/react-payload-plugin-resolver": "^5.3.9",
53
- "@xyo-network/react-shared": "^5.3.9",
54
- "@xyo-network/react-table": "^5.3.9"
51
+ "@xyo-network/react-event": "^5.3.11",
52
+ "@xyo-network/react-network": "^5.3.11",
53
+ "@xyo-network/react-payload-plugin-resolver": "^5.3.11",
54
+ "@xyo-network/react-shared": "^5.3.11",
55
+ "@xyo-network/react-table": "^5.3.11"
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.9",
66
- "@xyo-network/react-payload-plugin": "^5.3.9",
67
- "@xyo-network/react-storybook": "^5.3.9",
66
+ "@xyo-network/react-crypto-market-uniswap-plugin": "^5.3.11",
67
+ "@xyo-network/react-payload-plugin": "^5.3.11",
68
+ "@xyo-network/react-storybook": "^5.3.11",
68
69
  "react": "^19.1.0",
69
70
  "react-dom": "^19.1.0",
70
71
  "react-router-dom": "^7.6.2",
@@ -29,17 +29,17 @@ import type {
29
29
  import { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig.ts'
30
30
 
31
31
  export interface PayloadDynamicTableRowProps extends TableRowProps {
32
+ /** @deprecated - archives are no longer used */
32
33
  archive?: string
33
34
  columns?: PayloadDynamicTableColumnConfig
35
+ /** @deprecated - use event listeners instead of link building via props */
34
36
  exploreDomain?: string
35
37
  network?: string
36
38
  payload?: Payload & { sources?: string[] }
37
39
  }
38
40
 
39
41
  export const PayloadDynamicTableRow: React.FC<PayloadDynamicTableRowProps> = ({
40
- archive,
41
42
  columns,
42
- exploreDomain,
43
43
  network: networkProp,
44
44
  payload,
45
45
  ...props
@@ -56,10 +56,8 @@ export const PayloadDynamicTableRow: React.FC<PayloadDynamicTableRowProps> = ({
56
56
  <HashTableCell
57
57
  key="hash"
58
58
  align="left"
59
- archive={archive}
60
59
  value={payloadHash}
61
60
  dataType="payload"
62
- exploreDomain={exploreDomain}
63
61
  network={networkProp ?? network?.slug}
64
62
  {...props}
65
63
  />
@@ -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) => setEventData(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
- exploreDomain,
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 && (!visiblePayloads || visiblePayloads.length === 0)
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
- exploreDomain,
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'
@@ -21,8 +22,11 @@ import type { PayloadTableColumnConfig, PayloadTableColumnSlug } from './Payload
21
22
  import { payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig.ts'
22
23
 
23
24
  export interface PayloadTableRowProps extends TableRowProps {
25
+ /** @deprecated - archives are no longer used */
24
26
  archive?: string
27
+ clickableFields?: PayloadTableColumnSlug[]
25
28
  columns?: PayloadTableColumnConfig
29
+ /** @deprecated - use event listeners instead of link building via props */
26
30
  exploreDomain?: string
27
31
  maxSchemaDepth?: number
28
32
  network?: string
@@ -31,9 +35,8 @@ export interface PayloadTableRowProps extends TableRowProps {
31
35
  }
32
36
 
33
37
  export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
34
- archive,
38
+ clickableFields,
35
39
  columns,
36
- exploreDomain,
37
40
  maxSchemaDepth,
38
41
  network: networkProp,
39
42
  onHashClick,
@@ -48,20 +51,28 @@ export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
48
51
 
49
52
  const hash: TableCellRenderer = props => (
50
53
  <HashTableCell
51
- key="hash"
52
- archive={archive}
53
- width="100%"
54
- value={payloadHash}
55
- onHashClick={onHashClick}
56
54
  dataType="payload"
57
- exploreDomain={exploreDomain}
55
+ key="hash"
58
56
  network={networkProp ?? network?.slug}
57
+ onHashClick={onHashClick}
58
+ value={payloadHash}
59
+ width="100%"
59
60
  {...props}
60
- />
61
+ >
62
+ {isDefined(payloadHash) && (
63
+ <>
64
+ {clickableFields?.includes('hash')
65
+ ? (
66
+ <Link sx={{ cursor: 'pointer' }}>{payloadHash}</Link>
67
+ )
68
+ : payloadHash}
69
+ </>
70
+ )}
71
+ </HashTableCell>
61
72
  )
62
73
 
63
74
  const reduceSchemaDepth = (schema?: string, maxSchemaDepth?: number) => {
64
- if (maxSchemaDepth) {
75
+ if (isDefined(maxSchemaDepth)) {
65
76
  const parts = schema?.split('.') ?? []
66
77
  const partsToRemove = Math.max(parts.length - maxSchemaDepth, 0)
67
78
  if (partsToRemove > 0) {
@@ -82,7 +93,12 @@ export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
82
93
  const schema: TableCellRenderer = props => (
83
94
  <TableCell title={payload?.schema} key="payloads" align="center" {...props}>
84
95
  <Typography fontFamily="monospace" variant="body2" noWrap>
85
- {reduceSchemaDepth(payload?.schema, maxSchemaDepth)}
96
+ {clickableFields?.includes('schema')
97
+ ? (
98
+ <Link sx={{ cursor: 'pointer' }}>{reduceSchemaDepth(payload?.schema, maxSchemaDepth)}</Link>
99
+ )
100
+ : reduceSchemaDepth(payload?.schema, maxSchemaDepth)}
101
+
86
102
  </Typography>
87
103
  </TableCell>
88
104
  )
@@ -108,7 +124,7 @@ export const PayloadTableRow: React.FC<PayloadTableRowProps> = ({
108
124
 
109
125
  const columnsMemo = useMemo(() => columns ?? payloadTableColumnConfigDefaults(), [columns])
110
126
 
111
- return breakPoint
127
+ return isDefined(breakPoint)
112
128
  ? (
113
129
  <TableRow style={{ maxWidth: '100vw' }} {...props}>
114
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