export function onUpdate() { init(); } function init(){ addAnchors(); addClipboard(); Prism.highlightAll(); } /** * @summary Adds anchors to each heading in the post * so that users can link directly to them. */ function addAnchors() { const selectors = [ '.markdown-body h2', '.markdown-body h3', '.markdown-body h4', '.markdown-body h5', '.markdown-body h6' ]; // relies on AnchorJS library // being loaded in Post.razor anchors.add(selectors.join(',')); } /** * @summary Adds a button to each code block that * allows users to copy the code to their clipboard. */ function addClipboard() { const codeBlocks = document.querySelectorAll('pre'); codeBlocks.forEach((block) => { const button = document.createElement('button'); button.className = 'copy-button'; button.type = 'button'; button.innerHTML = ` ` button.onclick = () => { button.style.color = 'green'; setTimeout(() => { button.style.color = ''; }, 1000); }; const buttonText = document.createElement('span'); buttonText.className = 'sr-only'; buttonText.textContent = 'Copy'; button.appendChild(buttonText); block.appendChild(button); }); // relies on ClipboardJS library // being loaded in Post.razor var clipboard = new ClipboardJS('.copy-button', { target: (trigger) => { return trigger.previousElementSibling; } }); clipboard.on('success', function(e) { e.clearSelection(); }); }