mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-19 08:00:13 +01:00
This commit is contained in:
parent
8dc43cb22d
commit
9c45a296ae
3 changed files with 55 additions and 47 deletions
|
|
@ -9,7 +9,7 @@ import {Constants} from "../constants";
|
||||||
import {setEditMode} from "../protyle/util/setEditMode";
|
import {setEditMode} from "../protyle/util/setEditMode";
|
||||||
import {Files} from "../layout/dock/Files";
|
import {Files} from "../layout/dock/Files";
|
||||||
import {setPadding} from "../protyle/ui/initUI";
|
import {setPadding} from "../protyle/ui/initUI";
|
||||||
import {fetchPost} from "../util/fetch";
|
import {fetchPost, fetchSyncPost} from "../util/fetch";
|
||||||
import {focusBlock, focusByRange} from "../protyle/util/selection";
|
import {focusBlock, focusByRange} from "../protyle/util/selection";
|
||||||
import {onGet} from "../protyle/util/onGet";
|
import {onGet} from "../protyle/util/onGet";
|
||||||
/// #if !BROWSER
|
/// #if !BROWSER
|
||||||
|
|
@ -40,16 +40,16 @@ export const openFileById = async (options: {
|
||||||
removeCurrentTab?: boolean
|
removeCurrentTab?: boolean
|
||||||
afterOpen?: () => void
|
afterOpen?: () => void
|
||||||
}) => {
|
}) => {
|
||||||
fetchPost("/api/block/getBlockInfo", {id: options.id}, (data) => {
|
const response = await fetchSyncPost("/api/block/getBlockInfo", {id: options.id});
|
||||||
if (data.code === 3) {
|
if (response.code === 3) {
|
||||||
showMessage(data.msg);
|
showMessage(response.msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
openFile({
|
return openFile({
|
||||||
app: options.app,
|
app: options.app,
|
||||||
fileName: data.data.rootTitle,
|
fileName: response.data.rootTitle,
|
||||||
rootIcon: data.data.rootIcon,
|
rootIcon: response.data.rootIcon,
|
||||||
rootID: data.data.rootID,
|
rootID: response.data.rootID,
|
||||||
id: options.id,
|
id: options.id,
|
||||||
position: options.position,
|
position: options.position,
|
||||||
mode: options.mode,
|
mode: options.mode,
|
||||||
|
|
@ -59,7 +59,6 @@ export const openFileById = async (options: {
|
||||||
removeCurrentTab: options.removeCurrentTab,
|
removeCurrentTab: options.removeCurrentTab,
|
||||||
afterOpen: options.afterOpen
|
afterOpen: options.afterOpen
|
||||||
});
|
});
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export const openAsset = (app: App, assetPath: string, page: number | string, position?: string) => {
|
export const openAsset = (app: App, assetPath: string, page: number | string, position?: string) => {
|
||||||
|
|
@ -97,7 +96,7 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
options.afterOpen();
|
options.afterOpen();
|
||||||
}
|
}
|
||||||
return;
|
return asset.parent;
|
||||||
}
|
}
|
||||||
} else if (options.custom) {
|
} else if (options.custom) {
|
||||||
const custom = allModels.custom.find((item) => {
|
const custom = allModels.custom.find((item) => {
|
||||||
|
|
@ -113,14 +112,14 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
options.afterOpen();
|
options.afterOpen();
|
||||||
}
|
}
|
||||||
return;
|
return custom.parent;
|
||||||
}
|
}
|
||||||
const hasModel = getUnInitTab(options);
|
const hasModel = getUnInitTab(options);
|
||||||
if (hasModel) {
|
if (hasModel) {
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
options.afterOpen();
|
options.afterOpen();
|
||||||
}
|
}
|
||||||
return;
|
return hasModel;
|
||||||
}
|
}
|
||||||
} else if (options.searchData) {
|
} else if (options.searchData) {
|
||||||
const search = allModels.search.find((item) => {
|
const search = allModels.search.find((item) => {
|
||||||
|
|
@ -133,7 +132,7 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (search) {
|
if (search) {
|
||||||
return;
|
return search.parent;
|
||||||
}
|
}
|
||||||
} else if (!options.position) {
|
} else if (!options.position) {
|
||||||
let editor: Editor;
|
let editor: Editor;
|
||||||
|
|
@ -159,7 +158,7 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
options.afterOpen();
|
options.afterOpen();
|
||||||
}
|
}
|
||||||
return true;
|
return editor.parent;
|
||||||
}
|
}
|
||||||
// 没有初始化的页签无法检测到
|
// 没有初始化的页签无法检测到
|
||||||
const hasEditor = getUnInitTab(options);
|
const hasEditor = getUnInitTab(options);
|
||||||
|
|
@ -167,7 +166,7 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
options.afterOpen();
|
options.afterOpen();
|
||||||
}
|
}
|
||||||
return;
|
return hasEditor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -208,6 +207,7 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
wnd = getWndByLayout(window.siyuan.layout.centerLayout);
|
wnd = getWndByLayout(window.siyuan.layout.centerLayout);
|
||||||
}
|
}
|
||||||
if (wnd) {
|
if (wnd) {
|
||||||
|
let createdTab: Tab;
|
||||||
if ((options.position === "right" || options.position === "bottom") && wnd.children[0].headElement) {
|
if ((options.position === "right" || options.position === "bottom") && wnd.children[0].headElement) {
|
||||||
const direction = options.position === "right" ? "lr" : "tb";
|
const direction = options.position === "right" ? "lr" : "tb";
|
||||||
let targetWnd: Wnd;
|
let targetWnd: Wnd;
|
||||||
|
|
@ -239,18 +239,21 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
});
|
});
|
||||||
if (!hasEditor) {
|
if (!hasEditor) {
|
||||||
hasEditor = getUnInitTab(options);
|
hasEditor = getUnInitTab(options);
|
||||||
|
createdTab = hasEditor;
|
||||||
}
|
}
|
||||||
if (!hasEditor) {
|
if (!hasEditor) {
|
||||||
targetWnd.addTab(newTab(options));
|
createdTab = newTab(options);
|
||||||
|
targetWnd.addTab(createdTab);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wnd.split(direction).addTab(newTab(options));
|
createdTab = newTab(options);
|
||||||
|
wnd.split(direction).addTab(createdTab);
|
||||||
}
|
}
|
||||||
wnd.showHeading();
|
wnd.showHeading();
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
options.afterOpen();
|
options.afterOpen();
|
||||||
}
|
}
|
||||||
return;
|
return createdTab;
|
||||||
}
|
}
|
||||||
if (pdfIsLoading(wnd.element)) {
|
if (pdfIsLoading(wnd.element)) {
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
|
|
@ -259,9 +262,9 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (options.keepCursor && wnd.children[0].headElement) {
|
if (options.keepCursor && wnd.children[0].headElement) {
|
||||||
const tab = newTab(options);
|
createdTab = newTab(options);
|
||||||
tab.headElement.setAttribute("keep-cursor", options.id);
|
createdTab.headElement.setAttribute("keep-cursor", options.id);
|
||||||
wnd.addTab(tab, options.keepCursor);
|
wnd.addTab(createdTab, options.keepCursor);
|
||||||
} else if (window.siyuan.config.fileTree.openFilesUseCurrentTab) {
|
} else if (window.siyuan.config.fileTree.openFilesUseCurrentTab) {
|
||||||
let unUpdateTab: Tab;
|
let unUpdateTab: Tab;
|
||||||
// 不能 reverse, 找到也不能提前退出循环,否则 https://github.com/siyuan-note/siyuan/issues/3271
|
// 不能 reverse, 找到也不能提前退出循环,否则 https://github.com/siyuan-note/siyuan/issues/3271
|
||||||
|
|
@ -274,17 +277,20 @@ export const openFile = (options: IOpenFileOptions) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
wnd.addTab(newTab(options));
|
createdTab = newTab(options)
|
||||||
|
wnd.addTab(createdTab);
|
||||||
if (unUpdateTab && options.removeCurrentTab) {
|
if (unUpdateTab && options.removeCurrentTab) {
|
||||||
wnd.removeTab(unUpdateTab.id, false, true, false);
|
wnd.removeTab(unUpdateTab.id, false, true, false);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wnd.addTab(newTab(options));
|
createdTab = newTab(options)
|
||||||
|
wnd.addTab(createdTab);
|
||||||
}
|
}
|
||||||
wnd.showHeading();
|
wnd.showHeading();
|
||||||
if (options.afterOpen) {
|
if (options.afterOpen) {
|
||||||
options.afterOpen();
|
options.afterOpen();
|
||||||
}
|
}
|
||||||
|
return createdTab;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -210,4 +210,8 @@ export class Tab {
|
||||||
this.headElement.querySelector(".item__text").classList.remove("fn__none");
|
this.headElement.querySelector(".item__text").classList.remove("fn__none");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public close() {
|
||||||
|
this.parent.removeTab(this.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ import {updateHotkeyTip} from "../protyle/util/compatibility";
|
||||||
import {newCardModel} from "../card/newCardTab";
|
import {newCardModel} from "../card/newCardTab";
|
||||||
import {App} from "../index";
|
import {App} from "../index";
|
||||||
import {Constants} from "../constants";
|
import {Constants} from "../constants";
|
||||||
|
import {Model} from "../layout/Model";
|
||||||
|
|
||||||
export class Menu {
|
export class Menu {
|
||||||
private menu: SiyuanMenu;
|
private menu: SiyuanMenu;
|
||||||
|
|
@ -102,7 +103,7 @@ openTab = (options: {
|
||||||
title: string,
|
title: string,
|
||||||
icon: string,
|
icon: string,
|
||||||
data?: any
|
data?: any
|
||||||
fn?: () => any,
|
fn?: () => Model,
|
||||||
}
|
}
|
||||||
position?: "right" | "bottom",
|
position?: "right" | "bottom",
|
||||||
keepCursor?: boolean // 是否跳转到新 tab 上
|
keepCursor?: boolean // 是否跳转到新 tab 上
|
||||||
|
|
@ -117,7 +118,10 @@ openTab = (options: {
|
||||||
options.doc.action = [Constants.CB_GET_ALL];
|
options.doc.action = [Constants.CB_GET_ALL];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
openFileById({
|
if (!options.doc.action) {
|
||||||
|
options.doc.action = []
|
||||||
|
}
|
||||||
|
return openFileById({
|
||||||
app: options.app,
|
app: options.app,
|
||||||
keepCursor: options.keepCursor,
|
keepCursor: options.keepCursor,
|
||||||
removeCurrentTab: options.removeCurrentTab,
|
removeCurrentTab: options.removeCurrentTab,
|
||||||
|
|
@ -127,10 +131,9 @@ openTab = (options: {
|
||||||
action: options.doc.action,
|
action: options.doc.action,
|
||||||
zoomIn: options.doc.zoomIn
|
zoomIn: options.doc.zoomIn
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (options.asset) {
|
if (options.asset) {
|
||||||
openFile({
|
return openFile({
|
||||||
app: options.app,
|
app: options.app,
|
||||||
keepCursor: options.keepCursor,
|
keepCursor: options.keepCursor,
|
||||||
removeCurrentTab: options.removeCurrentTab,
|
removeCurrentTab: options.removeCurrentTab,
|
||||||
|
|
@ -138,10 +141,9 @@ openTab = (options: {
|
||||||
afterOpen: options.afterOpen,
|
afterOpen: options.afterOpen,
|
||||||
assetPath: options.asset.path,
|
assetPath: options.asset.path,
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (options.pdf) {
|
if (options.pdf) {
|
||||||
openFile({
|
return openFile({
|
||||||
app: options.app,
|
app: options.app,
|
||||||
keepCursor: options.keepCursor,
|
keepCursor: options.keepCursor,
|
||||||
removeCurrentTab: options.removeCurrentTab,
|
removeCurrentTab: options.removeCurrentTab,
|
||||||
|
|
@ -150,7 +152,6 @@ openTab = (options: {
|
||||||
assetPath: options.pdf.path,
|
assetPath: options.pdf.path,
|
||||||
page: options.pdf.id || options.pdf.page,
|
page: options.pdf.id || options.pdf.page,
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (options.search) {
|
if (options.search) {
|
||||||
if (!options.search.idPath) {
|
if (!options.search.idPath) {
|
||||||
|
|
@ -159,7 +160,7 @@ openTab = (options: {
|
||||||
if (!options.search.hPath) {
|
if (!options.search.hPath) {
|
||||||
options.search.hPath = "";
|
options.search.hPath = "";
|
||||||
}
|
}
|
||||||
openFile({
|
return openFile({
|
||||||
app: options.app,
|
app: options.app,
|
||||||
keepCursor: options.keepCursor,
|
keepCursor: options.keepCursor,
|
||||||
removeCurrentTab: options.removeCurrentTab,
|
removeCurrentTab: options.removeCurrentTab,
|
||||||
|
|
@ -167,10 +168,9 @@ openTab = (options: {
|
||||||
afterOpen: options.afterOpen,
|
afterOpen: options.afterOpen,
|
||||||
searchData: options.search,
|
searchData: options.search,
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (options.card) {
|
if (options.card) {
|
||||||
openFile({
|
return openFile({
|
||||||
app: options.app,
|
app: options.app,
|
||||||
keepCursor: options.keepCursor,
|
keepCursor: options.keepCursor,
|
||||||
removeCurrentTab: options.removeCurrentTab,
|
removeCurrentTab: options.removeCurrentTab,
|
||||||
|
|
@ -187,11 +187,9 @@ openTab = (options: {
|
||||||
fn: newCardModel
|
fn: newCardModel
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (options.custom) {
|
if (options.custom) {
|
||||||
openFile(options);
|
return openFile(options);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue