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 
-
- -
-
root @@ -391,6 +383,38 @@ text lines
+
+ +
+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 
+
+