use super::edge::{Edge, EdgeAnchor, EdgeId, EdgeStyle};
use super::node::{Node, NodeId};
use super::position::Dimensions;
#[derive(Debug, Clone)]
pub enum NodeChange<D = ()> {
Position {
id: NodeId,
position: Option<egui::Pos2>,
dragging: Option<bool>,
},
Dimensions {
id: NodeId,
dimensions: Option<Dimensions>,
},
Select {
id: NodeId,
selected: bool,
},
Remove {
id: NodeId,
},
Add {
node: Node<D>,
index: Option<usize>,
},
Replace {
id: NodeId,
node: Node<D>,
},
}
#[derive(Debug, Clone)]
pub enum EdgeChange<D = ()> {
Select {
id: EdgeId,
selected: bool,
},
Remove {
id: EdgeId,
},
Add {
edge: Edge<D>,
index: Option<usize>,
},
Replace {
id: EdgeId,
edge: Edge<D>,
},
Anchor {
id: EdgeId,
source_anchor: Option<Option<EdgeAnchor>>,
target_anchor: Option<Option<EdgeAnchor>>,
},
Style {
id: EdgeId,
style: Option<EdgeStyle>,
},
}