const svgCopy = ''; const svgCheck = ''; const addCopyButtons = (clipboard) => { var els = document.getElementsByClassName("highlight"); // for each highlight for (var i = 0; i < els.length; i++) { if (els[i].getElementsByClassName("clipboard-button").length) continue; // find pre > code inside els[i] let codeBlocks = els[i].getElementsByTagName("code"); // line numbers are inside first code block let lastCodeBlock = codeBlocks[codeBlocks.length - 1]; const button = document.createElement("button"); button.className = "clipboard-button"; button.type = "button"; button.innerHTML = svgCopy; // remove every second newline from lastCodeBlock.innerText button.addEventListener("click", () => { clipboard.writeText(lastCodeBlock.innerText.replace(/\n\n/g, "\n")).then( () => { button.blur(); button.innerHTML = svgCheck; setTimeout(() => (button.innerHTML = svgCopy), 2000); }, (error) => (button.innerHTML = "Error") ); }); // find chroma inside els[i] let chroma = els[i].getElementsByClassName("chroma")[0]; els[i].insertBefore(button, chroma); console.log(els[i].lastChild) } } function initClipboard() { if (navigator && navigator.clipboard) { addCopyButtons(navigator.clipboard); } else { const script = document.createElement("script"); script.src = "https://cdnjs.cloudflare.com/ajax/libs/clipboard-polyfill/2.7.0/clipboard-polyfill.promise.js"; script.integrity = "sha256-waClS2re9NUbXRsryKoof+F9qc1gjjIhc2eT7ZbIv94="; script.crossOrigin = "anonymous"; script.onload = () => addCopyButtons(clipboard); document.body.appendChild(script); } }