{
const svg = d3.create("svg").attr("viewBox", [0, 0, width, height]);
const initiator = null;
const pathBeingDrawn = svg
.append("path")
.datum([])
.attr("fill", "none")
.attr("stroke-width", brushTickness)
.attr("stroke", "black");
function drawPathBeingDrawn(e) {
pathBeingDrawn.datum().push({ x: e.layerX, y: e.layerY });
pathBeingDrawn.attr("d", d => pathGenerator(d));
}
function removeDrawPathBeingDrawn(e) {
window.removeEventListener("mousemove", drawPathBeingDrawn);
window.removeEventListener("mouseup", removeDrawPathBeingDrawn);
const data = pathBeingDrawn.datum();
pathBeingDrawn.datum([]);
pathBeingDrawn.attr("d", d => pathGenerator(d));
svg
.append("path")
.datum(data)
.attr("fill", "none")
.attr("stroke-width", brushTickness)
.attr("stroke", "black")
.attr("d", d => pathGenerator(d));
}
svg.on("mousedown", function(e) {
pathBeingDrawn.datum().push({ x: e.layerX, y: e.layerY });
window.addEventListener("mousemove", drawPathBeingDrawn);
window.addEventListener("mouseup", removeDrawPathBeingDrawn);
});
return svg.node();
}