From 13b3f9c78397d3cddcb9caca375d0844224c7571 Mon Sep 17 00:00:00 2001 From: liangxiwei Date: Fri, 6 Aug 2021 01:38:31 +0800 Subject: [PATCH] =?UTF-8?q?Do=20not=20remove=20empty=20node=20in=20merge?= =?UTF-8?q?=20operation=20if=20it=20is=20first=20children=20i=E2=80=A6=20(?= =?UTF-8?q?#4287)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Do not remove empty node in merge operation if it is first children in parent(#4228) * Create merge-nodes-issue * fix typo in changeset Co-authored-by: Dylan Schiemann --- .changeset/merge-nodes-issue | 5 +++++ packages/slate/src/transforms/node.ts | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .changeset/merge-nodes-issue diff --git a/.changeset/merge-nodes-issue b/.changeset/merge-nodes-issue new file mode 100644 index 000000000..b0e6a4de2 --- /dev/null +++ b/.changeset/merge-nodes-issue @@ -0,0 +1,5 @@ +--- +"slate": patch +--- + +Do not remove empty node in merge operation if it is first children in its parent. diff --git a/packages/slate/src/transforms/node.ts b/packages/slate/src/transforms/node.ts index 8746f500d..e90412b32 100644 --- a/packages/slate/src/transforms/node.ts +++ b/packages/slate/src/transforms/node.ts @@ -422,9 +422,12 @@ export const NodeTransforms: NodeTransforms = { // of merging the two. This is a common rich text editor behavior to // prevent losing formatting when deleting entire nodes when you have a // hanging selection. + // if prevNode is first child in parent,don't remove it. if ( (Element.isElement(prevNode) && Editor.isEmpty(editor, prevNode)) || - (Text.isText(prevNode) && prevNode.text === '') + (Text.isText(prevNode) && + prevNode.text === '' && + prevPath[prevPath.length - 1] !== 0) ) { Transforms.removeNodes(editor, { at: prevPath, voids }) } else {