From fa4490fb07c77b48e432ea2f9cf6ef01a8ad5fde Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Fri, 4 Jul 2025 14:59:44 +0530 Subject: [PATCH 1/4] refactor: remove redundant setMode calls in interaction modes --- src/interaction/modes/Connector.ts | 6 ------ src/interaction/modes/PlaceIcon.ts | 8 -------- src/interaction/modes/Rectangle/DrawRectangle.ts | 6 ------ src/interaction/modes/TextBox.ts | 6 ------ 4 files changed, 26 deletions(-) diff --git a/src/interaction/modes/Connector.ts b/src/interaction/modes/Connector.ts index c3d8dea..0462dc6 100644 --- a/src/interaction/modes/Connector.ts +++ b/src/interaction/modes/Connector.ts @@ -98,11 +98,5 @@ export const Connector: ModeActions = { ) { scene.deleteConnector(uiState.mode.id); } - - uiState.actions.setMode({ - type: 'CURSOR', - showCursor: true, - mousedownItem: null - }); } }; diff --git a/src/interaction/modes/PlaceIcon.ts b/src/interaction/modes/PlaceIcon.ts index 2db53b6..b62d76e 100644 --- a/src/interaction/modes/PlaceIcon.ts +++ b/src/interaction/modes/PlaceIcon.ts @@ -13,14 +13,6 @@ export const PlaceIcon: ModeActions = { tile: uiState.mouse.position.tile, scene }); - - uiState.actions.setMode({ - type: 'CURSOR', - mousedownItem: itemAtTile, - showCursor: true - }); - - uiState.actions.setItemControls(null); } }, mouseup: ({ uiState, scene }) => { diff --git a/src/interaction/modes/Rectangle/DrawRectangle.ts b/src/interaction/modes/Rectangle/DrawRectangle.ts index 8f3ec2f..ae14250 100644 --- a/src/interaction/modes/Rectangle/DrawRectangle.ts +++ b/src/interaction/modes/Rectangle/DrawRectangle.ts @@ -43,11 +43,5 @@ export const DrawRectangle: ModeActions = { }, mouseup: ({ uiState }) => { if (uiState.mode.type !== 'RECTANGLE.DRAW' || !uiState.mode.id) return; - - uiState.actions.setMode({ - type: 'CURSOR', - showCursor: true, - mousedownItem: null - }); } }; diff --git a/src/interaction/modes/TextBox.ts b/src/interaction/modes/TextBox.ts index 6cb430e..8cca2c3 100644 --- a/src/interaction/modes/TextBox.ts +++ b/src/interaction/modes/TextBox.ts @@ -26,11 +26,5 @@ export const TextBox: ModeActions = { id: uiState.mode.id }); } - - uiState.actions.setMode({ - type: 'CURSOR', - showCursor: true, - mousedownItem: null - }); } }; From 44cd5f0c6c8041a197dfc1bf136874722ef50972 Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Fri, 4 Jul 2025 22:17:14 +0530 Subject: [PATCH 2/4] refactor: revert few changes --- src/interaction/modes/Connector.ts | 5 +++++ src/interaction/modes/PlaceIcon.ts | 8 ++++++++ src/interaction/modes/Rectangle/DrawRectangle.ts | 5 +++++ src/interaction/modes/TextBox.ts | 5 +++++ 4 files changed, 23 insertions(+) diff --git a/src/interaction/modes/Connector.ts b/src/interaction/modes/Connector.ts index 0462dc6..23276a4 100644 --- a/src/interaction/modes/Connector.ts +++ b/src/interaction/modes/Connector.ts @@ -98,5 +98,10 @@ export const Connector: ModeActions = { ) { scene.deleteConnector(uiState.mode.id); } + uiState.actions.setMode({ + type: 'CURSOR', + showCursor: true, + mousedownItem: null + }); } }; diff --git a/src/interaction/modes/PlaceIcon.ts b/src/interaction/modes/PlaceIcon.ts index b62d76e..2db53b6 100644 --- a/src/interaction/modes/PlaceIcon.ts +++ b/src/interaction/modes/PlaceIcon.ts @@ -13,6 +13,14 @@ export const PlaceIcon: ModeActions = { tile: uiState.mouse.position.tile, scene }); + + uiState.actions.setMode({ + type: 'CURSOR', + mousedownItem: itemAtTile, + showCursor: true + }); + + uiState.actions.setItemControls(null); } }, mouseup: ({ uiState, scene }) => { diff --git a/src/interaction/modes/Rectangle/DrawRectangle.ts b/src/interaction/modes/Rectangle/DrawRectangle.ts index ae14250..fb96fae 100644 --- a/src/interaction/modes/Rectangle/DrawRectangle.ts +++ b/src/interaction/modes/Rectangle/DrawRectangle.ts @@ -43,5 +43,10 @@ export const DrawRectangle: ModeActions = { }, mouseup: ({ uiState }) => { if (uiState.mode.type !== 'RECTANGLE.DRAW' || !uiState.mode.id) return; + uiState.actions.setMode({ + type: 'CURSOR', + showCursor: true, + mousedownItem: null + }); } }; diff --git a/src/interaction/modes/TextBox.ts b/src/interaction/modes/TextBox.ts index 8cca2c3..a0eff49 100644 --- a/src/interaction/modes/TextBox.ts +++ b/src/interaction/modes/TextBox.ts @@ -26,5 +26,10 @@ export const TextBox: ModeActions = { id: uiState.mode.id }); } + uiState.actions.setMode({ + type: 'CURSOR', + showCursor: true, + mousedownItem: null + }); } }; From a72978fc598d5119911f601beb3fa1bd2e327c88 Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Fri, 4 Jul 2025 22:20:24 +0530 Subject: [PATCH 3/4] chore: remove spaces --- src/interaction/modes/Connector.ts | 1 + src/interaction/modes/Rectangle/DrawRectangle.ts | 1 + src/interaction/modes/TextBox.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/src/interaction/modes/Connector.ts b/src/interaction/modes/Connector.ts index 23276a4..c3d8dea 100644 --- a/src/interaction/modes/Connector.ts +++ b/src/interaction/modes/Connector.ts @@ -98,6 +98,7 @@ export const Connector: ModeActions = { ) { scene.deleteConnector(uiState.mode.id); } + uiState.actions.setMode({ type: 'CURSOR', showCursor: true, diff --git a/src/interaction/modes/Rectangle/DrawRectangle.ts b/src/interaction/modes/Rectangle/DrawRectangle.ts index fb96fae..8f3ec2f 100644 --- a/src/interaction/modes/Rectangle/DrawRectangle.ts +++ b/src/interaction/modes/Rectangle/DrawRectangle.ts @@ -43,6 +43,7 @@ export const DrawRectangle: ModeActions = { }, mouseup: ({ uiState }) => { if (uiState.mode.type !== 'RECTANGLE.DRAW' || !uiState.mode.id) return; + uiState.actions.setMode({ type: 'CURSOR', showCursor: true, diff --git a/src/interaction/modes/TextBox.ts b/src/interaction/modes/TextBox.ts index a0eff49..6cb430e 100644 --- a/src/interaction/modes/TextBox.ts +++ b/src/interaction/modes/TextBox.ts @@ -26,6 +26,7 @@ export const TextBox: ModeActions = { id: uiState.mode.id }); } + uiState.actions.setMode({ type: 'CURSOR', showCursor: true, From 02fae7558c0a3260910f2e1a61797de450bb4d94 Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Fri, 4 Jul 2025 22:28:29 +0530 Subject: [PATCH 4/4] fix: improve item control handling in Cursor and DragItems modes --- src/interaction/modes/Cursor.ts | 6 ++++-- src/interaction/modes/DragItems.ts | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/interaction/modes/Cursor.ts b/src/interaction/modes/Cursor.ts index 3fbd93a..7c14b4c 100644 --- a/src/interaction/modes/Cursor.ts +++ b/src/interaction/modes/Cursor.ts @@ -93,7 +93,7 @@ const mousedown: ModeActionsAction = ({ }) ); - uiState.actions.setItemControls(itemAtTile); + } else { uiState.actions.setMode( produce(uiState.mode, (draft) => { @@ -142,7 +142,9 @@ export const Cursor: ModeActions = { mouseup: ({ uiState, isRendererInteraction }) => { if (uiState.mode.type !== 'CURSOR' || !isRendererInteraction) return; - if (uiState.mode.mousedownItem) { + const hasMoved = uiState.mouse.mousedown && hasMovedTile(uiState.mouse); + + if (uiState.mode.mousedownItem && !hasMoved) { if (uiState.mode.mousedownItem.type === 'ITEM') { uiState.actions.setItemControls({ type: 'ITEM', diff --git a/src/interaction/modes/DragItems.ts b/src/interaction/modes/DragItems.ts index c3e1337..29c1cdb 100644 --- a/src/interaction/modes/DragItems.ts +++ b/src/interaction/modes/DragItems.ts @@ -113,6 +113,7 @@ export const DragItems: ModeActions = { dragItems(uiState.mode.items, uiState.mouse.position.tile, delta, scene); }, mouseup: ({ uiState }) => { + uiState.actions.setItemControls(null); uiState.actions.setMode({ type: 'CURSOR', showCursor: true,