← all demos

Controllers

Every add* returns a handle on the row it built. That is what makes a panel that changes shape at runtime possible — and what makes taking one apart safe.

Panel contents

Log

Why destroy() matters: a row that is only removed from the DOM stays subscribed to its signal, and the subscription keeps the detached row alive. destroy() stops the row's effects first. Controllers registered above is the panel's own list: it goes down by one for every row destroyed, and to nothing when the panel is.