import { useState, useCallback } from 'react'; export default function useColumns(columns: any[] = []) { const [opType, setOpType] = useState(''); const [opRecord, setRecord] = useState | null>(null); const [opTime, setNow] = useState(null); const [opExtra, setExtra] = useState(null); const handleRecord = useCallback((row: Record | null, type: string) => { setOpType(type); setRecord(row); setNow(Date.now()); }, []); const resetRecord = useCallback(() => { setRecord(null); setOpType(''); setNow(Date.now()); }, []); const opNew = useCallback(() => handleRecord(null, 'new'), [handleRecord]); const cols = columns.map((i: any) => { if (i.render) { const opRender = i.render; i.render = (text: string, row: Record) => { return opRender(text, row, { setRecord: handleRecord, setExtra }); }; } return i; }); return { opTime, opType, opNew, columns: cols, opRecord, setRecord: handleRecord, resetRecord, setExtra, opExtra, }; }