forked from akai/readest
Prevents issues with zoom handling in WebKit-based browsers such as Safari and WebKitGTK.
This commit is contained in:
@@ -157,86 +157,101 @@ const ViewMenu: React.FC<ViewMenuProps> = ({
|
||||
marginRight: window.innerWidth < 640 ? '-36px' : '0px',
|
||||
}}
|
||||
>
|
||||
<div className={clsx('flex items-center justify-between rounded-md')}>
|
||||
<button
|
||||
onClick={zoomOut}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
zoomLevel <= MIN_ZOOM_LEVEL && 'btn-disabled text-gray-400',
|
||||
)}
|
||||
>
|
||||
<MdZoomOut />
|
||||
</button>
|
||||
<button
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content h-8 min-h-8 w-[50%] rounded-md p-1 text-center',
|
||||
)}
|
||||
onClick={resetZoom}
|
||||
>
|
||||
{zoomLevel}%
|
||||
</button>
|
||||
<button
|
||||
onClick={zoomIn}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
zoomLevel >= MAX_ZOOM_LEVEL && 'btn-disabled text-gray-400',
|
||||
)}
|
||||
>
|
||||
<MdZoomIn />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{bookData.bookDoc?.rendition?.layout === 'pre-paginated' && (
|
||||
<>
|
||||
<div className={clsx('my-2 flex items-center justify-between rounded-md')}>
|
||||
<div
|
||||
title={_('Zoom Level')}
|
||||
className={clsx('flex items-center justify-between rounded-md')}
|
||||
>
|
||||
<button
|
||||
onClick={setSpreadMode.bind(null, 'none')}
|
||||
title={_('Zoom Out')}
|
||||
onClick={zoomOut}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
spreadMode === 'none' && 'bg-base-300/75',
|
||||
zoomLevel <= MIN_ZOOM_LEVEL && 'btn-disabled text-gray-400',
|
||||
)}
|
||||
>
|
||||
<TbColumns1 />
|
||||
<MdZoomOut />
|
||||
</button>
|
||||
<button
|
||||
onClick={setSpreadMode.bind(null, 'auto')}
|
||||
title={_('Reset Zoom')}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
spreadMode === 'auto' && 'bg-base-300/75',
|
||||
'hover:bg-base-300 text-base-content h-8 min-h-8 w-[50%] rounded-md p-1 text-center',
|
||||
)}
|
||||
onClick={resetZoom}
|
||||
>
|
||||
<TbColumns2 />
|
||||
</button>
|
||||
<div className='bg-base-300 mx-2 h-6 w-[1px]' />
|
||||
<button
|
||||
onClick={setZoomMode.bind(null, 'fit-page')}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
zoomMode === 'fit-page' && 'bg-base-300/75',
|
||||
)}
|
||||
>
|
||||
<IoMdExpand />
|
||||
{zoomLevel}%
|
||||
</button>
|
||||
<button
|
||||
onClick={setZoomMode.bind(null, 'fit-width')}
|
||||
title={_('Zoom In')}
|
||||
onClick={zoomIn}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
zoomMode === 'fit-width' && 'bg-base-300/75',
|
||||
zoomLevel >= MAX_ZOOM_LEVEL && 'btn-disabled text-gray-400',
|
||||
)}
|
||||
>
|
||||
<TbArrowAutofitWidth />
|
||||
<MdZoomIn />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<MenuItem
|
||||
label={_('Separate Cover Page')}
|
||||
Icon={keepCoverSpread ? MdCheck : undefined}
|
||||
onClick={() => setKeepCoverSpread(!keepCoverSpread)}
|
||||
disabled={spreadMode === 'none'}
|
||||
/>
|
||||
<>
|
||||
<div
|
||||
title={_('Zoom Mode')}
|
||||
className={clsx('my-2 flex items-center justify-between rounded-md')}
|
||||
>
|
||||
<button
|
||||
title={_('Single Page')}
|
||||
onClick={setSpreadMode.bind(null, 'none')}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
spreadMode === 'none' && 'bg-base-300/75',
|
||||
)}
|
||||
>
|
||||
<TbColumns1 />
|
||||
</button>
|
||||
<button
|
||||
title={_('Auto Spread')}
|
||||
onClick={setSpreadMode.bind(null, 'auto')}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
spreadMode === 'auto' && 'bg-base-300/75',
|
||||
)}
|
||||
>
|
||||
<TbColumns2 />
|
||||
</button>
|
||||
<div className='bg-base-300 mx-2 h-6 w-[1px]' />
|
||||
<button
|
||||
title={_('Fit Page')}
|
||||
onClick={setZoomMode.bind(null, 'fit-page')}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
zoomMode === 'fit-page' && 'bg-base-300/75',
|
||||
)}
|
||||
>
|
||||
<IoMdExpand />
|
||||
</button>
|
||||
<button
|
||||
title={_('Fit Width')}
|
||||
onClick={setZoomMode.bind(null, 'fit-width')}
|
||||
className={clsx(
|
||||
'hover:bg-base-300 text-base-content rounded-full p-2',
|
||||
zoomMode === 'fit-width' && 'bg-base-300/75',
|
||||
)}
|
||||
>
|
||||
<TbArrowAutofitWidth />
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<MenuItem
|
||||
label={_('Separate Cover Page')}
|
||||
Icon={keepCoverSpread ? MdCheck : undefined}
|
||||
onClick={() => setKeepCoverSpread(!keepCoverSpread)}
|
||||
disabled={spreadMode === 'none'}
|
||||
/>
|
||||
</>
|
||||
<hr aria-hidden='true' className='border-base-300 my-1' />
|
||||
</>
|
||||
)}
|
||||
<hr aria-hidden='true' className='border-base-300 my-1' />
|
||||
|
||||
<MenuItem label={_('Font & Layout')} shortcut='Shift+F' onClick={openFontLayoutMenu} />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user