feat: copy to clipboard (#18963)

* feat: copy to clipboard

* fix: CI failure related issue

* fix: CI failure issue

* fix: copy to clipboard button bug

* feat: copy pragmadots value to clipboard
This commit is contained in:
Abishek PY 2021-10-22 15:40:32 +05:30 • committed by GitHub
commit d634587423
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 118 additions and 2 deletions

View file

@ -341,3 +341,59 @@ proc search*() {.exportc.} =
if timer != nil: clearTimeout(timer)
timer = setTimeout(wrapper, 400)
proc copyToClipboard*() {.exportc.} =
{.emit: """
function updatePreTags() {
const allPreTags = document.querySelectorAll("pre")
allPreTags.forEach((e) => {
const div = document.createElement("div")
div.classList.add("copyToClipBoard")
const preTag = document.createElement("pre")
preTag.innerHTML = e.innerHTML
const button = document.createElement("button")
button.value = e.textContent.replace('...', '')
button.classList.add("copyToClipBoardBtn")
div.appendChild(preTag)
div.appendChild(button)
e.outerHTML = div.outerHTML
})
}
function copyTextToClipboard(e) {
const clipBoardContent = e.target.value
navigator.clipboard.writeText(clipBoardContent).then(function() {
e.target.style.setProperty("--clipboard-image", "var(--clipboard-image-selected)")
}, function(err) {
console.error("Could not copy text: ", err);
});
}
window.addEventListener("click", (e) => {
if (e.target.classList.contains("copyToClipBoardBtn")) {
copyTextToClipboard(e)
}
})
window.addEventListener("mouseover", (e) => {
if (e.target.nodeName === "PRE") {
e.target.nextElementSibling.style.setProperty("--clipboard-image", "var(--clipboard-image-normal)")
}
})
window.addEventListener("DOMContentLoaded", updatePreTags)
"""
.}
copyToClipboard()