Type References

All shared types used across the grid library.

Schema

Defines the semantic role and behavior of a column — whether it holds values to aggregate (measure) or categories to group by (dimension), how its raw values should be parsed and stored, and what operations are valid on it.

By attaching semantics to each field, the data model and renderer can make decisions automatically based on the column's role — SQL type casting during loading, aggregation strategy, domain value extraction for filters, and rendering behavior in the UI.

Prop

Type

typeunion

Determines how the grid treats this column.

  • "measure" — stored as a number (INTEGER or DOUBLE in SQL). The grid can aggregate it (sum, avg, etc.) and reports numeric domain ranges (min/max) for filtering.
  • "dimension" — used for grouping, pivoting, and labeling rows. Stored as VARCHAR (or TIMESTAMP if subtype is "temporal"). Filtering returns distinct categorical values.

Type

"measure" | "dimension"

subtype?union

Optional refinement that controls SQL type casting and filtering behavior. See SchemaSubtype.

SubtypeValid for typeBehavior
"integer""measure"Whole-number storage and aggregation
"decimal""measure"Floating-point storage and aggregation
"temporal""dimension"Parsed using datetimeFormat, filtered by date range (min/max)
"nominal""dimension"Default for dimensions, filtered by distinct values

Type

SchemaSubtype | undefined

datetimeFormat?string

Format string that tells the SQL engine how to parse date/time values from raw strings. Only used when subtype is "temporal".

Uses strptime format codes — e.g. "%Y-%m-%d" parses "2024-03-15", "%m/%d/%Y %H:%M" parses "03/15/2024 14:30".

Type

string | undefined

aggregateFn?union

Aggregate function for measures. Defaults to "sum" if not specified. See AggregateFn.

Type

AggregateFn | undefined

cardinality?union

Cardinality hint for dimensions: "low" for few unique values, "high" for many. Upstream consumers can use this to pick appropriate UI — e.g. a dropdown for low cardinality vs. a search input for high cardinality.

Type

"low" | "high" | undefined

DataSchema

Extends Schema.

A named column definition that extends Schema with an identifier.

This is the primary type used throughout the grid to describe columns — in datasource, datamodel, and grid configuration.

Prop

Type

namestring

The column name as it appears in the data source.

Type

string

displayName?string

Optional human-readable label for rendering in headers.

Type

string | undefined

SchemaSubtype

export type SchemaSubtype = "temporal" | "nominal" | "integer" | "decimal";

AggregateFn

type AggregateFn = "sum" | "avg" | "count" | "min" | "max";

StandardDataFetchAndTransformIR

Intermediate representation describing which rows to fetch. StandardTableDataModel passes this to getData; the subclass converts it into a backend command (e.g. SQL).

Prop

Type

startRownumber

Start row index in the data source (inclusive). The caller is responsible for converting any logical row to a row index in the data source. All pages overlapping the [startRow, endRow) range that are not already cached are fetched in parallel.

Type

number

endRownumber

End row index in the data source (exclusive).

Type

number

groupPatharray

Path into the group hierarchy. When groupBy is set, data is organized in nested groups. Expanding a group progressively loads its child pages. groupPath represents which expanded path to fetch from - empty [] for top level, ["USA"] for children of "USA", ["USA", "California"] for children of California under USA.

Type

string[]

groupByarray

Columns that form the grouping hierarchy (e.g. ["country", "state"]). When set, the data source returns aggregated group rows instead of individual rows. Each level in groupBy becomes a nesting level - the first column forms the top-level groups, the second forms sub-groups within each expanded parent, and so on. groupPath determines which level is being fetched.

Type

string[]

projectarray

Columns to include in the output.

Type

string[]

sortarray

Sort instructions. Array is ordered by priority (multi-sort) - first entry is the primary sort. See SortEntry.

Type

SortEntry[]

filterarray

Filter conditions. Multiple filters are combined with AND - all must match. See ScalarFilter.

Type

ScalarFilter[]

metadata?unknown

Agent-defined metadata configuration. Core does not interpret this field — it passes it through to the metadata plumber.

Type

unknown

SortEntry

A single sort instruction. The sort array in StandardDataFetchAndTransformIR is ordered - earlier entries take priority (multi-sort).

Prop

Type

fieldstring

Column to sort by.

Type

string

directionSortDirection

Sort direction. "noop" means this entry is inactive.

Type

SortDirection

by?string

