in packages/core/src/models/TransformHelper.ts [118:189]
get cursorDragNodesRect() {
if (this.type === 'translate') {
return new Rect(
this.cursorPosition.x - this.dragStartCursorOffset.x,
this.cursorPosition.y - this.dragStartCursorOffset.y,
this.dragNodesRect.width,
this.dragNodesRect.height
)
} else if (this.type === 'resize') {
const dragNodesRect = this.dragStartNodesRect
const deltaX = this.cursor.dragStartToCurrentDelta.clientX
const deltaY = this.cursor.dragStartToCurrentDelta.clientY
switch (this.direction) {
case 'left-top':
return new Rect(
this.cursorPosition.x - this.dragStartCursorOffset.x,
this.cursorPosition.y - this.dragStartCursorOffset.y,
dragNodesRect.width - deltaX,
dragNodesRect.height - deltaY
)
case 'left-center':
return new Rect(
this.cursorPosition.x - this.dragStartCursorOffset.x,
dragNodesRect.y,
dragNodesRect.width - deltaX,
dragNodesRect.height
)
case 'left-bottom':
return new Rect(
this.cursorPosition.x - this.dragStartCursorOffset.x,
dragNodesRect.y,
dragNodesRect.width - deltaX,
dragNodesRect.height - deltaY
)
case 'center-top':
return new Rect(
dragNodesRect.x,
this.cursorPosition.y - this.dragStartCursorOffset.y,
dragNodesRect.width,
dragNodesRect.height - deltaY
)
case 'center-bottom':
return new Rect(
dragNodesRect.x,
dragNodesRect.y,
dragNodesRect.width,
dragNodesRect.height + deltaY
)
case 'right-top':
return new Rect(
dragNodesRect.x,
this.cursorPosition.y - this.dragStartCursorOffset.y,
dragNodesRect.width + deltaX,
dragNodesRect.height - deltaY
)
case 'right-center':
return new Rect(
dragNodesRect.x,
dragNodesRect.y,
dragNodesRect.width + deltaX,
dragNodesRect.height
)
case 'right-bottom':
return new Rect(
dragNodesRect.x,
dragNodesRect.y,
dragNodesRect.width + deltaX,
dragNodesRect.height - deltaY
)
}
}
}