diff --git a/packages/engine/src/block/index.ts b/packages/engine/src/block/index.ts index 3e6131c8..a984b276 100644 --- a/packages/engine/src/block/index.ts +++ b/packages/engine/src/block/index.ts @@ -518,6 +518,7 @@ class Block implements BlockModelInterface { block: NodeInterface | Node | string, range?: RangeInterface, splitNode?: (node: NodeInterface) => NodeInterface, + removeCurrentEmptyBlock: boolean = false, ) { if (!isEngine(this.editor)) return; const { change, node, list, inline } = this.editor; @@ -543,7 +544,7 @@ class Block implements BlockModelInterface { } // 当前选择范围在段落外面 if (container.isEditable()) { - node.insert(block, safeRange); + node.insert(block, safeRange, removeCurrentEmptyBlock); safeRange.collapse(false); if (!range) change.apply(safeRange); return; @@ -678,7 +679,7 @@ class Block implements BlockModelInterface { if (selection.focus) selection.focus.remove(); if (selection.anchor) selection.anchor.remove(); // 插入新 Block - node.insert(block, safeRange); + node.insert(block, safeRange, removeCurrentEmptyBlock); if (!range) change.apply(safeRange); } /** diff --git a/packages/engine/src/card/index.ts b/packages/engine/src/card/index.ts index 74bdc370..d9f14182 100644 --- a/packages/engine/src/card/index.ts +++ b/packages/engine/src/card/index.ts @@ -247,18 +247,23 @@ class CardModel implements CardModelInterface { if (isInline) { inline.insert(card.root, range); } else { - block.insert(card.root, range, (container) => { - //获取最外层的block嵌套节点 - let blockParent = container.parent(); - while (blockParent && !blockParent.isEditable()) { - container = blockParent; - const parent = blockParent.parent(); - if (parent && node.isBlock(parent)) { - blockParent = parent; - } else break; - } - return container; - }); + block.insert( + card.root, + range, + (container) => { + //获取最外层的block嵌套节点 + let blockParent = container.parent(); + while (blockParent && !blockParent.isEditable()) { + container = blockParent; + const parent = blockParent.parent(); + if (parent && node.isBlock(parent)) { + blockParent = parent; + } else break; + } + return container; + }, + true, + ); } this.components.push(card); card.focus(range); diff --git a/packages/engine/src/types/block.ts b/packages/engine/src/types/block.ts index 48b85627..d75783c4 100644 --- a/packages/engine/src/types/block.ts +++ b/packages/engine/src/types/block.ts @@ -63,6 +63,7 @@ export interface BlockModelInterface { block: NodeInterface | Node | string, range?: RangeInterface, splitNode?: (node: NodeInterface) => NodeInterface, + removeCurrentEmptyBlock?: boolean, ): void; /** * 设置当前光标所在的所有block节点为新的节点或设置新属性