Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 654x 105x 170x 2x 168x 168x 168x 168x 4x 4x 3x 1x 1x 1x 168x | export function createNumberRange(start: number, end: number): number[] {
return [...Array(end - start + 1)].map((_, idx) => start + idx);
}
export const pageStateResolver = ({
pageNumber,
pageSize,
count,
}: {
count: number;
pageNumber: number;
pageSize: number;
}) => {
if (!count) {
return {
pageNumber,
pageSize,
count,
lowerBoundValue: 0,
upperBoundValue: 0,
pageRange: [],
nextDisabled: true,
prevDisabled: true,
};
}
const reducedCount = pageNumber * pageSize + pageSize;
const pageCount = Math.ceil(count / pageSize);
const pageRange = (() => {
if (pageCount <= 7) return createNumberRange(1, pageCount);
const leftLead = pageNumber <= 4 && pageCount > 7;
if (leftLead) {
return [1, 2, 3, 4, 5, createNumberRange(6, pageCount - 1), pageCount];
}
const rightLead = pageCount > 7 && pageNumber >= pageCount - 5;
Iif (rightLead) {
return [
1,
createNumberRange(2, pageCount - 5),
...createNumberRange(pageCount - 4, pageCount),
];
}
return [
1,
createNumberRange(2, pageNumber - 1),
...createNumberRange(pageNumber, pageNumber + 2),
createNumberRange(pageNumber + 3, pageCount - 1),
pageCount,
];
})();
return {
pageRange,
pageNumber,
count,
pageSize,
lowerBoundValue: pageNumber * pageSize + 1,
upperBoundValue: reducedCount > count ? count : reducedCount,
nextDisabled: reducedCount >= count,
prevDisabled: !pageNumber,
};
};
|