Skip to content

Commit a2fde3d

Browse files
committed
fix(snapline): snapline cannot show when zoomed & add a build line to CONTRIBUTING.md
1 parent b7b08fb commit a2fde3d

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

CONTRIBUTING.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ LogicFlow 维护同学会确认 issue 意图,更新合适的标签,关联 mi
2020
# 先创建开发分支开发,分支名应该有含义,避免使用 update、tmp 之类的
2121
$ git checkout -b branch-name
2222

23+
# 先 build 所有 workspace 依赖,避免在开发某个包时,找不到 workspace 依赖
24+
$ pnpm run build
25+
2326
# 开发某个包时,利用 build:watch 监听变化实时打包更新
2427
$ cd packages/core # or other packages, such as packages/extensions
2528
$ pnpm run build:watch

packages/core/src/model/SnaplineModel.ts

Lines changed: 19 additions & 8 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 epsilon = 1
99101
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)
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, epsilon) ||
112+
equal(itemData.maxY, draggingData?.maxY, epsilon)
111113
) {
112114
isShowHorizontal = true
113115
horizontalY = draggingData.maxY
@@ -151,18 +153,19 @@ export class SnaplineModel {
151153
if (item.id !== draggingNode.id) {
152154
const itemData = getNodeBBox(item)
153155
// 如果节点的最大最小X轴坐标与节点的最大最小X轴坐标相等,展示垂直线
156+
const epsilon = 1
154157
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)
157160
) {
158161
// 找到则停止循环。减少不必要的遍历
159162
isShowVertical = true
160163
verticalX = draggingData.minX
161164
break
162165
}
163166
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)
166169
) {
167170
isShowVertical = true
168171
verticalX = draggingData.maxX
@@ -235,4 +238,12 @@ export class SnaplineModel {
235238
}
236239
}
237240

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+
238249
export default SnaplineModel

0 commit comments

Comments
 (0)