spin = {
const svg = d3.select(DOM.svg(width, height))
const g = svg.append("g").attr("transform", `translate(${width/2}, ${height/2})`)
let startAngle = 0
let length = 0
let endAngle = startAngle + length
const arcPath = g.append('path')
.datum({startAngle: startAngle, endAngle: endAngle})
.attr('fill', '#ccc')
.attr('d', arc)
d3.interval(function() {
startAngle += tau / 4
if (length === 0) {
length += tau
} else if (length === tau) {
startAngle += tau
length -= tau
}
endAngle = startAngle + length
arcPath.transition()
.duration(1000)
.ease(d3.easeLinear)
.attrTween("d", arcTween({
startAngle: startAngle,
endAngle: endAngle
}));
}, 1000);
return svg.node()
}