chart = {
const size = 1.5;
d3.select(ctx2d.canvas).call(d3.zoom()
.scaleExtent([1, 8])
.on("zoom", ({transform}) => zoomed(transform)));
function zoomed(transform) {
ctx2d.save();
ctx2d.clearRect(0, 0, width, height);
ctx2d.translate(transform.x, transform.y);
ctx2d.scale(transform.k, transform.k);
ctx2d.beginPath();
data
.map((pos) => new Token(pos, size))
.map(token => token.draw())
const center = new Token([width/2, height/2], 5)
center.draw()
ctx2d.fill();
ctx2d.restore();
}
zoomed(d3.zoomIdentity);
return ctx2d.canvas;
}