use super::handle::Handle;
use super::node::NodeId;
use super::position::Position;
#[derive(Debug, Clone)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct Connection {
pub source: NodeId,
pub target: NodeId,
pub source_handle: Option<String>,
pub target_handle: Option<String>,
}
#[derive(Debug, Clone)]
pub struct EdgeInfo<'a> {
pub source: &'a NodeId,
pub target: &'a NodeId,
pub source_handle: Option<&'a str>,
pub target_handle: Option<&'a str>,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum ConnectionMode {
#[default]
Strict,
Loose,
}
#[derive(Debug, Clone, Default)]
pub enum ConnectionState {
#[default]
None,
InProgress {
is_valid: Option<bool>,
from: egui::Pos2,
from_handle: Handle,
from_position: Position,
from_node_id: NodeId,
to: egui::Pos2,
to_handle: Box<Option<Handle>>,
to_position: Position,
to_node_id: Option<NodeId>,
},
}