Skip to content

buildHierarchy

Since v3.9.0

Build the flat row list for rows from every contributor’s sibling-list transforms, recording each emitted row’s ARIA position in meta.

Contributors whose beginHierarchy returns false sit out the rebuild. With no active contributor the rows pass through unchanged. When every active contributor’s endHierarchy returns false, no position is kept in meta.

This is what HierarchyPlugin.process() runs for all attached contributors. Call it directly to run a contributor without a grid — e.g. as the processRows fallback when no HierarchyPlugin is attached, or in unit tests.

function buildHierarchy(rows: readonly unknown[], contributors: readonly HierarchyContributor[], meta: WeakMap<object, HierarchyRowMeta>): unknown[]
NameTypeDescription
rowsreadonly unknown[]The root rows.
contributorsreadonly HierarchyContributor[]Contributors to run, in processRows hook order.
metaWeakMap<object, HierarchyRowMeta>Receives each emitted row’s position. Pass a fresh map per rebuild.
override processRows(rows: readonly unknown[]): unknown[] {
const hierarchy = this.grid?.getPluginByName('hierarchy');
return hierarchy ? hierarchy.process(rows, this) : buildHierarchy(rows, [this]);
}