euv_core/renderer/render/
fn.rs1use crate::*;
2
3pub fn mount<F>(selector: &str, render_fn: F)
16where
17 F: FnOnce() -> VirtualNode,
18{
19 init_event_delegation();
20 let window: Window = match window() {
21 Some(w) => w,
22 None => return,
23 };
24 let document: Document = match window.document() {
25 Some(d) => d,
26 None => return,
27 };
28 let target: Element = if selector == BODY_TAG {
29 match document.body() {
30 Some(body) => body.into(),
31 None => return,
32 }
33 } else if let Some(id) = selector.strip_prefix(ID_SELECTOR_PREFIX) {
34 match document.get_element_by_id(id) {
35 Some(el) => el,
36 None => return,
37 }
38 } else if let Some(class) = selector.strip_prefix(CLASS_SELECTOR_PREFIX) {
39 match document.get_elements_by_class_name(class).item(0) {
40 Some(el) => el,
41 None => return,
42 }
43 } else {
44 match document.get_elements_by_tag_name(selector).item(0) {
45 Some(el) => el,
46 None => return,
47 }
48 };
49 let mut renderer: Renderer = Renderer::new(target);
50 let vnode: VirtualNode = render_fn();
51 renderer.render(vnode);
52}