use crate::runtime::store::{DispatchError, DispatchOutcome, NodeGraphStore};
use super::planner::{plan_node_drag, plan_node_nudge};
use super::types::{NodeDragPlan, NodeDragRequest, NodeNudgePlan, NodeNudgeRequest};
impl NodeGraphStore {
pub fn plan_node_drag(&self, request: NodeDragRequest) -> Option<NodeDragPlan> {
let interaction = self.resolved_interaction_state();
plan_node_drag(self.graph(), self.view_state(), &interaction, request)
}
pub fn plan_node_nudge(&self, request: NodeNudgeRequest) -> Option<NodeNudgePlan> {
let interaction = self.resolved_interaction_state();
plan_node_nudge(self.graph(), self.view_state(), &interaction, request)
}
pub fn apply_node_drag(
&mut self,
request: NodeDragRequest,
) -> Result<Option<DispatchOutcome>, DispatchError> {
let Some(plan) = self.plan_node_drag(request) else {
return Ok(None);
};
self.dispatch_transaction(plan.transaction()).map(Some)
}
pub fn apply_node_nudge(
&mut self,
request: NodeNudgeRequest,
) -> Result<Option<DispatchOutcome>, DispatchError> {
let Some(plan) = self.plan_node_nudge(request) else {
return Ok(None);
};
self.dispatch_transaction(plan.transaction()).map(Some)
}
}