Simplify scroll page into view inline alignment determination
This commit is contained in:
@@ -234,7 +234,6 @@ const BaseReaderViewer = ({
|
||||
|
||||
useReaderHandlePageSelection(
|
||||
pageToScrollToIndex,
|
||||
currentPageIndex,
|
||||
pages,
|
||||
totalPages,
|
||||
setPageToScrollToIndex,
|
||||
|
||||
@@ -12,11 +12,9 @@ import { ReaderStatePages, ReadingDirection } from '@/features/reader/Reader.typ
|
||||
import { getNextIndexFromPage, getPage } from '@/features/reader/overlay/progress-bar/ReaderProgressBar.utils.tsx';
|
||||
import { getScrollIntoViewInlineOption } from '@/features/reader/viewer/pager/ReaderPager.utils.tsx';
|
||||
import { ReaderControls } from '@/features/reader/services/ReaderControls.ts';
|
||||
import { DirectionOffset } from '@/base/Base.types.ts';
|
||||
|
||||
export const useReaderHandlePageSelection = (
|
||||
pageToScrollToIndex: ReaderStatePages['pageToScrollToIndex'],
|
||||
currentPageIndex: number,
|
||||
pages: ReaderStatePages['pages'],
|
||||
totalPages: number,
|
||||
setPageToScrollToIndex: ReaderStatePages['setPageToScrollToIndex'],
|
||||
@@ -34,13 +32,11 @@ export const useReaderHandlePageSelection = (
|
||||
const pageToScrollTo = getPage(pageToScrollToIndex, pages);
|
||||
|
||||
if (isContinuousReadingModeActive) {
|
||||
const directionOffset =
|
||||
pageToScrollToIndex > currentPageIndex ? DirectionOffset.PREVIOUS : DirectionOffset.NEXT;
|
||||
const imageRef = imageRefs.current[pageToScrollTo.pagesIndex];
|
||||
|
||||
imageRef?.scrollIntoView({
|
||||
block: 'start',
|
||||
inline: getScrollIntoViewInlineOption(directionOffset, themeDirection, readingDirection),
|
||||
inline: getScrollIntoViewInlineOption(themeDirection, readingDirection),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ import { getOptionForDirection } from '@/features/theme/services/ThemeCreator.ts
|
||||
import { READING_DIRECTION_TO_THEME_DIRECTION } from '@/features/reader/settings/ReaderSettings.constants.tsx';
|
||||
import { coerceIn } from '@/lib/HelperFunctions.ts';
|
||||
import { NavbarContextType } from '@/features/navigation-bar/NavigationBar.types.ts';
|
||||
import { DirectionOffset } from '@/base/Base.types.ts';
|
||||
|
||||
type CSSObject = ReturnType<Theme['applyStyles']>;
|
||||
|
||||
@@ -588,24 +587,15 @@ export const isATransitionPageVisible = (activeMode: ReaderTransitionPageMode, r
|
||||
activeMode !== ReaderTransitionPageMode.NONE || isContinuousReadingMode(readingMode);
|
||||
|
||||
export const getScrollIntoViewInlineOption = (
|
||||
offset: DirectionOffset,
|
||||
themeDirection: Direction,
|
||||
readingDirection: ReadingDirection,
|
||||
): ScrollIntoViewOptions['inline'] => {
|
||||
const themeDirectionForReadingDirection = READING_DIRECTION_TO_THEME_DIRECTION[readingDirection];
|
||||
|
||||
if (themeDirection === 'ltr') {
|
||||
if (offset === DirectionOffset.PREVIOUS) {
|
||||
return getOptionForDirection('start', 'end', themeDirectionForReadingDirection);
|
||||
}
|
||||
|
||||
return getOptionForDirection('start', 'end', themeDirectionForReadingDirection);
|
||||
}
|
||||
|
||||
if (offset === DirectionOffset.PREVIOUS) {
|
||||
return getOptionForDirection('end', 'start', themeDirectionForReadingDirection);
|
||||
}
|
||||
|
||||
return getOptionForDirection('end', 'start', themeDirectionForReadingDirection);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user