diff --git a/_regroup/ckeditor5-build-trilium/packages/ckeditor5-build-trilium/src/indent_block_shortcut.js b/_regroup/ckeditor5-build-trilium/packages/ckeditor5-build-trilium/src/indent_block_shortcut.js deleted file mode 100644 index 3a9d0fc6c..000000000 --- a/_regroup/ckeditor5-build-trilium/packages/ckeditor5-build-trilium/src/indent_block_shortcut.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * https://github.com/zadam/trilium/issues/978 - */ -export default function indentBlockShortcutPlugin(editor) { - editor.keystrokes.set( 'Tab', ( data, cancel ) => { - const command = editor.commands.get( 'indentBlock' ); - - if ( command.isEnabled && !isInTable() ) { - command.execute(); - cancel(); - } - } ); - - editor.keystrokes.set( 'Shift+Tab', ( data, cancel ) => { - const command = editor.commands.get( 'outdentBlock' ); - - if ( command.isEnabled && !isInTable() ) { - command.execute(); - cancel(); - } - } ); - - // in table TAB should switch cells - function isInTable() { - let el = editor.model.document.selection.getFirstPosition(); - - while (el) { - if (el.name === 'tableCell') { - return true; - } - - el = el.parent; - } - - return false; - } -} diff --git a/packages/ckeditor5/src/plugins.ts b/packages/ckeditor5/src/plugins.ts index 932dbcb8e..8b1152dc9 100644 --- a/packages/ckeditor5/src/plugins.ts +++ b/packages/ckeditor5/src/plugins.ts @@ -8,6 +8,7 @@ import InternalLinkPlugin from "./plugins/internallink.js"; import ReferenceLink from "./plugins/referencelink.js"; import RemoveFormatLinksPlugin from "./plugins/remove_format_links.js"; import SpecialCharactersEmojiPlugin from "./plugins/special_characters_emoji.js"; +import IndentBlockShortcutPlugin from "./plugins/indent_block_shortcut.js"; const TRILIUM_PLUGINS: typeof Plugin[] = [ CutToNotePlugin, @@ -17,7 +18,8 @@ const TRILIUM_PLUGINS: typeof Plugin[] = [ UploadimagePlugin, InternalLinkPlugin, RemoveFormatLinksPlugin, - SpecialCharactersEmojiPlugin + SpecialCharactersEmojiPlugin, + IndentBlockShortcutPlugin ]; export const COMMON_PLUGINS: typeof Plugin[] = [ @@ -78,7 +80,6 @@ export const COMMON_PLUGINS: typeof Plugin[] = [ // MarkdownImportPlugin, // MentionCustomization, // IncludeNote, - // indentBlockShortcutPlugin, PageBreak, GeneralHtmlSupport, TextPartLanguage, diff --git a/packages/ckeditor5/src/plugins/indent_block_shortcut.ts b/packages/ckeditor5/src/plugins/indent_block_shortcut.ts new file mode 100644 index 000000000..ce00462a5 --- /dev/null +++ b/packages/ckeditor5/src/plugins/indent_block_shortcut.ts @@ -0,0 +1,44 @@ +/** + * https://github.com/zadam/trilium/issues/978 + */ + +import { DocumentFragment, Element, Plugin, Position } from "ckeditor5"; + +export default class IndentBlockShortcutPlugin extends Plugin { + + init() { + this.editor.keystrokes.set( 'Tab', ( _, cancel ) => { + const command = this.editor.commands.get( 'indentBlock' ); + + if (command && command.isEnabled && !this.isInTable() ) { + command.execute(); + cancel(); + } + } ); + + this.editor.keystrokes.set( 'Shift+Tab', ( _, cancel ) => { + const command = this.editor.commands.get( 'outdentBlock' ); + + if (command && command.isEnabled && !this.isInTable() ) { + command.execute(); + cancel(); + } + } ); + } + + // in table TAB should switch cells + isInTable() { + let el: Position | Element | DocumentFragment | null = this.editor.model.document.selection.getFirstPosition(); + + while (el) { + if ("name" in el && el.name === 'tableCell') { + return true; + } + + el = "parent" in el ? el.parent : null; + } + + return false; + } + +}