mirror of
https://github.com/thegeeklab/hugo-geekdoc.git
synced 2024-11-04 20:30:40 +00:00
35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
|
function createCopyButton(highlightDiv) {
|
||
|
const button = document.createElement("span");
|
||
|
|
||
|
if (highlightDiv.querySelector(".lntable")) {
|
||
|
selector = ".lntable .lntd:last-child pre > code";
|
||
|
} else {
|
||
|
selector = "pre > code";
|
||
|
}
|
||
|
|
||
|
const codeToCopy = highlightDiv.querySelector(selector).innerText.trim();
|
||
|
|
||
|
button.classList.add(
|
||
|
"flex",
|
||
|
"align-center",
|
||
|
"justify-center",
|
||
|
"clip",
|
||
|
"gdoc-post__codecopy"
|
||
|
);
|
||
|
button.type = "button";
|
||
|
button.innerHTML =
|
||
|
'<svg class="icon copy"><use xlink:href="#gdoc_copy"></use></svg>' +
|
||
|
'<svg class="icon check hidden"><use xlink:href="#gdoc_check"></use></svg>';
|
||
|
button.setAttribute("data-clipboard-text", codeToCopy);
|
||
|
button.setAttribute("data-copy-feedback", "Copied!");
|
||
|
button.setAttribute("role", "button");
|
||
|
button.setAttribute("aria-label", "Copy");
|
||
|
|
||
|
highlightDiv.classList.add("gdoc-post__codecontainer");
|
||
|
highlightDiv.insertBefore(button, highlightDiv.firstChild);
|
||
|
}
|
||
|
|
||
|
document
|
||
|
.querySelectorAll(".highlight")
|
||
|
.forEach((highlightDiv) => createCopyButton(highlightDiv));
|