ProzillaOS/src/components/windows/WindowsView.jsx
2023-08-10 13:27:09 +02:00

32 lines
No EOL
893 B
JavaScript

import { Window } from "./Window.jsx";
import { useWindows } from "../../hooks/windows/WindowsContext.js";
import { useWindowsManager } from "../../hooks/windows/WindowsManagerContext.js";
import { useEffect, useState } from "react";
export function WindowsView() {
const windows = useWindows();
const windowsManager = useWindowsManager();
const [sortedWindows, setSortedWindows] = useState([]);
useEffect(() => {
setSortedWindows([...windows].sort((windowA, windowB) =>
windowA.lastInteraction - windowB.lastInteraction
));
}, [windows]);
// TO DO: prevent windows from being rerendered when order is changed
return (<div>
{sortedWindows.map(({ id, app, size, position, options }) =>
<Window
onInteract={() => { windowsManager.focus(id); }}
id={id}
key={id}
app={app}
size={size}
position={position}
options={options}
/>
)}
</div>);
}