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