Skip to content

Commit 8d55c99

Browse files
committed
fix(snapline): snapline cannot show when zoomed
1 parent b7b08fb commit 8d55c99

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

packages/core/src/model/SnaplineModel.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,19 +95,21 @@ export class SnaplineModel {
9595
// 排除当前节点
9696
if (item.id !== draggingNode.id) {
9797
const itemData = getNodeBBox(item)
98+
9899
// 如果节点的最大最小Y轴坐标与节点的最大最小Y轴坐标相等,展示水平线
100+
const epsino = 1
99101
if (
100-
itemData.minY === draggingData?.minY ||
101-
itemData.maxY === draggingData?.minY
102+
equal(itemData.minY, draggingData?.minY, epsino) ||
103+
equal(itemData.maxY, draggingData?.minY, epsino)
102104
) {
103105
// 找到则停止循环。减少不必要的遍历
104106
isShowHorizontal = true
105107
horizontalY = draggingData.minY
106108
break
107109
}
108110
if (
109-
itemData.minY === draggingData?.maxY ||
110-
itemData.maxY === draggingData?.maxY
111+
equal(itemData.minY, draggingData?.maxY, epsino) ||
112+
equal(itemData.maxY, draggingData?.maxY, epsino)
111113
) {
112114
isShowHorizontal = true
113115
horizontalY = draggingData.maxY
@@ -204,6 +206,7 @@ export class SnaplineModel {
204206
snaplineInfo.position.x = verticalSnapline.position.x
205207
}
206208
}
209+
207210
return snaplineInfo
208211
}
209212

@@ -235,4 +238,12 @@ export class SnaplineModel {
235238
}
236239
}
237240

241+
function equal(num1: number, num2: number, epsino: number) {
242+
if (Math.abs(num1 - num2) <= epsino) {
243+
return true
244+
} else {
245+
return false
246+
}
247+
}
248+
238249
export default SnaplineModel

0 commit comments

Comments
 (0)