OptionalalignWhere General alignment places the children: where it would place a value of this type. An explicit horizontal alignment on the cell places them instead.
The range bounds relative to the current viewport and zoom.
The cell coords that is being rendered.
OptionalcenterCenters the children on the line the cell's text would paint in, rather than placing them
against the content box: the cell's vertical alignment, font and row height move them as they
move text. For content sized to the font that sits beside text (a checkbox, a slider). Content
taller than the room about the line is centered on it and may be shrunk by max-height.
OptionalchildrenThe cell's content.
The layer's write context, one for every cell of the layer: guarded writes
(setCellValue(cell, value)) for a renderer that writes from its own pointer handlers, such
as a slider's drag. A press and a key write through the entry instead.
The control the renderer draws for, when it was chosen by the cell's control; null when it
was chosen by the value's rich data type.
Optionaldata-Absolute cell-coordinate stamp ("rowIndex:colIndex"), provided by the layer.
A renderer that spreads its rest props onto its root element carries this automatically; a
custom renderer must place it on its root itself. It is the hook the layer's live suppression
rule targets (see CellLayerProps.suppressCell) — per-coordinate CSS over immutable cached
tiles, so transient state (an open editor) never invalidates the tile cache. Coordinates are
SHEET-absolute (never tile- or pane-relative): a cell rendered in more than one pane (a merge
spanning a freeze line) matches the one selector in every instance.
The default text renderer, bound to this layer's theme, Normal style and view flags. For a
renderer that decorates the text rather than replacing it: <Default {...props}>{badge}</Default>.
OptionalinsetPlaces the children inside the cell's text insets, the padding text gets. Turn it off for content that runs to the cell's edges, such as a picture or a button.
OptionalinteractiveMakes the whole cell the hit region: the root carries CellContentRendererProps.interactiveProps. Leave it off and spread the props on the element inside that should take the pointer instead (a checkbox's box, a rating's stars).
Spread onto the element that takes the pointer: the box of a checkbox, a button, the track of a slider. It marks the element, nothing more. A plain press on a marked element selects the cell and then reaches the element; the cell layer runs the entry's CellContentEntry.onPress for it and stops the press, and keeps a double-click on it from opening the editor. For a drag or hover add your own handlers on the element (capture the pointer on it for a drag); a handler that stops the press keeps the layer out of it.
OptionalrangeThe RangeCoords that is being rendered.
A value to render.
OptionalzoomThe zoom CellRendererProps.bounds were measured at.
A renderer is handed the zoom, never the pane it came from: everything it needs to draw one cell
is data (the value, the bounds, the scale), so it stays a pure function of its props and can be
rendered anywhere a caller can supply bounds — a preview, a tooltip, a cell drawn outside its own
column. A renderer that genuinely needs the live view (hover, scroll) reads it from context with
useGridPane.
The bounds already have the zoom applied; this is for what CSS pixels do not carry — an unscaled inset, a glyph size, a stroke width the renderer picks itself.
Props for CellContent: the renderer's own props, spread whole, plus what the host should do with them.