{
const zoom = d3.zoom()
.on("zoom", function ({transform, sourceEvent}) {
const scaleX = chart.scale("x");
const x = d3.scaleLinear().domain(scaleX.domain).range(scaleX.range);
const rescaledX = transform.rescaleX(x).interpolate(d3.interpolateRound);
mutable domainX = d3.extent(rescaledX.domain());
const scaleY = chart.scale("y");
const y = d3.scaleLinear().domain(scaleY.domain).range(scaleY.range);
const rescaledY = transform.rescaleY(y).interpolate(d3.interpolateRound);
if(sourceEvent.type === "wheel") {
mutable domainY = d3.extent(rescaledY.domain());
} else if (sourceEvent.type === "mousemove") {
const d = rescaledY.domain()[1] - rescaledY.domain()[0];
mutable domainY = [rescaledY.domain()[0] - d * dragR, rescaledY.domain()[1] - d * dragR];
}
})
function initZoom() {
d3.select(chart).call(zoom);
}
initZoom();
}