in packages/core/src/models/SpaceBlock.ts [139:198]
get snapLine() {
if (!this.isometrics.length) return
const nextRect = this.next.rect
const referRect = this.referRect
let line: LineSegment
if (this.type === 'top') {
line = new LineSegment(
{
x: nextRect.left,
y: referRect.bottom + nextRect.height,
},
{
x: nextRect.right,
y: referRect.bottom + nextRect.height,
}
)
} else if (this.type === 'bottom') {
line = new LineSegment(
{
x: nextRect.left,
y: referRect.top - nextRect.height,
},
{
x: nextRect.right,
y: referRect.top - nextRect.height,
}
)
} else if (this.type === 'left') {
line = new LineSegment(
{
x: referRect.right + nextRect.width,
y: nextRect.top,
},
{
x: referRect.right + nextRect.width,
y: nextRect.bottom,
}
)
} else {
line = new LineSegment(
{
x: referRect.left - nextRect.width,
y: nextRect.top,
},
{
x: referRect.left - nextRect.width,
y: nextRect.bottom,
}
)
}
const distance = calcDistanceOfSnapLineToEdges(
line,
this.helper.dragNodesEdgeLines
)
return new SnapLine(this.helper, {
...line,
distance,
type: 'space-block',
})
}