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