Blocks are defined as a collection of inputs, but the render info determines how these inputs get broken up into rows and spacer rows.

For example, when a block is set to inline inputs, the block is made of fewer rows than when it is set to external inputs. It has the same number of inputs but a different number of rows!

blocks set to inline and external inputs


A Row is a horizontal collection of non-overlapping elements and element spacers.

A repeat-for block with the rows outlined.

The bounds of a row are determined by the bounds of the elements and spacers that belong to that row, so that all of the elements are contained.

Row spacer

A RowSpacer is an empty vertical space that goes between two rows.

A repeat-for block with the row spacers highlighted in blue

The bounds of the row spacers are determined by the render info itself. After measuring all of the rows of the block, the render info inserts spaces of its chosen size between rows.