@mrii/react-table-builder
Version:
library to easily build tables using MUI grid
34 lines (31 loc) • 1.35 kB
JavaScript
import { jsx } from 'react/jsx-runtime';
import { useMemo, useCallback } from 'react';
import { createZustandContext } from '../../utils/create-zustand-context/index.mjs';
import { stateSetterHandler } from '../../utils/state-setter-handler/index.mjs';
const [Provider, useTableBuilderColumns] = createZustandContext();
const TableBuilderColumnsProvider = ({ name , children })=>/*#__PURE__*/ jsx(Provider, {
name: `table-builder-columns - ${name}`,
initialState: useMemo(()=>({
columns: []
}), []),
actions: useCallback((set, get)=>({
setColumn: stateSetterHandler(set, 'columns'),
addColumn: (column)=>{
const i = get().columns.findIndex((c)=>c.field === column.field);
if (i !== -1) {
get().setColumn((v)=>{
v[i] = column;
return v;
});
} else {
get().setColumn((v)=>[
...v,
column
]);
}
}
}), []),
children: children
});
export { TableBuilderColumnsProvider, useTableBuilderColumns };
//# sourceMappingURL=provider.mjs.map