浏览代码

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

Vanessa 9 月之前
父节点
当前提交
6a8ce50971
共有 2 个文件被更改,包括 30 次插入4 次删除
  1. 9 4
      app/src/protyle/render/av/blockAttr.ts
  2. 21 0
      app/src/protyle/wysiwyg/index.ts

+ 9 - 4
app/src/protyle/render/av/blockAttr.ts

@@ -10,6 +10,7 @@ import {openMenuPanel} from "./openMenuPanel";
 import {uploadFiles} from "../../upload";
 import {openLink} from "../../../editor/openLink";
 import {editAssetItem} from "./asset";
+import {previewImage} from "../../preview/image";
 
 const genAVRollupHTML = (value: IAVCellValue) => {
     let html = "";
@@ -289,9 +290,9 @@ class="fn__flex-1 fn__flex${["url", "text", "number", "email", "phone", "block"]
                         const textPlain = event.clipboardData.getData("text/plain");
                         const target = event.target as HTMLElement;
                         const blockElement = hasClosestBlock(target)
-                        const cellsElement = hasClosestByAttribute(target, "data-type","mAsset")
+                        const cellsElement = hasClosestByAttribute(target, "data-type", "mAsset")
                         if (blockElement && cellsElement && textPlain) {
-                            updateCellsValue(protyle, blockElement as HTMLElement,  textPlain, [cellsElement], undefined, protyle.lute.Md2BlockDOM(textPlain));
+                            updateCellsValue(protyle, blockElement as HTMLElement, textPlain, [cellsElement], undefined, protyle.lute.Md2BlockDOM(textPlain));
                             document.querySelector(".av__panel")?.remove();
                         }
                     }
@@ -359,7 +360,7 @@ const openEdit = (protyle: IProtyle, element: HTMLElement, event: MouseEvent) =>
     while (target && !element.isSameNode(target)) {
         const type = target.getAttribute("data-type");
         if (target.classList.contains("av__celltext--url") || target.classList.contains("av__cellassetimg")) {
-            if (event.type === "contextmenu") {
+            if (event.type === "contextmenu" || (!target.dataset.url && target.tagName !== "IMG")) {
                 let index = 0;
                 Array.from(target.parentElement.children).find((item, i) => {
                     if (item.isSameNode(target)) {
@@ -378,7 +379,11 @@ const openEdit = (protyle: IProtyle, element: HTMLElement, event: MouseEvent) =>
                     rect: target.getBoundingClientRect()
                 });
             } else {
-                openLink(protyle, target.dataset.url, event, event.ctrlKey || event.metaKey);
+                if (target.tagName === "IMG") {
+                    previewImage(target.getAttribute("src"));
+                } else {
+                    openLink(protyle, target.dataset.url, event, event.ctrlKey || event.metaKey);
+                }
             }
             event.stopPropagation();
             event.preventDefault();

+ 21 - 0
app/src/protyle/wysiwyg/index.ts

@@ -2234,6 +2234,27 @@ export class WYSIWYG {
                 return;
             }
 
+            if (aElement && aElement.classList.contains("av__celltext--url") && !aLink) {
+                let index = 0;
+                Array.from(aElement.parentElement.children).find((item, i) => {
+                    if (item === aElement) {
+                        index = i;
+                        return true;
+                    }
+                });
+                editAssetItem({
+                    protyle,
+                    cellElements: [aElement.parentElement],
+                    blockElement: hasClosestBlock(aElement) as HTMLElement,
+                    content: aElement.getAttribute("data-url"),
+                    type: "file",
+                    name: aElement.getAttribute("data-name"),
+                    index,
+                    rect: aElement.getBoundingClientRect()
+                });
+                return;
+            }
+
             const tagElement = hasClosestByAttribute(event.target, "data-type", "tag");
             if (tagElement && !event.altKey) {
                 /// #if !MOBILE