function zoomToDataDomain(args, range) {
const rawData = args.processed.rawData || args.data;
if (!('rawData' in args.processed)) {
args.processed.rawDomain = {
x: args.scales.X.domain(),
y: args.scales.Y.domain()
};
args.processed.rawData = rawData;
}
if (['x', 'y'].some(dim => range[dim][0] === range[dim][1])) return;
if (args.chartType === 'point') {
args.data = isArrayOfArrays(rawData)
? rawData.map(d => d.filter(filterInRangeData(args, range)))
: rawData.filter(filterInRangeData(args, range));
if (args.data.flat().length === 0) return;
}
['x', 'y'].forEach(dim => {
if (dim in range) args.processed[`zoom_${dim}`] = range[dim];
else delete args.processed[`zoom_${dim}`];
});
if (args.processed.subplot) {
if (range !== args.processed.rawDomain) {
createBrushingPattern(
args.processed.subplot,
convertDomainToRange(args.processed.subplot, range)
);
} else {
removeBrushingPattern(args.processed.subplot);
}
}
}