From 8e7b6d13affe9d3c0a372eb94b70d0e858ffa999 Mon Sep 17 00:00:00 2001 From: Marco Crapts Date: Mon, 1 May 2023 14:26:13 +0200 Subject: [PATCH] emit autocomplete text --- src/ckeditor/CKEditor.ts | 15 ++++++++++++++- src/ckeditor/ContextedPlugin.ts | 8 +++++++- src/components/NoteEditor.vue | 5 +++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/ckeditor/CKEditor.ts b/src/ckeditor/CKEditor.ts index f84d02b..ad6594f 100644 --- a/src/ckeditor/CKEditor.ts +++ b/src/ckeditor/CKEditor.ts @@ -56,7 +56,16 @@ export default defineComponent({ }, }, - emits: ['ready', 'destroy', 'blur', 'focus', 'input', 'update:modelValue', 'click'], + emits: [ + 'ready', + 'destroy', + 'blur', + 'focus', + 'input', + 'update:modelValue', + 'click', + 'contextedLinkAutocomplete', + ], data(): CKEditorComponentData { return { @@ -214,6 +223,10 @@ export default defineComponent({ editor.editing.view.document.on('click', (evt, data) => { this.$emit('click', { evt, data }, editor) }) + + editor.model.document.on('contextedLinkAutocomplete', (evt, data) => { + this.$emit('contextedLinkAutocomplete', { evt, data }) + }) }, }, diff --git a/src/ckeditor/ContextedPlugin.ts b/src/ckeditor/ContextedPlugin.ts index 6eabc76..5508278 100644 --- a/src/ckeditor/ContextedPlugin.ts +++ b/src/ckeditor/ContextedPlugin.ts @@ -88,7 +88,13 @@ export default class ContextedLinkEditing extends Plugin { model.createRange(model.createPositionAt(block, 0), focus), model ) - console.log(text, range) + const inputText = (text as string).split(']]').at(-1) + const autocompleteOpenMatch = (inputText as string).match(/(?<=\[\[).+/g) + const autocompleteCloseMatch = (inputText as string).match(/(?<=\[\[).+?(?=]])/g) + const openAutocomplete = autocompleteOpenMatch && !autocompleteCloseMatch + if (openAutocomplete) { + editor.model.document.fire('contextedLinkAutocomplete', autocompleteOpenMatch) + } }) } } diff --git a/src/components/NoteEditor.vue b/src/components/NoteEditor.vue index 09e0051..6a8bcd7 100644 --- a/src/components/NoteEditor.vue +++ b/src/components/NoteEditor.vue @@ -59,6 +59,10 @@ const handleClick = ({ data }: { data: any }) => { const note = getNoteByTitle(noteTitle) if (note) activeNote.value = note } + +const handleAutocomplete = (event: any) => { + console.log(event.data) +}