import { ColumnTypeRender } from 'components/Logs/TableView/types'; import { useTableView } from 'components/Logs/TableView/useTableView'; import { cloneElement, ReactElement, ReactNode, useCallback } from 'react'; import { TableComponents, TableVirtuoso } from 'react-virtuoso'; import { infinityDefaultStyles } from './config'; import { TableCellStyled, TableHeaderCellStyled, TableRowStyled, TableStyled, } from './styles'; import { InfinityTableProps } from './types'; // eslint-disable-next-line react/function-component-definition const CustomTable: TableComponents['Table'] = ({ style, children }) => ( {children} ); // eslint-disable-next-line react/function-component-definition const CustomTableRow: TableComponents['TableRow'] = ({ children, context, ...props // eslint-disable-next-line react/jsx-props-no-spreading }) => {children}; function InfinityTable({ tableViewProps, infitiyTableProps, }: InfinityTableProps): JSX.Element | null { const { onEndReached } = infitiyTableProps; const { dataSource, columns } = useTableView(tableViewProps); const itemContent = useCallback( (index: number, log: Record): JSX.Element => ( <> {columns.map((column) => { if (!column.render) return Empty; const element: ColumnTypeRender> = column.render( log[column.key as keyof Record], log, index, ); const elementWithChildren = element as Exclude< ColumnTypeRender>, ReactNode >; const children = elementWithChildren.children as ReactElement; const props = elementWithChildren.props as Record; return ( {cloneElement(children, props)} ); })} ), [columns], ); const tableHeader = useCallback( () => ( {columns.map((column) => ( {column.title as string} ))} ), [columns], ); return ( ); } export default InfinityTable;