/** * This file contains scripts needed for syntax highlight to work. */ /** * This functions highlight element with provided ID. * * @function * @name highlightSyntax * @kind function * @param {any} elementId * @returns {void} */ function highlightSyntax(elementId) { const element = document.getElementById(elementId); element.innerHTML = hljs.highlightAuto(element.innerText).value } /** * Converts pasted data to plain text * * @function * @name configurePastingInElement * @kind function * @param {any} elementId * @returns {void} */ function configurePastingInElement(elementId) { const editorEle = document.getElementById(elementId); // Handle the `paste` event editorEle.addEventListener('paste', function (e) { // Prevent the default action e.preventDefault(); // Get the copied text from the clipboard const text = e.clipboardData ? (e.originalEvent || e).clipboardData.getData('text/plain') : // For IE window.clipboardData ? window.clipboardData.getData('Text') : ''; if (document.queryCommandSupported('insertText')) { document.execCommand('insertText', false, text); } else { // Insert text at the current position of caret const range = document.getSelection().getRangeAt(0); range.deleteContents(); const textNode = document.createTextNode(text); range.insertNode(textNode); range.selectNodeContents(textNode); range.collapse(false); const selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); } highlightSyntax(editorEle.id); }); }