import * as columnSelectors from './reducer/column' import * as focusSelectors from './reducer/focus' import * as selectionSelectors from './reducer/selection' import * as rangeSelectionSelectors from './reducer/range-selection' import * as sortSelectors from './reducer/sort' import * as rowSelectors from './reducer/row' import * as navigationSelectors from './reducer/navigation' import * as editSelectors from './reducer/edit' import * as viewSelectors from './reducer/view' import * as filterSelectors from './reducer/filter' import * as dragSelectors from './reducer/drag' import * as compositeSelectors from './compositeSelectors' import { globalizeSelectors, prepare } from './utils' /* This maps all the selectors from local state to global state */ const selectors = { ...globalizeSelectors('columns', prepare(columnSelectors)), ...globalizeSelectors('currentFocus', prepare(focusSelectors)), ...globalizeSelectors('drag', prepare(dragSelectors)), ...globalizeSelectors('selection', prepare(selectionSelectors)), ...globalizeSelectors('rangeSelection', prepare(rangeSelectionSelectors)), ...globalizeSelectors('sort', prepare(sortSelectors)), ...globalizeSelectors('rows', prepare(rowSelectors)), ...globalizeSelectors('navigation', prepare(navigationSelectors)), ...globalizeSelectors('currentEdit', prepare(editSelectors)), ...globalizeSelectors('view', prepare(viewSelectors)), ...globalizeSelectors('filter', prepare(filterSelectors)), } export function createSelectors() { const cachedComposite = compositeSelectors.generateSelectors(selectors) const cachedColumn = globalizeSelectors( 'columns', columnSelectors.generateSelectors() ) const cachedRow = globalizeSelectors( 'rows', rowSelectors.generateSelectors() ) return { ...selectors, ...cachedColumn, ...cachedRow, ...cachedComposite, } } export type StoreSimpleSelectors = typeof selectors export type StoreSelectors = ReturnType