From 34987cda98d84f46c8112c06f19c1bd7fd3d4f0d Mon Sep 17 00:00:00 2001 From: YuniqueUnic <2445942195@qq.com> Date: Thu, 29 Aug 2024 00:56:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(board):=20=E4=BF=AE=E5=A4=8D=E5=BF=AB?= =?UTF-8?q?=E6=8D=B7=E9=94=AE=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 解决了键盘快捷键在特定条件下不执行的问题。当按下CTRL+SHIFT或CTRL时,快捷键现在将分别触发redo()和undo()函数,前提是canRedo和canUndo返回true。此外,从组件中移除了useDisableScrollBounce钩子,以防止在触摸操作期间发生意外的页面滚动。 --- app/board/[boardId]/_components/canvas.tsx | 34 ++++++++++++---------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/app/board/[boardId]/_components/canvas.tsx b/app/board/[boardId]/_components/canvas.tsx index 6fee589..35deaf4 100644 --- a/app/board/[boardId]/_components/canvas.tsx +++ b/app/board/[boardId]/_components/canvas.tsx @@ -74,11 +74,10 @@ export const Canvas = ({ boardId }: CanvasProps) => { }); - useDisableScrollBounce(); const history = useHistory(); - // const undo = useUndo(); - // const redo = useRedo(); + const undo = useUndo(); + const redo = useRedo(); const canUndo = useCanUndo(); const canRedo = useCanRedo(); @@ -253,9 +252,6 @@ export const Canvas = ({ boardId }: CanvasProps) => { }, [canvasState.mode]); - - - const translateSelectedLayer = useMutation(( { storage, self }, point: Point @@ -289,8 +285,6 @@ export const Canvas = ({ boardId }: CanvasProps) => { canvasState, ]); - - const onResizeHandlePointerDown = useCallback(( corner: Side, initialBounds: XYWH,) => { @@ -310,6 +304,8 @@ export const Canvas = ({ boardId }: CanvasProps) => { corner }); + history.resume(); + }, [history]); const onWheel = useCallback((e: React.WheelEvent) => { @@ -449,6 +445,8 @@ export const Canvas = ({ boardId }: CanvasProps) => { setCanvasState({ mode: CanvasMode.Translating, current: point }); + history.resume(); + }, [ setCanvasState, camera, @@ -480,9 +478,14 @@ export const Canvas = ({ boardId }: CanvasProps) => { { if (e.ctrlKey || e.metaKey) { if (e.shiftKey) { - history.redo(); + if (canRedo) { + // TODO: Fix bug for the failure of redoing + redo(); + } } else { - history.undo(); + if (canUndo) { + undo(); + } } } break; @@ -492,15 +495,12 @@ export const Canvas = ({ boardId }: CanvasProps) => { } } - document.addEventListener("keydown", onKeyDown); return () => { document.removeEventListener("keydown", onKeyDown); }; - }, - [deleteLayers, history]); - + }, [deleteLayers, history]); return (
@@ -511,8 +511,10 @@ export const Canvas = ({ boardId }: CanvasProps) => { setCanvasState={setCanvasState} canUndo={canUndo} canRedo={canRedo} - undo={history.undo} - redo={history.redo} + undo={undo} + redo={redo} + // undo={history.undo} + // redo={history.redo} />