use yew::prelude::*;
use crate::manager::StyleManager;
use crate::{GlobalStyle, StyleSource};
use stylist_core::ResultDisplay;
#[derive(Properties, Clone, Debug, PartialEq)]
pub struct GlobalProps {
pub css: StyleSource,
}
#[component(Global)]
pub fn global(props: &GlobalProps) -> Html {
let GlobalProps { css } = props.clone();
let mgr = use_context::<StyleManager>().unwrap_or_default();
struct GlobalStyleGuard {
inner: GlobalStyle,
}
impl Drop for GlobalStyleGuard {
fn drop(&mut self) {
self.inner.unregister();
}
}
use_memo((mgr, css), move |(manager, css)| GlobalStyleGuard {
inner: GlobalStyle::new_with_manager(css.clone(), manager)
.expect_display("Failed to create style."),
});
Html::default()
}