diff --git a/app/src/plugin/API.ts b/app/src/plugin/API.ts
index 5c45bd229..5579ec275 100644
--- a/app/src/plugin/API.ts
+++ b/app/src/plugin/API.ts
@@ -6,6 +6,8 @@ import {fetchGet, fetchPost, fetchSyncPost} from "../util/fetch";
import {getBackend, getFrontend} from "../util/functions";
/// #if !MOBILE
import {openFile, openFileById} from "../editor/util";
+import {openNewWindow, openNewWindowById} from "../window/openNewWindow";
+import {Tab} from "../layout/Tab";
/// #endif
import {updateHotkeyTip} from "../protyle/util/compatibility";
import {App} from "../index";
@@ -15,11 +17,31 @@ import {Menu} from "./Menu";
import {Protyle} from "../protyle";
let openTab;
+let openWindow;
/// #if MOBILE
openTab = () => {
// TODO: Mobile
};
+openWindow = () => {
+ // TODO: Mobile
+};
/// #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: {
app: App,
doc?: {
@@ -147,6 +169,7 @@ export const API = {
getFrontend,
getBackend,
openTab,
+ openWindow,
Protyle,
Plugin,
Dialog,
diff --git a/app/src/plugin/commandPanel.ts b/app/src/plugin/commandPanel.ts
index a6b5b20f5..81d037b33 100644
--- a/app/src/plugin/commandPanel.ts
+++ b/app/src/plugin/commandPanel.ts
@@ -26,7 +26,11 @@ export const commandPanel = (app: App) => {
liElement.innerHTML = `${plugin.displayName}: ${command.langText || plugin.i18n[command.langKey]}
${updateHotkeyTip(command.customHotkey)}`;
liElement.addEventListener("click", () => {
- command.callback();
+ if (command.callback) {
+ command.callback();
+ } else if (command.globalCallback) {
+ command.globalCallback();
+ }
dialog.destroy();
});
listElement.insertAdjacentElement("beforeend", liElement);