statue

Crates.iostatue
lib.rsstatue
version0.3.1
sourcesrc
created_at2023-01-03 22:55:58.341783
updated_at2024-05-21 12:03:59.163757
descriptionEasier way to query selectors for static HTML pages.
homepage
repositoryhttps://github.com/JohnScience/statue
max_upload_size
id750481
size61,353
Dmitrii - Demenev (JohnScience)

documentation

https://docs.rs/statue

README

Statue

Easier way to query selectors for static HTML pages.

Crates.io Docs.rs License

User guide

Spare yourself from writing

let window = web_sys::window().unwrap();
let document = window.document().unwrap();

let work_area = document
    .query_selector("#work-area")
    .unwrap()
    .unwrap()
    .dyn_into::<HtmlDivElement>()
    .unwrap();

let layer_list_div = document
    .query_selector("#layer-list")
    .unwrap()
    .unwrap()
    .dyn_into::<HtmlDivElement>()
    .unwrap();

let save_files_btn: Rc<HtmlButtonElement> = document
    .query_selector("#save-files")
    .unwrap()
    .unwrap()
    .dyn_into::<HtmlButtonElement>()
    .unwrap()
    .into();

and write

initialize_elements!(
    html: "index.html", elements: {
        let work_area = Single("#work-area");
        let layer_list_div = Single("#layer-list");   
        let save_files_btn = Single("#save-files", RcT);
    }
);

instead.

If you want to have Rc<Window> or Rc<Documemt>, or maybe hide them afterwards, you can do so by supplying optional opts argument:

initialize_elements!(
    html: "index.html",
    elements: {
        let work_area = Single("#work-area");
        let layer_list_div = Single("#layer-list");   
        let save_files_btn = Single("#save-files", RcT);
    },
    opts: {
        window_ret_ty: Some(RcT),
        document_ret_ty: None
    }
);

If you want to invoke Document::query_selector_all, you can use Multi selector query, though this functionality hasn't been tested thoroughly.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Commit count: 53

cargo fmt