// copy code icon markup
const copyIcon = ``
// insert copy buttons for code blocks
const codeBlocks = document.querySelectorAll("div.highlighter-rouge")
codeBlocks.forEach((codeBlock) => {
codeBlock.insertAdjacentHTML(
"afterbegin",
``
)
})
// handler that saves the code block innerText to clipboard
function copyCodeBlock(event) {
const copyButton = event.currentTarget
const codeBlock = copyButton.parentElement.querySelector("pre.highlight code")
const code = codeBlock.innerText.trim()
// remove "$ " prompt at start of lines in code
const strippedCode = code.replace(/^[\s]?\$\s+/gm, "")
window.navigator.clipboard.writeText(strippedCode)
// change the button text temporarily
copyButton.textContent = "Copied!"
setTimeout(() => copyButton.innerHTML = copyIcon, 3000)
}
// register event listeners for copy buttons
const copyButtons = document.querySelectorAll("button.copy")
copyButtons.forEach((btn) => {
btn.addEventListener("click", copyCodeBlock)
})