InternalThe extraction root (the SVG, or a panel element).
The user-provided selector matching the series paths.
The <path> that produced each data row, parallel to the
emitted rows. A null entry marks a row whose rendering
path could not be reliably identified.
How many rows the layer emits.
Optionalpanel: D3PanelScopeOptional panel scope for multi-panel binds.
One selector per row, or undefined when a safe per-series
selector cannot be emitted — the model then withdraws highlighting
instead of highlighting the wrong series.
Emits one highlight selector per series, by stamping each series'
<path>with a MAIDR-owneddata-maidr-line-indexattribute and pinning it.LineTrace.mapToSvgElementsrequires one selector per line (it usesSvg.selectElement(selectors[r])to grab a single<path>per series for path-parsing, orselectAllElements(selectors[r])for per-point markers). A bareselectorlike"path.line"matches ALL line paths at once, soselectors.length (1) !== lineValues.length (N)→ the model bails out and no highlight renders.Structural selectors (e.g.
:nth-child(N)) are fragile to DOM reordering (legend/axis insertions, React re-renders, non-path siblings shifting nth-child indices), so the stamp is an attribute the binder owns, absolutely scoped by the SVG's id. This matches the Google Charts adapter'sdata-maidr-line-series/data-maidr-pointconvention and survives any DOM reordering that leaves the path itself intact.