2021-07-28 11:39:32 +05:00
|
|
|
const TAGNAME = "PRE";
|
|
|
|
|
const state = {
|
|
|
|
|
activeBlock: null,
|
2021-10-21 20:37:53 +05:00
|
|
|
languages: [],
|
2021-07-28 11:39:32 +05:00
|
|
|
};
|
|
|
|
|
function createCodeBlock(content) {
|
|
|
|
|
const pre = document.createElement(TAGNAME);
|
|
|
|
|
pre.spellcheck = false;
|
|
|
|
|
pre.classList.add("hljs");
|
2021-11-04 20:37:07 +05:00
|
|
|
pre.innerHTML = newlineToBR(content);
|
2021-07-28 11:39:32 +05:00
|
|
|
return pre;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isCodeBlock(node) {
|
|
|
|
|
return node.nodeName === TAGNAME;
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-04 11:06:44 +05:00
|
|
|
function isInsideCodeBlock(element) {
|
|
|
|
|
let elem = element;
|
|
|
|
|
while (elem.tagName !== TAGNAME && !!elem.parentElement) {
|
|
|
|
|
elem = elem.parentElement;
|
|
|
|
|
if (elem.classList.contains("mce-content-body")) {
|
|
|
|
|
elem = undefined;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return elem && elem.tagName === TAGNAME;
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-04 20:37:07 +05:00
|
|
|
function newlineToBR(html) {
|
|
|
|
|
return html.replace(/\n/gm, "<br>");
|
|
|
|
|
}
|
|
|
|
|
|
2021-11-04 11:06:44 +05:00
|
|
|
module.exports = {
|
2021-11-04 20:37:07 +05:00
|
|
|
newlineToBR,
|
2021-11-04 11:06:44 +05:00
|
|
|
isInsideCodeBlock,
|
|
|
|
|
createCodeBlock,
|
|
|
|
|
isCodeBlock,
|
|
|
|
|
TAGNAME,
|
|
|
|
|
state,
|
|
|
|
|
};
|