v149 · clipboard · canvas
Drawing Tool Copy
A mini canvas drawing tool with two copy buttons: Eager Copy renders the canvas to PNG immediately at copy time; Deferred Copy uses ClipboardItem.delayed() to defer the render until you actually paste. The metrics panel counts renders avoided.
// Eager copy: PNG is rendered NOW even if user never pastes
async function eagerCopy(canvas) {
const blob = await canvasToBlob(canvas); // runs immediately
await navigator.clipboard.write([
new ClipboardItem({ 'image/png': blob }),
]);
}
// Deferred copy: PNG rendered ONLY when user pastes
async function deferredCopy(canvas) {
await navigator.clipboard.write([
new ClipboardItem({
'image/png': ClipboardItem.delayed(async () => {
return canvasToBlob(canvas); // runs on paste, not on copy
}),
}),
]);
}
see also
- Deferred Copy Demo — basic callback counter comparison
- Format Picker — multiple MIME types with selective callbacks
- Format Matrix — 5-format deferred matrix with consumed/unused tracking