Nodes may be set to have fixed, minimum and maximum widths and minimum heights. Nodes with minimum heights may also have a vertical alignment set.

Edges may be set to have maximum widths.

The `widthConstraint: value` option means a fixed width, the minimum and maximum width of the element are set to the value (respecting left and right margins). Lines exceeding the maximum width will be broken at space boundaries to fit.

The `widthConstraint: { minimum: value }` option sets the minimum width of the element to the value.

The `widthConstraint: { maximum: value }` option sets the maximum width of the element to the value (respecting left and right margins). Lines exceeding the maximum width will be broken at space boundaries to fit.

Minimum width line sizing is applied after maximum width line breaking, so counterintuitively, the minimum being greater than the maximum has a meaningful interpretation.

The `heightConstraint: value` option sets the minimum height of the element to the value (respecting top and bottom margins).

The `heightConstraint: { minimum: value }` option also sets the minimum height of the element to the value (respecting top and bottom margins).

The `heightConstraint: { valign: value }` option (with value `'top'`, `'middle'`, or `'bottom'`, sets the alignment of the text in the element's label to the elements top, middle or bottom (respecting top and bottom margins) when it's height is less than the minimum. The middle value is the default.

Node width and height constraints may both be applied together, of course.

The constraint options may be applied to elements individually, or at the whole-set level. Whole-set node and edge constraints are exclusive.