use ratatui::text::{Line, Span};
use super::super::{render::display_width, theme::Theme};
#[derive(Debug)]
pub(super) enum ClosedPanel {
Art {
title: &'static str,
lines: Vec<Line<'static>>,
source: String,
},
SourceFallback { title: &'static str, source: String },
}
pub(super) fn panel_lines(lines: Vec<Line<'static>>, width: usize) -> Vec<Line<'static>> {
let canvas_width = lines
.iter()
.map(|line| {
line.spans
.iter()
.map(|span| display_width(span.content.as_ref()))
.sum::<usize>()
})
.max()
.unwrap_or_default();
lines
.into_iter()
.map(|line| panel_line(line, width, canvas_width))
.collect()
}
fn panel_line(mut line: Line<'static>, width: usize, canvas_width: usize) -> Line<'static> {
let left_padding = width.saturating_sub(canvas_width) / 2;
if left_padding > 0 {
line.spans.insert(
0,
Span::styled(" ".repeat(left_padding), Theme::code_text()),
);
}
line
}