When absent, rows are sorted by the value of field directly. When present, field identifies which group to sort and by specifies a measure column whose aggregated value determines the order. For example, { field: "country", direction: "desc", by: "revenue" } sorts country groups by their total revenue descending.

Type

string | undefined

SortDirection

export type SortDirection = "asc" | "desc" | "noop";

ScalarFilter

A single filter condition on one column. The filter array in StandardDataFetchAndTransformIR combines entries with AND - all filters must match for a row to be included.

Prop

Type

type"scalar"

Always "scalar" for scalar filters.

Type

"scalar"

fieldstring

Column to filter on.

Type

string

subtype?"date"

Set to "date" for date-part filters (year, month, etc).

Type

"date" | undefined

opunion

Comparison operator.

Type

"eq" | "neq" | "in" | "not_in" | "gt" | "lt" | "gte" | "lte" | "between" | "contains" | "doesNotContain" | "startsWith" | "endsWith" | "before" | "after" | "empty" | "notEmpty"

valueunion

Value to compare against. Shape depends on op - array for in/not_in/between, scalar for others, null for empty/notEmpty.

Type

string | number | string[] | number[] | null

DatePart

export type DatePart = "year" | "month" | "day" | "hour" | "minute" | "second" | "quarter" | "week";

DatePartScalarFilter

Extends ScalarFilter.

Extends ScalarFilter for filtering on a specific part of a date/timestamp column. Adds a part field that extracts a DatePart (year, month, day, etc) from the column before applying the operator. This enables queries like "year = 2024" or "month between 3 and 6" that are not possible with a plain ScalarFilter on the raw timestamp value.

Prop

Type

partDatePart

Which part of the date to extract before comparing. See DatePart.

Type

DatePart

StandardTableConfig

Configuration for StandardTableDataModel pagination and cache behavior.

Prop

Type

pageSizenumber

Number of rows per page.

Type

number

maxNumPageBeforeEvictionnumber

Maximum number of fetched pages to keep in memory before the farthest page is evicted. This is how larger-than-memory datasets are supported - only a bounded window of pages is held in the browser at any time.

Type

number

GetRowsResponse

The response shape returned by getData.

Prop

Type

rowDataarray

Column-major data arrays. Each inner array holds all values for one column. For example, 3 rows with columns [name, age] is stored as [["Alice", "Bob", "Carol"], [30, 25, 28]].

Type

any[][]

totalRowCountnumber

Total number of rows.

Type

number

metadata?Record<string, array>

Raw metadata columns extracted from the query. Keys are metadata aliases (e.g. "__meta__email__null"), values are column-major arrays aligned with rowData rows. Populated when a metadata resolver contributes expressions to the getData query.

Type

Record<string, any[]> | undefined

PageNode

A page slot in the StandardTableDataModel cache tree. Each page holds a fixed slice of rows.

Prop

Type

dataunion

Column-major row data, or null if the page has not been fetched yet.

Type

any[][] | null

physicalStartnumber

The starting row index in the data source for this page. Physical index refers to the actual row position in the source data, as opposed to logical index which is the position the renderer displays. These differ when virtualization or lazy loading is active - only a subset of physical rows may be loaded, and the renderer maps them to logical positions.

Type

number

rowCountnumber

Number of rows this page covers.

Type

number

expandedRowsobject

Map from local row index to its ExpandedGroup. When expand(groupPath) is called, an entry is added here for that row with expanded: true and child pages populated. When collapse(groupPath) is called, expanded is set to false but the entry and its child data remain cached for fast re-expansion.

Type

Map<number, ExpandedGroup>

metadata?object

Page-scoped metadata (rows + cells) in page-local coordinates. Evicted with data when the page is evicted.

Type

PageMetadata | undefined

ExpandedGroup

Represents an expanded (or previously expanded) child group within a PageNode.

Prop

Type

expandedunion

Whether this group is currently expanded. false means collapsed but child data is still cached.

Type

boolean

totalRowCountnumber

Total number of child rows in this group.

Type

number

pagesarray

Child PageNodes holding the group's row data.

Type

PageNode[]

ColumnRangeValues

export type ColumnRangeValues =
  | { type: "categorical"; values: string[] }
  | { type: "range"; min: number; max: number }
  | { type: "temporal"; min: string; max: string };

PivotConfig

Input to PivotTableDataModel.getViewModelData. Describes which fields go on the row axis, column axis, and how to filter and sort the data.

Prop

Type

rowsunion

Defines the row axis. Pass a plain string, an operator tree (AxisExpr), or an AxisConfig to include dimensional projection.

