From 922ea94040806bc57723032f4ec13e67194408f5 Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Fri, 1 Dec 2017 20:37:07 -0500 Subject: [PATCH] added first pass at local storage support --- editor.js | 31 +++++++++++++++++++++++-------- index.html | 31 +++++++++++++++++++++++-------- 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/editor.js b/editor.js index 5625170..30eaf5a 100644 --- a/editor.js +++ b/editor.js @@ -3,6 +3,10 @@ (() => { const doc = document; doc.exec = doc.execCommand; + const ls = (() => { + try { return localStorage; } + catch (e) { return {}; } + })(); const getSelNode = () => { const node = doc.getSelection().anchorNode; @@ -14,6 +18,23 @@ return [dt.getFullYear(), (month > 9 ? '' : '0') + month, (day > 9 ? '' : '0') + day].join('.'); }; + const initialize = () => { + if (doc.title === "") { + content.innerHTML = !!ls['content'] ? ls['content'] : "

 

"; + header.innerHTML = !!ls['header'] ? ls['header'] + : '

' + ymd_string() + '


' ; + doc.title = header.innerText; + } + + content.onkeydown = (ev) => (!!keys[ev.key] ? (keys[ev.key])(ev) : true); + header.onkeyup = (ev) => { + doc.title = header.innerText; + ls['header'] = header.innerHTML; + ls['content'] = content.innerHTML; + }; + content.focus(); + } + const ctrlHeld = (ev) => (ev.ctrlKey || ev.metaKey); const inTag = (tag) => (getSelNode().nodeName === tag); const keyCmd = (ev, cmd, arg) => (ctrlHeld(ev) ? !doc.exec(cmd, false, arg) : true); @@ -49,6 +70,7 @@ return !doc.exec((ev.shiftKey ? "out" : "in")+"dent",false); }, + "\\": (ev) => init(), ";": (ev) => keyCmd(ev, "insertHTML", "\r\n"), "'": (ev) => { if (ctrlHeld(ev)) { @@ -59,12 +81,5 @@ }, }; - header.onkeyup = (ev) => (doc.title = header.innerText); - content.onkeydown = (ev) => (keys[ev.key] ? (keys[ev.key])(ev) : true); - content.focus(); - - if (doc.title === "") { - header.innerHTML = '

' + ymd_string() + '


'; - doc.title = header.innerText; - } + initialize(); })(); diff --git a/index.html b/index.html index 53620c5..a55c5e2 100644 --- a/index.html +++ b/index.html @@ -84,6 +84,10 @@ th:first-child, td:first-child { (() => { const doc = document; doc.exec = doc.execCommand; + const ls = (() => { + try { return localStorage; } + catch (e) { return {}; } + })(); const getSelNode = () => { const node = doc.getSelection().anchorNode; @@ -95,6 +99,23 @@ th:first-child, td:first-child { return [dt.getFullYear(), (month > 9 ? '' : '0') + month, (day > 9 ? '' : '0') + day].join('.'); }; + const initialize = () => { + if (doc.title === "") { + content.innerHTML = !!ls['content'] ? ls['content'] : "

 

"; + header.innerHTML = !!ls['header'] ? ls['header'] + : '

' + ymd_string() + '


' ; + doc.title = header.innerText; + } + + content.onkeydown = (ev) => (!!keys[ev.key] ? (keys[ev.key])(ev) : true); + header.onkeyup = (ev) => { + doc.title = header.innerText; + ls['header'] = header.innerHTML; + ls['content'] = content.innerHTML; + }; + content.focus(); + } + const ctrlHeld = (ev) => (ev.ctrlKey || ev.metaKey); const inTag = (tag) => (getSelNode().nodeName === tag); const keyCmd = (ev, cmd, arg) => (ctrlHeld(ev) ? !doc.exec(cmd, false, arg) : true); @@ -130,6 +151,7 @@ th:first-child, td:first-child { return !doc.exec((ev.shiftKey ? "out" : "in")+"dent",false); }, + "\\": (ev) => init(), ";": (ev) => keyCmd(ev, "insertHTML", "\r\n"), "'": (ev) => { if (ctrlHeld(ev)) { @@ -140,14 +162,7 @@ th:first-child, td:first-child { }, }; - header.onkeyup = (ev) => (doc.title = header.innerText); - content.onkeydown = (ev) => (keys[ev.key] ? (keys[ev.key])(ev) : true); - content.focus(); - - if (doc.title === "") { - header.innerHTML = '

' + ymd_string() + '


'; - doc.title = header.innerText; - } + initialize(); })(); -- 2.52.0