From de44bd68ab01e5ffa8d6a8dc5d566b0cdb8d08e6 Mon Sep 17 00:00:00 2001 From: Hufe921 Date: Sun, 7 Jul 2024 17:12:13 +0800 Subject: [PATCH] feat: insert element boundary optimization #669 --- src/editor/core/command/CommandAdapt.ts | 4 +++- src/editor/core/event/handlers/keydown/enter.ts | 6 ++++-- src/editor/utils/element.ts | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/editor/core/command/CommandAdapt.ts b/src/editor/core/command/CommandAdapt.ts index ced065a..a5b861b 100644 --- a/src/editor/core/command/CommandAdapt.ts +++ b/src/editor/core/command/CommandAdapt.ts @@ -2263,7 +2263,9 @@ export class CommandAdapt { // 格式化上下文信息 const { startIndex } = this.range.getRange() const elementList = this.draw.getElementList() - formatElementContext(elementList, cloneElementList, startIndex) + formatElementContext(elementList, cloneElementList, startIndex, { + isBreakWhenWrap: true + }) this.draw.insertElementList(cloneElementList) } diff --git a/src/editor/core/event/handlers/keydown/enter.ts b/src/editor/core/event/handlers/keydown/enter.ts index 7a8d0a1..5ef46d9 100644 --- a/src/editor/core/event/handlers/keydown/enter.ts +++ b/src/editor/core/event/handlers/keydown/enter.ts @@ -38,6 +38,10 @@ export function enter(evt: KeyboardEvent, host: CanvasEvent) { if (evt.shiftKey && startElement.listId) { enterText.listWrap = true } + // 格式化上下文 + formatElementContext(elementList, [enterText], startIndex, { + isBreakWhenWrap: true + }) // 标题结尾处回车无需格式化及样式复制 if ( !( @@ -45,8 +49,6 @@ export function enter(evt: KeyboardEvent, host: CanvasEvent) { endElement.titleId !== elementList[endIndex + 1]?.titleId ) ) { - // 格式化上下文 - formatElementContext(elementList, [enterText], startIndex) // 复制样式属性 const copyElement = getAnchorElement(elementList, endIndex) if (copyElement) { diff --git a/src/editor/utils/element.ts b/src/editor/utils/element.ts index d26d34a..fded443 100644 --- a/src/editor/utils/element.ts +++ b/src/editor/utils/element.ts @@ -826,7 +826,7 @@ export function formatElementContext( if ( isBreakWhenWrap && !copyElement.listId && - /^\n/.test(targetElement.value) + START_LINE_BREAK_REG.test(targetElement.value) ) { isBreakWarped = true }