@@ -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 epsilon = 1
99
101
if (
100
- itemData . minY === draggingData ?. minY ||
101
- itemData . maxY === draggingData ?. minY
102
+ equal ( itemData . minY , draggingData ?. minY , epsilon ) ||
103
+ equal ( itemData . maxY , draggingData ?. minY , epsilon )
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 , epsilon ) ||
112
+ equal ( itemData . maxY , draggingData ?. maxY , epsilon )
111
113
) {
112
114
isShowHorizontal = true
113
115
horizontalY = draggingData . maxY
@@ -151,18 +153,19 @@ export class SnaplineModel {
151
153
if ( item . id !== draggingNode . id ) {
152
154
const itemData = getNodeBBox ( item )
153
155
// 如果节点的最大最小X轴坐标与节点的最大最小X轴坐标相等,展示垂直线
156
+ const epsilon = 1
154
157
if (
155
- itemData . minX === draggingData ?. minX ||
156
- itemData . maxX === draggingData ?. minX
158
+ equal ( itemData . minX , draggingData ?. minX , epsilon ) ||
159
+ equal ( itemData . maxX , draggingData ?. minX , epsilon )
157
160
) {
158
161
// 找到则停止循环。减少不必要的遍历
159
162
isShowVertical = true
160
163
verticalX = draggingData . minX
161
164
break
162
165
}
163
166
if (
164
- itemData . minX === draggingData ?. maxX ||
165
- itemData . maxX === draggingData ?. maxX
167
+ equal ( itemData . minX , draggingData ?. maxX , epsilon ) ||
168
+ equal ( itemData . maxX , draggingData ?. maxX , epsilon )
166
169
) {
167
170
isShowVertical = true
168
171
verticalX = draggingData . maxX
@@ -235,4 +238,12 @@ export class SnaplineModel {
235
238
}
236
239
}
237
240
241
+ function equal ( num1 : number , num2 : number , epsilon : number ) {
242
+ if ( Math . abs ( num1 - num2 ) <= epsilon ) {
243
+ return true
244
+ } else {
245
+ return false
246
+ }
247
+ }
248
+
238
249
export default SnaplineModel
0 commit comments