{
const context = DOM.context2d(width, height),
canvas = context.canvas;
function clear() {
context.clearRect(0, 0, width, height);
}
function draw(p) {
const pressure = 2 * p.sourceEvent.pressure || 1;
if (p.prev) {
context.beginPath();
context.lineWidth = 2 + 2 * pressure;
context.strokeStyle = p.color;
context.moveTo(...p.prev);
context.lineTo(...p.point);
context.lineCap = "round";
context.stroke();
}
}
d3.select(canvas)
.on("touchmove", e => e.preventDefault())
.on("pointerenter", () => (canvas.dbltap = canvas.dbltap || trackDbltap()))
.on("pointerdown", e => {
if (canvas.dbltap(e)) return clear();
trackPointer(e, {
start: p => {
p.color = d3.hsl(360 * Math.random(), 0.9, 0.7).hex();
console.log("start", p);
},
move: p => {
draw(p);
console.log("move", p);
},
out: p => console.log("out", p),
end: p => console.log("end", p)
});
});
return canvas;
}