use std::rc::Rc;
use super::Component;
#[allow(unused)]
use crate::element::Element;
use crate::{
element::Any as AnyElement,
render::{ComponentID, Context},
};
#[derive(Clone)]
pub struct Any {
pub id: ComponentID,
#[allow(clippy::type_complexity)]
component: Rc<Box<dyn Fn(&mut Context) -> AnyElement>>,
}
impl Any {
pub fn new<C: Component + 'static>(component_id: ComponentID, component: C) -> Self {
Self {
id: component_id,
component: Rc::new(Box::new(move |context: &mut Context| component.render(context))),
}
}
#[must_use]
pub(crate) fn render(&self, context: &mut Context) -> AnyElement {
AnyElement::new((self.component)(context))
}
}