Skip to main content

jellyflow_runtime/runtime/policy/
mod.rs

1//! Effective editor policy resolution for graph elements.
2//!
3//! `jellyflow-core` stores per-element policy overrides because they are part of the persisted
4//! graph document. Runtime adapters should resolve those overrides through this module instead of
5//! duplicating precedence rules.
6
7mod edge;
8mod node;
9mod port;
10
11use crate::io::NodeGraphInteractionState;
12use jellyflow_core::core::{Edge, Node, Port};
13
14pub use edge::{
15    NodeGraphEdgeInteractionPolicy, resolve_edge_hit_test_options, resolve_edge_interaction_policy,
16};
17pub use node::{NodeGraphNodeInteractionPolicy, resolve_node_interaction_policy};
18pub use port::{NodeGraphPortInteractionPolicy, resolve_port_interaction_policy};
19
20impl NodeGraphInteractionState {
21    pub fn node_interaction_policy(&self, node: &Node) -> NodeGraphNodeInteractionPolicy {
22        resolve_node_interaction_policy(node, self)
23    }
24
25    pub fn port_interaction_policy(
26        &self,
27        node: &Node,
28        port: &Port,
29    ) -> NodeGraphPortInteractionPolicy {
30        resolve_port_interaction_policy(node, port, self)
31    }
32
33    pub fn edge_interaction_policy(&self, edge: &Edge) -> NodeGraphEdgeInteractionPolicy {
34        resolve_edge_interaction_policy(edge, self)
35    }
36
37    pub fn edge_hit_test_options_for(
38        &self,
39        edge: &Edge,
40    ) -> crate::runtime::geometry::EdgeHitTestOptions {
41        resolve_edge_hit_test_options(edge, self)
42    }
43}
44
45#[cfg(test)]
46mod tests;