chart = {
const w = 800;
const svg = d3
.create("svg")
.attr("viewBox", [
((1 / zoom) * -w) / 2,
((1 / zoom) * -w) / 2,
(1 / zoom) * w,
(1 / zoom) * w
])
.attr("cursor", "grab");
const g = svg.append("g").attr("transform", "translate(0, 0)");
g.append("path")
.attr(
"d",
d3.line().curve(d3.curveLinearClosed)([
[400, 0],
[0, 400],
[-400, 0],
[0, -400]
])
)
.style("fill", "white")
.style("stroke", "black")
.style("pointer-events", "none");
g.append("path")
.attr(
"d",
d3.line().curve(d3.curveLinearClosed)([
[100, 0],
[0, 100],
[-100, 0],
[0, -100]
])
)
.style("pointer-events", "none");
svg.call(
d3
.zoom()
.extent([
[0, 0],
[w, w]
])
.scaleExtent([1, enableZoom ? 8 : 1])
.on("zoom", zoomed)
);
function zoomed({ transform }) {
g.attr("transform", transform);
}
return svg.node();
}