update autocomplete

This commit is contained in:
2023-05-04 23:00:37 +02:00
parent 82e4f25b04
commit e606296585

View File

@@ -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,
})
}
})
}
}