use std::fmt;
use crate::*;
#[derive(PartialEq, Eq, Clone, Copy)]
pub struct NodeRef(Signal<Option<web_sys::Node>>);
impl NodeRef {
pub fn new() -> Self {
create_node_ref()
}
#[track_caller]
pub fn get(&self) -> web_sys::Node {
self.try_get().expect("NodeRef is not set")
}
pub fn try_get(&self) -> Option<web_sys::Node> {
self.0.get_clone()
}
pub fn set(&self, node: Option<web_sys::Node>) {
self.0.set(node);
}
}
impl Default for NodeRef {
fn default() -> Self {
Self::new()
}
}
impl fmt::Debug for NodeRef {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_tuple("NodeRef").field(&self.0.get_clone()).finish()
}
}
pub fn create_node_ref() -> NodeRef {
NodeRef(create_signal(None))
}