Skip to main content

jellyflow_runtime/io/tuning/
auto_pan.rs

1use serde::{Deserialize, Serialize};
2
3/// Auto-pan tuning for drag/connect/focus workflows.
4#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
5pub struct NodeGraphAutoPanTuning {
6    #[serde(default)]
7    pub on_node_drag: bool,
8    #[serde(default)]
9    pub on_connect: bool,
10    #[serde(default)]
11    pub on_node_focus: bool,
12
13    /// Speed in screen pixels per second (approximate).
14    #[serde(default = "default_auto_pan_speed")]
15    pub speed: f32,
16
17    /// Margin from viewport edge in screen pixels that triggers auto-pan.
18    #[serde(default = "default_auto_pan_margin")]
19    pub margin: f32,
20}
21
22fn default_auto_pan_speed() -> f32 {
23    900.0
24}
25
26fn default_auto_pan_margin() -> f32 {
27    40.0
28}
29
30impl Default for NodeGraphAutoPanTuning {
31    fn default() -> Self {
32        Self {
33            on_node_drag: true,
34            on_connect: true,
35            on_node_focus: true,
36            speed: default_auto_pan_speed(),
37            margin: default_auto_pan_margin(),
38        }
39    }
40}