Convert reader image styling to vw/vh
Preparation for infinite scroll, since there will be a wrapper which fits its content in width and height, thus, percentage based dimension won't work anymore
This commit is contained in:
@@ -24,6 +24,8 @@ import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts';
|
||||
import { useReaderScrollbarContext } from '@/modules/reader/contexts/ReaderScrollbarContext.tsx';
|
||||
import { MediaQuery } from '@/modules/core/utils/MediaQuery.tsx';
|
||||
import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx';
|
||||
import { useNavBarContext } from '@/modules/navigation-bar/contexts/NavbarContext.tsx';
|
||||
import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts';
|
||||
|
||||
const getCustomFilterString = (customFilter: ReaderCustomFilter): string =>
|
||||
Object.keys(customFilter)
|
||||
@@ -73,10 +75,12 @@ const BaseReaderPage = ({
|
||||
onLoad,
|
||||
onError,
|
||||
setRef,
|
||||
readerNavBarWidth,
|
||||
...props
|
||||
}: Omit<ComponentProps<typeof SpinnerImage>, 'ref' | 'spinnerStyle' | 'imgStyle' | 'onLoad' | 'onError'> &
|
||||
Pick<IReaderSettings, 'readingMode' | 'customFilter' | 'pageScaleMode' | 'shouldStretchPage' | 'readerWidth'> &
|
||||
Pick<TReaderScrollbarContext, 'scrollbarXSize' | 'scrollbarYSize'> & {
|
||||
Pick<TReaderScrollbarContext, 'scrollbarXSize' | 'scrollbarYSize'> &
|
||||
Pick<NavbarContextType, 'readerNavBarWidth'> & {
|
||||
pageIndex: number;
|
||||
pagesIndex: number;
|
||||
isPrimaryPage: boolean;
|
||||
@@ -129,7 +133,15 @@ const BaseReaderPage = ({
|
||||
...getImageMarginStyling(doublePage, position),
|
||||
}}
|
||||
imgStyle={{
|
||||
...getReaderImageStyling(readingMode, shouldStretchPage, pageScaleMode, doublePage, readerWidth),
|
||||
...getReaderImageStyling(
|
||||
readingMode,
|
||||
shouldStretchPage,
|
||||
pageScaleMode,
|
||||
doublePage,
|
||||
readerWidth,
|
||||
readerNavBarWidth + scrollbarYSize,
|
||||
scrollbarXSize,
|
||||
),
|
||||
display: 'block',
|
||||
...applyStyles(!display, {
|
||||
display: 'none',
|
||||
@@ -156,7 +168,7 @@ const BaseReaderPage = ({
|
||||
|
||||
export const ReaderPage = withPropsFrom(
|
||||
memo(BaseReaderPage),
|
||||
[ReaderService.useSettingsWithoutDefaultFlag, useReaderScrollbarContext],
|
||||
[ReaderService.useSettingsWithoutDefaultFlag, useReaderScrollbarContext, useNavBarContext],
|
||||
[
|
||||
'readingMode',
|
||||
'customFilter',
|
||||
@@ -165,5 +177,6 @@ export const ReaderPage = withPropsFrom(
|
||||
'readerWidth',
|
||||
'scrollbarXSize',
|
||||
'scrollbarYSize',
|
||||
'readerNavBarWidth',
|
||||
],
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
import { memo, ReactNode, useCallback, useEffect, useMemo, useRef } from 'react';
|
||||
import Box, { BoxProps } from '@mui/material/Box';
|
||||
import { ReaderService } from '@/modules/reader/services/ReaderService.ts';
|
||||
import { getPageIndexesToLoad, getReaderImageWrapperStyling } from '@/modules/reader/utils/ReaderPager.utils.tsx';
|
||||
import { getPageIndexesToLoad } from '@/modules/reader/utils/ReaderPager.utils.tsx';
|
||||
import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts';
|
||||
import { IReaderSettings, ReaderPagerProps, ReaderTransitionPageMode } from '@/modules/reader/types/Reader.types.ts';
|
||||
import { ReaderTransitionPage } from '@/modules/reader/components/viewer/ReaderTransitionPage.tsx';
|
||||
@@ -23,15 +23,9 @@ const BaseBasePager = ({
|
||||
createPage,
|
||||
slots,
|
||||
readingMode,
|
||||
pageScaleMode,
|
||||
shouldStretchPage,
|
||||
readerWidth,
|
||||
imagePreLoadAmount,
|
||||
}: Omit<ReaderPagerProps, 'pageLoadStates' | 'retryFailedPagesKeyPrefix'> &
|
||||
Pick<
|
||||
IReaderSettings,
|
||||
'readingMode' | 'pageScaleMode' | 'shouldStretchPage' | 'readerWidth' | 'imagePreLoadAmount'
|
||||
> & {
|
||||
Pick<IReaderSettings, 'readingMode' | 'imagePreLoadAmount'> & {
|
||||
createPage: (
|
||||
page: ReaderStatePages['pages'][number],
|
||||
pagesIndex: number,
|
||||
@@ -68,10 +62,7 @@ const BaseBasePager = ({
|
||||
return (
|
||||
<Box
|
||||
{...slots?.boxProps}
|
||||
sx={[
|
||||
...(Array.isArray(slots?.boxProps?.sx) ? (slots?.boxProps?.sx ?? []) : [slots?.boxProps?.sx]),
|
||||
getReaderImageWrapperStyling(readingMode, shouldStretchPage, pageScaleMode, readerWidth),
|
||||
]}
|
||||
sx={[...(Array.isArray(slots?.boxProps?.sx) ? (slots?.boxProps?.sx ?? []) : [slots?.boxProps?.sx])]}
|
||||
>
|
||||
<ReaderTransitionPage type={ReaderTransitionPageMode.PREVIOUS} />
|
||||
{pages.map((page, pagesIndex) =>
|
||||
@@ -91,5 +82,5 @@ const BaseBasePager = ({
|
||||
export const BasePager = withPropsFrom(
|
||||
memo(BaseBasePager),
|
||||
[ReaderService.useSettingsWithoutDefaultFlag],
|
||||
['readingMode', 'pageScaleMode', 'shouldStretchPage', 'readerWidth', 'imagePreLoadAmount'],
|
||||
['readingMode', 'imagePreLoadAmount'],
|
||||
);
|
||||
|
||||
@@ -10,7 +10,12 @@ import { Direction, useTheme } from '@mui/material/styles';
|
||||
import { Fragment, memo, useMemo } from 'react';
|
||||
import { BasePager } from '@/modules/reader/components/viewer/pager/BasePager.tsx';
|
||||
import { ReaderService } from '@/modules/reader/services/ReaderService.ts';
|
||||
import { IReaderSettings, ReaderPagerProps, ReadingDirection } from '@/modules/reader/types/Reader.types.ts';
|
||||
import {
|
||||
IReaderSettings,
|
||||
ReaderPagerProps,
|
||||
ReaderPageScaleMode,
|
||||
ReadingDirection,
|
||||
} from '@/modules/reader/types/Reader.types.ts';
|
||||
import { applyStyles } from '@/modules/core/utils/ApplyStyles.ts';
|
||||
import { createReaderPage } from '@/modules/reader/utils/ReaderPager.utils.tsx';
|
||||
import { getNextIndexFromPage, getPage } from '@/modules/reader/utils/ReaderProgressBar.utils.tsx';
|
||||
@@ -44,8 +49,9 @@ const BaseReaderDoublePagedPager = ({
|
||||
pageLoadStates,
|
||||
retryFailedPagesKeyPrefix,
|
||||
readingDirection,
|
||||
pageScaleMode,
|
||||
...props
|
||||
}: ReaderPagerProps & Pick<IReaderSettings, 'readingDirection'>) => {
|
||||
}: ReaderPagerProps & Pick<IReaderSettings, 'readingDirection' | 'pageScaleMode'>) => {
|
||||
const { currentPageIndex, pages, totalPages } = props;
|
||||
|
||||
const { direction: themeDirection } = useTheme();
|
||||
@@ -102,7 +108,13 @@ const BaseReaderDoublePagedPager = ({
|
||||
slots={{
|
||||
boxProps: {
|
||||
sx: {
|
||||
margin: 'auto',
|
||||
...applyStyles(pageScaleMode === ReaderPageScaleMode.ORIGINAL, {
|
||||
margin: 'auto',
|
||||
}),
|
||||
width: '100%',
|
||||
minWidth: 'fit-content',
|
||||
height: '100%',
|
||||
minHeight: 'fit-content',
|
||||
display: 'flex',
|
||||
flexDirection: 'row',
|
||||
flexWrap: 'nowrap',
|
||||
@@ -122,5 +134,5 @@ const BaseReaderDoublePagedPager = ({
|
||||
export const ReaderDoublePagedPager = withPropsFrom(
|
||||
memo(BaseReaderDoublePagedPager),
|
||||
[ReaderService.useSettingsWithoutDefaultFlag],
|
||||
['readingDirection'],
|
||||
['readingDirection', 'pageScaleMode'],
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user