| | |
| | | const codeActionButtons = [ |
| | | { |
| | | icon: 'copy', |
| | | icon: 'copy', |
| | | id: 'copy', |
| | | title: 'Copy Code', |
| | | show: true |
| | |
| | | icon: 'order', |
| | | id: 'lines', |
| | | title: 'Toggle Line Numbers', |
| | | show: true |
| | | show: true |
| | | }, |
| | | { |
| | | icon: 'carly', |
| | |
| | | icon: 'expand', |
| | | id: 'expand', |
| | | title: 'Toggle code block expand', |
| | | show: false |
| | | show: false |
| | | } |
| | | ]; |
| | | |
| | |
| | | } |
| | | |
| | | function copyCode(codeElement) { |
| | | lineNumbers = elems('.ln', codeElement); |
| | | const codeElementClone = codeElement.cloneNode(true); |
| | | const copyBtn = codeElement.parentNode.parentNode.querySelector(`.${copyId}`); |
| | | const originalTitle = copyBtn.title; |
| | | loadSvg('check', copyBtn); |
| | | copyBtn.title = 'Code Copied'; |
| | | |
| | | lineNumbers = elems('.ln', codeElementClone); |
| | | // remove line numbers before copying |
| | | if(lineNumbers.length) { |
| | | lineNumbers.forEach(function(line){ |
| | |
| | | }); |
| | | } |
| | | |
| | | const codeToCopy = codeElement.textContent; |
| | | // copy code |
| | | copyToClipboard(codeToCopy); |
| | | copyToClipboard(codeElementClone.textContent); |
| | | |
| | | setTimeout(function() { |
| | | copyBtn.title = originalTitle; |
| | | loadSvg('copy', copyBtn); |
| | | }, 2250); |
| | | } |
| | | |
| | | function disableCodeLineNumbers(block){ |
| | |
| | | const wrapIcon = elem(`.${wrapId}`, panel); |
| | | codeBlockFits(block) ? false : deleteClass(wrapIcon, panelHide); |
| | | |
| | | // append buttons |
| | | // append buttons |
| | | highlightWrapper.appendChild(panel); |
| | | }); |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | if(isCopyIcon) { |
| | | // clone code element |
| | | const codeElementClone = codeElement.cloneNode(true); |
| | | copyCode(codeElementClone); |
| | | } |
| | | if(isCopyIcon) copyCode(codeElement); |
| | | } |
| | | }); |
| | | |