import { default as React } from 'react'; import { HeaderContext, Row } from '@tanstack/react-table'; import { TableColumnDef, RowsSelectionHandler, ColumnSelectorHandler, RowActionHandler, DraggableHandler, ColumnActionHandler } 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, columnAction?: ColumnActionHandler): { 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[]; effectiveColumnOrder: string[]; handleSelectedColumns: (columns: ITableColumnProps[]) => void; handleHideColumn: (columnKey: string) => void; setColumnOrder: (newOrder: React.SetStateAction) => void; pinnedColumns: { left: string[]; right: string[]; }; handlePinColumn: (columnKey: string, side: "left" | "right") => void; };