use ratatui_core::layout; use ratatui_core::terminal::Frame; use crate::elements::macros::*; use crate::elements::{Element, ElementWithChildren}; use crate::error; #[derive(Default)] pub struct Container<'a> { children: Vec>, constraint: layout::Constraint, layout: layout::Layout, widgets: ContainerWidgets<'a>, } #[derive(Clone, Default)] struct ContainerWidgets<'a> { block0: ratatui_widgets::block::Block<'a>, } basic_config_methods!(Container<'_>); element_with_children!(Container<'_>); impl Element for Container<'_> { #[inline(always)] fn constraint(&self) -> layout::Constraint { self.constraint } fn render( &self, frm: &mut Frame, rect: layout::Rect, ) -> Result<(), error::LintuiniError> { frm.render_widget(&self.widgets.block0, rect); for (el, r) in self.children.iter().zip(&*self.layout.split(rect)) { el.render(frm, *r)?; } Ok(()) } }