Skip to main content

Component

Trait Component 

Source
pub trait Component {
Show 13 methods // Required method fn render(&mut self, width: usize) -> Vec<String>; // Provided methods fn render_padded(&mut self, width: usize) -> Vec<String> { ... } fn handle_input(&mut self, _key: &KeyEvent) -> bool { ... } fn handle_paste(&mut self, _text: &str) { ... } fn invalidate(&mut self) { ... } fn is_dirty(&self) -> bool { ... } fn clear_dirty(&mut self) { ... } fn cache_key(&self, _width: usize) -> Option<RenderCacheKey> { ... } fn get_cached_render(&self) -> Option<&RenderCache> { ... } fn set_cached_render(&mut self, _cache: RenderCache) { ... } fn is_focusable(&self) -> bool { ... } fn set_expanded(&mut self, _expanded: bool) { ... } fn set_hide_thinking(&mut self, _hide: bool) { ... }
}
Expand description

Every renderable UI element.

Required Methods§

Source

fn render(&mut self, width: usize) -> Vec<String>

Render to lines for the given viewport width. Each returned string MUST NOT exceed width in visible width.

Provided Methods§

Source

fn render_padded(&mut self, width: usize) -> Vec<String>

Render and pad each line to exactly width visible columns. Default implementation calls render(width) and pads each line with trailing spaces if its visible width is less than width.

Source

fn handle_input(&mut self, _key: &KeyEvent) -> bool

Handle keyboard input. Return true if consumed.

Source

fn handle_paste(&mut self, _text: &str)

Handle a paste event (text from bracketed paste mode). Default no-op; override to process pasted content.

Source

fn invalidate(&mut self)

Mark this component as needing re-render. Called when internal state changes (output received, expanded toggled, etc.).

Source

fn is_dirty(&self) -> bool

Check if this component needs re-render. Default: false — the Container’s per-child cache tracking determines whether to re-render. Override to return true for components whose state can change without explicit invalidation (e.g. ToolExecComponent receiving streaming output).

Source

fn clear_dirty(&mut self)

Clear dirty flag after successful render.

Source

fn cache_key(&self, _width: usize) -> Option<RenderCacheKey>

Get the cache key for this component’s current state. Return None to disable caching (always re-render).

Source

fn get_cached_render(&self) -> Option<&RenderCache>

Get cached render output, if available and valid.

Source

fn set_cached_render(&mut self, _cache: RenderCache)

Store render output in cache.

Source

fn is_focusable(&self) -> bool

Whether this component wants focus (for IME cursor positioning).

Source

fn set_expanded(&mut self, _expanded: bool)

Toggle expanded/collapsed state. No-op by default. Override for components that support expand/collapse (tool results, messages, etc.).

Source

fn set_hide_thinking(&mut self, _hide: bool)

Toggle thinking block visibility. No-op by default. Override for components that display thinking content (AssistantMessageComponent).

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§