diff --git a/src/components/App.tsx b/src/components/App.tsx index c3764310..35687829 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -1964,15 +1964,26 @@ export class App extends React.Component { } resizeArrowFn(element, 1, deltaX, deltaY, x, y, event.shiftKey); } else { + const width = element.width - deltaX; + const height = event.shiftKey + ? element.width + : element.height - deltaY; mutateElement(element, { x: element.x + deltaX, y: event.shiftKey ? element.y + element.height - element.width : element.y + deltaY, - width: element.width - deltaX, - height: event.shiftKey - ? element.width - : element.height - deltaY, + width, + height, + ...(isLinearElement(element) && width >= 0 && height >= 0 + ? { + points: rescalePoints( + 0, + width, + rescalePoints(1, height, element.points), + ), + } + : {}), }); } break; @@ -1988,13 +1999,23 @@ export class App extends React.Component { } resizeArrowFn(element, 1, deltaX, deltaY, x, y, event.shiftKey); } else { - const nextWidth = element.width + deltaX; + const width = element.width + deltaX; + const height = event.shiftKey ? width : element.height - deltaY; mutateElement(element, { y: event.shiftKey - ? element.y + element.height - nextWidth + ? element.y + element.height - width : element.y + deltaY, - width: nextWidth, - height: event.shiftKey ? nextWidth : element.height - deltaY, + width, + height, + ...(isLinearElement(element) && width >= 0 && height >= 0 + ? { + points: rescalePoints( + 0, + width, + rescalePoints(1, height, element.points), + ), + } + : {}), }); } break; @@ -2010,12 +2031,23 @@ export class App extends React.Component { } resizeArrowFn(element, 1, deltaX, deltaY, x, y, event.shiftKey); } else { + const width = element.width - deltaX; + const height = event.shiftKey + ? element.width + : element.height + deltaY; mutateElement(element, { x: element.x + deltaX, - width: element.width - deltaX, - height: event.shiftKey - ? element.width - : element.height + deltaY, + width, + height, + ...(isLinearElement(element) && width >= 0 && height >= 0 + ? { + points: rescalePoints( + 0, + width, + rescalePoints(1, height, element.points), + ), + } + : {}), }); } break; @@ -2031,11 +2063,22 @@ export class App extends React.Component { } resizeArrowFn(element, 1, deltaX, deltaY, x, y, event.shiftKey); } else { + const width = element.width + deltaX; + const height = event.shiftKey + ? element.width + : element.height + deltaY; mutateElement(element, { - width: element.width + deltaX, - height: event.shiftKey - ? element.width - : element.height + deltaY, + width, + height, + ...(isLinearElement(element) && width >= 0 && height >= 0 + ? { + points: rescalePoints( + 0, + width, + rescalePoints(1, height, element.points), + ), + } + : {}), }); } break; diff --git a/src/element/handlerRectangles.ts b/src/element/handlerRectangles.ts index 414070b8..9e610d3a 100644 --- a/src/element/handlerRectangles.ts +++ b/src/element/handlerRectangles.ts @@ -131,13 +131,6 @@ export function handlerRectangles( } as typeof handlers; } } - - return { - n: handlers.n, - s: handlers.s, - w: handlers.w, - e: handlers.e, - } as typeof handlers; } return handlers;