From 8c49770e3b694cafff413f45b903cd9bb6d55d44 Mon Sep 17 00:00:00 2001 From: Daishi Kato Date: Wed, 22 Apr 2020 22:11:01 +0900 Subject: [PATCH] Better resize cursors on rotated elements (#1470) * better resize cursor on rotated elements * refactor with Math.round --- src/element/resizeTest.ts | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/element/resizeTest.ts b/src/element/resizeTest.ts index f3235013..e7921314 100644 --- a/src/element/resizeTest.ts +++ b/src/element/resizeTest.ts @@ -105,6 +105,16 @@ export function getResizeHandlerFromCoords( return (found || false) as HandlerRectanglesRet; } +const RESIZE_CURSORS = ["ns", "nesw", "ew", "nwse"]; +const rotateResizeCursor = (cursor: string, angle: number) => { + const index = RESIZE_CURSORS.indexOf(cursor); + if (index >= 0) { + const a = Math.round(angle / (Math.PI / 4)); + cursor = RESIZE_CURSORS[(index + a) % RESIZE_CURSORS.length]; + } + return cursor; +}; + /* * Returns bi-directional cursor for the element being resized */ @@ -143,8 +153,11 @@ export function getCursorForResizingElement(resizingElement: { } break; case "rotation": - cursor = "ew"; - break; + return "grab"; + } + + if (cursor && element) { + cursor = rotateResizeCursor(cursor, element.angle); } return cursor ? `${cursor}-resize` : "";