|
|
|
@ -18,29 +18,50 @@ function save(textarea, div) {
|
|
|
|
textarea.value = text;
|
|
|
|
textarea.value = text;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function onlinkin(e) {
|
|
|
|
|
|
|
|
let link = e.currentTarget;
|
|
|
|
|
|
|
|
if (document.getElementById('mdnotes') !== document.activeElement) {
|
|
|
|
|
|
|
|
document.getElementById('mdnotes').contentEditable = false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function onlink(e) {
|
|
|
|
|
|
|
|
let mdnotes = document.getElementById('mdnotes');
|
|
|
|
|
|
|
|
if (mdnotes.contentEditable == 'false') {
|
|
|
|
|
|
|
|
mdnotes.contentEditable = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function onlinkout(e) {
|
|
|
|
|
|
|
|
let mdnotes = document.getElementById('mdnotes');
|
|
|
|
|
|
|
|
if (mdnotes.contentEditable == 'false') {
|
|
|
|
|
|
|
|
mdnotes.contentEditable = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function formatLine(line) {
|
|
|
|
function formatLine(line) {
|
|
|
|
let normLine = line.trimStart();
|
|
|
|
let normLine = line.trimStart();
|
|
|
|
let styleClass = null;
|
|
|
|
let styleClass = null;
|
|
|
|
let token = null;
|
|
|
|
let token = null;
|
|
|
|
if (normLine.match(/####\s/i)) {
|
|
|
|
if (normLine.match(/^####\s/i)) {
|
|
|
|
token = /^(####\s)/i;
|
|
|
|
token = /^(####\s)/i;
|
|
|
|
styleClass = 'h4';
|
|
|
|
styleClass = 'h4';
|
|
|
|
} else if (normLine.match(/###\s/i)) {
|
|
|
|
} else if (normLine.match(/^###\s/i)) {
|
|
|
|
token = /^(###\s)/i;
|
|
|
|
token = /^(###\s)/i;
|
|
|
|
styleClass = 'h3';
|
|
|
|
styleClass = 'h3';
|
|
|
|
} else if (normLine.match(/##\s/i)) {
|
|
|
|
} else if (normLine.match(/^##\s/)) {
|
|
|
|
token = /^(##\s)/i;
|
|
|
|
token = /^(##\s)/i;
|
|
|
|
styleClass = 'h2';
|
|
|
|
styleClass = 'h2';
|
|
|
|
} else if (normLine.match(/#\s/i)) {
|
|
|
|
} else if (normLine.match(/^#\s/i)) {
|
|
|
|
token = /^(#\s)/i;
|
|
|
|
token = /^(#\s)/i;
|
|
|
|
styleClass = 'h1';
|
|
|
|
styleClass = 'h1';
|
|
|
|
} else if (normLine.match(/>>>\s/i)) {
|
|
|
|
} else if (normLine.match(/^>>>\s/i)) {
|
|
|
|
token = /^(>>>\s)/i;
|
|
|
|
token = /^(>>>\s)/i;
|
|
|
|
styleClass = 'bq3';
|
|
|
|
styleClass = 'bq3';
|
|
|
|
} else if (normLine.match(/>>\s/i)) {
|
|
|
|
} else if (normLine.match(/^>>\s/i)) {
|
|
|
|
token = /^(>>\s)/i;
|
|
|
|
token = /^(>>\s)/i;
|
|
|
|
styleClass = 'bq2';
|
|
|
|
styleClass = 'bq2';
|
|
|
|
} else if (normLine.match(/>\s/i)) {
|
|
|
|
} else if (normLine.match(/^>\s/i)) {
|
|
|
|
token = /^(>\s)/i;
|
|
|
|
token = /^(>\s)/i;
|
|
|
|
styleClass = 'bq1';
|
|
|
|
styleClass = 'bq1';
|
|
|
|
} else if (normLine.match(/^[*-]\s/i)) {
|
|
|
|
} else if (normLine.match(/^[*-]\s/i)) {
|
|
|
|
@ -59,6 +80,16 @@ function formatLine(line) {
|
|
|
|
normLine = normLine.replace(token, '<span class="token">$1</span>');
|
|
|
|
normLine = normLine.replace(token, '<span class="token">$1</span>');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
elem.innerHTML = normLine;
|
|
|
|
elem.innerHTML = normLine;
|
|
|
|
|
|
|
|
let links = elem.getElementsByClassName('link');
|
|
|
|
|
|
|
|
for (let i=0; i<links.length; i++) {
|
|
|
|
|
|
|
|
let link = links[i];
|
|
|
|
|
|
|
|
if (link.host !== document.location.host) {
|
|
|
|
|
|
|
|
link.target = '_blank';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
link.addEventListener('mouseover', onlinkin);
|
|
|
|
|
|
|
|
link.addEventListener('click', onlink);
|
|
|
|
|
|
|
|
link.addEventListener('mouseout', onlinkout);
|
|
|
|
|
|
|
|
}
|
|
|
|
return elem;
|
|
|
|
return elem;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|