import "$/apps" // registers all of the apps; import { useRef } from "preact/hooks" import { Window } from "./window" import { FILE_REGISTRY } from "./files"; import { Source } from "$/apps/source"; import { App } from "$/apps"; import { createModel, Signal, signal } from "@preact/signals"; import { MutableValue } from "$/util"; import { File } from "./file"; import { StartMenu } from "./start"; export type Task = { app: App, source: Signal, window: { minimized: Signal, maximized: Signal width?: string | number; height?: string | number; position?: { x?: string | number; y?: string | number; }, z: Signal; } title: Signal, id: number; contentReady: Signal, sizingFinished: Signal } const TaskManagerModel = createModel(() => { const tasks: Signal> = signal(new MutableValue([])) return { tasks, close(currentTask: Task) { tasks.value = tasks.value.deriveNew(self => { const idx = self.findIndex(task => { return currentTask === task }) self.splice(idx, 1); return self }) }, focusWindow(currentTask: Task) { const t = tasks.value.value; const currentTaskZ = currentTask.window.z.value; for (const task of t) { if (task === currentTask) { task.window.z.value = t.length - 1 } else if (task.window.z.value > currentTaskZ) { task.window.z.value = task.window.z.value - 1 } } }, add(task: Task) { tasks.value = tasks.value.deriveNew(self => { self.push(task) return self }) } } }) export const taskManager = new TaskManagerModel(); let taskCounter = 0; export function getTaskId(): number { return taskCounter++; } export function Desktop() { const ref = useRef(null); return
{ FILE_REGISTRY.map(file => )}
{ taskManager.tasks.value.value.map(task => { const App = task.app; return })}
}