mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-17 09:30:48 +08:00
This commit is contained in:
parent
8324957783
commit
9fee732caa
@ -5,7 +5,7 @@ import {Constants} from "../../constants";
|
|||||||
import {blockRender} from "../render/blockRender";
|
import {blockRender} from "../render/blockRender";
|
||||||
import {processRender} from "../util/processCode";
|
import {processRender} from "../util/processCode";
|
||||||
import {highlightRender} from "../render/highlightRender";
|
import {highlightRender} from "../render/highlightRender";
|
||||||
import {hasClosestBlock, hasClosestByAttribute, isInEmbedBlock} from "../util/hasClosest";
|
import {hasClosestBlock, hasClosestByAttribute, hasTopClosestByAttribute, isInEmbedBlock} from "../util/hasClosest";
|
||||||
import {setFold, zoomOut} from "../../menus/protyle";
|
import {setFold, zoomOut} from "../../menus/protyle";
|
||||||
import {disabledProtyle, enableProtyle, onGet} from "../util/onGet";
|
import {disabledProtyle, enableProtyle, onGet} from "../util/onGet";
|
||||||
/// #if !MOBILE
|
/// #if !MOBILE
|
||||||
@ -194,6 +194,7 @@ const promiseTransaction = () => {
|
|||||||
if (operation.previousID) {
|
if (operation.previousID) {
|
||||||
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${operation.previousID}"]`)).forEach(item => {
|
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${operation.previousID}"]`)).forEach(item => {
|
||||||
if (item.nextElementSibling?.getAttribute("data-node-id") !== operation.id &&
|
if (item.nextElementSibling?.getAttribute("data-node-id") !== operation.id &&
|
||||||
|
!item.contains(range.startContainer) && // 当前操作块不再进行操作
|
||||||
!hasClosestByAttribute(item, "data-node-id", operation.id) && // 段落转列表会在段落后插入新列表
|
!hasClosestByAttribute(item, "data-node-id", operation.id) && // 段落转列表会在段落后插入新列表
|
||||||
!isInEmbedBlock(item)) {
|
!isInEmbedBlock(item)) {
|
||||||
item.insertAdjacentHTML("afterend", operation.data);
|
item.insertAdjacentHTML("afterend", operation.data);
|
||||||
@ -668,11 +669,19 @@ export const onTransaction = (protyle: IProtyle, operation: IOperation, isUndo:
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (updateElements.length > 0) {
|
} else if (updateElements.length > 0) {
|
||||||
|
const parentElement = protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${operation.parentID}"]`)
|
||||||
if (!protyle.options.backlinkData && operation.parentID === protyle.block.parentID) {
|
if (!protyle.options.backlinkData && operation.parentID === protyle.block.parentID) {
|
||||||
protyle.wysiwyg.element.prepend(processClonePHElement(updateElements[0].cloneNode(true) as Element));
|
protyle.wysiwyg.element.prepend(processClonePHElement(updateElements[0].cloneNode(true) as Element));
|
||||||
hasFind = true;
|
hasFind = true;
|
||||||
|
} else if (parentElement.length === 0 && protyle.options.backlinkData && isUndo && getSelection().rangeCount > 0) {
|
||||||
|
// 反链面板删除超级块中的段落块后撤销再重做 https://github.com/siyuan-note/siyuan/issues/14496#issuecomment-2771372486
|
||||||
|
const topBlockElement = hasTopClosestByAttribute(getSelection().getRangeAt(0).startContainer, "data-node-id", null)
|
||||||
|
if (topBlockElement) {
|
||||||
|
topBlockElement.before(processClonePHElement(updateElements[0].cloneNode(true) as Element));
|
||||||
|
hasFind = true;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${operation.parentID}"]`)).forEach(item => {
|
parentElement.forEach(item => {
|
||||||
if (!isInEmbedBlock(item)) {
|
if (!isInEmbedBlock(item)) {
|
||||||
// 列表特殊处理
|
// 列表特殊处理
|
||||||
if (item.firstElementChild?.classList.contains("protyle-action")) {
|
if (item.firstElementChild?.classList.contains("protyle-action")) {
|
||||||
|
Loading…
Reference in New Issue
Block a user