use crate::{
shared::{ArrowShape, StyleClass, StyleProperty},
traits::NodeBuilder,
};
pub trait Node: PartialOrd + Ord + Eq + PartialEq {
type Builder: NodeBuilder<Node = Self>;
fn id(&self) -> u64;
fn label(&self) -> &str;
fn classes(&self) -> impl Iterator<Item = &StyleClass>;
fn styles(&self) -> impl Iterator<Item = &StyleProperty>;
fn has_styles(&self) -> bool {
self.styles().next().is_some()
}
fn is_compatible_arrow_shape(shape: ArrowShape) -> bool;
}