From 8147fed93b5846db5beb43e1c3354ccc86464ba3 Mon Sep 17 00:00:00 2001 From: Vanessa Date: Sat, 29 Mar 2025 09:35:19 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/14466 --- app/src/protyle/wysiwyg/remove.ts | 10 ++++++++-- app/src/protyle/wysiwyg/transaction.ts | 23 ++++++++++++++++------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/app/src/protyle/wysiwyg/remove.ts b/app/src/protyle/wysiwyg/remove.ts index 5cd630bd6..048739daa 100644 --- a/app/src/protyle/wysiwyg/remove.ts +++ b/app/src/protyle/wysiwyg/remove.ts @@ -200,7 +200,9 @@ export const removeBlock = (protyle: IProtyle, blockElement: Element, range: Ran } if (!blockElement.previousElementSibling && blockElement.parentElement.getAttribute("data-type") === "NodeBlockquote") { - range.insertNode(document.createElement("wbr")); + if (type !== "Delete") { + range.insertNode(document.createElement("wbr")); + } const blockParentElement = blockElement.parentElement; blockParentElement.insertAdjacentElement("beforebegin", blockElement); if (blockParentElement.childElementCount === 1) { @@ -236,7 +238,11 @@ export const removeBlock = (protyle: IProtyle, blockElement: Element, range: Ran parentID: blockParentElement.getAttribute("data-node-id") }]); } - focusByWbr(blockElement, range); + if (type === "Delete") { + moveToPrevious(blockElement, range, true); + } else { + focusByWbr(blockElement, range); + } return; } diff --git a/app/src/protyle/wysiwyg/transaction.ts b/app/src/protyle/wysiwyg/transaction.ts index 28e53edee..ff1f10fc0 100644 --- a/app/src/protyle/wysiwyg/transaction.ts +++ b/app/src/protyle/wysiwyg/transaction.ts @@ -5,7 +5,7 @@ import {Constants} from "../../constants"; import {blockRender} from "../render/blockRender"; import {processRender} from "../util/processCode"; import {highlightRender} from "../render/highlightRender"; -import {hasClosestByAttribute, isInEmbedBlock} from "../util/hasClosest"; +import {hasClosestBlock, hasClosestByAttribute, isInEmbedBlock} from "../util/hasClosest"; import {setFold, zoomOut} from "../../menus/protyle"; import {disabledProtyle, enableProtyle, onGet} from "../util/onGet"; /// #if !MOBILE @@ -624,11 +624,6 @@ export const onTransaction = (protyle: IProtyle, operation: IOperation, isUndo: return; } if (operation.action === "move") { - let range; - if (isUndo && getSelection().rangeCount > 0) { - range = getSelection().getRangeAt(0); - range.insertNode(document.createElement("wbr")); - } /// #if !MOBILE if (updateElements.length === 0) { // 打开两个相同的文档 A、A1,从 A 拖拽块 B 到 A1,在后续 ws 处理中,无法获取到拖拽出去的 B @@ -649,6 +644,18 @@ export const onTransaction = (protyle: IProtyle, operation: IOperation, isUndo: }); } /// #endif + let range; + if (isUndo && getSelection().rangeCount > 0) { + range = getSelection().getRangeAt(0); + const rangeBlockElement = hasClosestBlock(range.startContainer); + if (rangeBlockElement) { + if (getContenteditableElement(rangeBlockElement)) { + range.insertNode(document.createElement("wbr")); + } else { + getContenteditableElement(updateElements[0]).insertAdjacentHTML("afterbegin", ""); + } + } + } let hasFind = false; if (operation.previousID && updateElements.length > 0) { Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${operation.previousID}"]`)).forEach(item => { @@ -691,7 +698,9 @@ export const onTransaction = (protyle: IProtyle, operation: IOperation, isUndo: return true; } }); - document.querySelector("wbr")?.remove(); + document.querySelectorAll("wbr").forEach(item => { + item.remove() + }) } else { focusByWbr(protyle.wysiwyg.element, range); }