浏览代码

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

Vanessa 8 月之前
父节点
当前提交
1eaa79c999
共有 2 个文件被更改,包括 17 次插入18 次删除
  1. 16 17
      app/src/menus/protyle.ts
  2. 1 1
      app/src/protyle/wysiwyg/index.ts

+ 16 - 17
app/src/menus/protyle.ts

@@ -1716,21 +1716,20 @@ export const tagMenu = (protyle: IProtyle, tagElement: HTMLElement) => {
         label: window.siyuan.languages.copy,
         label: window.siyuan.languages.copy,
         icon: "iconCopy",
         icon: "iconCopy",
         click() {
         click() {
-            writeText(protyle.lute.BlockDOM2StdMd(tagElement.outerHTML));
+            const range = document.createRange()
+            range.selectNode(tagElement);
+            focusByRange(range)
+            document.execCommand("copy");
         }
         }
     }).element);
     }).element);
     window.siyuan.menus.menu.append(new MenuItem({
     window.siyuan.menus.menu.append(new MenuItem({
         label: window.siyuan.languages.cut,
         label: window.siyuan.languages.cut,
         icon: "iconCut",
         icon: "iconCut",
         click() {
         click() {
-            writeText(protyle.lute.BlockDOM2StdMd(tagElement.outerHTML));
-
-            const oldHTML = nodeElement.outerHTML;
-            tagElement.insertAdjacentHTML("afterend", "<wbr>");
-            tagElement.remove();
-            nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
-            updateTransaction(protyle, id, nodeElement.outerHTML, oldHTML);
-            focusByWbr(nodeElement, protyle.toolbar.range);
+            const range = document.createRange()
+            range.selectNode(tagElement);
+            focusByRange(range)
+            document.execCommand("cut");
         }
         }
     }).element);
     }).element);
     window.siyuan.menus.menu.append(new MenuItem({
     window.siyuan.menus.menu.append(new MenuItem({
@@ -1781,7 +1780,10 @@ export const inlineMathMenu = (protyle: IProtyle, element: Element) => {
         label: window.siyuan.languages.copy,
         label: window.siyuan.languages.copy,
         icon: "iconCopy",
         icon: "iconCopy",
         click() {
         click() {
-            writeText(protyle.lute.BlockDOM2StdMd(element.outerHTML));
+            const range = document.createRange()
+            range.selectNode(element);
+            focusByRange(range)
+            document.execCommand("copy");
         }
         }
     }).element);
     }).element);
     if (!protyle.disabled) {
     if (!protyle.disabled) {
@@ -1789,13 +1791,10 @@ export const inlineMathMenu = (protyle: IProtyle, element: Element) => {
             icon: "iconCut",
             icon: "iconCut",
             label: window.siyuan.languages.cut,
             label: window.siyuan.languages.cut,
             click() {
             click() {
-                writeText(protyle.lute.BlockDOM2StdMd(element.outerHTML));
-
-                element.insertAdjacentHTML("afterend", "<wbr>");
-                element.remove();
-                nodeElement.setAttribute("updated", dayjs().format("YYYYMMDDHHmmss"));
-                updateTransaction(protyle, id, nodeElement.outerHTML, html);
-                focusByWbr(nodeElement, protyle.toolbar.range);
+                const range = document.createRange()
+                range.selectNode(element);
+                focusByRange(range)
+                document.execCommand("cut");
             }
             }
         }).element);
         }).element);
         window.siyuan.menus.menu.append(new MenuItem({
         window.siyuan.menus.menu.append(new MenuItem({

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

@@ -1775,7 +1775,7 @@ export class WYSIWYG {
             protyle.toolbar.range = getEditorRange(protyle.element);
             protyle.toolbar.range = getEditorRange(protyle.element);
 
 
             if (target.tagName === "SPAN" && !isNotEditBlock(nodeElement)) { // https://ld246.com/article/1665141518103
             if (target.tagName === "SPAN" && !isNotEditBlock(nodeElement)) { // https://ld246.com/article/1665141518103
-                let types = target.getAttribute("data-type")?.split(" ");
+                let types = target.getAttribute("data-type")?.split(" ") || [];
                 if (types.length === 0) {
                 if (types.length === 0) {
                     // https://github.com/siyuan-note/siyuan/issues/8960
                     // https://github.com/siyuan-note/siyuan/issues/8960
                     types = (target.dataset.type || "").split(" ");
                     types = (target.dataset.type || "").split(" ");