Children and Parent
Hierarchical DOM relations in hobo are maintained through regular Components - hobo::Children and hobo::Parent.
Usually you won't have to care about it since .add_child() (and the like) and .remove() already take care of updating Children and Parent components of affected entities.
hobo::Children is just a Vec of hobo::Entity, hobo::Parent is a newtype wrapper over hobo::Entity as well. If you have an Element and you want to operate on all (or some) of its children - it's as simple as:
let children = foo.get_cmp::<hobo::Children>()
.iter()
.map(|entity| hobo::Element(entity));
for child in children {
child.set_text("hello from hobo!");
}
It is possible to detach a child from its parent to reattach it to a different Element later, but it's not as simple as removing hobo::Parent and fixing up hobo::Children of the parent entity since the DOM has to be modified as well. A convenient method exists however:
// this removes parent and fixes children component in parent as well
some_child.leave_parent();
new_parent.add_child(some_child);