active_dom/
utils.rs

1#![allow(dead_code)]
2
3use wasm_bindgen::JsCast;
4use wasm_bindgen::closure::Closure;
5
6/// Window
7/// 
8///
9pub fn window() -> web_sys::Window {
10    web_sys::window().expect("Expecting a window.")
11}
12
13/// Document
14/// 
15/// 
16pub fn document() -> web_sys::Document {
17    window().document().expect("Expecting a document.")
18}
19
20/// Body
21/// 
22/// 
23pub fn body() -> web_sys::HtmlElement {
24    document().body().expect("Expecting a body.")
25}
26
27/// Create Element
28/// 
29/// 
30pub fn create_element(name: &str) -> web_sys::Element {
31    document()
32        .create_element(name)
33        .expect("Failed to create element.")
34}
35
36/// Create Text
37/// 
38/// 
39pub fn create_text(value: &str) -> web_sys::Text {
40    document().create_text_node(value)
41}
42
43/// Create Comment
44/// 
45/// 
46pub fn create_comment(value: &str) -> web_sys::Comment {
47    document().create_comment(value)
48}
49
50/// Add Event Listener
51/// 
52/// 
53pub fn add_event_listener<F>(target: &web_sys::Element, name: &str, cb: F)
54where
55    F: FnMut(web_sys::Event) + 'static,
56{
57    let cb = Closure::wrap(Box::new(cb) as Box<dyn FnMut(web_sys::Event) + 'static>);
58
59    target
60        .add_event_listener_with_callback(name, cb.as_ref().unchecked_ref())
61        .expect("Failed to add event listener.");
62
63    cb.forget();
64}
65
66/// Append Child
67/// 
68/// 
69pub fn append_child(target: &web_sys::Element, child: &web_sys::Node) {
70    target.append_child(child).expect("Failed to append child.");
71}
72
73/// Replace Child
74/// 
75/// 
76pub fn replace_child(target: &web_sys::Element, child: &web_sys::Node) {
77    target.replace_with_with_node_1(child).expect("Failed to replace child.")
78}
79
80/// Set Attribute
81pub fn set_attribute(target: &web_sys::Element, key: &str, value: &str) {
82    target
83        .set_attribute(key, value)
84        .expect("Failed to set attribute");
85}