/** * Editor Context * Provides editor state and actions to all editor components * Coordinates SelectionContext and SpawnContext for unified editor state */ import React from 'react'; import { EditorState, EditorTool, EditorMode, SpawnTool } from '../../editor/EditorState'; import { CommandManager, type EditorCommand } from '../../editor/CommandManager'; import { PlayModeController } from '../../editor/PlayModeController'; import { ECSContext } from '../../ecs'; import type { EngineAPI } from '../../..'; import type { ArchetypeRef } from '../../spawn'; import type { EditorTaskStore } from './TaskStore'; import { type ResolvedEditorSessionConfig } from '../../editor/sessionConfig'; export interface EditorContextValue { state: EditorState; selectedEntities: number[]; selectedPartPaths: number[][] | null | undefined; selectEntity: (eid: number | null, multi?: boolean) => void; selectBodyPart: (eid: number, partPath: number[], multi?: boolean) => void; selectMultiple: (eids: number[]) => void; clearSelection: () => void; tool: EditorTool; setTool: (tool: EditorTool) => void; spawnTool: SpawnTool; setSpawnTool: (tool: SpawnTool, archetype?: ArchetypeRef) => void; clearSpawnTool: () => void; mode: EditorMode; setMode: (mode: EditorMode) => void; isPlaying: boolean; enterPlayMode: () => void; exitPlayMode: () => void; transformSpace: 'world' | 'local'; toggleTransformSpace: () => void; snapping: boolean; toggleSnapping: () => void; commandManager: CommandManager; executeCommand: (command: EditorCommand) => void; undo: () => void; redo: () => void; canUndo: boolean; canRedo: boolean; copySelection: () => boolean; cutSelection: () => boolean; pasteSelection: () => boolean; duplicateSelection: () => boolean; deleteSelection: () => boolean; playModeController: PlayModeController; saveWorld?: () => Promise; isSaving: boolean; lastSaved: number | null; saveError: Error | null; requestComposer?: () => void; openPlayMode?: (mode: 'game' | 'display') => void; composerOpen: boolean; taskStore?: EditorTaskStore; sessionConfig: ResolvedEditorSessionConfig; } export interface EditorProviderProps { children: React.ReactNode; engine: EngineAPI; ctx: ECSContext; onRequestComposer?: () => void; onSaveWorld?: (worldId: string) => Promise; onOpenPlayMode?: (mode: 'game' | 'display') => void; } export declare function EditorProvider({ children, engine, ctx, onRequestComposer, onSaveWorld, onOpenPlayMode }: EditorProviderProps): import("react/jsx-runtime").JSX.Element; export declare function useEditor(): EditorContextValue; export declare function useSelectedEntity(): number | null; export declare function useSelectedEntities(): number[]; export declare function useSelectedPartPath(): number[] | null; //# sourceMappingURL=EditorContext.d.ts.map