diff --git a/shared/editor/extensions/Suggestion.tsx b/shared/editor/extensions/Suggestion.tsx index 64bdf2d76..745358a6a 100644 --- a/shared/editor/extensions/Suggestion.tsx +++ b/shared/editor/extensions/Suggestion.tsx @@ -1,6 +1,6 @@ import { InputRule } from "prosemirror-inputrules"; import { NodeType, Schema } from "prosemirror-model"; -import { Plugin } from "prosemirror-state"; +import { EditorState, Plugin } from "prosemirror-state"; import { isInTable } from "prosemirror-tables"; import Extension from "../lib/Extension"; import { SuggestionsMenuPlugin } from "../plugins/Suggestions"; @@ -12,6 +12,27 @@ export default class Suggestion extends Extension { return [new SuggestionsMenuPlugin(this.editor, this.options)]; } + keys() { + return { + Backspace: (state: EditorState) => { + const textBeforeCursor = state.doc.textBetween( + 0, + Math.max(0, state.selection.from - 1) + ); + + if (this.options.openRegex.test(textBeforeCursor)) { + return false; + } + + this.editor.events.emit( + EventType.SuggestionsMenuClose, + this.options.type + ); + return false; + }, + }; + } + inputRules = (_options: { type: NodeType; schema: Schema }) => [ new InputRule(this.options.openRegex, (state, match) => { const { parent } = state.selection.$from;