diff --git a/packages/slate-react/src/components/editable.tsx b/packages/slate-react/src/components/editable.tsx index 26d6a52af..1529246b0 100644 --- a/packages/slate-react/src/components/editable.tsx +++ b/packages/slate-react/src/components/editable.tsx @@ -646,13 +646,27 @@ export const Editable = (props: EditableProps) => { }, [attributes.onCompositionEnd] )} + onCompositionUpdate={useCallback( + (event: React.CompositionEvent) => { + if ( + hasEditableTarget(editor, event.target) && + !isEventHandled(event, attributes.onCompositionUpdate) + ) { + state.isComposing = true + } + }, + [attributes.onCompositionUpdate] + )} onCompositionStart={useCallback( (event: React.CompositionEvent) => { if ( hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart) ) { - state.isComposing = true + const { selection } = editor + if (selection && Range.isExpanded(selection)) { + Editor.deleteFragment(editor) + } } }, [attributes.onCompositionStart]