pub trait Component {
// Required method
fn render(&self, width: usize) -> Vec<String>;
// Provided methods
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§
Provided Methods§
Sourcefn handle_input(&mut self, _key: &KeyEvent) -> bool
fn handle_input(&mut self, _key: &KeyEvent) -> bool
Handle keyboard input. Return true if consumed.
Sourcefn handle_paste(&mut self, _text: &str)
fn handle_paste(&mut self, _text: &str)
Handle a paste event (text from bracketed paste mode). Default no-op; override to process pasted content.
Sourcefn invalidate(&mut self)
fn invalidate(&mut self)
Mark this component as needing re-render. Called when internal state changes (output received, expanded toggled, etc.).
Sourcefn is_dirty(&self) -> bool
fn is_dirty(&self) -> bool
Check if this component needs re-render. Default: always re-render (conservative).
Sourcefn clear_dirty(&mut self)
fn clear_dirty(&mut self)
Clear dirty flag after successful render.
Sourcefn cache_key(&self, _width: usize) -> Option<RenderCacheKey>
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).
Sourcefn get_cached_render(&self) -> Option<&RenderCache>
fn get_cached_render(&self) -> Option<&RenderCache>
Get cached render output, if available and valid.
Sourcefn set_cached_render(&mut self, _cache: RenderCache)
fn set_cached_render(&mut self, _cache: RenderCache)
Store render output in cache.
Sourcefn is_focusable(&self) -> bool
fn is_focusable(&self) -> bool
Whether this component wants focus (for IME cursor positioning).
Sourcefn set_expanded(&mut self, _expanded: bool)
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.).
Sourcefn set_hide_thinking(&mut self, _hide: bool)
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".