use ratatui::{
Frame,
layout::Rect,
widgets::Widget,
};
use crate::theme::Theme;
pub struct Renderer<'a> {
frame: &'a mut Frame<'a>,
theme: &'a dyn Theme,
}
impl<'a> Renderer<'a> {
pub fn new(frame: &'a mut Frame<'a>, theme: &'a dyn Theme) -> Self {
Self { frame, theme }
}
pub fn theme(&self) -> &dyn Theme {
self.theme
}
pub fn render_widget<W: Widget>(&mut self, widget: W, area: Rect) {
self.frame.render_widget(widget, area);
}
pub fn render_stateful_widget<W: ratatui::widgets::StatefulWidget>(
&mut self,
widget: W,
area: Rect,
state: &mut W::State
) {
self.frame.render_stateful_widget(widget, area, state);
}
pub fn size(&self) -> Rect {
self.frame.size()
}
}