fix(memo-editor): scope Cmd+Enter save to the active editor (#5745)

Co-authored-by: memoclaw <265580040+memoclaw@users.noreply.github.com>
This commit is contained in:
memoclaw 2026-03-20 08:43:01 +08:00 committed by GitHub
parent e0334cf0a8
commit 05810e7882
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 18 additions and 5 deletions

View File

@ -5,16 +5,29 @@ interface UseKeyboardOptions {
onSave: () => void;
}
export const useKeyboard = (_editorRef: React.RefObject<EditorRefActions | null>, options: UseKeyboardOptions) => {
export const useKeyboard = (editorRef: React.RefObject<EditorRefActions | null>, options: UseKeyboardOptions) => {
useEffect(() => {
const handleKeyDown = (event: KeyboardEvent) => {
if ((event.metaKey || event.ctrlKey) && event.key === "Enter") {
event.preventDefault();
options.onSave();
if (!(event.metaKey || event.ctrlKey) || event.key !== "Enter") {
return;
}
const editor = editorRef.current?.getEditor();
if (!editor) {
return;
}
const activeElement = document.activeElement;
const target = event.target;
if (activeElement !== editor && target !== editor) {
return;
}
event.preventDefault();
options.onSave();
};
window.addEventListener("keydown", handleKeyDown);
return () => window.removeEventListener("keydown", handleKeyDown);
}, [options]);
}, [editorRef, options]);
};