import clsx from 'clsx'; import React from 'react'; import { Insets } from '@/types/misc'; import { useEnv } from '@/context/EnvContext'; import { useReaderStore } from '@/store/readerStore'; import { useTranslation } from '@/hooks/useTranslation'; import { PageInfo, TimeInfo } from '@/types/book'; interface PageInfoProps { bookKey: string; bookFormat: string; section?: PageInfo; pageinfo?: PageInfo; timeinfo?: TimeInfo; horizontalGap: number; contentInsets: Insets; gridInsets: Insets; } const ProgressInfoView: React.FC = ({ bookKey, bookFormat, section, pageinfo, timeinfo, horizontalGap, contentInsets, gridInsets, }) => { const _ = useTranslation(); const { appService } = useEnv(); const { getView, getViewSettings } = useReaderStore(); const view = getView(bookKey); const viewSettings = getViewSettings(bookKey)!; const showDoubleBorder = viewSettings.vertical && viewSettings.doubleBorder; const isScrolled = viewSettings.scrolled; const isVertical = viewSettings.vertical; const pageInfo = ['PDF', 'CBZ'].includes(bookFormat) ? section ? isVertical ? `${section.current + 1} · ${section.total}` : `${section.current + 1} / ${section.total}` : '' : pageinfo && pageinfo.current >= 0 && pageinfo.total > 0 ? _(isVertical ? '{{currentPage}} · {{totalPage}}' : 'Loc. {{currentPage}} / {{totalPage}}', { currentPage: pageinfo.current + 1, totalPage: pageinfo.total, }) : ''; const timeLeft = timeinfo ? _('{{time}} min left in chapter', { time: Math.round(timeinfo.section) }) : ''; const { page = 0, pages = 0 } = view?.renderer || {}; const pageLeft = pages - 1 > page ? _('{{count}} pages left in chapter', { count: pages - 1 - page }) : ''; return (
{viewSettings.showRemainingTime ? ( {timeLeft} ) : viewSettings.showRemainingPages ? ( {pageLeft} ) : null} {viewSettings.showPageNumber && {pageInfo}}
); }; export default ProgressInfoView;