jellyflow_runtime/runtime/events/
connection.rs1use serde::{Deserialize, Serialize};
2
3use crate::rules::EdgeEndpoint;
4use jellyflow_core::core::{EdgeId, PortId};
5use jellyflow_core::interaction::NodeGraphConnectionMode;
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9#[serde(tag = "kind", rename_all = "snake_case")]
10pub enum ConnectDragKind {
11 New {
12 from: PortId,
13 bundle: Vec<PortId>,
14 },
15 Reconnect {
16 edge: EdgeId,
17 endpoint: EdgeEndpoint,
18 fixed: PortId,
19 },
20 ReconnectMany {
21 edges: Vec<(EdgeId, EdgeEndpoint, PortId)>,
22 },
23}
24
25#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
26pub struct ConnectStart {
27 pub kind: ConnectDragKind,
28 pub mode: NodeGraphConnectionMode,
29}
30
31#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
32#[serde(rename_all = "snake_case")]
33pub enum ConnectEndOutcome {
34 Committed,
36 Rejected,
38 OpenConversionPicker,
40 OpenInsertNodePicker,
42 Canceled,
44 NoOp,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
49pub struct ConnectEnd {
50 pub kind: ConnectDragKind,
51 pub mode: NodeGraphConnectionMode,
52 pub target: Option<PortId>,
53 pub outcome: ConnectEndOutcome,
54}