/ concept-collection / numbl-web-ide
Sign in
concept-collection / numbl-web-ide
numbl-web-ide / src / ide.ts
33 lines · 1.1 KBBlameHistoryRaw
1import { createWorkbench, type AppWorkbench, type WorkbenchTheme, type WorkspaceFileSystem } from 'minwebide';
2import { createMipSystem } from './numbl/mipSystem';
3import { createNumblRunner } from './numbl/runner';
5/**
6 * Assembles the numbl workbench (mip system + runner) on a file system. Used
7 * by the project-app shell for both project IDEs and GitHub repo IDEs; does
8 * not own `fs` — the caller disposes it.
9 */
10export async function openNumblWorkbench(container: HTMLElement, fs: WorkspaceFileSystem, workspaceName: string, theme: WorkbenchTheme): Promise<AppWorkbench> {
11 const mip = await createMipSystem();
12 // fetch/refresh mip core in the background; runs await it (and say so
13 // in the output channel if they actually have to wait)
14 void mip.ensureCore().catch(() => { /* retried on the next run */ });
16 const workbench = createWorkbench(container, {
17 fileSystem: fs,
18 theme,
19 workspaceName,
20 });
22 const numbl = createNumblRunner(fs, workbench, mip);
23 workbench.registerRunner(numbl.runner);
25 return {
26 workbench,
27 dispose() {
28 numbl.dispose();
29 workbench.dispose();
30 mip.dispose();
31 },
32 };
moveopenescclose