{
let svg = d3.select(chart)
.style('user-select', 'none');
var isDown = true;
svg.on("mousedown", (e) => {
isDown = true;
const theta = Math.PI - Math.atan2(...d3.pointer(e));
set(viewof brushStart, x.invert(theta));
svg.selectAll("#brush-area").remove();
});
svg.on("mousemove", (e) => {
if(isDown){
const theta = Math.PI - Math.atan2(...d3.pointer(e));
set(viewof brushStop, x.invert(theta));
svg.selectAll("#brush-area")
.data([Array(100).fill(1).map( (d, i) => i * (x.invert(theta) - brushStart) / 100 + brushStart)])
.join("path")
.attr("d", d => brushArea(d))
.attr("fill", "grey")
.attr("stroke", "black")
.attr("opacity", 0.5)
.attr("id", "brush-area");
};
});
svg.on("mouseup", (e) => {
const theta = Math.PI - Math.atan2(...d3.pointer(e));
set(viewof brushStop, x.invert(theta));
svg.selectAll("#brush-area")
.data([Array(100).fill(1).map( (d, i) => i * (x.invert(theta) - brushStart) / 100 + brushStart)])
.join("path")
.attr("d", d => brushArea(d))
.attr("fill", "grey")
.attr("stroke", "black")
.attr("opacity", 0.5)
.attr("id", "brush-area");
isDown = false;
});
}