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 | 672x 71x 188x 2x 186x 186x 186x 186x 4x 4x 3x 1x 1x 1x 186x | 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, }; }; |