export { DEFAULT_CODE, DEFAULT_HEADER, DEFAULT_IMAGE, parseWorkspaceBundle, resolveArgs, SDL_DEMO_CODE } from 'emception'; export type { BundleFile, CompileConfig, EmceptionAPI, RunConfig, RunType, TestConfig, WorkspaceConfig, WorkspaceFeatures } from 'emception'; import type { EmceptionAPI, WorkspaceConfig } from 'emception'; /** UI hint for which dock group an open tab should appear in. */ export type DockGroup = 'main' | 'right' | 'bottom'; export type TabType = 'text' | 'image' | 'canvas'; /** @deprecated — use {@link deriveStorageKey} instead. Kept for legacy apps that have * data under this key and haven't migrated to a named workspace. */ export declare const WORKSPACE_STORAGE_KEY = "gameguild.emception.workspace.v1"; export interface WorkspaceFile { path: string; type: 'text' | 'image'; content: string; } export type OpenTab = { id: string; path: string; type: 'text' | 'image'; group: DockGroup; } | { id: 'canvas'; type: 'canvas'; group: DockGroup; }; export interface TerminalTab { id: string; title: string; } export interface TreeNode { name: string; path: string; isDir: boolean; children: TreeNode[]; } /** Derive the localStorage key from a workspace name. * Falls back to the legacy key so existing stored data is not lost. */ export declare function deriveStorageKey(workspaceName?: string): string; export declare const TERMINAL_THEME: { readonly background: "#181825"; readonly foreground: "#cdd6f4"; readonly cursor: "#f5e0dc"; readonly selectionBackground: "#585b70"; }; /** Convert a `WorkspaceConfig`'s files map into IDE-ready * `WorkspaceFile` records and `OpenTab` arrays. IDE-only. */ export declare function workspaceConfigToState(config: WorkspaceConfig): { files: Record; openTabs: OpenTab[]; activeTabId: string; expandedDirs: Set; }; /** * The API surface accepted by the Ide component for an injected emception * instance. Compatible with `createEmception()` from `@gameguild/emception-browser`. */ export type InjectedEmceptionAPI = EmceptionAPI; /** * Full reactive props for ``. * * All `enable*` flags default to `true` so the component is backward-compatible: * existing code that passes only `title`, `manifestUrl`, or `workspaceConfig` * continues to work without changes. */ export interface IdeProps { /** Title shown in the header bar. */ title?: string; /** URL of the sysroot manifest. Defaults to `/cdn/manifest.json`. */ manifestUrl?: string; /** * Pre-built emception instance. * When provided the component skips booting and delegates all VFS/run calls * to this API. The caller is responsible for disposal. */ api?: InjectedEmceptionAPI; /** Static workspace descriptor. Takes priority over `workspaceUrl`. */ workspaceConfig?: WorkspaceConfig; /** URL to a `.workspace.json` bundle to fetch on mount. */ workspaceUrl?: string; /** * Logical workspace name — used to derive the IDB/localStorage key as * `emception:ws:`. Omit to keep the legacy key so * previously saved state is not lost. */ workspaceName?: string; /** Show the file-explorer sidebar. Default `true`. */ enableFileExplorer?: boolean; /** * Show the tab strip on editor panels. * When `false`, only the active file is shown without a tab bar. * Default `true`. */ enableTabs?: boolean; /** * Mount the xterm.js terminal panel. * When `false`, stdout/stderr are forwarded to `onStdout`/`onStderr` props. * Default `true`. */ enableTerminal?: boolean; /** * Show the SDL canvas panel and allocate the off-screen `` element * Default `true`. */ enableCanvas?: boolean; /** * Enable drag-and-drop tab docking between groups. * When `false`, the IDE renders a fixed two-panel layout without any * `DockDropOverlay` chrome. Default `true`. */ enableDocking?: boolean; /** * Persist and restore the workspace via localStorage. * When `false`, file state is ephemeral (memory only) and `workspaceName` * is ignored. Default `true`. */ enableWorkspace?: boolean; /** * When `true`, the IDE root is re-parented into `document.body` via a React * portal so it fills the viewport (`position: fixed; inset: 0`) regardless * of where the component is placed in the tree. */ fullscreen?: boolean; /** Called when the fullscreen state changes (e.g. user presses Escape). */ onFullscreenChange?: (fullscreen: boolean) => void; /** Show files whose names start with `.`. Default `false`. */ showHiddenFiles?: boolean; /** Show solution / answer files (e.g. `*.solution.*`). Default `false`. */ showSolutionFiles?: boolean; /** Receive stdout lines when the terminal panel is disabled. */ onStdout?: (text: string) => void; /** Receive stderr lines when the terminal panel is disabled. */ onStderr?: (text: string) => void; /** Supply stdin bytes when the terminal panel is disabled. */ stdin?: () => Promise; /** Prevent all editor and VFS writes. Compile/run are also disabled. */ readOnly?: boolean; /** Monaco editor theme. Defaults to `'vs-dark'`. */ theme?: string; } //# sourceMappingURL=ide-types.d.ts.map