in src/interactivityService.ts [216:247]
public bind(dataPoints: SelectableDataPoint[], behavior: IInteractiveBehavior, behaviorOptions: any, options?: InteractivityServiceOptions): void {
// Bind the data
if (options && options.overrideSelectionFromData) {
// Override selection state from data points if needed
this.takeSelectionStateFromDataPoints(dataPoints);
}
if (options) {
if (options.isLegend) {
// Bind to legend data instead of normal data if isLegend
this.selectableLegendDataPoints = dataPoints;
this.renderSelectionInLegend = () => behavior.renderSelection(this.legendHasSelection());
}
else if (options.isLabels) {
// Bind to label data instead of normal data if isLabels
this.selectableLabelsDataPoints = dataPoints;
this.renderSelectionInLabels = () => behavior.renderSelection(this.labelsHasSelection());
}
else {
this.selectableDataPoints = dataPoints;
this.renderSelectionInVisual = () => behavior.renderSelection(this.hasSelection());
}
}
else {
this.selectableDataPoints = dataPoints;
this.renderSelectionInVisual = () => behavior.renderSelection(this.hasSelection());
}
behavior.bindEvents(behaviorOptions, this);
// Sync data points with current selection state
this.syncSelectionState();
}