Copiar texto (com marcações) para a área de transferência com Javascript

Este é um módulo simples do es2015 para copiar algum texto (com marcações html) para a área de transferência do usuário.

export default text => new Promise((resolve) => {
let range;
const textarea = document.createElement('pre')
textarea
.style.fontFamily = 'monospace'
textarea
.style.opacity = '0'
textarea
.style.position = 'fixed'
textarea
.style.top = '0'
textarea
.style.left = '-2000px'

document
.body.appendChild(textarea)
textarea
.innerHTML = text
textarea
.focus()

if (window.getSelection && document.createRange) {
range
= document.createRange();
range
.selectNodeContents(textarea);
let sel = window.getSelection();
sel
.removeAllRanges();
sel
.addRange(range);
} else if (document.body.createTextRange) {
range
= document.body.createTextRange();
range
.moveToElementText(textarea);
range
.select();
}

document
.execCommand('copy')

setTimeout
(() => {
document
.body.removeChild(textarea)
resolve
()
}, 500)
})

Uso:

import copyToClipboard from './some/path/clipboard.js'

copyToClipboard
(`
<h1>Title</h1>
<p>text</p>
`)