diff --git a/packages/suggestion/src/suggestion.ts b/packages/suggestion/src/suggestion.ts index a1763448..cff3fa7d 100644 --- a/packages/suggestion/src/suggestion.ts +++ b/packages/suggestion/src/suggestion.ts @@ -22,7 +22,9 @@ export interface SuggestionOptions { editor: Editor, }) => any[] | Promise, render?: () => { + onBeforeStart?: (props: SuggestionProps) => void onStart?: (props: SuggestionProps) => void, + onBeforeUpdate?: (props: SuggestionProps) => void onUpdate?: (props: SuggestionProps) => void, onExit?: (props: SuggestionProps) => void, onKeyDown?: (props: SuggestionKeyDownProps) => boolean, @@ -104,12 +106,7 @@ export function Suggestion({ range: state.range, query: state.query, text: state.text, - items: (handleChange || handleStart) - ? await items({ - editor, - query: state.query, - }) - : [], + items: [], command: commandProps => { command({ editor, @@ -132,6 +129,21 @@ export function Suggestion({ : null, } + if (handleStart) { + renderer?.onBeforeStart?.(props) + } + + if (handleChange) { + renderer?.onBeforeUpdate?.(props) + } + + if (handleChange || handleStart) { + props.items = await items({ + editor, + query: state.query, + }) + } + if (handleExit) { renderer?.onExit?.(props) }