use crate::dom::Node;
pub(crate) struct BindContext<'a> {
pub(crate) parent: &'a Node,
pub(crate) tree_connected: bool,
pub(crate) tree_is_in_a_document_tree: bool,
pub(crate) tree_is_in_a_shadow_tree: bool,
pub(crate) is_shadow_tree: IsShadowTree,
}
#[derive(Debug, Eq, PartialEq)]
pub(crate) enum IsShadowTree {
Yes,
No,
}
impl<'a> BindContext<'a> {
pub(crate) fn new(parent: &'a Node, is_shadow_tree: IsShadowTree) -> Self {
BindContext {
parent,
tree_connected: parent.is_connected(),
tree_is_in_a_document_tree: parent.is_in_a_document_tree(),
tree_is_in_a_shadow_tree: parent.is_in_a_shadow_tree(),
is_shadow_tree,
}
}
pub(crate) fn is_in_tree(&self) -> bool {
self.tree_is_in_a_document_tree || self.tree_is_in_a_shadow_tree
}
}
pub(crate) struct UnbindContext<'a> {
pub(crate) parent: &'a Node,
pub(crate) next_sibling: Option<&'a Node>,
pub(crate) tree_connected: bool,
pub(crate) tree_is_in_a_document_tree: bool,
pub(crate) tree_is_in_a_shadow_tree: bool,
}
impl<'a> UnbindContext<'a> {
pub(crate) fn new(parent: &'a Node, next_sibling: Option<&'a Node>) -> Self {
UnbindContext {
parent,
next_sibling,
tree_connected: parent.is_connected(),
tree_is_in_a_document_tree: parent.is_in_a_document_tree(),
tree_is_in_a_shadow_tree: parent.is_in_a_shadow_tree(),
}
}
}
pub(crate) struct MoveContext<'a> {
pub(crate) old_parent: Option<&'a Node>,
}
impl<'a> MoveContext<'a> {
pub(crate) fn new(old_parent: Option<&'a Node>) -> Self {
MoveContext { old_parent }
}
}