UNPKG

@hashport/widget

Version:
34 lines 1.43 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { createContext, useMemo, useReducer } from 'react'; const filterReducer = (state, { type, payload }) => { switch (type) { case 'updateSearchString': { return { ...state, searchString: payload.toLowerCase(), }; } case 'removeFilter': case 'addFilter': { // TODO: handle adding filter logic return state; } } }; export const SelectionFilterContext = createContext(null); export const SelectionFilterDispatchContext = createContext(null); const selectionFilterStateInit = { searchString: '', filters: [], disabledFilters: [], }; export const SelectionFilterProvider = ({ children }) => { const [filterState, filterDispatch] = useReducer(filterReducer, selectionFilterStateInit); const dispatch = useMemo(() => ({ updateSearchString: payload => filterDispatch({ type: 'updateSearchString', payload }), addFilter: payload => filterDispatch({ type: 'addFilter', payload }), removeFilter: payload => filterDispatch({ type: 'removeFilter', payload }), }), [filterDispatch]); return (_jsx(SelectionFilterContext.Provider, { value: filterState, children: _jsx(SelectionFilterDispatchContext.Provider, { value: dispatch, children: children }) })); }; //# sourceMappingURL=selectionFilterContext.js.map