UNPKG

@mrii/react-table-builder

Version:
35 lines (32 loc) 1.49 kB
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, useTableBuilderFilters] = createZustandContext(); const TableBuilderFiltersProvider = ({ name , children })=>/*#__PURE__*/ jsx(Provider, { name: `table-builder-filter - ${name}`, initialState: useMemo(()=>({ filters: [], panel: false }), []), actions: useCallback((set, get)=>({ setFilters: stateSetterHandler(set, 'filters'), setPanel: stateSetterHandler(set, 'panel'), addFilter: (filter)=>{ if (get().filters.findIndex((f)=>f.field === filter.field) !== -1) return; get().setFilters((v)=>[ ...v, filter ]); }, deleteFilter: (field)=>{ get().setFilters((v)=>v.filter((el)=>el.field !== field)); }, editFilter: (filter)=>{ get().setFilters((e)=>e.map((el)=>el.field === filter.field ? filter : el)); } }), []), children: children }); export { TableBuilderFiltersProvider, useTableBuilderFilters }; //# sourceMappingURL=provider.mjs.map