소스 검색

:sparkles: https://github.com/siyuan-note/siyuan/issues/9032

Vanessa 1 년 전
부모
커밋
dc3889b5b3
2개의 변경된 파일28개의 추가작업 그리고 1개의 파일을 삭제
  1. 23 0
      app/src/plugin/API.ts
  2. 5 1
      app/src/plugin/commandPanel.ts

+ 23 - 0
app/src/plugin/API.ts

@@ -6,6 +6,8 @@ import {fetchGet, fetchPost, fetchSyncPost} from "../util/fetch";
 import {getBackend, getFrontend} from "../util/functions";
 import {getBackend, getFrontend} from "../util/functions";
 /// #if !MOBILE
 /// #if !MOBILE
 import {openFile, openFileById} from "../editor/util";
 import {openFile, openFileById} from "../editor/util";
+import {openNewWindow, openNewWindowById} from "../window/openNewWindow";
+import {Tab} from "../layout/Tab";
 /// #endif
 /// #endif
 import {updateHotkeyTip} from "../protyle/util/compatibility";
 import {updateHotkeyTip} from "../protyle/util/compatibility";
 import {App} from "../index";
 import {App} from "../index";
@@ -15,11 +17,31 @@ import {Menu} from "./Menu";
 import {Protyle} from "../protyle";
 import {Protyle} from "../protyle";
 
 
 let openTab;
 let openTab;
+let openWindow;
 /// #if MOBILE
 /// #if MOBILE
 openTab = () => {
 openTab = () => {
     // TODO: Mobile
     // TODO: Mobile
 };
 };
+openWindow = () => {
+    // TODO: Mobile
+};
 /// #else
 /// #else
+openWindow = (options: {
+    tab?: Tab,
+    doc?: {
+        id: string,     // 块 id
+    },
+}) => {
+    if (options.doc.id) {
+        openNewWindowById(options.doc.id);
+        return;
+    }
+    if (options.tab) {
+        openNewWindow(options.tab)
+        return;
+    }
+};
+
 openTab = (options: {
 openTab = (options: {
     app: App,
     app: App,
     doc?: {
     doc?: {
@@ -147,6 +169,7 @@ export const API = {
     getFrontend,
     getFrontend,
     getBackend,
     getBackend,
     openTab,
     openTab,
+    openWindow,
     Protyle,
     Protyle,
     Plugin,
     Plugin,
     Dialog,
     Dialog,

+ 5 - 1
app/src/plugin/commandPanel.ts

@@ -26,7 +26,11 @@ export const commandPanel = (app: App) => {
             liElement.innerHTML = `<span class="b3-list-item__text">${plugin.displayName}: ${command.langText || plugin.i18n[command.langKey]}</span>
             liElement.innerHTML = `<span class="b3-list-item__text">${plugin.displayName}: ${command.langText || plugin.i18n[command.langKey]}</span>
 <span class="b3-list-item__meta">${updateHotkeyTip(command.customHotkey)}</span>`;
 <span class="b3-list-item__meta">${updateHotkeyTip(command.customHotkey)}</span>`;
             liElement.addEventListener("click", () => {
             liElement.addEventListener("click", () => {
-                command.callback();
+                if (command.callback) {
+                    command.callback();
+                } else if (command.globalCallback) {
+                    command.globalCallback();
+                }
                 dialog.destroy();
                 dialog.destroy();
             });
             });
             listElement.insertAdjacentElement("beforeend", liElement);
             listElement.insertAdjacentElement("beforeend", liElement);