jellyflow_runtime/runtime/xyflow/changes/
node.rs1use serde::{Deserialize, Serialize};
2
3use jellyflow_core::core::GroupId;
4use jellyflow_core::core::{
5 CanvasPoint, CanvasSize, Node, NodeExtent, NodeId, NodeKindKey, NodeOrigin, PortId,
6};
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10#[serde(tag = "type", rename_all = "snake_case")]
11pub enum NodeChange {
12 Add {
13 id: NodeId,
14 node: Node,
15 },
16 Remove {
17 id: NodeId,
18 },
19
20 Position {
21 id: NodeId,
22 position: CanvasPoint,
23 },
24 Origin {
25 id: NodeId,
26 origin: Option<NodeOrigin>,
27 },
28 Kind {
29 id: NodeId,
30 kind: NodeKindKey,
31 },
32 KindVersion {
33 id: NodeId,
34 kind_version: u32,
35 },
36 Selectable {
37 id: NodeId,
38 selectable: Option<bool>,
39 },
40 Focusable {
41 id: NodeId,
42 focusable: Option<bool>,
43 },
44 Draggable {
45 id: NodeId,
46 draggable: Option<bool>,
47 },
48 Connectable {
49 id: NodeId,
50 connectable: Option<bool>,
51 },
52 Deletable {
53 id: NodeId,
54 deletable: Option<bool>,
55 },
56 Parent {
57 id: NodeId,
58 parent: Option<GroupId>,
59 },
60 Extent {
61 id: NodeId,
62 extent: Option<NodeExtent>,
63 },
64 ExpandParent {
65 id: NodeId,
66 expand_parent: Option<bool>,
67 },
68 Size {
69 id: NodeId,
70 size: Option<CanvasSize>,
71 },
72 Hidden {
73 id: NodeId,
74 hidden: bool,
75 },
76 Collapsed {
77 id: NodeId,
78 collapsed: bool,
79 },
80 Data {
81 id: NodeId,
82 data: serde_json::Value,
83 },
84 Ports {
85 id: NodeId,
86 ports: Vec<PortId>,
87 },
88}