Skip to main content

Component

Trait Component 

Source
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§

Source

fn render(&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 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: always re-render (conservative).

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§