v149 · clipboard · formats
Format Matrix
Register 5 formats simultaneously via ClipboardItem.delayed(). Paste into different targets (plain text editor, HTML viewer, CSV table, JSON viewer, rich text). The matrix shows which callbacks fired — and which were skipped because the target didn't need them.
Format / MIME typeRegisteredCallback firedConsumed by
Paste targets — click a box, then Ctrl/Cmd+V to paste into it
Callbacks fired: 0
Skipped: 0
Renders saved vs eager: —
// Register 5 formats, all deferred — only consumed ones run
await navigator.clipboard.write([
new ClipboardItem({
'text/plain': ClipboardItem.delayed(async () => generatePlainText()),
'text/html': ClipboardItem.delayed(async () => generateHTML()),
'text/csv': ClipboardItem.delayed(async () => generateCSV()),
'application/json': ClipboardItem.delayed(async () => generateJSON()),
'image/png': ClipboardItem.delayed(async () => renderToPNG()),
}),
]);
// Paste into a plain-text editor → only 'text/plain' callback fires
// Paste into an HTML editor → only 'text/html' callback fires
// The other 4 callbacks never run — renders avoided!
see also
- Deferred Copy Demo — basic callback counter
- Clipboard Spy — side-by-side timeline
- Drawing Tool Copy — deferred canvas-to-PNG render