Diagram surface
Nodes and connectors, built entirely on top of the document model. Bit.Bink knows nothing about diagrams: a node is a rectangle, a connector is a line and a label is text, and what joins them is element metadata plus one listener. Move a node and its connectors and label follow, in the same undo step as the move.
Drawing with 8 elements on 2 layers. Connector. Connector. Diagram node: Capture. Diagram node: Process. Diagram node: Store. Label: Capture. Label: Process. Label: Store.
Drag with Node to draw a box, then drag with Connector from one box to
another. Switch to Select and move a node: the connectors re-route while the move is still
being reported, so the document never shows a connector detached from its node, and one undo puts everything
back. Delete a node and its connectors go with it. Connector endpoints and label positions are derived data,
so they are recomputed rather than stored as offsets.