File size: 2,102 Bytes
a21c316 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | import { Outlet } from 'react-router-dom';
import { getCurrentWindow } from '@tauri-apps/api/window';
import Navbar from '../navbar/Navbar';
import BackgroundTaskRunner from '../common/BackgroundTaskRunner';
import ToastContainer from '../common/ToastContainer';
import { useViewStore } from '../../stores/useViewStore';
import MiniView from './MiniView';
import { useEffect } from 'react';
import { isTauri } from '../../utils/env';
import { ensureFullViewState } from '../../utils/windowManager';
function Layout() {
const { isMiniView } = useViewStore();
// Ensure correct window state when in Full View (not Mini View)
// This handles the case where the app was closed in Mini View (small size, no decorations)
// and restarted (defaults to Full View state but keeps last window properties)
useEffect(() => {
if (!isMiniView && isTauri()) {
ensureFullViewState();
}
}, [isMiniView]);
if (isMiniView) {
return (
<>
<BackgroundTaskRunner />
<ToastContainer />
<MiniView />
</>
);
}
return (
<div className="h-screen flex flex-col bg-[#FAFBFC] dark:bg-base-300">
{/* 全局窗口拖拽区域 - 使用 JS 手动触发拖拽,解决 HTML 属性失效问题 */}
<div
className="fixed top-0 left-0 right-0 h-9"
style={{
zIndex: 9999,
backgroundColor: 'rgba(0,0,0,0.001)',
cursor: 'default',
userSelect: 'none',
WebkitUserSelect: 'none'
}}
data-tauri-drag-region
onMouseDown={() => {
getCurrentWindow().startDragging();
}}
/>
<BackgroundTaskRunner />
<ToastContainer />
<Navbar />
<main className="flex-1 overflow-hidden flex flex-col relative">
<Outlet />
</main>
</div>
);
}
export default Layout;
|