jellyflow_runtime/io/config/state/
default_impl.rs1use 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}