Point clouds: pointTargets[layerId][i] is the element drawing the layer's
data[i] — the table in the layer's own data order, not a grouping of it.
MAIDR names a cloud's selection by data index (see
NavigateCallback.pointIndices), because a scatter selects a set of
points and no row/column pair can name one. Keeping the table in data order
is what lets this adapter answer that without re-deriving the model's
x-bucketing or its grid binning, which would drift from the model silently.
Each entry names its own dataset rather than the layer naming one for all of them, because a merged volcano or Manhattan is a single layer drawn from several datasets — one per chromosome, typically.
Bar/line: barLineIndices[layerId][row][col] is the original Chart.js element index (gaps skipped).
Heatmap: heatmapIndices[layerId] maps "x\0y" to the flat Chart.js element index.
Gantt: ganttTargets[layerId][lane][interval] is the element drawing it.
Treemap: treemapIndices[layerId] maps "depth\0index" to the flat
Chart.js element index.
TreemapTrace addresses a node by depth and by its position within that
depth across parents, and the position is the order the nodes were
declared in. The extractor emits one point per drawn rectangle in the
plugin's own layout order, so counting the points per depth reproduces
exactly the addresses the model will use -- without re-deriving the tree,
which would drift from the model silently.
Box / violin: distributionTargets[layerId][i] is the element drawing the
layer's i-th distribution, in the payload's own order.
A box is one mark however many sections a reader walks along it, so the table is flat: the column of the pair says which section, which is a reading of the box and not a mark of its own.
Parallel coordinates: parallelTargets[layerId][row][col] is the element
drawing observation row on axis col.
A pcp payload is the transpose of the chart's datasets -- one dataset is one axis -- so both halves of the pair have to be translated, and neither is the other's index space.
Per-layer lookups that translate a MAIDR navigation position into the original Chart.js element index. MAIDR extraction skips gap markers, so these maps re-derive the raw indices from the chart to keep highlights aligned.