import type { StoreSimpleSelectors } from '../selectors' import generateSortSelectors from './sort' import generateDragSelectors from './drag' import generateFilterSelectors from './filter' import generateFocusSelectors from './focus' import generateColumnSelectors from './column' import generateRowSelectors from './row' import generateSelectionSelectors from './selection' import generateRangeSelectionSelectors from './range-selection' export const generateSelectors = (selectors: StoreSimpleSelectors) => { const { selectSortFn } = generateSortSelectors(selectors) const { selectFilterMatches, selectFilterMatchesShowOnly } = generateFilterSelectors(selectors) const { selectStickyColumnIds, selectBorderLayout, selectColSpanConfig } = generateColumnSelectors(selectors) const { selectRowIds, selectRowIndex, selectAriaRowCount, selectAriaPosInset, selectAriaSetSize, selectHeaderRowCount, selectHeaderRowIds, selectColumnSpanByRowId, } = generateRowSelectors( selectors, selectSortFn, selectFilterMatchesShowOnly, selectColSpanConfig, selectStickyColumnIds ) const { selectCollisionAreas, selectPreviewColumnId, selectPreviewLeftOffset, } = generateDragSelectors(selectors, selectRowIds) const { selectCurrentFocus, selectHasFocus } = generateFocusSelectors( selectors, selectRowIds, selectHeaderRowIds, selectColumnSpanByRowId ) const selection = generateSelectionSelectors( selectors, selectFilterMatches, selectFilterMatchesShowOnly ) const rangeSelection = generateRangeSelectionSelectors( selectors, selectRowIds, selectColumnSpanByRowId ) return { selectRowIds, selectRowIndex, selectAriaRowCount, selectHeaderRowCount, selectHeaderRowIds, selectColumnSpanByRowId, selectAriaSetSize, selectAriaPosInset, selectCurrentFocus, selectCollisionAreas, selectHasFocus, selectFilterMatches, selectFilterMatchesShowOnly, selectSortFn, ...selection, ...rangeSelection, selectStickyColumnIds, selectBorderLayout, selectColSpanConfig, selectPreviewColumnId, selectPreviewLeftOffset, } }