import { produce } from 'immer' import type { ApplyPropsAction } from '../actions' import { createReducer } from '../utils/createReducer' export type GridFilterState = { fn?: (row: unknown) => boolean mode: 'default' | 'highlight' } const initialState: GridFilterState = { mode: 'default', } export default createReducer({ initialState, reducers: { applyProps(state, action: ApplyPropsAction) { return produce(state, (draft) => { draft.fn = action.payload.filter if (action.payload.filterMode !== undefined) { draft.mode = action.payload.filterMode } }) }, }, }) export const selectFilterMode = (state: GridFilterState) => state.mode export const selectFilterFn = (state: GridFilterState) => state.fn