require('electron-titlebar')
const {app,BrowserWindow,ipcRenderer} = require('electron')
const {dialog} = require('electron').remote;
const fs = require('fs');
window.onload = () => {
initEditor();
}
// MARKDOWN REGEX
function manageClass(regex, cl, element) {
if (element.innerHTML.search(regex) != -1) element.classList.add(cl);
else if (element.classList.contains(cl)) element.classList.remove(cl);
}
function applySelectionFunc(pnode, regex, command) {
let node = pnode.firstChild;
let text = pnode.innerHTML;
let match;
while (match = regex.exec(text)) {
console.log(match);
if (match == null) return;
let start = (regex.lastIndex - match[0].length + 2);
let end = (regex.lastIndex - 2);
let range = document.createRange();
let sel = window.getSelection();
let original = sel.getRangeAt(0);
range.setStart(node, start);
range.setEnd(pnode.lastChild, end);
sel.removeAllRanges();
sel.addRange(range);
document.execCommand(command,false,false);
sel.removeAllRanges();
sel.addRange(original);
}
}
function markdownEngine(editor, opts) {
editor.querySelectorAll("p").forEach((p) => {
manageClass(/^#[^#]+/g, "h1", p);
manageClass(/^##[^#]+/g, "h2", p);
manageClass(/^###[^#]+/g, "h3", p);
manageClass(/^####[^#]+/g, "h4", p);
manageClass(/^#####[^#]+/g, "h5", p);
manageClass(/^######[^#]+/g, "h6", p);
manageClass(/^[\+] /g, "ul-plus", p);
manageClass(/^[\-\*] /g, "ul", p);
// applySelectionFunc(p,/(?:^|[^>])\*\*[^<>].+[^<>]\*\*/g, "bold");
// if (p.innerHTML.search(/\*\*/g) != -1) document.execCommand('bold', false, false );
});
}
function initEditor() {
let editor = document.getElementById('editor');
markdownEngine(editor);
editor.addEventListener('input', function(ev) {
let keys = [];
if (ev.keyCode == '13') {
document.execCommand('formatBlock', false, 'p');
return false;
}
markdownEngine(editor, keys);
}, false);
}
// FILE MANAGEMENT
var current_file = "";
function saveFile(saveAs = false) {
let writable_content = document.getElementById('editor').innerHTML
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/
/g, '\u000a')
.replace(/<\/p>/g, '\u000a')
.replace(/
" + data .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/\u000a/g, '
') .replace(/\u0020/g, ' '); initEditor(); }); document.getElementsByTagName('title')[0].innerHTML = filePath; document.getElementById('title').innerHTML = filePath; current_file = filePath; app.addRecentDocument(filePath); }); }