From 740e2e341079a8caca8b48746edf0f0f47570342 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Thu, 21 Sep 2023 09:00:25 +0800 Subject: [PATCH] =?UTF-8?q?Fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=A4=9A?= =?UTF-8?q?=E9=80=89=E8=8A=82=E7=82=B9=E6=97=B6=E9=80=89=E5=8C=BA=E6=9C=AA?= =?UTF-8?q?=E5=8C=85=E5=90=AB=E8=8A=82=E7=82=B9=E8=BE=B9=E7=95=8C=E6=97=B6?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E4=B8=8D=E4=BC=9A=E8=A2=AB=E9=80=89=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/plugins/Select.js | 9 ++------- simple-mind-map/src/utils/index.js | 29 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 7 deletions(-) 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 +}