@hashport/widget
Version:
React widget for hashport bridge
34 lines • 1.43 kB
JavaScript
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