From c03eed504962821cc297f6b14acdaadcdd7fa89b Mon Sep 17 00:00:00 2001 From: Vanessa Date: Wed, 24 Dec 2025 12:18:06 +0800 Subject: [PATCH] :art: https://github.com/siyuan-note/siyuan/issues/16680 --- app/src/protyle/wysiwyg/getBlock.ts | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/app/src/protyle/wysiwyg/getBlock.ts b/app/src/protyle/wysiwyg/getBlock.ts index 79a6a3a03..cef6d428c 100644 --- a/app/src/protyle/wysiwyg/getBlock.ts +++ b/app/src/protyle/wysiwyg/getBlock.ts @@ -79,14 +79,29 @@ export const getNoContainerElement = (element: Element) => { }; export const getContenteditableElement = (element: Element) => { - if (!element || (element.getAttribute("contenteditable") === "true") && !element.classList.contains("protyle-wysiwyg")) { + if (!element) { return element; } - const editableElement = element.querySelector('[contenteditable="true"]'); - if (editableElement && !hasClosestByAttribute(editableElement, "data-type", "NodeBlockQueryEmbed")) { - return editableElement; + let blockElement = element; + if (!blockElement.getAttribute("data-node-id")) { + blockElement = element.querySelector("[data-node-id]"); + if (!blockElement) { + blockElement = hasClosestBlock(blockElement) as Element; + } + } + if (!blockElement) { + return element; + } + const type = element.getAttribute("data-type"); + if (["NodeParagraph", "NodeHeading"].includes(type)) { + return element.firstElementChild; + } else if ("NodeTable" === type) { + return element.querySelector("table"); + } else if ("NodeCodeBlock" === type) { + return element.querySelector(".hljs").lastElementChild; + } else { + return element; } - return undefined; }; export const isNotEditBlock = (element: Element) => {