The plot area of a ChartRow: a single <canvas> plus the draw-layer
registry. It is the boundary where the row's horizontal layout flips to
z-stacking — child layers (LineChart, …) register here and paint into
the one canvas, each with its own axis's y-scale (looked up by the layer's
axis id, defaulting to the row's default axis).
Z-order — declaration order, last child on top (SVG / DOM / RTC). A row is
authored back-to-front: <BandChart/> then <LineChart/> puts the line over
its band. Order comes from each child's injected JSX index (so the stack
follows the markup regardless of mount timing — a layer toggled in between two
others slots into place, not onto the top), and each layer keeps a stable,
id-keyed slot so a series/style update holds its position (no jump to the
front — the trap that bites live charts). Draw layers must be direct
children of <Layers> for the index to reach them.
The plot area of a ChartRow: a single
<canvas>plus the draw-layer registry. It is the boundary where the row's horizontal layout flips to z-stacking — child layers (LineChart, …) register here and paint into the one canvas, each with its own axis's y-scale (looked up by the layer'saxisid, defaulting to the row's default axis).Z-order — declaration order, last child on top (SVG / DOM / RTC). A row is authored back-to-front:
<BandChart/>then<LineChart/>puts the line over its band. Order comes from each child's injected JSX index (so the stack follows the markup regardless of mount timing — a layer toggled in between two others slots into place, not onto the top), and each layer keeps a stable, id-keyed slot so a series/style update holds its position (no jump to the front — the trap that bites live charts). Draw layers must be direct children of<Layers>for the index to reach them.