(
indexId: Id,
tableId: Id,
getSliceIdOrIds?: Id | ((getCell: GetCell, rowId: Id) => Id | Ids),
getSortKey?: Id | ((getCell: GetCell, rowId: Id) => SortKey),
sliceIdSorter?: (sliceId1: Id, sliceId2: Id) => number,
rowIdSorter: (
sortKey1: SortKey,
sortKey2: SortKey,
sliceId: Id,
) => number = defaultSorter,
)
| 81 | collHas(getIndex(indexId), sliceId); |
| 82 | |
| 83 | const setIndexDefinition = ( |
| 84 | indexId: Id, |
| 85 | tableId: Id, |
| 86 | getSliceIdOrIds?: Id | ((getCell: GetCell, rowId: Id) => Id | Ids), |
| 87 | getSortKey?: Id | ((getCell: GetCell, rowId: Id) => SortKey), |
| 88 | sliceIdSorter?: (sliceId1: Id, sliceId2: Id) => number, |
| 89 | rowIdSorter: ( |
| 90 | sortKey1: SortKey, |
| 91 | sortKey2: SortKey, |
| 92 | sliceId: Id, |
| 93 | ) => number = defaultSorter, |
| 94 | ): Indexes => { |
| 95 | const sliceIdArraySorter = isUndefined(sliceIdSorter) |
| 96 | ? undefined |
| 97 | : ([id1]: [Id, IdSet], [id2]: [Id, IdSet]): number => |
| 98 | (sliceIdSorter as (sliceId1: Id, sliceId2: Id) => number)(id1, id2); |
| 99 | |
| 100 | setDefinitionAndListen( |
| 101 | indexId, |
| 102 | tableId, |
| 103 | ( |
| 104 | change: () => void, |
| 105 | changedSliceIds: IdMap<[Id | Ids | undefined, Id | Ids | undefined]>, |
| 106 | changedSortKeys: IdMap<SortKey>, |
| 107 | sliceIdOrIdsByRowId?: IdMap<Id | Ids>, |
| 108 | sortKeys?: IdMap<SortKey>, |
| 109 | force?: boolean, |
| 110 | ) => { |
| 111 | let sliceIdsChanged = 0; |
| 112 | const changedSlices: IdSet = setNew(); |
| 113 | const unsortedSlices: IdSet = setNew(); |
| 114 | const index = getIndex(indexId); |
| 115 | collForEach( |
| 116 | changedSliceIds, |
| 117 | ([oldSliceIdOrIds, newSliceIdOrIds], rowId) => { |
| 118 | const oldSliceIds = setNew(oldSliceIdOrIds); |
| 119 | const newSliceIds = setNew(newSliceIdOrIds); |
| 120 | collForEach(oldSliceIds, (oldSliceId) => |
| 121 | collDel(newSliceIds, oldSliceId) |
| 122 | ? collDel(oldSliceIds, oldSliceId) |
| 123 | : 0, |
| 124 | ); |
| 125 | |
| 126 | collForEach(oldSliceIds, (oldSliceId) => { |
| 127 | setAdd(changedSlices, oldSliceId); |
| 128 | ifNotUndefined(mapGet(index, oldSliceId), (oldSlice) => { |
| 129 | collDel(oldSlice, rowId); |
| 130 | if (collIsEmpty(oldSlice)) { |
| 131 | mapSet(index, oldSliceId); |
| 132 | sliceIdsChanged = 1; |
| 133 | } |
| 134 | }); |
| 135 | }); |
| 136 | |
| 137 | collForEach(newSliceIds, (newSliceId) => { |
| 138 | setAdd(changedSlices, newSliceId); |
| 139 | if (!collHas(index, newSliceId)) { |
| 140 | mapSet(index, newSliceId, setNew()); |
nothing calls this directly
no test coverage detected
searching dependent graphs…