mirror of
https://github.com/flynx/pWiki.git
synced 2025-10-30 02:20:08 +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)
|
&& cur[place](block)
|
||||||
return 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...
|
// XXX do a caret api...
|
||||||
|
|
||||||
@ -331,38 +355,6 @@ var setup = function(){
|
|||||||
</script>
|
</script>
|
||||||
</head>
|
</head>
|
||||||
<body onload="setup()">
|
<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 class="editor">
|
||||||
<div tabindex=0>
|
<div tabindex=0>
|
||||||
<span><i>root</i></span><textarea></textarea>
|
<span><i>root</i></span><textarea></textarea>
|
||||||
@ -391,6 +383,38 @@ text lines</span><textarea></textarea>
|
|||||||
</div>
|
</div>
|
||||||
</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>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
<!-- vim:set ts=4 sw=4 : -->
|
<!-- vim:set ts=4 sw=4 : -->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user