thelounge/client/js/clipboard.js

32 lines
728 B
JavaScript
Raw Normal View History

2017-08-26 16:36:18 +00:00
"use strict";
2019-11-16 17:24:03 +00:00
export default function(chat) {
2019-10-31 14:49:09 +00:00
// Disable in Firefox as it already copies flex text correctly
if (typeof window.InstallTrigger !== "undefined") {
return;
}
2017-08-26 16:36:18 +00:00
const selection = window.getSelection();
// If selection does not span multiple elements, do nothing
if (selection.anchorNode === selection.focusNode) {
return;
}
const range = selection.getRangeAt(0);
const documentFragment = range.cloneContents();
const div = document.createElement("div");
div.id = "js-copy-hack";
div.appendChild(documentFragment);
chat.appendChild(div);
selection.selectAllChildren(div);
window.setTimeout(() => {
chat.removeChild(div);
selection.removeAllRanges();
selection.addRange(range);
}, 0);
2019-11-16 17:24:03 +00:00
}