Type

AxisExpr | AxisConfig

columnsunion

Defines the column axis. Same types as rows.

Type

AxisExpr | AxisConfig

filter?array

Filters applied globally to both axes before aggregation. Supports ScalarFilter and TupleFilter. Multiple filters are combined with AND.

Type

Filter[] | undefined

sort?array

Controls the ordering of row facet values. Each SortEntry can sort by the dimension value itself (by absent) or by a measure's aggregated value (by set to a measure field). direction: "noop" keeps the natural order.

Type

SortEntry[] | undefined

metadata?unknown

Agent-defined metadata configuration. Core does not interpret this field — it passes it through to the metadata plumber's resolver and reshaper.

Type

unknown

AxisExpr

type AxisExpr =
  | string
  | { type: "cross"; children: AxisExpr[] }
  | { type: "concat"; children: AxisExpr[] }
  | { type: "hierarchy"; fields: string[] };

A plain string is a column name. cross, concat, and hierarchy are table algebra operators used to compose pivot axes. See PivotTableDataModel for usage and visual examples.

AxisConfig

type AxisConfig = { expr: AxisExpr; projection?: DimensionalProjectionPath[] };

Wraps an AxisExpr with optional dimensional projection to control which values are expanded.

DimensionalProjectionPath

Controls which values are expanded at a single level of a dimensional projection. Forms a linked list - each node describes one level, and next points to the projection for the level below.

Prop

Type

openunion

Values to expand at this level. "*" expands all values; an array expands only the listed values.

Type

string[] | "*"

next?object

Projection for the next level down. Only applies to values matched by open. If absent, expansion stops at this level.

Type

DimensionalProjectionPath | undefined

PivotDataFetchAndTransformIR

Intermediate representation passed to PivotTableDataModel.getData. Contains the dimensional structure and measures to aggregate. The subclass interprets this to produce grouped, aggregated data.

Prop

Type

dimSpecDimSpec

Tree describing the dimensional grouping structure. See DimSpec.

Type

DimSpec

measuresarray

Flat list of measures to aggregate. Each has a field, aggregation function, and optional filters.

Type

Measure[]

sort?array

Sort instructions for row dimension values. When present, only covers row dimension fields.

Type

SortEntry[] | undefined

Measure

A measure to aggregate in the pivot query. Extracted from the AxisExpr during IR building - any field whose schema type is "measure" becomes a Measure entry.

Prop

Type

fieldstring

Column name of the measure field.

Type

string

aggregationAggregateFn

Aggregation function to apply. See AggregateFn. Defaults to "sum" if not specified in the schema.

Type

AggregateFn

filterarray

Optional ScalarFilters applied to this measure before aggregation.

Type

ScalarFilter[]

PivotRawDataFromSource

The return type of PivotTableDataModel.getData. Column-major format: data[i] is the full value array for columns[i]. Dimension columns come first (in tree-traversal order of the DimSpec), followed by measure columns.

Example for cross("region", "department") with measure revenue:

{
  columns: ["region", "department", "revenue"],
  data: [
    ["NA", "NA", "EU", "EU"],         // region (dimension)
    ["Elec", "App", "Elec", "App"],   // department (dimension)
    [8150, 1670, 5650, 1730],         // revenue (measure)
  ],
}

Prop

Type

columnsarray

Column names in order: dimension columns first, then measure columns.

Type

string[]

dataarray

Column-major data. data[i] holds all values for columns[i]. All inner arrays have the same length (the row count).

Type

any[][]

metadata?Record<string, array>

Metadata columns extracted separately from the main data. Keys are metadata aliases (e.g. "__meta__profit_pct"), values are column-major arrays aligned with the main data rows.

Type

Record<string, any[]> | undefined

PivotFilterQuery

Query passed to PivotTableDataModel.resolveFacetValues to retrieve available values for filter UIs. Returns one array of values per field.

Example: fetch distinct regions and countries for filter dropdowns:

const query: PivotFilterQuery = {
  type: "facet",
  fields: ["region", "country"],
  mode: "distinct",
};
const result = await model.resolveFacetValues(query);
// result: [["NA", "EU", "APAC"], ["USA", "Canada", "UK", "Germany"]]

Prop

Type

type"facet"

Always "facet".

Type

"facet"

fieldsarray

Column names to query values for.

Type

string[]

modeunion

"distinct" returns unique values per field independently. "group" returns observed combinations across fields.

Type

"distinct" | "group"

filters?array

