Spaces:
Runtime error
Runtime error
| /** | |
| * Compute the contiguous block of page numbers to show in a numbered paginator, centered on the | |
| * current page and clamped to the valid range. Replaces a frozen `[1..5]` window that left pages | |
| * beyond 5 unreachable by number and lost the active highlight. | |
| * | |
| * @param current 1-based current page (clamped into range). | |
| * @param totalPages total number of pages. | |
| * @param size max page buttons to show (default 5). | |
| */ | |
| export function pageWindow(current: number, totalPages: number, size = 5): number[] { | |
| if (totalPages <= 0) return []; | |
| const clamped = Math.min(Math.max(current, 1), totalPages); | |
| const count = Math.min(size, totalPages); | |
| // Center the window on the current page, then slide it back inside [1, totalPages]. | |
| let start = clamped - Math.floor(count / 2); | |
| start = Math.max(1, Math.min(start, totalPages - count + 1)); | |
| return Array.from({ length: count }, (_, i) => start + i); | |
| } | |