jellyflow_runtime/io/view_state/
pure.rs1use serde::{Deserialize, Serialize};
2
3use jellyflow_core::core::{CanvasPoint, EdgeId, GroupId, NodeId};
4
5use super::default_zoom;
6
7#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12pub struct NodeGraphPureViewState {
13 #[serde(default)]
14 pub pan: CanvasPoint,
15 #[serde(default = "default_zoom")]
16 pub zoom: f32,
17 #[serde(default, skip_serializing_if = "Vec::is_empty")]
18 pub selected_nodes: Vec<NodeId>,
19 #[serde(default, skip_serializing_if = "Vec::is_empty")]
20 pub selected_edges: Vec<EdgeId>,
21 #[serde(default, skip_serializing_if = "Vec::is_empty")]
22 pub selected_groups: Vec<GroupId>,
23 #[serde(default, skip_serializing_if = "Vec::is_empty")]
24 pub draw_order: Vec<NodeId>,
25 #[serde(default, skip_serializing_if = "Vec::is_empty")]
26 pub edge_draw_order: Vec<EdgeId>,
27 #[serde(default, skip_serializing_if = "Vec::is_empty")]
28 pub group_draw_order: Vec<GroupId>,
29}
30
31impl Default for NodeGraphPureViewState {
32 fn default() -> Self {
33 Self {
34 pan: CanvasPoint::default(),
35 zoom: default_zoom(),
36 selected_nodes: Vec::new(),
37 selected_edges: Vec::new(),
38 selected_groups: Vec::new(),
39 draw_order: Vec::new(),
40 edge_draw_order: Vec::new(),
41 group_draw_order: Vec::new(),
42 }
43 }
44}