mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-07-27 18:12:29 +08:00
fix(ckeditor5): scroll to selection after undo/redo to keep cursor in view
This commit is contained in:
parent
e70b0d47c9
commit
9dd7f75ec0
@ -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
|
||||
];
|
||||
|
||||
/**
|
||||
|
18
packages/ckeditor5/src/plugins/scroll_on_undo_redo.ts
Normal file
18
packages/ckeditor5/src/plugins/scroll_on_undo_redo.ts
Normal 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);
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user