diff --git a/packages/slate-react/src/plugins/after.js b/packages/slate-react/src/plugins/after.js index 80520c558..575f04d9e 100644 --- a/packages/slate-react/src/plugins/after.js +++ b/packages/slate-react/src/plugins/after.js @@ -122,7 +122,20 @@ function AfterPlugin() { // Once the fake cut content has successfully been added to the clipboard, // delete the content in the current selection. window.requestAnimationFrame(() => { - editor.change(c => c.delete()) + // If user cuts a void block node or a void inline node, + // manually removes it since selection is collapsed in this case. + const { value } = change + const { endBlock, endInline, isCollapsed } = value + const isVoidBlock = endBlock && endBlock.isVoid && isCollapsed + const isVoidInline = endInline && endInline.isVoid && isCollapsed + + if (isVoidBlock) { + editor.change(c => c.removeNodeByKey(endBlock.key)) + } else if (isVoidInline) { + editor.change(c => c.removeNodeByKey(endInline.key)) + } else { + editor.change(c => c.delete()) + } }) }