2024-11-04 18:00:35 +01:00
|
|
|
/*
|
|
|
|
|
* Copyright (C) Contributors to the Suwayomi project
|
|
|
|
|
*
|
|
|
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
|
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
|
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
import Stack from '@mui/material/Stack';
|
|
|
|
|
import { ReaderSettingReadingMode } from '@/modules/reader/components/settings/layout/ReaderSettingReadingMode.tsx';
|
|
|
|
|
import { ReaderSettingReadingDirection } from '@/modules/reader/components/settings/layout/ReaderSettingReadingDirection.tsx';
|
|
|
|
|
import { ReaderSettingTapZoneLayout } from '@/modules/reader/components/settings/layout/ReaderSettingTapZoneLayout.tsx';
|
|
|
|
|
import { ReaderSettingTapZoneInvertMode } from '@/modules/reader/components/settings/layout/ReaderSettingTapZoneInvertMode.tsx';
|
|
|
|
|
import { ReaderSettingPageScaleMode } from '@/modules/reader/components/settings/layout/ReaderSettingPageScaleMode.tsx';
|
|
|
|
|
import { ReaderSettingStretchPage } from '@/modules/reader/components/settings/layout/ReaderSettingStretchPage.tsx';
|
|
|
|
|
import { ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts';
|
|
|
|
|
import { ReaderSettingPageGap } from '@/modules/reader/components/settings/layout/ReaderSettingPageGap.tsx';
|
|
|
|
|
import { ReaderSettingWidth } from '@/modules/reader/components/settings/layout/ReaderSettingWidth.tsx';
|
2024-12-13 16:48:24 +01:00
|
|
|
import { DefaultSettingFootnote } from '@/modules/reader/components/settings/DefaultSettingFootnote.tsx';
|
2024-12-20 21:42:54 +01:00
|
|
|
import { TReaderTapZoneContext } from '@/modules/reader/types/TapZoneLayout.types.ts';
|
2024-11-04 18:00:35 +01:00
|
|
|
|
|
|
|
|
export const ReaderLayoutSettings = ({
|
|
|
|
|
setShowPreview,
|
|
|
|
|
settings,
|
|
|
|
|
updateSetting,
|
|
|
|
|
isDefaultable,
|
|
|
|
|
onDefault,
|
|
|
|
|
}: ReaderSettingsTypeProps & {
|
2024-12-20 21:42:54 +01:00
|
|
|
setShowPreview: TReaderTapZoneContext['setShowPreview'];
|
2024-11-04 18:00:35 +01:00
|
|
|
}) => (
|
|
|
|
|
<Stack sx={{ gap: 2 }}>
|
2024-12-13 16:48:24 +01:00
|
|
|
<DefaultSettingFootnote />
|
2024-10-28 18:03:29 +01:00
|
|
|
{isDefaultable && (
|
2024-12-16 15:22:21 +01:00
|
|
|
<ReaderSettingReadingMode
|
|
|
|
|
readingMode={settings.readingMode}
|
|
|
|
|
setReadingMode={(value) => updateSetting('readingMode', value)}
|
2024-10-28 18:03:29 +01:00
|
|
|
isDefaultable={isDefaultable}
|
2024-12-16 15:22:21 +01:00
|
|
|
onDefault={() => onDefault?.('readingMode')}
|
2024-10-28 18:03:29 +01:00
|
|
|
/>
|
|
|
|
|
)}
|
2024-11-04 18:00:35 +01:00
|
|
|
<ReaderSettingPageGap
|
|
|
|
|
pageGap={settings.pageGap}
|
|
|
|
|
readingMode={settings.readingMode}
|
2024-12-16 21:59:30 +01:00
|
|
|
isDefaultable={isDefaultable}
|
|
|
|
|
onDefault={() => onDefault?.('pageGap')}
|
2024-11-04 18:00:35 +01:00
|
|
|
updateSetting={(...args) => updateSetting('pageGap', ...args)}
|
|
|
|
|
/>
|
|
|
|
|
<ReaderSettingReadingDirection
|
|
|
|
|
readingDirection={settings.readingDirection}
|
|
|
|
|
setReadingDirection={(value) => updateSetting('readingDirection', value)}
|
|
|
|
|
isDefaultable={isDefaultable}
|
|
|
|
|
onDefault={() => onDefault?.('readingDirection')}
|
|
|
|
|
/>
|
|
|
|
|
<ReaderSettingTapZoneLayout
|
|
|
|
|
tapZoneLayout={settings.tapZoneLayout}
|
|
|
|
|
setTapZoneLayout={(value) => {
|
|
|
|
|
setShowPreview(true);
|
|
|
|
|
updateSetting('tapZoneLayout', value);
|
|
|
|
|
}}
|
|
|
|
|
isDefaultable={isDefaultable}
|
|
|
|
|
onDefault={() => {
|
|
|
|
|
setShowPreview(true);
|
|
|
|
|
onDefault?.('tapZoneLayout');
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<ReaderSettingTapZoneInvertMode
|
|
|
|
|
tapZoneInvertMode={settings.tapZoneInvertMode}
|
|
|
|
|
setTapZoneInvertMode={(value) => {
|
|
|
|
|
setShowPreview(true);
|
|
|
|
|
updateSetting('tapZoneInvertMode', value);
|
|
|
|
|
}}
|
|
|
|
|
isDefaultable={isDefaultable}
|
|
|
|
|
onDefault={() => {
|
|
|
|
|
setShowPreview(true);
|
|
|
|
|
onDefault?.('tapZoneInvertMode');
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|
<ReaderSettingPageScaleMode
|
|
|
|
|
pageScaleMode={settings.pageScaleMode}
|
|
|
|
|
setPageScaleMode={(value) => updateSetting('pageScaleMode', value)}
|
|
|
|
|
isDefaultable={isDefaultable}
|
|
|
|
|
onDefault={() => onDefault?.('pageScaleMode')}
|
|
|
|
|
/>
|
|
|
|
|
<ReaderSettingStretchPage
|
|
|
|
|
pageScaleMode={settings.pageScaleMode.value}
|
|
|
|
|
shouldStretchPage={settings.shouldStretchPage.value}
|
|
|
|
|
setShouldStretchPage={(value) => updateSetting('shouldStretchPage', value)}
|
|
|
|
|
/>
|
|
|
|
|
<ReaderSettingWidth
|
|
|
|
|
readerWidth={settings.readerWidth.value}
|
|
|
|
|
pageScaleMode={settings.pageScaleMode.value}
|
2024-12-16 21:59:30 +01:00
|
|
|
isDefaultable={isDefaultable}
|
|
|
|
|
onDefault={() => onDefault?.('readerWidth')}
|
2024-11-04 18:00:35 +01:00
|
|
|
updateSetting={(...args) => updateSetting(...args)}
|
|
|
|
|
/>
|
|
|
|
|
</Stack>
|
|
|
|
|
);
|