import { FilterList, Option } from "./filter"; import { PageMeta } from "../../common/types"; export function PageNavigator({ allPages, onNavigate, currentPage, }: { allPages: Set; onNavigate: (page: string | undefined) => void; currentPage?: string; }) { let options: Option[] = []; for (let pageMeta of allPages) { if (currentPage && currentPage === pageMeta.name) { continue; } // Order by last modified date in descending order let orderId = -pageMeta.lastModified; // Unless it was opened in this session if (pageMeta.lastOpened) { orderId = -pageMeta.lastOpened; } options.push({ ...pageMeta, orderId: orderId, }); } let completePrefix: string | undefined = undefined; if (currentPage && currentPage.includes("/")) { const pieces = currentPage.split("/"); completePrefix = pieces.slice(0, pieces.length - 1).join("/") + "/"; } return ( { onNavigate(opt?.name); }} /> ); }