import { useState, useCallback } from 'react'; import MenuBar from '../MenuBar/MenuBar'; import Dock from '../Dock/Dock'; import DesktopIcon from '../DesktopIcon/DesktopIcon'; import Window from '../Window/Window'; import ContextMenu from '../ContextMenu/ContextMenu'; import { useOS } from '../../context/WindowContext'; import { APPS, WALLPAPERS } from '../../config/apps'; import './Desktop.css'; interface CtxMenu { x: number; y: number } export default function Desktop() { const { state, openWindow, setWallpaper } = useOS(); const [ctxMenu, setCtxMenu] = useState(null); const handleContextMenu = useCallback((e: React.MouseEvent) => { e.preventDefault(); setCtxMenu({ x: e.clientX, y: e.clientY }); }, []); const handleChangeWallpaper = useCallback(() => { const next = (state.wallpaper + 1) % WALLPAPERS.length; setWallpaper(next); }, [state.wallpaper, setWallpaper]); const handleAboutThisMac = useCallback(() => { openWindow('about'); }, [openWindow]); return (
setCtxMenu(null)} >
{APPS.map(app => (
openWindow(app.id)} />
))}
{APPS.map(app => ( ))} {ctxMenu && ( setCtxMenu(null)} onChangeWallpaper={handleChangeWallpaper} onAboutThisMac={handleAboutThisMac} /> )}
); }