diff --git a/app/src/menus/protyle.ts b/app/src/menus/protyle.ts index ab385f68f..a069cf906 100644 --- a/app/src/menus/protyle.ts +++ b/app/src/menus/protyle.ts @@ -58,6 +58,7 @@ import {hintRenderAssets} from "../protyle/hint/extend"; import {Menu} from "../plugin/Menu"; import {getFirstBlock} from "../protyle/wysiwyg/getBlock"; import {popSearch} from "../mobile/menu/search"; +import {showMessage} from "../dialog/message"; const renderAssetList = (element: Element, k: string, position: IPosition, exts: string[] = []) => { fetchPost("/api/search/searchAsset", { @@ -990,13 +991,31 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme window.siyuan.menus.menu.append(new MenuItem({ iconHTML: "", type: "readonly", - label: `
${window.siyuan.languages.imageURL}
+ label: `
+ ${window.siyuan.languages.imageURL} + + + + +
-
${window.siyuan.languages.title}
+
+ ${window.siyuan.languages.title} + + + + +
-
${window.siyuan.languages.tooltipText}
+
+ ${window.siyuan.languages.tooltipText} + + + + +
`, bind(element) { element.style.maxWidth = "none"; @@ -1025,6 +1044,17 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme mathRender(titleElement); }); textElements[2].value = imgElement.getAttribute("alt") || ""; + element.addEventListener("click", (event) => { + let target = event.target as HTMLElement + while (target) { + if (target.dataset.action === "copy") { + writeText((target.parentElement.nextElementSibling as HTMLTextAreaElement).value); + showMessage(window.siyuan.languages.copied); + break; + } + target = target.parentElement; + } + }) } }).element); window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); @@ -1040,6 +1070,15 @@ export const imgMenu = (protyle: IProtyle, range: Range, assetElement: HTMLEleme writeText(content); } }).element); + if (protyle.disabled) { + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.copy + " " + window.siyuan.languages.imageURL, + icon: "iconLink", + click() { + writeText(imgElement.getAttribute("src")); + } + }).element); + } window.siyuan.menus.menu.append(new MenuItem({ label: window.siyuan.languages.copyAsPNG, accelerator: window.siyuan.config.keymap.editor.general.copyBlockRef.custom, @@ -1313,13 +1352,31 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText window.siyuan.menus.menu.append(new MenuItem({ iconHTML: "", type: "readonly", - label: `
${window.siyuan.languages.link}
+ label: `
+ ${window.siyuan.languages.link} + + + + +
-
${window.siyuan.languages.anchor}
+
+ ${window.siyuan.languages.anchor} + + + + +
-
${window.siyuan.languages.title}
+
+ ${window.siyuan.languages.title} + + + + +
`, bind(element) { element.style.maxWidth = "none"; @@ -1390,6 +1447,18 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText return; } }); + + element.addEventListener("click", (event) => { + let target = event.target as HTMLElement + while (target) { + if (target.dataset.action === "copy") { + writeText((target.parentElement.nextElementSibling as HTMLTextAreaElement).value); + showMessage(window.siyuan.languages.copied); + break; + } + target = target.parentElement; + } + }) } }).element); window.siyuan.menus.menu.append(new MenuItem({type: "separator"}).element); @@ -1454,6 +1523,15 @@ export const linkMenu = (protyle: IProtyle, linkElement: HTMLElement, focusText writeText(protyle.lute.BlockDOM2StdMd(linkElement.outerHTML)); } }).element); + if (protyle.disabled) { + window.siyuan.menus.menu.append(new MenuItem({ + label: window.siyuan.languages.copy + " " + window.siyuan.languages.replaceTypes.aHref, + icon: "iconLink", + click() { + writeText(linkAddress); + } + }).element); + } if (!protyle.disabled) { window.siyuan.menus.menu.append(new MenuItem({ icon: "iconCut",