Square = ({ width, height, value, event, easement, duration }) => {
const svg = d3.create("svg").attr("width", width).attr("height", height);
const node = svg.node();
const element = svg
.append("rect")
.attr("x", value.x)
.attr("y", value.y)
.attr("height", value.s)
.attr("width", value.s)
.attr("fill", "black")
.on("click", () => set(node, update(node.value)));
const animate = animator({ element, duration, easement });
return Object.defineProperty(node, "value", {
get: () => value,
set: (newValue) => animate((value = newValue)),
enumerable: true
});
}