fix(ckeditor5): scroll to selection after undo/redo to keep cursor in view

This commit is contained in:
SiriusXT 2025-06-07 16:51:10 +08:00
parent e70b0d47c9
commit 9dd7f75ec0
2 changed files with 21 additions and 1 deletions

View File

@ -27,6 +27,7 @@ import "@triliumnext/ckeditor5-math/index.css";
import CodeBlockToolbar from "./plugins/code_block_toolbar.js";
import CodeBlockLanguageDropdown from "./plugins/code_block_language_dropdown.js";
import MoveBlockUpDownPlugin from "./plugins/move_block_updown.js";
import ScrollOnUndoRedoPlugin from "./plugins/scroll_on_undo_redo.js"
/**
* Plugins that are specific to Trilium and not part of the CKEditor 5 core, included in both text editors but not in the attribute editor.
@ -46,7 +47,8 @@ const TRILIUM_PLUGINS: typeof Plugin[] = [
SyntaxHighlighting,
CodeBlockLanguageDropdown,
CodeBlockToolbar,
MoveBlockUpDownPlugin
MoveBlockUpDownPlugin,
ScrollOnUndoRedoPlugin
];
/**

View File

@ -0,0 +1,18 @@
import { Plugin } from 'ckeditor5';
export default class ScrollOnUndoRedoPlugin extends Plugin {
init() {
const editor = this.editor;
const scrollToSelection = () => {
// Ensure scroll happens in sync with DOM updates
requestAnimationFrame(() => {
editor.editing.view.scrollToTheSelection();
});
};
// Scroll to selection after undo/redo to keep cursor in view
editor.commands.get('undo')?.on('execute', scrollToSelection);
editor.commands.get('redo')?.on('execute', scrollToSelection);
}
}