diff --git a/src/ckeditor/ContextedPlugin.ts b/src/ckeditor/ContextedPlugin.ts index 47b4e9e..64f7664 100644 --- a/src/ckeditor/ContextedPlugin.ts +++ b/src/ckeditor/ContextedPlugin.ts @@ -68,7 +68,7 @@ export default class ContextedLinkEditing extends Plugin { _addAutocomplete() { // Copied from: node_modules/@ckeditor/ckeditor5-autoformat/src/inlineautoformatediting.js const editor = this.editor - // let autocomplete = false + let showAutocomplete = false editor.model.document.on('change', (_, batch) => { if (batch.isUndo || !batch.isLocal) return const model = editor.model @@ -81,11 +81,12 @@ export default class ContextedLinkEditing extends Plugin { if ( changes.length != 1 || (entry.type !== 'insert' && entry.type !== 'remove') || - entry.name != '$text' || + (entry.name != '$text' && entry.name != 'paragraph') || entry.length != 1 ) { return } + const focus = selection.focus const block = focus?.parent if (!block || !focus) return @@ -99,6 +100,7 @@ export default class ContextedLinkEditing extends Plugin { const autocompleteNode: any = cursorNodes.find((node) => node?.hasAttribute('autocomplete') ) + interface AutocompleteEvent { position?: any autocompleteText?: string @@ -107,9 +109,14 @@ export default class ContextedLinkEditing extends Plugin { if (Boolean(autocompleteText) || Boolean(autocompleteNode)) { if (Boolean(autocompleteText) !== Boolean(autocompleteNode)) { editor.execute('autocomplete') - if (autocompleteNode) - editor.model.document.fire('contextedLinkAutocomplete', { show: false }) + if (autocompleteNode) { + showAutocomplete = false + editor.model.document.fire('contextedLinkAutocomplete', { + show: showAutocomplete, + }) + } } else { + showAutocomplete = true const event: AutocompleteEvent = { position: getNodePosition( editor, @@ -119,11 +126,17 @@ export default class ContextedLinkEditing extends Plugin { ) ), autocompleteText: autocompleteNode.data, - show: true, + show: showAutocomplete, } editor.model.document.fire('contextedLinkAutocomplete', event) } } + if (!autocompleteNode && showAutocomplete) { + showAutocomplete = false + editor.model.document.fire('contextedLinkAutocomplete', { + show: showAutocomplete, + }) + } }) } }