Skip to main content

jellyflow_runtime/io/config/state/
default_impl.rs

1use jellyflow_core::interaction::{
2    NodeGraphConnectionMode, NodeGraphDragHandleMode, NodeGraphModifierKey,
3};
4
5use crate::io::tuning::{
6    NodeGraphAutoPanTuning, NodeGraphPanInertiaTuning, NodeGraphRuntimeTuning,
7};
8
9use crate::io::config::defaults::*;
10use crate::io::config::keys::NodeGraphDeleteKey;
11use crate::io::config::types::{
12    NodeGraphNodeOrigin, NodeGraphNudgeStepMode, NodeGraphPanOnScrollMode, NodeGraphSelectionMode,
13    NodeGraphViewportEase, default_box_select_edges, default_pan_on_drag_buttons,
14};
15
16use super::NodeGraphInteractionState;
17
18impl Default for NodeGraphInteractionState {
19    fn default() -> Self {
20        let runtime_tuning = NodeGraphRuntimeTuning::default();
21        Self {
22            elements_selectable: default_elements_selectable(),
23            nodes_draggable: default_nodes_draggable(),
24            nodes_connectable: default_nodes_connectable(),
25            nodes_deletable: default_nodes_deletable(),
26            nodes_focusable: default_nodes_focusable(),
27            edges_selectable: default_edges_selectable(),
28            edges_deletable: default_edges_deletable(),
29            edges_focusable: default_edges_focusable(),
30            edges_reconnectable: default_edges_reconnectable(),
31            connection_mode: NodeGraphConnectionMode::default(),
32            connection_radius: default_connection_radius(),
33            reconnect_radius: default_reconnect_radius(),
34            reconnect_on_drop_empty: false,
35            edge_interaction_width: default_edge_interaction_width(),
36            bezier_hit_test_steps: default_bezier_hit_test_steps(),
37            spatial_index: runtime_tuning.spatial_index,
38            only_render_visible_elements: runtime_tuning.only_render_visible_elements,
39            elevate_nodes_on_select: default_elevate_nodes_on_select(),
40            elevate_edges_on_select: default_elevate_edges_on_select(),
41            paint_cache_prune: runtime_tuning.paint_cache_prune,
42            snap_to_grid: false,
43            snap_grid: default_snap_grid(),
44            snaplines: default_snaplines(),
45            snaplines_threshold: default_snaplines_threshold(),
46            pan_on_scroll: default_pan_on_scroll(),
47            pan_on_drag: default_pan_on_drag_buttons(),
48            selection_on_drag: false,
49            select_nodes_on_drag: default_select_nodes_on_drag(),
50            selection_mode: NodeGraphSelectionMode::default(),
51            box_select_edges: default_box_select_edges(),
52            selection_key: default_selection_key(),
53            multi_selection_key: default_multi_selection_key(),
54            delete_key: NodeGraphDeleteKey::default(),
55            nudge_step_mode: NodeGraphNudgeStepMode::default(),
56            nudge_step_px: default_nudge_step_px(),
57            nudge_fast_step_px: default_nudge_fast_step_px(),
58            disable_keyboard_a11y: false,
59            pane_click_distance: default_pane_click_distance(),
60            pan_activation_key_code: default_pan_activation_key_code(),
61            space_to_pan: default_space_to_pan(),
62            pan_on_scroll_speed: default_pan_on_scroll_speed(),
63            pan_on_scroll_mode: NodeGraphPanOnScrollMode::default(),
64            pan_inertia: NodeGraphPanInertiaTuning::default(),
65            zoom_on_scroll: default_zoom_on_scroll(),
66            zoom_on_scroll_speed: default_zoom_on_scroll_speed(),
67            zoom_on_pinch: default_zoom_on_pinch(),
68            zoom_on_pinch_speed: default_zoom_on_pinch_speed(),
69            zoom_on_double_click: default_zoom_on_double_click(),
70            frame_view_duration_ms: default_frame_view_duration_ms(),
71            frame_view_ease: NodeGraphViewportEase::default(),
72            frame_view_padding: default_frame_view_padding(),
73            reroute_on_edge_double_click: default_reroute_on_edge_double_click(),
74            edge_insert_on_alt_drag: default_edge_insert_on_alt_drag(),
75            zoom_activation_key: NodeGraphModifierKey::default(),
76            node_drag_threshold: default_node_drag_threshold(),
77            node_drag_handle_mode: NodeGraphDragHandleMode::default(),
78            node_click_distance: default_node_click_distance(),
79            connection_drag_threshold: default_connection_drag_threshold(),
80            connect_on_click: default_connect_on_click(),
81            auto_pan: NodeGraphAutoPanTuning::default(),
82            translate_extent: None,
83            node_extent: None,
84            node_origin: NodeGraphNodeOrigin::default(),
85        }
86    }
87}