Optional pre-filters to narrow the values returned (e.g. only show countries within a selected region).

Type

ScalarFilter[] | undefined

TupleFilter

Filters on combinations of multiple columns. Each entry in value is a tuple that must match across all fields. For example, fields: ["region", "country"], op: "in", value: [["Europe", "Germany"], ["Europe", "France"]] includes only rows where region/country is one of those exact pairs.

Prop

Type

type"tuple"

Always "tuple" for tuple filters.

Type

"tuple"

fieldsarray

Columns that form the tuple (e.g. ["region", "country"]).

Type

string[]

opunion

"in" includes matching tuples; "not_in" excludes them.

Type

"in" | "not_in"

valuearray

Array of tuples to match. Each inner array has one value per field, in the same order as fields.

Type

(string | number)[][]

Renderer

BaseSliceResult

Data required for the viewport defined by x0-x1 (columns) and y0-y1 (rows). The viewmodel decides which data to include. This is called a slice.

Prop

Type

numRowsnumber

Total number of rows in the viewmodel (not just the slice).

Type

number

numColsnumber

Total number of columns in the viewmodel (not just the slice).

Type

number

sliceNumRowsnumber

Number of rows in this slice.

Type

number

sliceNumColsnumber

Number of columns in this slice.

Type

number

columnFacets?array

Column facet values for the sliced columns, transposed from the viewmodel's storage. The viewmodel stores facets as colFacets[level][colIndex]; the slice transposes them to columnFacets[colIndex][level] (grouped per column).

Example - viewmodel with 2 levels, 4 columns:

colFacets = [["Q1","Q1","Q2","Q2"], ["revenue","cost","revenue","cost"]]

Slice for columns 1-2:

columnFacets = [["Q1","cost"], ["Q2","revenue"]]

Absent when the slice is empty.

Type

(string | null)[][] | undefined

data?array

Column-major data for the sliced range: data[colIndex][rowIndex]. Absent when the slice is empty.

Type

any[][] | undefined

PivotSliceResult

Extends BaseSliceResult.

Slice result for pivot grids. Extends BaseSliceResult with multi-level row facets.

Prop

Type

rowFacetsarray

Row facet values for the sliced rows, transposed from the viewmodel's storage. The viewmodel stores row facets as rowFacets[level][rowIndex]; the slice transposes them to rowFacets[rowIndex][level] (grouped per row). null means the value is the same as the row above (for merge/span rendering).

Example - viewmodel with 2 levels, 3 rows:

rowFacets = [["Europe",null,"North America"], ["Germany","France",null]]

Slice for rows 0-2:

rowFacets = [["Europe","Germany"], [null,"France"], ["North America",null]]

Type

(string | null)[][]

FlatSliceResult

Extends BaseSliceResult.

Slice result for flat/standard tables. Extends BaseSliceResult with single-level row facets and per-row metadata.

Prop

Type

rowFacetsarray

Row facet values for the sliced rows. Group rows have a string label (e.g. "USA"); data/leaf rows have null. Single level, so no transposition - same shape as the viewmodel's storage.

Type

(string | null)[]

rowMetaarray

Unpacked row metadata for the sliced rows. See FlatRowMeta.

Type

FlatRowMeta[]

DataViewport

Prop

Type

x0number

Type

number

y0number

Type

number

x1number

Type

number

y1number

Type

number

FacetData

type FacetData = (string | null)[][];

An array of facet levels. Each level is an array of values across all columns (for column facets) or all rows (for row facets). null means the value is the same as the previous cell at that level (used for merge/span rendering).

FlatRowMeta

Prop

Type

depthnumber

Type

number

isLeafunion

Type

boolean

isExpandedunion

Type

boolean

GridDataViewModelOptions

Prop

Type

vTrackDefs?array

Type

VTrackDef<any>[] | undefined

facetDefs?object

Type

{ row: Partial<FacetDef>[]; col: Partial<FacetDef>[]; axis: "row" | "col"; } | undefined

VTrackDef

Prop

Type

renderer?CellRenderer<T>

Type

CellRenderer<T> | undefined

cellHeight?number

Type

number | undefined

sampleData?T

Type

T | undefined

colSize?union

Type

ColAutoSizeConfig | undefined

valueFormatter?ValueFormatter<T>

Type

ValueFormatter<T> | undefined

ResolvedVTrackDef

Extends VTrackDef. The resolved form after the viewmodel normalizes options - renderer and colSize are guaranteed present.

Prop

Type

isCustomunion

Type

boolean

MetaState

