|
|
|
|
@ -3,6 +3,7 @@ import type { ViewerSettings } from '../types';
|
|
|
|
|
import type { ChapterData } from '../types';
|
|
|
|
|
import { MangaPage } from './MangaPage';
|
|
|
|
|
import { ViewerToolbar } from './ViewerToolbar';
|
|
|
|
|
import { getCurrentWindow } from '@tauri-apps/api/window';
|
|
|
|
|
import { SettingsPanel } from './SettingsPanel';
|
|
|
|
|
|
|
|
|
|
interface MangaViewerProps {
|
|
|
|
|
@ -171,7 +172,7 @@ export function MangaViewer({
|
|
|
|
|
};
|
|
|
|
|
window.addEventListener('keydown', handler);
|
|
|
|
|
return () => window.removeEventListener('keydown', handler);
|
|
|
|
|
}, [goNext, goPrev, showSettings, settings.direction]);
|
|
|
|
|
}, [goNext, goPrev, showSettings, settings.direction, toggleFullscreen]);
|
|
|
|
|
|
|
|
|
|
// Auto-hide toolbar
|
|
|
|
|
const resetToolbarTimer = useCallback(() => {
|
|
|
|
|
@ -189,15 +190,17 @@ export function MangaViewer({
|
|
|
|
|
};
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
const toggleFullscreen = () => {
|
|
|
|
|
if (!document.fullscreenElement) {
|
|
|
|
|
containerRef.current?.requestFullscreen();
|
|
|
|
|
setIsFullscreen(true);
|
|
|
|
|
} else {
|
|
|
|
|
document.exitFullscreen();
|
|
|
|
|
setIsFullscreen(false);
|
|
|
|
|
const toggleFullscreen = useCallback(async () => {
|
|
|
|
|
try {
|
|
|
|
|
const win = getCurrentWindow();
|
|
|
|
|
const current = await win.isFullscreen();
|
|
|
|
|
const nextState = !current;
|
|
|
|
|
await win.setFullscreen(nextState);
|
|
|
|
|
setIsFullscreen(nextState);
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.error('Failed to toggle fullscreen', e);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
const bgMap = {
|
|
|
|
|
black: '#000000',
|
|
|
|
|
|