viewof gif = {
const gif = new GIF;
const canvas = DOM.canvas(width, height);
const context = canvas.getContext("2d");
context.font = "128px Helvetica Neue";
context.textAlign = "center";
for (let i = 0, n = 10; i < n; ++i) {
context.clearRect(0, 0, width, height);
context.fillStyle = `hsl(${i / n * 360},100%,50%)`;
context.fillText(`Frame ${i}`, width / 2, height / 2 + 40);
gif.addFrame(canvas, {copy: true, delay: 250});
yield canvas;
}
canvas.value = new Promise(resolve => gif.on("finished", resolve));
gif.render();
yield canvas;
}