Dot = ({ width, height, value, event, easement, duration }) => {
const sketch = d3.create("svg").attr("width", width).attr("height", height);
const node = sketch.node();
const element = sketch
.append("circle")
.attr("cx", value.x)
.attr("cy", value.y)
.attr("r", value.r)
.attr("stroke-width", height / 2)
.attr("stroke", "red")
.on("click", () => set(node, jolt(node.value)))
;
const moveOverPlease = shapeShifter({element, duration, easement});
return Object.defineProperty(
node,
"value",
{
get: () => value,
set: (newValue) => moveOverPlease(value = newValue),
enumerable: true
}
);
}