Namespaced key-value store attached to the viewmodel. Persists across data updates and any lifecycle changes in the grid - use it as a general-purpose grid store. The namespace is typically the calling component's name, preventing key collisions when multiple components store state in the same metaState instance.

Prop

Type

setfunction

Sets a value under namespace and key.

Type

(namespace: string, key: string, value: any) => void

getfunction

Returns all key-value pairs under namespace, or undefined if the namespace does not exist.

Type

(namespace: string) => Record<string, any> | undefined

clearfunction

Clears a single key within namespace, or the entire namespace if key is omitted.

Type

(namespace: string, key?: string) => void

ColAutoSizeConfig

export interface IColAutoSize {
  strategy: "max-cell" | "clamped-width" | "static";
  excludeColumnFacets?: boolean;
}

export interface IColAutoSizeStrategyMaxCell extends IColAutoSize {
  strategy: "max-cell";
}

// Fits container
export interface IColAutoSizeStrategyStatic extends IColAutoSize {
  strategy: "static";
  width: number;
  unit: "%" | "fr" | "px";
}

export interface IColAutoSizeStrategyClampedWidth extends IColAutoSize {
  strategy: "clamped-width";
  maxWidthInPx?: number;
  minWidthInPx?: number;
}

export type ColAutoSizeConfig =
  | IColAutoSizeStrategyMaxCell
  | IColAutoSizeStrategyClampedWidth
  | IColAutoSizeStrategyStatic;

FacetDef

Prop

Type

textstring

Type

string

facetField?union

Type

string | null | undefined

headerRendererFacetHeaderRenderer

Type

FacetHeaderRenderer

trackRendererFacetCellRenderer<string>

Type

FacetCellRenderer<string>

meta?object

Type

FacetMeta | undefined

pseudo?union

Type

boolean | undefined

colSize?union

Type

ColAutoSizeConfig | undefined

groupSchema?array

Type

DataSchema[] | undefined

valueFormatter?ValueFormatter<any>

Type

ValueFormatter<any> | undefined

GridConfig

Configuration for the grid renderer. Pass a partial GridConfig to the Grid constructor; missing fields use defaultConfig.

Prop

Type

defaultCellHeightnumber

Height in pixels used for data rows when no VTrackDef.cellHeight override is set. Default: 19.

Type

number

defaultCellWidthnumber

Width in pixels used as the initial column width before auto-sizing measures actual content. Default: 50.

Type

number

overscannumber

Number of extra rows and columns rendered beyond the visible viewport in each direction. Higher values reduce blank flashes during fast scrolling but increase DOM node count. Default: 2.

Type

number

enableResizeUIunion

When true, column facet cells render a drag handle on the right edge for interactive column resizing. Double-click the handle to auto-fit to content width. Default: true.

Type

boolean

fixturesobject

Fixture classes to instantiate on each edge of the grid. The layout creates one instance per class and positions them in array order. See Fixtures.

Type

LayoutFixtureClasses

themestring

Name of the theme to apply. The layout resolves the theme via getTheme(name) and sets CSS custom properties on the grid container. Default: "light".

Type

string

columnAutosizingStrategyOnScrollunion

Controls how column widths update on scroll. "max-seen" keeps the widest measurement seen so far (columns only grow). "dynamic" re-measures every frame (columns can shrink when wide content scrolls out). Default: "max-seen".

Type

"dynamic" | "max-seen"

dataFetchDebounceMsnumber

Debounce interval in milliseconds for the viewDataEmpty event. Prevents flooding the data source with fetch requests during fast scrolling. Default: 150.

Type

number

LayoutEvents

Events emitted by the layout engine and forwarded through the Grid instance.

type LayoutEvents = {
  renderComplete: { x0: number; y0: number; x1: number; y1: number };
  viewDataEmpty: { startRow: number; endRow: number };
  viewModelDataChanged: { x0: number; y0: number; x1: number; y1: number };
  "debug_perf:metrics": {
    timeToRender: number;
    renderCount: number;
    nodesActive: number;
    nodesAppendedInThisFrame: number;
    nodesDeletedInThisFrame: number;
    contentCellRerenderCount: number;
    poolSize: number;
  };
};

GridEvents

Extends LayoutEvents with selection events. This is the event map for the Grid class.

type GridEvents = LayoutEvents & {
  selectionAdded: { hash: string; fromRow: number; fromCol: number; toRow: number; toCol: number };
  selectionRemoved: { hash: string; fromRow: number; fromCol: number; toRow: number; toCol: number };
};

