use wasm_bindgen::JsCast;
use web_sys::{Document, HtmlElement, Window};
thread_local! {
pub(crate) static WINDOW: web_sys::Window = web_sys::window().unwrap();
pub(crate) static DOCUMENT: web_sys::Document = web_sys::window().unwrap().document().unwrap();
}
pub fn window() -> Window {
WINDOW.with(Clone::clone)
}
pub fn document() -> Document {
DOCUMENT.with(Clone::clone)
}
pub fn body() -> HtmlElement {
document().body().unwrap()
}
pub fn event_target<T>(event: &web_sys::Event) -> T
where
T: JsCast,
{
event.target().unwrap().unchecked_into::<T>()
}
pub fn event_target_value<T>(event: &T) -> String
where
T: JsCast,
{
event
.unchecked_ref::<web_sys::Event>()
.target()
.unwrap()
.unchecked_into::<web_sys::HtmlInputElement>()
.value()
}
pub fn event_target_checked(ev: &web_sys::Event) -> bool {
ev.target()
.unwrap()
.unchecked_into::<web_sys::HtmlInputElement>()
.checked()
}