@@ -992,6 +992,28 @@ export const createStore: typeof createStoreDecl = (): Store => {
992992 return store ;
993993 } ;
994994
995+ const addSortedRowIdsListenerImpl = (
996+ tableId : Id ,
997+ cellId : Id | undefined ,
998+ otherArgs : [ descending : boolean , offset : number , limit : number | undefined ] ,
999+ listener : SortedRowIdsListener ,
1000+ mutator ?: boolean ,
1001+ ) : Id => {
1002+ let sortedRowIds = getSortedRowIds ( tableId , cellId , ...otherArgs ) ;
1003+ return addListener (
1004+ ( ) => {
1005+ const newSortedRowIds = getSortedRowIds ( tableId , cellId , ...otherArgs ) ;
1006+ if ( ! arrayIsEqual ( newSortedRowIds , sortedRowIds ) ) {
1007+ sortedRowIds = newSortedRowIds ;
1008+ listener ( store , tableId , cellId , ...otherArgs , sortedRowIds ) ;
1009+ }
1010+ } ,
1011+ sortedRowIdsListeners [ mutator ? 1 : 0 ] ,
1012+ [ tableId , cellId ] ,
1013+ [ getTableIds ] ,
1014+ ) ;
1015+ } ;
1016+
9951017 // --
9961018
9971019 const getContent = ( ) : Content => [ getTables ( ) , getValues ( ) ] ;
@@ -1013,25 +1035,25 @@ export const createStore: typeof createStoreDecl = (): Store => {
10131035 mapKeys ( mapGet ( tablesMap , id ( tableId ) ) ) ;
10141036
10151037 const getSortedRowIds = (
1016- tableId : Id | SortedRowIdsArgs ,
1038+ tableIdOrArgs : Id | SortedRowIdsArgs ,
10171039 cellId ?: Id ,
10181040 descending ?: boolean ,
10191041 offset = 0 ,
10201042 limit ?: number ,
10211043 ) : Ids =>
1022- isObject ( tableId )
1044+ isObject ( tableIdOrArgs )
10231045 ? getSortedRowIds (
1024- tableId . tableId ,
1025- tableId . cellId ,
1026- tableId . descending ,
1027- tableId . offset ,
1028- tableId . limit ,
1046+ tableIdOrArgs . tableId ,
1047+ tableIdOrArgs . cellId ,
1048+ tableIdOrArgs . descending ,
1049+ tableIdOrArgs . offset ,
1050+ tableIdOrArgs . limit ,
10291051 )
10301052 : arrayMap (
10311053 slice (
10321054 arraySort (
10331055 mapMap < Id , RowMap , [ Cell , Id ] > (
1034- mapGet ( tablesMap , id ( tableId ) ) ,
1056+ mapGet ( tablesMap , id ( tableIdOrArgs ) ) ,
10351057 ( row , rowId ) => [
10361058 isUndefined ( cellId )
10371059 ? rowId
@@ -1520,48 +1542,33 @@ export const createStore: typeof createStoreDecl = (): Store => {
15201542 mapForEach ( valuesMap , valueCallback ) ;
15211543
15221544 const addSortedRowIdsListener = (
1523- tableId : Id ,
1524- cellId : Id | undefined ,
1525- descending : boolean ,
1526- offset : number ,
1527- limit : number | undefined ,
1528- listener : SortedRowIdsListener ,
1545+ tableIdOrArgs : Id | SortedRowIdsArgs ,
1546+ cellIdOrListener : Id | undefined | SortedRowIdsListener ,
1547+ descendingOrMutator ? : boolean ,
1548+ offset ? : number ,
1549+ limit ? : number | undefined ,
1550+ listener ? : SortedRowIdsListener ,
15291551 mutator ?: boolean ,
1530- ) : Id => {
1531- let sortedRowIds = getSortedRowIds (
1532- tableId ,
1533- cellId ,
1534- descending ,
1535- offset ,
1536- limit ,
1537- ) ;
1538- return addListener (
1539- ( ) => {
1540- const newSortedRowIds = getSortedRowIds (
1541- tableId ,
1542- cellId ,
1543- descending ,
1544- offset ,
1545- limit ,
1552+ ) : Id =>
1553+ isObject ( tableIdOrArgs )
1554+ ? addSortedRowIdsListenerImpl (
1555+ tableIdOrArgs . tableId ,
1556+ tableIdOrArgs . cellId ,
1557+ [
1558+ tableIdOrArgs . descending ?? false ,
1559+ tableIdOrArgs . offset ?? 0 ,
1560+ tableIdOrArgs . limit ,
1561+ ] ,
1562+ cellIdOrListener as SortedRowIdsListener ,
1563+ descendingOrMutator ,
1564+ )
1565+ : addSortedRowIdsListenerImpl (
1566+ tableIdOrArgs ,
1567+ cellIdOrListener as Id | undefined ,
1568+ [ descendingOrMutator as boolean , offset as number , limit ] ,
1569+ listener as SortedRowIdsListener ,
1570+ mutator ,
15461571 ) ;
1547- if ( ! arrayIsEqual ( newSortedRowIds , sortedRowIds ) ) {
1548- sortedRowIds = newSortedRowIds ;
1549- listener (
1550- store ,
1551- tableId ,
1552- cellId ,
1553- descending ,
1554- offset ,
1555- limit ,
1556- sortedRowIds ,
1557- ) ;
1558- }
1559- } ,
1560- sortedRowIdsListeners [ mutator ? 1 : 0 ] ,
1561- [ tableId , cellId ] ,
1562- [ getTableIds ] ,
1563- ) ;
1564- } ;
15651572
15661573 const addStartTransactionListener = ( listener : TransactionListener ) : Id =>
15671574 addListener ( listener , startTransactionListeners ) ;
0 commit comments