mirror of
https://github.com/flynx/pWiki.git
synced 2025-10-29 18:10:09 +00:00
cleanup...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
parent
9eddf696c4
commit
dcc4ff1aee
@ -186,107 +186,6 @@ var Outline = {
|
||||
: nodes
|
||||
: (edited
|
||||
?? node) },
|
||||
/*/
|
||||
get: function(node='focused', offset){
|
||||
var that = this
|
||||
|
||||
// shorthands...
|
||||
if(node == 'next'){
|
||||
return this.get('focused', 1) }
|
||||
if(node == 'prev' || node == 'previous'){
|
||||
return this.get('focused', -1) }
|
||||
|
||||
var outline = this.outline
|
||||
|
||||
var parent = function(node){
|
||||
return node?.parentElement?.parentElement }
|
||||
var children = function(node){
|
||||
return [...node?.lastChild?.children] }
|
||||
|
||||
// get parent node...
|
||||
if(node instanceof HTMLElement){
|
||||
while(!node.classList.contains('block')){
|
||||
node = node.parentElement
|
||||
if(node === this.outline){
|
||||
return undefined } } }
|
||||
|
||||
// node lists...
|
||||
var NO_NODES = {}
|
||||
var nodes =
|
||||
node == 'all' ?
|
||||
[...outline.querySelectorAll('.block')]
|
||||
: node == 'visible' ?
|
||||
[...outline.querySelectorAll('.block')]
|
||||
.filter(function(e){
|
||||
return e.offsetParent != null })
|
||||
: node == 'editable' ?
|
||||
[...outline.querySelectorAll('.block>textarea')]
|
||||
: node == 'selected' ?
|
||||
[...outline.querySelectorAll('.block[selected]')]
|
||||
: node == 'top' ?
|
||||
[...outline.children]
|
||||
.filter(function(elem){
|
||||
return elem.getAttribute('tabindex') != null })
|
||||
: ['siblings', 'children'].includes(node) ?
|
||||
this.get('focused', node)
|
||||
: node instanceof Array ?
|
||||
node
|
||||
: NO_NODES
|
||||
if(nodes !== NO_NODES){
|
||||
return offset == null ?
|
||||
nodes
|
||||
: typeof(offset) == 'number' ?
|
||||
nodes.at(offset)
|
||||
: nodes
|
||||
.map(function(elem){
|
||||
return that.get(elem, offset) }) }
|
||||
|
||||
// single base node...
|
||||
node =
|
||||
typeof(node) == 'number' ?
|
||||
this.at(node)
|
||||
: node == 'focused' ?
|
||||
(outline.querySelector(`.block:focus`)
|
||||
|| outline.querySelector(`textarea:focus`)?.parentElement
|
||||
|| outline.querySelector('.block.focused'))
|
||||
: node == 'parent' ?
|
||||
parent(this.get('focused'))
|
||||
: node
|
||||
var edited
|
||||
if(node == 'edited'){
|
||||
edited = outline.querySelector(`textarea:focus`)
|
||||
node = edited?.parentElement }
|
||||
|
||||
if(!node || typeof(node) == 'string'){
|
||||
return undefined }
|
||||
|
||||
// children...
|
||||
if(offset == 'children'){
|
||||
return children(node) }
|
||||
|
||||
// siblings...
|
||||
if(offset == 'siblings'){
|
||||
return children(parent(node)) }
|
||||
|
||||
// offset...
|
||||
offset =
|
||||
offset == 'next' ?
|
||||
1
|
||||
: offset == 'prev' ?
|
||||
-1
|
||||
: offset
|
||||
if(typeof(offset) == 'number'){
|
||||
nodes = this.get('visible')
|
||||
var i = nodes.indexOf(node) + offset
|
||||
i = i < 0 ?
|
||||
nodes.length + i
|
||||
: i % nodes.length
|
||||
node = nodes[i]
|
||||
edited = edited
|
||||
&& node.querySelector('.code') }
|
||||
return edited
|
||||
|| node },
|
||||
//*/
|
||||
at: function(index, nodes='visible'){
|
||||
return this.get(nodes).at(index) },
|
||||
focus: function(node='focused', offset){
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user