Skip to main content

vtcode_tui/core_tui/session/render/
mod.rs

1use ratatui::prelude::*;
2use std::borrow::Cow;
3
4use super::{Session, message::MessageLine, message_renderer, text_utils};
5
6mod modal_renderer;
7
8pub(crate) use modal_renderer::modal_render_styles;
9pub use modal_renderer::{render_modal, split_inline_modal_area};
10
11pub(super) fn render_message_spans(session: &Session, index: usize) -> Vec<Span<'static>> {
12    let Some(line) = session.lines.get(index) else {
13        return vec![Span::raw(String::new())];
14    };
15    message_renderer::render_message_spans(
16        line,
17        &session.theme,
18        &session.labels,
19        |kind| session.prefix_text(kind),
20        |line| session.prefix_style(line),
21        |kind| session.text_fallback(kind),
22    )
23}
24
25pub(super) fn agent_prefix_spans(session: &Session, line: &MessageLine) -> Vec<Span<'static>> {
26    let prefix_style = |line: &MessageLine| session.prefix_style(line);
27    message_renderer::agent_prefix_spans(line, &session.theme, &session.labels, &prefix_style)
28}
29
30pub(super) fn strip_ansi_codes(text: &str) -> Cow<'_, str> {
31    text_utils::strip_ansi_codes(text)
32}
33
34pub(super) fn render_tool_segments(session: &Session, line: &MessageLine) -> Vec<Span<'static>> {
35    message_renderer::render_tool_segments(line, &session.theme)
36}
37
38#[allow(dead_code)]
39pub fn render(session: &mut Session, frame: &mut Frame<'_>) {
40    session.render(frame);
41}
42
43fn modal_list_highlight_style(session: &Session) -> Style {
44    session.styles.modal_list_highlight_style()
45}
46
47pub fn apply_view_rows(session: &mut Session, rows: u16) {
48    session.apply_view_rows(rows);
49}
50
51pub fn apply_transcript_rows(session: &mut Session, rows: u16) {
52    session.apply_transcript_rows(rows);
53}
54
55pub fn apply_transcript_width(session: &mut Session, width: u16) {
56    session.apply_transcript_width(width);
57}
58
59pub fn recalculate_transcript_rows(session: &mut Session) {
60    session.recalculate_transcript_rows();
61}