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.
An unhandled error has occurred. Reload 🗙