import { createSelector } from '../utils' import type { StoreSimpleSelectors } from '../selectors' import { filter } from '../../data-tools' export default function generateSelectors( selectors: Pick< StoreSimpleSelectors, 'selectFilterFn' | 'selectRowCollection' | 'selectFilterMode' > ) { const selectFilterMatches = createSelector( [selectors.selectFilterFn, selectors.selectRowCollection], (filterFn, rowCollection) => { if (filterFn) { const matches = filter(rowCollection, filterFn) return { matchedIds: matches.actualMatches, necessaryMatchedIds: matches.necessaryMatches, } } else { return { matchedIds: null, necessaryMatchedIds: null, } } } ) const selectFilterMatchesShowOnly = createSelector( [selectors.selectFilterMode, selectFilterMatches], (mode, matches) => mode === 'default' ? matches.necessaryMatchedIds : null ) return { selectFilterMatchesShowOnly, selectFilterMatches } } export type SelectFilterMatchesShowOnly = ReturnType< typeof generateSelectors >['selectFilterMatchesShowOnly'] export type SelectFilterMatches = ReturnType< typeof generateSelectors >['selectFilterMatches']