/* Source: - https://simplernerd.com/hugo-add-copy-to-clipboard-button/ */ const svgCopy = '' const svgCheck = '' const addCopyButtons = (clipboard) => { // 1. Look for pre > code elements in the DOM document.querySelectorAll('pre > code').forEach((codeBlock) => { // 2. Create a button that will trigger a copy operation const button = document.createElement('button') button.className = 'clipboard-button' button.setAttribute('data-toast-target', 'toast-copied-code-message') button.setAttribute('aria-label', '{{ T "copyToClipboard" }}') button.type = 'button' button.innerHTML = svgCopy button.addEventListener('click', () => { const text = codeBlock.innerText.split('\n').filter(Boolean).join('\n') clipboard.writeText(text).then( () => { button.blur() button.innerHTML = svgCheck setTimeout(() => (button.innerHTML = svgCopy), 2000) }, // eslint-disable-next-line n/handle-callback-err (error) => (button.innerHTML = 'Error') ) }) // 3. Append the button directly before the pre tag const pre = codeBlock.parentNode pre.parentNode.insertBefore(button, pre) }) } if (navigator && navigator.clipboard) { addCopyButtons(navigator.clipboard) } document.querySelectorAll('[data-clipboard]').forEach(trigger => { const text = trigger.getAttribute('data-clipboard') trigger.addEventListener('click', () => { navigator.clipboard.writeText(text) }) })