@@ -95,19 +95,21 @@ export class SnaplineModel {
95
95
// 排除当前节点
96
96
if ( item . id !== draggingNode . id ) {
97
97
const itemData = getNodeBBox ( item )
98
+
98
99
// 如果节点的最大最小Y轴坐标与节点的最大最小Y轴坐标相等,展示水平线
100
+ const epsino = 1
99
101
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 )
102
104
) {
103
105
// 找到则停止循环。减少不必要的遍历
104
106
isShowHorizontal = true
105
107
horizontalY = draggingData . minY
106
108
break
107
109
}
108
110
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 )
111
113
) {
112
114
isShowHorizontal = true
113
115
horizontalY = draggingData . maxY
@@ -204,6 +206,7 @@ export class SnaplineModel {
204
206
snaplineInfo . position . x = verticalSnapline . position . x
205
207
}
206
208
}
209
+
207
210
return snaplineInfo
208
211
}
209
212
@@ -235,4 +238,12 @@ export class SnaplineModel {
235
238
}
236
239
}
237
240
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
+
238
249
export default SnaplineModel
0 commit comments