From 4c057a901a663fa4393e14f0d97cb0fc0be520b2 Mon Sep 17 00:00:00 2001 From: yanmao <55792257+yanmao-cc@users.noreply.github.com> Date: Mon, 13 Dec 2021 00:18:22 +0800 Subject: [PATCH] fix(toPath & block.insert) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 评论标记获取路径错误,增加 range.toPath root 参数 - block 节点插入会跳转到下一行 --- .umirc.ts | 2 +- packages/engine/src/block/index.ts | 9 ++------- packages/engine/src/range.ts | 7 +++++-- packages/engine/src/types/range.ts | 2 ++ plugins/mark-range/src/index.ts | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.umirc.ts b/.umirc.ts index 09836bfd..83051f97 100644 --- a/.umirc.ts +++ b/.umirc.ts @@ -331,7 +331,7 @@ export default defineConfig({ '/api': getMenus({ base: '/api' }), }, analytics: { - baidu: 'c2e2e4254b6e4388806848d06be68a69', + baidu: '285af37fc760a8f865a67cb9120bfd8f', }, manifest: { fileName: 'manifest.json', diff --git a/packages/engine/src/block/index.ts b/packages/engine/src/block/index.ts index 6bdae701..415ffb63 100644 --- a/packages/engine/src/block/index.ts +++ b/packages/engine/src/block/index.ts @@ -668,13 +668,8 @@ class Block implements BlockModelInterface { } if (container && container.length > 0) { - if (rightNodes.length > 0) { - safeRange.setStartAfter(container); - safeRange.collapse(true); - } else { - safeRange.select(container, true); - safeRange.collapse(false); - } + safeRange.select(container, true); + safeRange.collapse(false); } if (selection.focus) selection.focus.remove(); if (selection.anchor) selection.anchor.remove(); diff --git a/packages/engine/src/range.ts b/packages/engine/src/range.ts index 874ab233..bd54af84 100644 --- a/packages/engine/src/range.ts +++ b/packages/engine/src/range.ts @@ -767,7 +767,10 @@ class Range implements RangeInterface { }; } - toPath(includeCardCursor: boolean = false) { + toPath( + includeCardCursor: boolean = false, + root: NodeInterface = this.editor.container, + ) { const range = this.cloneRange(); const node = range.commonAncestorNode; if (!node.isRoot() && !node.inEditor()) return; @@ -777,7 +780,7 @@ class Range implements RangeInterface { let rootBeginId: string = node.attributes(DATA_ID); let rootBeginIndex: number = rootBeginId ? 0 : -1; const path = node.getPath( - this.editor.container, + root, node.parent()?.isRoot() ? undefined : this.filterPath(includeCardCursor), diff --git a/packages/engine/src/types/range.ts b/packages/engine/src/types/range.ts index 5ec34c03..0854709a 100644 --- a/packages/engine/src/types/range.ts +++ b/packages/engine/src/types/range.ts @@ -305,8 +305,10 @@ export interface RangeInterface { /** * 获取光标路径 * @param includeCardCursor 是否包含卡片两侧光标 + * @param root 根节点,默认编辑器根节点 */ toPath( includeCardCursor?: boolean, + root?: NodeInterface, ): { start: RangePath; end: RangePath } | undefined; } diff --git a/plugins/mark-range/src/index.ts b/plugins/mark-range/src/index.ts index f26121c2..bb5bd883 100644 --- a/plugins/mark-range/src/index.ts +++ b/plugins/mark-range/src/index.ts @@ -662,7 +662,7 @@ export default class extends MarkPlugin { const rangePath = rangeClone .shrinkToElementNode() .shrinkToTextNode() - .toPath(); + .toPath(undefined, container); paths.push({ id: id.split(','), path: rangePath