nl_tokens: most related node 最相关的另一个节点
pl_tokens: function targetNode ( ) { var currentTree = this . currentTree ; if ( ! currentTree ) { throw 'no currentTree' ; } // var _this$offset = this . <mask> , x = _this$offset . x , y = _this$offset . y ; var currentNode = currentTree . rootData ; while ( true ) { var children = currentNode . children ; if ( ! children ) { break ; } if ( this . node . parent === currentNode ) { // dragging node is in currentNode children, remove it first children = children . slice ( ) ; children . splice ( children . indexOf ( this . node ) , 1 ) ; } if ( children . length === 0 ) { break ; } var t = hp . binarySearch ( children , function ( node ) { var el = document . getElementById ( node . _id ) ; var ty = hp . getOffset ( el ) . y ; var ty2 = ty + el . offsetHeight + currentTree . space ; if ( ty2 < y ) { return - 1 ; } else if ( ty <= y ) { return 0 ; } else { return 1 ; } } , null , null , true ) ; if ( t . hit ) { currentNode = t . value ; } else { if ( t . bigger ) { currentNode = children [ t . index - 1 ] ; } else { currentNode = t . value ; } } if ( ! currentNode ) { currentNode = children [ 0 ] ; break ; } if ( ! currentNode ) { break ; } var innerEl = document . getElementById ( currentNode . _id ) . querySelector ( '.tree-node-inner' ) ; var of = getOf4 ( innerEl , currentTree . space ) ; if ( of . y <= y && y <= of . y2 ) { break ; } } return currentNode ; }