function drag(projection) {
let r0, p0;
function dragstarted() {
r0 = projection.rotate();
p0 = projection.invert([d3.event.x, d3.event.y]);
}
function dragged() {
const p = projection.rotate(r0).invert([d3.event.x, d3.event.y]);
const arcRotation = attitude().arc(p0, p);
projection.rotate(
attitude(r0)
.compose(arcRotation)
.angles()
);
mutable arc = [arcRotation.invert(p0), p0];
}
return d3
.drag()
.on("start", dragstarted)
.on("drag", dragged);
}