mirror of
https://github.com/flynx/pWiki.git
synced 2025-10-29 01:50:07 +00:00
added basic serialization...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
e01d5b54cb
commit
9e4f76a2e7
@ -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(){
|
||||
</script>
|
||||
</head>
|
||||
<body onload="setup()">
|
||||
<pre>
|
||||
TODO:
|
||||
- <s>navigation</s>
|
||||
- <s>expand/collapse subtree</s>
|
||||
- <s>shift subtree up/down</s>
|
||||
- <s>create node</s>
|
||||
- <s>edit node</s>
|
||||
- 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
|
||||
</pre>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="editor">
|
||||
<div tabindex=0>
|
||||
<span><i>root</i></span><textarea></textarea>
|
||||
@ -391,6 +383,38 @@ text lines</span><textarea></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<pre>
|
||||
TODO:
|
||||
- mouse controls
|
||||
- touch controls
|
||||
- <s>navigation</s>
|
||||
- <s>expand/collapse subtree</s>
|
||||
- <s>shift subtree up/down</s>
|
||||
- <s>create node</s>
|
||||
- <s>edit node</s>
|
||||
- undo delete node
|
||||
- copy/paste nodes/trees
|
||||
- shifting nodes up/down
|
||||
- multiple node selection
|
||||
- <s>serialize</s>/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
|
||||
</pre>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
<!-- vim:set ts=4 sw=4 : -->
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user