yewlish-utils 0.1.12

Common utils for yewlish component set
Documentation
use std::cell::RefCell;
use std::rc::Rc;
use web_sys::HtmlCollection;
use yew::prelude::*;

#[hook]
pub fn use_children_as_html_collection(
    parent_node_ref: NodeRef,
) -> Rc<RefCell<Option<HtmlCollection>>> {
    let children = use_mut_ref(|| None::<HtmlCollection>);

    {
        let parent_node_ref = parent_node_ref.clone();
        let children = children.clone();

        use_effect_with(parent_node_ref, move |parent_node_ref| {
            let parent_node = parent_node_ref.cast::<web_sys::Element>();

            if parent_node.is_none() {
                return;
            }

            let parent_node = parent_node.unwrap();

            if parent_node.child_element_count() == 0 {
                return;
            }

            children.replace(Some(parent_node.children()));
        });
    };

    children
}