SelectionRule

interface SelectionRule {
  id: number;
  predicates: PredicateNode[];
  terminal: TerminalOp;
}

PredicateNode

type PredicateNode =
  | { type: "facet"; predicate: FacetPredicate }
  | { type: "cell"; predicate: CellPredicate };

FacetPredicate

type FacetPredicate = (dim: string, dimVal: string | null, path: [string, string | null][]) => boolean;

A function that tests whether a facet cell matches. dim is the dimension name, dimVal is the cell's value, and path is the ancestor facet values as [dimName, dimValue] pairs.

CellPredicate

type CellPredicate = (value: any) => boolean;

A function that tests whether a data cell's value matches.

TerminalOp

type TerminalOp =
  | { type: "prop"; props: SelectionProps }
  | { type: "style"; fn: (container: HTMLElement) => void };

SelectionProps

Prop

Type

cellRenderer?CellRenderer<any>

Type

CellRenderer<any> | undefined

trackRenderer?FacetCellRenderer<string>

Type

FacetCellRenderer<string> | undefined

colSize?union

Type

ColAutoSizeConfig | undefined

valueFormatter?ValueFormatter<any>

Type

ValueFormatter<any> | undefined

PivotDataViewModelParams

Output of PivotTableDataModel.getViewModelData. A fully reshaped 2D pivot grid ready for the renderer.

Prop

Type

dataarray

2D grid of aggregated values. data[col][row] holds the value at column position col and row position row. null means no data exists for that cell (the combination was not observed in the source data).

Type

any[][]

columnFacetsFacetData

Column facet levels. Each inner array holds values for one facet level. For cross("quarter", concat("revenue", "cost")), this has two dimension levels (quarter) plus a measure-name level.

Type

FacetData

rowFacets?FacetData

Row facet levels. Same structure as columnFacets but for the row axis. Absent when the row axis has no dimensions.

Type

FacetData | undefined

options?object

Facet metadata such as projection state for each facet level.

Type

GridDataViewModelOptions | undefined

schema?array

The original schema passed to the data model.

Type

DataSchema[] | undefined

metadata?Partial<object>

Metadata for value cells, facets, and headers. Merged into the ViewModel on construction and updateData.

Type

Partial<ViewModelMetadata> | undefined

FlattenedDataViewModelParams

The view model output produced by StandardTableDataModel. Contains the flattened row data ready for the renderer.

Prop

Type

dataarray

Column-major data arrays for the visible rows. Each inner array holds all values for one column - e.g. 3 rows with columns [name, age] is [["Alice", "Bob", "Carol"], [30, 25, 28]]. This data is always contiguous (no gaps) - only pages that form a contiguous block around the current scroll position are included. Column-major layout supports large datasets efficiently as the renderer can access and iterate a single column array without touching other columns.

Type

any[][]

columnFacetsFacetData

Column header labels. The layout uses this to render hierarchical column headers - each level is an array of labels. For standard tables, there is only one level and all columns are leaf-level headers.

Type

FacetData

rowFacet?array

Row facet values. When groupBy is active, some rows are group rows (showing a group label like "USA") and others are data/leaf rows. Group rows have their group value here (e.g. "USA"); leaf/data rows have null. The renderer uses this to display group row labels in a separate facet column on the left, visually distinguishing group headers from data rows. Only present when groupBy is non-empty.

Type

(string | null)[] | undefined

rowMeta?object

Packed row metadata byte array encoding depth, isLeaf, and isExpanded per row.

Type

Uint8Array<ArrayBufferLike> | undefined

options?object

Renderer options forwarded from setViewModelOptions.

Type

GridDataViewModelOptions | undefined

schema?array

DataSchema definitions.

Type

DataSchema[] | undefined

totalRows?number

Total number of rows the data source has, including expanded children. This is larger than the rows in data since pages are lazy loaded - only a contiguous subset is present in data. The renderer uses this for scrollbar sizing and virtual scroll calculations.

Type

number | undefined

offsetTop?number

Number of rows in the data source that precede the returned data block. Since pages are lazy loaded, the page cache can have holes - only a contiguous block around the current scroll position is included in data. offsetTop tells the renderer how many rows come before this block, so it can position the rendered rows correctly within the full virtual scroll area.

Type

number | undefined

metadata?Partial<object>

Metadata for value cells, facets, and headers. Merged into the ViewModel on construction and updateData.

Type

Partial<ViewModelMetadata> | undefined

On this page