import { Link, useSearchParams } from 'react-router-dom'; import { Fragment } from 'react/jsx-runtime'; import Routes from '../configuration/routes/RouteList'; import { useCallback, useEffect } from 'react'; export type PaginationType = { page_size?: number; page_from?: number; prev_pages?: false | number[]; current_page: number; max_hits?: boolean; params?: string; last_page?: number; next_pages?: []; total_hits?: number; }; interface Props { pagination: PaginationType; setPage: (page: number) => void; } const Pagination = ({ pagination, setPage }: Props) => { const { total_hits, params, prev_pages, current_page, next_pages, last_page, max_hits } = pagination; const [searchParams] = useSearchParams(); const videoId = searchParams.get('videoId'); const totalHits = Number(total_hits); const currentPage = Number(current_page); const hasMaxHits = Number(max_hits) > 0; const lastPage = Number(last_page); let hasParams = false; if (params) { hasParams = params.length > 0; } const handleKeyEvent = useCallback( (event: KeyboardEvent) => { const { code } = event; if (code === 'ArrowRight' && videoId === null) { if (currentPage === 0 && totalHits > 1) { setPage(2); return; } if (currentPage > lastPage) { return; } setPage(currentPage + 1); } if (code === 'ArrowLeft' && videoId === null) { if (currentPage === 0) { return; } if (currentPage === 2) { setPage(0); return; } setPage(currentPage - 1); } }, [currentPage, lastPage, setPage, totalHits, videoId], ); useEffect(() => { window.addEventListener('keydown', handleKeyEvent); return () => { window.removeEventListener('keydown', handleKeyEvent); }; }, [handleKeyEvent]); return (