import { default as React } from 'react'; import { HeaderContext, Row } from '@tanstack/react-table'; import { TableColumnDef, RowsSelectionHandler, ColumnSelectorHandler, RowActionHandler, DraggableHandler } from '../types'; import { ITableColumnProps } from '../../table'; /** * Custom hook to manage table columns creation and memoization * Handles selection column, action column, and column filtering */ export default function useTableColumns(columns: ITableColumnProps[], rowsSelection?: RowsSelectionHandler, rowAction?: RowActionHandler, columnSelector?: ColumnSelectorHandler, draggable?: DraggableHandler): { memoizedColumns: TableColumnDef[]; selectionColumn: { id: string; header: ({ table }: HeaderContext) => React.FunctionComponentElement; cell: ({ row }: { row: Row; }) => React.FunctionComponentElement; enableSorting: boolean; enableResizing: boolean; minSize: number; maxSize: number; size: number; }; actionColumn: TableColumnDef | undefined; columnInitialSize: Record; selectedColumns: ITableColumnProps[]; columnOrder: string[]; handleSelectedColumns: (columns: ITableColumnProps[]) => void; setColumnOrder: (newOrder: React.SetStateAction) => void; };