Async Clipboard Demo

HTML

<script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>

JavaScript

async function clipboard_test() {

// =====================================
// Creating clipboard items for testing.
// =====================================

console.log("=== Creating Clipboard Items ===");

console.log("(a) Creating clipboard item 1 (static inline text)");
const item1 = new ClipboardItem({
    "text/plain;charset=utf-8": "plain text data",
    "text/html": "<b>html</b> data",
});

console.log("(b) Creating clipboard item 2 (text in blob)");
const item2 = new ClipboardItem({
    // Text Blob instead of binary data for testing.
    "text/svg": new Blob(["SVG DATA"], {type: "text/plain"})
});

console.log("(c) Creating clipboard item 3 (async Promise png blob)");
const item3 = new ClipboardItem({
    "image/png": new Promise(function(resolve, reject) {
        console.log("--- item 3: calcing promise png image data");
        // Text Blob instead of binary data for testing.
        resolve(new Blob(["ASYNC PNG IMAGE DATA"], {type: "text/plain"}));
    }),
});

console.log("(d) Creating clipboard item 4 (delayed Function jpg blob)");
const item4 = ClipboardItem.createDelayed({
    "image/jpg": () => {
        console.log("--- item 4: calcing delayed function jpg image data");
        // Text Blob instead of binary data for testing.
        return(new Blob(["DELAYED JPG IMAGE DATA"], {type: "text/plain"}));
    }
});


// =====================
// Clipboard write tests
// =====================

console.log(".");
console.log("=== Clipboard Writes ===");


console.log("(a) Writing plain text (inline)");
await clipboard.write([item1]);
printClipboardItems(clipboard.contents_);

console.log("(b) Writing text as Blob");
await clipboard.write([item2]);
printClipboardItems(clipboard.contents_);

console.log("(c) Writing Blob via async Promise");
await clipboard.write([item3]);
printClipboardItems(clipboard.contents_);

console.log("(d) Writing via delayed generation Function");
await...