use crate::context::UiContext;
use dioxus_core::*;
use std::fmt::Debug;
pub fn use_window<UiAction, AsyncAction>(cx: &ScopeState) -> &UiContext<UiAction, AsyncAction>
where
UiAction: Debug + Clone,
AsyncAction: Debug + Clone,
{
cx.use_hook(|_| cx.consume_context::<UiContext<UiAction, AsyncAction>>())
.as_ref()
.expect("Failed to find UiContext, check UiAction type parameter")
}
pub fn use_eval<UiAction, AsyncAction, S: std::string::ToString>(cx: &ScopeState) -> &dyn Fn(S)
where
UiAction: Debug + Clone + 'static,
AsyncAction: Debug + Clone + 'static,
{
let window = use_window::<UiAction, AsyncAction>(cx).clone();
cx.use_hook(|_| move |script| window.eval(script))
}