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;