- Basics, draw boxes with labels
- Links ("relationships") between two boxes
- Multiple ports for a box, where links starts/points to
- Smart link routing: they shouldn't go under/above a box
- Links should not overlap each other. In the image below, the right side is what I need.
- Grouping items
- Able to customize link crosses (if the link routing is good, that "jump over" feature shown on the first image isn't needed)
Joint or GoJS is similar to what I need, but they don't support the 5th requiment.