use crate::DynamicValues;
use dioxus_core_template::TemplateRawTree;
use super::{IntoViewChild, View, ViewTemplate};
pub struct FragmentBuilder<Children> {
children: Children,
}
#[inline]
pub const fn fragment() -> FragmentBuilder<()> {
FragmentBuilder { children: () }
}
impl<Children> FragmentBuilder<Children> {
#[inline]
pub fn child<Child, Marker>(
self,
child: Child,
) -> FragmentBuilder<(Children, <Child as IntoViewChild<Marker>>::Output)>
where
Child: IntoViewChild<Marker>,
{
FragmentBuilder {
children: (self.children, child.into_child()),
}
}
}
impl<Children: ViewTemplate> ViewTemplate for FragmentBuilder<Children> {
const TEMPLATE_TREE: &'static TemplateRawTree = Children::TEMPLATE_TREE;
}
impl<Children: View> View for FragmentBuilder<Children> {
#[inline]
fn push(self, dynamic: &mut DynamicValues) {
self.children.push(dynamic);
}
}