|
@@ -109,11 +109,22 @@ export const dragNewElement = (
|
|
|
if (widthAspectRatio) {
|
|
|
height = width / widthAspectRatio;
|
|
|
} else {
|
|
|
- ({ width, height } = getPerfectElementSize(
|
|
|
- elementType,
|
|
|
- width,
|
|
|
- y < originY ? -height : height,
|
|
|
- ));
|
|
|
+ // Depending on where the cursor is at (x, y) relative to where the starting point is
|
|
|
+ // (originX, originY), we use ONLY width or height to control size increase.
|
|
|
+ // This allows the cursor to always "stick" to one of the sides of the bounding box.
|
|
|
+ if (Math.abs(y - originY) > Math.abs(x - originX)) {
|
|
|
+ ({ width, height } = getPerfectElementSize(
|
|
|
+ elementType,
|
|
|
+ height,
|
|
|
+ x < originX ? -width : width,
|
|
|
+ ));
|
|
|
+ } else {
|
|
|
+ ({ width, height } = getPerfectElementSize(
|
|
|
+ elementType,
|
|
|
+ width,
|
|
|
+ y < originY ? -height : height,
|
|
|
+ ));
|
|
|
+ }
|
|
|
|
|
|
if (height < 0) {
|
|
|
height = -height;
|