Skip to main content

jellyflow_runtime/runtime/selection/
store.rs

1use crate::runtime::store::NodeGraphStore;
2
3use super::compute::resolve_selection_box;
4use super::types::{SelectionBoxDecision, SelectionBoxInput, SelectionBoxResult};
5
6impl SelectionBoxDecision {
7    pub fn apply_to_store(self, store: &mut NodeGraphStore) -> SelectionBoxResult {
8        let result = self.into_result();
9        store.set_selection(
10            result.nodes.clone(),
11            result.edges.clone(),
12            result.groups.clone(),
13        );
14        result
15    }
16}
17
18impl NodeGraphStore {
19    /// Applies a canvas-space marquee selection box to the store view-state.
20    pub fn apply_selection_box(&mut self, input: SelectionBoxInput) -> SelectionBoxResult {
21        let interaction = self.resolved_interaction_state();
22        let decision = resolve_selection_box(
23            self.graph(),
24            self.lookups(),
25            self.view_state(),
26            &interaction,
27            input,
28        );
29        decision.apply_to_store(self)
30    }
31}