mirror of
https://github.com/thegeeklab/hugo-geekblog.git
synced 2024-06-05 01:40:59 +02: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",
|
|
"gblog-post__codecopy"
|
|
);
|
|
button.type = "button";
|
|
button.innerHTML =
|
|
'<svg class="icon copy"><use xlink:href="#gblog_copy"></use></svg>' +
|
|
'<svg class="icon check hidden"><use xlink:href="#gblog_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("gblog-post__codecontainer");
|
|
highlightDiv.insertBefore(button, highlightDiv.firstChild);
|
|
}
|
|
|
|
document
|
|
.querySelectorAll(".highlight")
|
|
.forEach((highlightDiv) => createCopyButton(highlightDiv));
|