diff --git a/experiments/outline-editor/index.html b/experiments/outline-editor/index.html index 32f53d9..2029b0c 100755 --- a/experiments/outline-editor/index.html +++ b/experiments/outline-editor/index.html @@ -183,6 +183,30 @@ var createBlock = function(place=none){ && cur[place](block) return block } +var json = function(node){ + node ??= document.querySelector('.editor') + return [...node.children] + .map(function(elem){ + return elem.nodeName != 'DIV' ? + [] + : [{ + text: elem.querySelector('span').innerHTML, + collapsed: elem.getAttribute('collapsed') != null, + children: json(elem) + }] }) + .flat() } +var markdown = function(node, indent=''){ + node ??= json(node) + var text = '' + for(var elem of node){ + text += + indent + +'- ' + + elem.text + .replace(/\n/g, '\n '+indent) + +'\n' + + markdown(elem.children || [], indent+' ') } + return text } // XXX do a caret api... @@ -331,38 +355,6 @@ var setup = function(){
--TODO: --- -navigation--expand/collapse subtree--shift subtree up/down--create node--edit node-- undo delete node -- copy/paste nodes/trees -- shifting nodes up/down -- multiple node selection -- mouse controls -- touch controls -- serialize/deserialize -- add optional styling to nodes - -Controls: - up - focus node above - down - focus node below - left - focus parent node - right - focus first child node - tab - indent node - s-tab - deindent node - s-left - collapse node - s-right - expand node - enter - normal mode: edit node - - edit mode: create node below - esc - exit edit mode -
+TODO: +- mouse controls +- touch controls +-+navigation+-expand/collapse subtree+-shift subtree up/down+-create node+-edit node+- undo delete node +- copy/paste nodes/trees +- shifting nodes up/down +- multiple node selection +-serialize/deserialize +- add optional styling to nodes + +Controls: + up - focus node above + down - focus node below + left - focus parent node + right - focus first child node + tab - indent node + s-tab - deindent node + s-left - collapse node + s-right - expand node + enter - normal mode: edit node + - edit mode: create node below + esc - exit edit mode +