mirror of
https://github.com/DustinBrett/daedalOS.git
synced 2026-01-15 12:15:02 +00:00
Created window manager
This commit is contained in:
14
components/system/WindowManager.tsx
Normal file
14
components/system/WindowManager.tsx
Normal file
@@ -0,0 +1,14 @@
|
||||
import { ProcessConsumer } from 'contexts/process';
|
||||
import type { FC } from 'react';
|
||||
|
||||
const WindowManager: FC = () => (
|
||||
<ProcessConsumer>
|
||||
{({ processes }) =>
|
||||
Object.entries(processes).map(([id, { Component }]) => (
|
||||
<Component key={id} />
|
||||
))
|
||||
}
|
||||
</ProcessConsumer>
|
||||
);
|
||||
|
||||
export default WindowManager;
|
||||
@@ -1,12 +1,22 @@
|
||||
import type { FC } from 'react';
|
||||
import { createContext, useState } from 'react';
|
||||
import type { Process } from 'types/utils/processDirectory';
|
||||
import processDirectory from 'utils/processDirectory';
|
||||
|
||||
const ProcessLoader: FC = () => (
|
||||
<>
|
||||
{Object.entries(processDirectory).map(([id, { Component }]) => (
|
||||
<Component key={id} />
|
||||
))}
|
||||
</>
|
||||
);
|
||||
type ProcessContextState = {
|
||||
processes: Partial<Process>;
|
||||
};
|
||||
|
||||
export default ProcessLoader;
|
||||
const ProcessContext = createContext<ProcessContextState>({ processes: {} });
|
||||
|
||||
export const ProcessProvider: FC = ({ children }) => {
|
||||
const [processes] = useState(processDirectory);
|
||||
|
||||
return (
|
||||
<ProcessContext.Provider value={{ processes }}>
|
||||
{children}
|
||||
</ProcessContext.Provider>
|
||||
);
|
||||
};
|
||||
|
||||
export const ProcessConsumer = ProcessContext.Consumer;
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import ProcessLoader from 'contexts/process';
|
||||
import WindowManager from 'components/system/WindowManager';
|
||||
import { ProcessProvider } from 'contexts/process';
|
||||
import type { ReactElement } from 'react';
|
||||
|
||||
export default function Home(): ReactElement {
|
||||
return <ProcessLoader />;
|
||||
return (
|
||||
<ProcessProvider>
|
||||
<WindowManager />
|
||||
</ProcessProvider>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { ComponentType } from 'react';
|
||||
|
||||
export type Process = {
|
||||
Component: ComponentType;
|
||||
Component: any; // ComponentType
|
||||
};
|
||||
|
||||
export type Processes = {
|
||||
|
||||
Reference in New Issue
Block a user