#pragma once #include #include #include namespace faset::editor { // Owns authoring presentation only. Player execution and MCP transport stay in // the application. class EditorUI { public: EditorUI(Session&, render::Renderer&, const std::filesystem::path& font, const std::filesystem::path& styles); ~EditorUI(); EditorUI(const EditorUI&) = delete; EditorUI& operator=(const EditorUI&) = delete; void frame(const std::vector&); const render::Snapshot& snapshot() const; ui::Context& widgets(); const std::string& current_document() const; void select_document(const std::string& document); const std::string& selected_entity() const; void select_entity(const std::string& entity); bool project_switch_requested() const; void set_project_switch_enabled(bool enabled); private: struct Impl; std::unique_ptr impl_; }; } // namespace faset::editor