Edges that will also be destroyed as a consequence of removing nodes —
graph.removeNode cascades into every incident edge. Resolved by the library,
not the consumer. They follow whichever nodes survive a narrowed decision, so
they can't be narrowed on their own.
Open a confirmation modal, resolving true on confirm and false on any
cancel path (Cancel, ×, overlay, Esc) — so if (!await confirm(…)) return false
is the whole guard. Resolves false in UI modes with no modal slot.
Edges the user asked to delete (never overlapping cascadingEdges).
Nodes the user asked to delete.
Notes the user asked to delete.
Which affordance initiated the delete.
Context passed to InterractionCallbacks.onBeforeDelete.