The tree's root and the drag hook's element (ADR-0005 decisions 7, 13, 14).
This component is small on purpose. It is the one element carrying
phx-hook="StatifierBlocksDrag", and every drag event in the editor
arrives through it: the hook is attached to the canvas root rather than to
each block, so adding a block adds no listeners and the hook has one
lifetime rather than one per node.
It is also the measurement stage. The 2026-08-29 amendment to decision 7
admits a second hook whose whole job is reading laid-out boxes, and every
box it reads is relative to this element - which is why this element
carries data-sb-anchor="stage" and why the connector overlay is drawn
inside it, in its own untransformed coordinate space. The hook itself
rides a child element rather than this one, because an element carries one
phx-hook and this one is the drag hook's; ConnectorLayer renders that
child and says why.
It is also where decision 14's theming lands. The --sb-* custom
properties are declared on this element by the package's stylesheet, so a
host that wants a different palette sets them here through the theme
assign - a map of property name to value, rendered as an inline style -
and needs no stylesheet of its own to do it.
Summary
Functions
The canvas root: the hook's element, and the tree beneath it.
Functions
The canvas root: the hook's element, and the tree beneath it.
Attributes
root(StatifierBlocks.ViewModel.Node) (required)drag(:any) - Defaults tonil.selected_id(:string) - Defaults tonil.target(:any) (required)icon(:any) - Defaults tonil.theme(:map) - Defaults to%{}.edges(:list) - Defaults to[].stage(:any) - Defaults tonil.class(:string) - Defaults tonil.