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