Просмотр исходного кода

:art: https://github.com/siyuan-note/siyuan/issues/13131

Vanessa 8 месяцев назад
Родитель
Сommit
2735e16d69

+ 0 - 3
app/src/layout/dock/Backlink.ts

@@ -465,9 +465,6 @@ export class Backlink extends Model {
         if (!this.blockId) {
             return;
         }
-        this.editors.forEach(item => {
-            item.destroy();
-        });
         const element = this.element.querySelector('.block__icon[data-type="refresh"] svg');
         element.classList.add("fn__rotate");
         fetchPost("/api/ref/refreshBacklink", {

+ 19 - 9
app/src/protyle/index.ts

@@ -41,6 +41,7 @@ import {focusBlock, getEditorRange} from "./util/selection";
 import {hasClosestBlock} from "./util/hasClosest";
 import {setStorageVal} from "./util/compatibility";
 import {merge} from "./util/merge";
+import {getAllModels} from "../layout/getAll";
 
 export class Protyle {
 
@@ -125,15 +126,24 @@ export class Protyle {
                             }
                             break;
                         case "transactions":
-                            data.data[0].doOperations.forEach((item: IOperation) => {
-                                if (!this.protyle.preview.element.classList.contains("fn__none") &&
-                                    item.action !== "updateAttrs"   // 预览模式下点击只读
-                                ) {
-                                    this.protyle.preview.render(this.protyle);
-                                } else {
-                                    onTransaction(this.protyle, item, false);
-                                }
-                            });
+                            if (options.backlinkData) {
+                                getAllModels().backlink.find(item => {
+                                    if (item.element.contains(this.protyle.element)) {
+                                        item.refresh();
+                                        return true;
+                                    }
+                                });
+                            } else {
+                                data.data[0].doOperations.forEach((item: IOperation) => {
+                                    if (!this.protyle.preview.element.classList.contains("fn__none") &&
+                                        item.action !== "updateAttrs"   // 预览模式下点击只读
+                                    ) {
+                                        this.protyle.preview.render(this.protyle);
+                                    } else {
+                                        onTransaction(this.protyle, item, false);
+                                    }
+                                });
+                            }
                             break;
                         case "readonly":
                             window.siyuan.config.editor.readOnly = data.data;

+ 7 - 0
app/src/protyle/util/editorCommonEvent.ts

@@ -61,6 +61,13 @@ const moveToNew = (protyle: IProtyle, sourceElements: Element[], targetElement:
             topSourceElement = getTopAloneElement(item);
             if (topSourceElement.isSameNode(item)) {
                 topSourceElement = undefined;
+                // 单个缩放或反链面板中的列表项拖拽到包含该列表的编辑器中会导致残留的 list
+                Array.from(protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${item.getAttribute("data-node-id")}"]`)).find((targetItem: HTMLElement) => {
+                    if (!isInEmbedBlock(targetItem) && targetItem.parentElement.querySelectorAll(".li").length === 1) {
+                        topSourceElement = targetItem.parentElement;
+                        return true;
+                    }
+                });
             }
         }
         const copyId = Lute.NewNodeID();

+ 1 - 1
app/src/protyle/wysiwyg/getBlock.ts

@@ -74,7 +74,7 @@ export const getContenteditableElement = (element: Element) => {
     if (editableElement && !hasClosestByAttribute(editableElement, "data-type", "NodeBlockQueryEmbed")) {
         return editableElement;
     }
-    return false;
+    return undefined;
 };
 
 export const isNotEditBlock = (element: Element) => {