import { default as TableRoot } from './table' import { default as TableHeader } from './table-header' import { default as TableBody } from './table-body' import { default as TableHead } from './table-head' import { default as TableRow } from './table-row' import { default as TableCell } from './table-cell' import { useMemo } from 'react' import { useTable, useSortBy } from 'react-table' import { Card } from '$src/lib/ui' import VisualizationHeader from '$src/lib/internal/shared/VisualizationHeader' import type QueryResult from '@latitude-data/query_result' interface Props { data: QueryResult className?: string title?: string description?: string download?: () => Promise } function TableComponent({ data, className, description, download, title, }: Props) { const columns = useMemo( () => data.fields.map((field) => ({ Header: field.name, accessor: field.name, })), [data.fields], ) const memoizedData = useMemo(() => data.toArray(), [data]) const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } = useTable({ columns, data: memoizedData }, useSortBy) return ( {headerGroups.map((headerGroup) => ( {headerGroup.headers.map((column) => ( {column.render('Header')} ))} ))} {rows.map((row, index) => { prepareRow(row) return ( {row.cells.map((cell) => ( {cell.render('Cell')} ))} ) })} ) } export { type Props } export default TableComponent