macro_rules! impl_styled_for {
($t:ty) => {
impl ratatui::style::Styled for $t {
type Item = Self;
fn style(&self) -> ratatui::style::Style {
self.style
}
fn set_style<S: Into<ratatui::style::Style>>(mut self, style: S) -> Self {
self.style = style.into();
self
}
}
};
}
macro_rules! impl_widget_via_ref {
($t:ty) => {
impl ratatui::widgets::Widget for $t {
fn render(self, area: ratatui::layout::Rect, buf: &mut ratatui::buffer::Buffer) {
ratatui::widgets::Widget::render(&self, area, buf);
}
}
};
}
macro_rules! render_spinner_body {
($self:ident, $area:ident, $buf:ident, $lines:expr) => {{
if $area.area() == 0 {
return;
}
$buf.set_style($area, $self.style);
let inner_area = $self.block.as_ref().map_or($area, |b| {
let inner = b.inner($area);
ratatui::widgets::Widget::render(b.clone(), $area, $buf);
inner
});
if inner_area.area() == 0 {
return;
}
ratatui::widgets::Paragraph::new($lines)
.alignment($self.alignment)
.render(inner_area, $buf);
}};
}