canvas = {
const context = DOM.context2d(width, height);
const projection = d3.geoOrthographic()
.translate([width / 2, height / 2])
.precision(0.5);
const path = d3.geoPath(projection, context);
while (true) {
context.clearRect(0, 0, width, height);
projection.rotate([Date.now() * -2e-3, -15]);
projection.scale(width / 2.3).clipAngle(90);
context.beginPath();
path(sphere);
context.lineWidth = 1.5;
context.strokeStyle = "#000";
context.stroke();
context.beginPath();
path(land);
context.filter = "blur(6px)";
context.fillStyle = "rgba(0,0,0,0.4)";
context.fill();
context.filter = "none";
context.beginPath();
path(graticule);
context.lineWidth = 0.5;
context.strokeStyle = "rgba(0,0,0,0.2)";
context.stroke();
projection.scale(width / 2.2).clipAngle(107);
context.beginPath();
path(land);
context.fillStyle = "#737368";
context.fill();
projection.scale(width / 2.2).clipAngle(90);
context.beginPath();
path(land);
context.fillStyle = "#dadac4";
context.fill();
yield context.canvas;
}
}