'use client'; import Link from 'next/link'; import { usePathname, useSearchParams } from 'next/navigation'; export const generatePagination = (availableYears: number[], currentYear:number) => { const [firstYear, secondYear, thirdYear] = availableYears; const [lastYear, yearBeforeLast1, yearBeforeLast2] = [...availableYears].reverse(); const currentYearIndex = availableYears.indexOf(currentYear); // If the current year is among the first 3 years, // show the first 3 and ellipsis if (currentYearIndex < 2) { return [firstYear, secondYear, thirdYear, '...']; } // If the current year is among the last 2 years, // ellipsis and last 3 years. if (currentYearIndex > availableYears.length - 3) { return ['...', yearBeforeLast2, yearBeforeLast1, lastYear]; } // If the current year is somewhere in the middle, // show the first year, an ellipsis, the current year and its neighbors, // another ellipsis, and the last year. return [ '...', availableYears[currentYearIndex - 1], currentYear, availableYears[currentYearIndex + 1], '...', ]; }; export default function Pagination({ availableYears } : { availableYears: number[] }) { const pathname = usePathname(); const searchParams = useSearchParams(); console.log("Pagination.availableYears", availableYears); // don't show pagination if there's less than 2 years available if(availableYears.length < 2) { return null; } const showAllPages = availableYears.length < 5; const createYearURL = (yearNumber: number | string | undefined) => { if(!yearNumber) return "/"; const params = new URLSearchParams(searchParams); params.set('year', yearNumber.toString()); return `${pathname}?${params.toString()}`; } const currentYear = Number(searchParams.get('year')) || 1; const selectedYears = showAllPages ? availableYears : generatePagination(availableYears, currentYear); console.log("selectedYears", selectedYears); const latestYear = availableYears[0]; const earliestYear = availableYears[availableYears.length-1]; return ( <>