From c397d0cdd7e9b88c6b921980100a04b514771290 Mon Sep 17 00:00:00 2001 From: Yifeng Wang Date: Mon, 30 Oct 2017 12:01:22 -0500 Subject: [PATCH] Delete single void node when cutting (#1336) * fix deletion on cut void nodes * detect isCollapsed on paste * update comment --- packages/slate-react/src/plugins/after.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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()) + } }) }