const svgCopy = ''; const svgCheck = ''; const addCopyButtons = (clipboard) => { // 1. Look for pre > code elements in the DOM document.querySelectorAll("pre > code").forEach((codeBlock) => { // if buttom exists, skip if (codeBlock.parentElement.querySelector(".clipboard-button")) return; // 2. Create a button that will trigger a copy operation const button = document.createElement("button"); button.className = "clipboard-button"; button.type = "button"; button.innerHTML = svgCopy; button.addEventListener("click", () => { clipboard.writeText(codeBlock.innerText).then( () => { button.blur(); button.innerHTML = svgCheck; setTimeout(() => (button.innerHTML = svgCopy), 2000); }, (error) => (button.innerHTML = "Error") ); }); // 3. Append the button directly before the pre tag const pre = codeBlock.parentNode; pre.parentNode.insertBefore(button, pre); }); }; 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); } }