稳定编辑器快捷键监听

按稳定的撤销重做回调绑定全局监听\n尊重已被其他处理器阻止的键盘事件
This commit is contained in:
2026-09-03 11:54:59 +08:00
parent 95f5904b92
commit 37c465dbc3
@@ -77,6 +77,8 @@ export default function UiEditorPage({
Boolean(session.save.loadError) ||
session.save.persistedRevision === null ||
session.save.isLocked;
const historyUndo = session.history.undo;
const historyRedo = session.history.redo;
useEffect(() => {
if (session.save.isDirty) setGenerateSuccess(null);
@@ -92,6 +94,7 @@ export default function UiEditorPage({
};
const onKeyDown = (event: KeyboardEvent) => {
if (
event.defaultPrevented ||
isEditableTarget(event.target) ||
(!event.ctrlKey && !event.metaKey)
) {
@@ -101,15 +104,15 @@ export default function UiEditorPage({
const isRedo =
(event.key.toLowerCase() === 'z' && event.shiftKey) ||
(event.ctrlKey && event.key.toLowerCase() === 'y');
if (isUndo && session.history.undo()) {
if (isUndo && historyUndo()) {
event.preventDefault();
} else if (isRedo && session.history.redo()) {
} else if (isRedo && historyRedo()) {
event.preventDefault();
}
};
window.addEventListener('keydown', onKeyDown);
return () => window.removeEventListener('keydown', onKeyDown);
}, [session.history]);
}, [historyRedo, historyUndo]);
async function save(afterReturn = false) {
if (await session.save.save()) {