use crate::core::create_hydrated_context;
use crate::traits::Hydratable;
use leptos::prelude::*;
#[component]
pub fn HydratedContext<T>(
#[prop(default = false)]
global: bool,
#[prop(optional)]
_marker: std::marker::PhantomData<T>,
#[prop(optional)]
children: Option<Children>,
) -> impl IntoView
where
T: Hydratable + Clone + Send + Sync + serde::Serialize + serde::de::DeserializeOwned + PartialEq + 'static,
{
let (signal, resource) = create_hydrated_context::<T>();
let _ = global;
provide_context(signal);
provide_context(resource);
children.map(|c| c())
}