use egui::Ui;
use nodui_core::adapter::{GraphAdapter, Pos};
pub(crate) type ContextMenuContent<'a, G> = Box<dyn FnMut(&mut Ui, MenuContext<'_, G>) + 'a>;
pub struct MenuContext<'a, G: GraphAdapter> {
pub graph: &'a mut G,
pub pos: Pos,
}
pub(crate) type NodeContextMenuContent<'a, G> =
Box<dyn FnMut(&mut Ui, NodeMenuContext<'_, G>) + 'a>;
pub struct NodeMenuContext<'a, G: GraphAdapter> {
pub graph: &'a mut G,
pub node_id: G::NodeId,
}
pub(crate) type SocketContextMenuContent<'a, G> =
Box<dyn FnMut(&mut Ui, SocketMenuContext<'_, G>) + 'a>;
pub struct SocketMenuContext<'a, G: GraphAdapter> {
pub graph: &'a mut G,
pub socket_id: G::SocketId,
}