Files
readest/apps/readest-app/src/app/reader/components/paragraph/ParagraphControl.tsx
T
Mohammed Efaz 4ce1ebe477 feat: paragraph by paragraph reading mode (#3096)
* feat: add index

* feat: add bottom nav bar

* feat: add paragraph iterator

* feat: add para mode shortcut

* feat: add paragraph control into foliateviewer

* feat: add paragraph mode toggle to view menu

* feat: add paragraph bar for navigation controls

* feat: add paragraph control wrapper component

* feat: add pargraph overlay for the focused display

* feat: integrate paragraph mode into keyboard navigation

* feat: add paragraph mode state management hook

* feat: add paragraph mode type definition

* feat: add default paragraph mode config

* fix: replace previous storage system with sytem one and fix sync issues

* fix: format
2026-01-30 05:24:23 +01:00

58 lines
1.5 KiB
TypeScript

'use client';
import React from 'react';
import { FoliateView } from '@/types/view';
import { Insets } from '@/types/misc';
import { useReaderStore } from '@/store/readerStore';
import { useParagraphMode } from '../../hooks/useParagraphMode';
import ParagraphBar from './ParagraphBar';
import ParagraphOverlay from './ParagraphOverlay';
const DIM_OPACITY = 0.3;
interface ParagraphControlProps {
bookKey: string;
viewRef: React.RefObject<FoliateView | null>;
gridInsets: Insets;
}
const ParagraphControl: React.FC<ParagraphControlProps> = ({ bookKey, viewRef, gridInsets }) => {
const { getViewSettings } = useReaderStore();
const viewSettings = getViewSettings(bookKey);
const {
paragraphState,
paragraphConfig,
toggleParagraphMode,
goToNextParagraph,
goToPrevParagraph,
} = useParagraphMode({ bookKey, viewRef });
if (!paragraphConfig?.enabled) {
return null;
}
return (
<>
<ParagraphOverlay
bookKey={bookKey}
dimOpacity={DIM_OPACITY}
viewSettings={viewSettings ?? undefined}
onClose={toggleParagraphMode}
/>
<ParagraphBar
bookKey={bookKey}
currentIndex={paragraphState.currentIndex}
totalParagraphs={paragraphState.totalParagraphs}
isLoading={paragraphState.isLoading}
onPrev={goToPrevParagraph}
onNext={goToNextParagraph}
onClose={toggleParagraphMode}
gridInsets={gridInsets}
/>
</>
);
};
export default ParagraphControl;