32 lines
No EOL
893 B
JavaScript
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>);
|
|
} |