SheetXL - v1.0.2
    Preparing search index...

    Interface CellContentRendererProps

    What a cell content renderer is given: the cell layer's props for the cell, the layer's write context, the props that make an element interactive, and the default text renderer.

    A renderer is a pure function of these props: it is rendered inside the cell layer's cached tiles and calls no hook.

    interface CellContentRendererProps {
        bounds: Bounds;
        cell: CellCoords;
        context: CellControlContext;
        control: ICellControl | null;
        "data-rc"?: string;
        Default: ComponentType<DefaultCellContentProps>;
        interactiveProps: CellInteractiveProps;
        range?: RangeCoords;
        value: ICell;
        zoom?: number;
    }

    Hierarchy (View Summary)

    Index
    bounds: Bounds

    The range bounds relative to the current viewport and zoom.

    cell: CellCoords

    The cell coords that is being rendered.

    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.

    control: ICellControl | null

    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.

    "data-rc"?: string

    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.

    Default: ComponentType<DefaultCellContentProps>

    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>.

    interactiveProps: CellInteractiveProps

    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.

    range?: RangeCoords

    The RangeCoords that is being rendered.

    A range representing the coords
    

    For most cells this is the same as the coords. This will only be different for spanning cells.

    value: ICell

    A value to render.

    zoom?: number

    The zoom CellRendererProps.bounds were measured at.

    1
    

    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.