diff --git a/simple-mind-map/src/plugins/Select.js b/simple-mind-map/src/plugins/Select.js index 1998d192..c26ebb58 100644 --- a/simple-mind-map/src/plugins/Select.js +++ b/simple-mind-map/src/plugins/Select.js @@ -1,4 +1,4 @@ -import { bfsWalk, throttle } from '../utils' +import { bfsWalk, throttle, checkTwoRectIsOverlap } from '../utils' // 节点选择插件 class Select { @@ -210,24 +210,19 @@ class Select { left = left * scaleX + translateX top = top * scaleY + translateY if ( - ((left >= minx && left <= maxx) || (right >= minx && right <= maxx)) && - ((top >= miny && top <= maxy) || (bottom >= miny && bottom <= maxy)) + checkTwoRectIsOverlap(minx, maxx, miny, maxy, left, right, top, bottom) ) { - // this.mindMap.batchExecution.push('activeNode' + node.uid, () => { if (node.nodeData.data.isActive) { return } this.mindMap.renderer.setNodeActive(node, true) this.mindMap.renderer.addActiveNode(node) - // }) } else if (node.nodeData.data.isActive) { - // this.mindMap.batchExecution.push('activeNode' + node.uid, () => { if (!node.nodeData.data.isActive) { return } this.mindMap.renderer.setNodeActive(node, false) this.mindMap.renderer.removeActiveNode(node) - // }) } }) } diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index babbdb0e..bc13eba0 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -669,3 +669,32 @@ export const checkIsNodeStyleDataKey = key => { } return false } + +// 从节点实例列表里找出顶层的节点 +export const getTopAncestorsFomNodeList = list => { + let res = [] + list.forEach(node => { + if ( + !list.find(item => { + return item.uid !== node.uid && item.isParent(node) + }) + ) { + res.push(node) + } + }) + return res +} + +// 判断两个矩形是否重叠 +export const checkTwoRectIsOverlap = ( + minx1, + maxx1, + miny1, + maxy1, + minx2, + maxx2, + miny2, + maxy2 +) => { + return maxx1 > minx2 && maxx2 > minx1 && maxy1 > miny2 && maxy2 > miny1 +}