|
|
|
@ -1,5 +1,15 @@
|
|
|
|
import { saveSelection, loadSelection } from "./caret.js";
|
|
|
|
import { saveSelection, loadSelection } from "./caret.js";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function setEditable() {
|
|
|
|
|
|
|
|
let editModeButton = document.getElementById('editModeButton');
|
|
|
|
|
|
|
|
let cheezenotes = document.getElementById('cheezenotes');
|
|
|
|
|
|
|
|
if (editModeButton.classList.contains('buttonoff')) {
|
|
|
|
|
|
|
|
cheezenotes.contentEditable = false;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
cheezenotes.contentEditable = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function load(textarea, div) {
|
|
|
|
function load(textarea, div) {
|
|
|
|
div.innerHTML = '';
|
|
|
|
div.innerHTML = '';
|
|
|
|
let lines = textarea.value.split('\n');
|
|
|
|
let lines = textarea.value.split('\n');
|
|
|
|
@ -89,22 +99,37 @@ function onlink(e) {
|
|
|
|
let cheezenotes = document.getElementById('cheezenotes');
|
|
|
|
let cheezenotes = document.getElementById('cheezenotes');
|
|
|
|
if (cheezenotes.contentEditable == 'false') {
|
|
|
|
if (cheezenotes.contentEditable == 'false') {
|
|
|
|
e.preventDefault();
|
|
|
|
e.preventDefault();
|
|
|
|
cheezenotes.contentEditable = true;
|
|
|
|
setEditable();
|
|
|
|
let link = e.currentTarget;
|
|
|
|
let link = e.currentTarget;
|
|
|
|
if (link.host !== document.location.host) {
|
|
|
|
if (link.host !== document.location.host) {
|
|
|
|
open(link.href);
|
|
|
|
open(link.href);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
//open(link.href, '_self');
|
|
|
|
fetch(link.href + '?data=&fromDomain=' + window.domain + '&fromPage=' + window.page).then((response) => {
|
|
|
|
fetch(link.href + "?data=").then((response) => {
|
|
|
|
|
|
|
|
let ta = document.getElementById('ta');
|
|
|
|
let ta = document.getElementById('ta');
|
|
|
|
response.text().then((data) => {
|
|
|
|
response.text().then((data) => {
|
|
|
|
let content = document.getElementById('content');
|
|
|
|
let content = document.getElementById('content');
|
|
|
|
let left = content.scrollLeft;
|
|
|
|
let left = content.scrollLeft;
|
|
|
|
let top = content.scrollTop;
|
|
|
|
let top = content.scrollTop;
|
|
|
|
window.history.replaceState({top: top, left: left}, "");
|
|
|
|
window.history.replaceState({ top: top, left: left }, "");
|
|
|
|
window.history.pushState({}, "", link.href);
|
|
|
|
window.history.pushState({}, "", link.href);
|
|
|
|
|
|
|
|
document.title = 'CheezeNotes - ' + link.getAttribute('data-href');
|
|
|
|
ta.value = data;
|
|
|
|
ta.value = data;
|
|
|
|
load(document.getElementById('ta'), document.getElementById('cheezenotes'));
|
|
|
|
let url = link.getAttribute('data-href').split('/');
|
|
|
|
|
|
|
|
let page = url[0];
|
|
|
|
|
|
|
|
let domain = window.domain;
|
|
|
|
|
|
|
|
if (url.length == 3) {
|
|
|
|
|
|
|
|
domain = url[1];
|
|
|
|
|
|
|
|
page = url[2];
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
window.domain = domain;
|
|
|
|
|
|
|
|
window.page = page;
|
|
|
|
|
|
|
|
load(document.getElementById('ta'), cheezenotes);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*let editModeButton = document.getElementById('editModeButton');
|
|
|
|
|
|
|
|
if (editModeButton.classList.contains('buttonoff')) {
|
|
|
|
|
|
|
|
let cheezenotes = document.getElementById('cheezenotes');
|
|
|
|
|
|
|
|
cheezenotes.contentEditable = false;
|
|
|
|
|
|
|
|
}*/
|
|
|
|
content.scrollTop = 0;
|
|
|
|
content.scrollTop = 0;
|
|
|
|
content.scrollLeft = 0;
|
|
|
|
content.scrollLeft = 0;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
@ -119,7 +144,7 @@ function onlink(e) {
|
|
|
|
function onlinkout(e) {
|
|
|
|
function onlinkout(e) {
|
|
|
|
let cheezenotes = document.getElementById('cheezenotes');
|
|
|
|
let cheezenotes = document.getElementById('cheezenotes');
|
|
|
|
if (cheezenotes.contentEditable == 'false') {
|
|
|
|
if (cheezenotes.contentEditable == 'false') {
|
|
|
|
cheezenotes.contentEditable = true;
|
|
|
|
setEditable();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -149,21 +174,27 @@ function formatLine(line) {
|
|
|
|
} else if (line.match(/^\s*######(\s|$)/i)) {
|
|
|
|
} else if (line.match(/^\s*######(\s|$)/i)) {
|
|
|
|
token = /^(\s*######(\s|$))/i;
|
|
|
|
token = /^(\s*######(\s|$))/i;
|
|
|
|
elem.classList.add('h6');
|
|
|
|
elem.classList.add('h6');
|
|
|
|
|
|
|
|
elem.classList.add('h');
|
|
|
|
} else if (line.match(/^\s*#####(\s|$)/i)) {
|
|
|
|
} else if (line.match(/^\s*#####(\s|$)/i)) {
|
|
|
|
token = /^(\s*#####(\s|$))/i;
|
|
|
|
token = /^(\s*#####(\s|$))/i;
|
|
|
|
elem.classList.add('h5');
|
|
|
|
elem.classList.add('h5');
|
|
|
|
|
|
|
|
elem.classList.add('h');
|
|
|
|
} else if (line.match(/^\s*####(\s|$)/i)) {
|
|
|
|
} else if (line.match(/^\s*####(\s|$)/i)) {
|
|
|
|
token = /^(\s*####(\s|$))/i;
|
|
|
|
token = /^(\s*####(\s|$))/i;
|
|
|
|
elem.classList.add('h4');
|
|
|
|
elem.classList.add('h4');
|
|
|
|
|
|
|
|
elem.classList.add('h');
|
|
|
|
} else if (line.match(/^\s*###(\s|$)/i)) {
|
|
|
|
} else if (line.match(/^\s*###(\s|$)/i)) {
|
|
|
|
token = /^(\s*###(\s|$))/i;
|
|
|
|
token = /^(\s*###(\s|$))/i;
|
|
|
|
elem.classList.add('h3');
|
|
|
|
elem.classList.add('h3');
|
|
|
|
|
|
|
|
elem.classList.add('h');
|
|
|
|
} else if (line.match(/^\s*##(\s|$)/)) {
|
|
|
|
} else if (line.match(/^\s*##(\s|$)/)) {
|
|
|
|
token = /^(\s*##(\s|$))/i;
|
|
|
|
token = /^(\s*##(\s|$))/i;
|
|
|
|
elem.classList.add('h2');
|
|
|
|
elem.classList.add('h2');
|
|
|
|
|
|
|
|
elem.classList.add('h');
|
|
|
|
} else if (line.match(/^\s*#(\s|$)/i)) {
|
|
|
|
} else if (line.match(/^\s*#(\s|$)/i)) {
|
|
|
|
token = /^(\s*#(\s|$))/i;
|
|
|
|
token = /^(\s*#(\s|$))/i;
|
|
|
|
elem.classList.add('h1');
|
|
|
|
elem.classList.add('h1');
|
|
|
|
|
|
|
|
elem.classList.add('h');
|
|
|
|
} else if (line.match(/^\s*>\s*>\s*>(\s|$)/i)) {
|
|
|
|
} else if (line.match(/^\s*>\s*>\s*>(\s|$)/i)) {
|
|
|
|
token = /^(\s*>\s*>\s*>(\s|$))/i;
|
|
|
|
token = /^(\s*>\s*>\s*>(\s|$))/i;
|
|
|
|
elem.classList.add('bq3');
|
|
|
|
elem.classList.add('bq3');
|
|
|
|
@ -176,6 +207,14 @@ function formatLine(line) {
|
|
|
|
token = /^(\s*>(\s|$))/i;
|
|
|
|
token = /^(\s*>(\s|$))/i;
|
|
|
|
elem.classList.add('bq1');
|
|
|
|
elem.classList.add('bq1');
|
|
|
|
elem.classList.add('bq');
|
|
|
|
elem.classList.add('bq');
|
|
|
|
|
|
|
|
} else if (line.match(/^\s*\[[xXvV]?\]\s+/i)) {
|
|
|
|
|
|
|
|
//token = /^(\s*\[[xXvV]?\]\s+)/i;
|
|
|
|
|
|
|
|
let checked = '';
|
|
|
|
|
|
|
|
if (line.match(/^\s*\[[xXvV]\]\s+/i)) {
|
|
|
|
|
|
|
|
checked = ' checked="checked"';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
line = line.replace(/^(\s*\[[xXvV]?\]\s+)/i, '<input class="checkbox" type="checkbox"' + checked + '><span class="token">$1</span></input>')
|
|
|
|
|
|
|
|
elem.classList.add('checkbox');
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
elem.classList.add('body');
|
|
|
|
elem.classList.add('body');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -512,12 +551,37 @@ function addLink(line, listLink) {
|
|
|
|
return line;
|
|
|
|
return line;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function formatLink(line) {
|
|
|
|
/*function formatLink(link) {
|
|
|
|
line = line.replace(/(\[!([^\]]*?)\]\(([^\)]+?)\))/ig, '<span class="token">[!</span><img style="vertical-align: top; max-height: 1rem;" class="image" src="$3">$2</img><span class="token">]($3)</span>');
|
|
|
|
link = link.replace(/(\[!([^\]]*?)\]\(([^\)]+?)\))/i, '<span class="token">[!</span><img style="vertical-align: top; max-height: 1rem;" class="image" src="$3">$2</img><span class="token">]($3)</span>');
|
|
|
|
line = line.replace(/(\[([^\]]+?)\]\(([^\)]+?)\))/ig, '<span class="token">[</span><a class="link" data-href="$3" href="$3">$2</a><span class="token">]($3)</span>');
|
|
|
|
link = link.replace(/(\[([^\]]+?)\]\(([^\)]+?)\))/i, '<span class="token">[</span><a class="link" data-href="$3" href="$3">$2</a><span class="token">]($3)</span>');
|
|
|
|
line = line.replace(/(\[([^\]]+?)\]\(\))/ig, '<span class="token">[</span><a class="link" data-href="$2" href="$2">$2</a><span class="token">]()</span>');
|
|
|
|
link = link.replace(/(\[([^\]]+?)\]\(\))/i, '<span class="token">[</span><a class="link" data-href="$2" href="$2">$2</a><span class="token">]()</span>');
|
|
|
|
line = line.replace(/(\[\]\(([^\)]+?)\))/ig, '<span class="token">[](</span><a class="link" data-href="$2" href="$2">$2</a><span class="token">)</span>');
|
|
|
|
link = link.replace(/(\[\]\(([^\)]+?)\))/i, '<span class="token">[](</span><a class="link" data-href="$2" href="$2">$2</a><span class="token">)</span>');
|
|
|
|
return line;
|
|
|
|
return link;
|
|
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function formatLink(link) {
|
|
|
|
|
|
|
|
let matches = link.match(/\[(.*)\]\((.*)\)/);
|
|
|
|
|
|
|
|
let libelle = matches[1];
|
|
|
|
|
|
|
|
let url = matches[2];
|
|
|
|
|
|
|
|
if (url == '' && libelle == '') {
|
|
|
|
|
|
|
|
return link;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
let href = url;
|
|
|
|
|
|
|
|
if (href == '') {
|
|
|
|
|
|
|
|
href = libelle;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (href.match(/^[^\:\/]+\/.*$/)) {
|
|
|
|
|
|
|
|
href = '/' + href;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (libelle == '') {
|
|
|
|
|
|
|
|
return '<span class="token">[](</span><a class="link" data-href="' + href + '" href="' + href + '">' + url + '</a><span class="token">)</span>';
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (libelle.startsWith('!')) {
|
|
|
|
|
|
|
|
return '<span class="token">[' + libelle + '</span><img style="vertical-align: top; max-height: 1rem;" class="image" src="' + href + '" title="' + libelle.substring(1) + '" /><span class="token">](' + url + ')</span>';
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
return '<span class="token">[</span><a class="link" data-href="' + href + '" href="' + href + '">' + libelle + '</a><span class="token">](' + url + ')</span>';
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function addBold(line) {
|
|
|
|
function addBold(line) {
|
|
|
|
|