mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-27 11:58:49 +01:00
83 lines
3.7 KiB
TypeScript
83 lines
3.7 KiB
TypeScript
import {Protyle} from "../protyle";
|
|
import {setEditor} from "./util/setEmpty";
|
|
import {closePanel} from "./util/closePanel";
|
|
import {Constants} from "../constants";
|
|
import {fetchPost} from "../util/fetch";
|
|
import {disabledProtyle, onGet} from "../protyle/util/onGet";
|
|
import {addLoading} from "../protyle/ui/initUI";
|
|
import {focusBlock} from "../protyle/util/selection";
|
|
import {scrollCenter} from "../util/highlightById";
|
|
import {hasClosestByAttribute} from "../protyle/util/hasClosest";
|
|
import {setEditMode} from "../protyle/util/setEditMode";
|
|
import {hideElements} from "../protyle/ui/hideElements";
|
|
import {pushBack} from "./util/MobileBackFoward";
|
|
import {setStorageVal} from "../protyle/util/compatibility";
|
|
import {showMessage} from "../dialog/message";
|
|
|
|
export const openMobileFileById = (id: string, action = [Constants.CB_GET_HL]) => {
|
|
window.siyuan.storage[Constants.LOCAL_DOCINFO] = {id, action};
|
|
setStorageVal(Constants.LOCAL_DOCINFO, window.siyuan.storage[Constants.LOCAL_DOCINFO]);
|
|
if (window.siyuan.mobile.editor) {
|
|
hideElements(["toolbar", "hint", "util"], window.siyuan.mobile.editor.protyle);
|
|
if (window.siyuan.mobile.editor.protyle.contentElement.classList.contains("fn__none")) {
|
|
setEditMode(window.siyuan.mobile.editor.protyle, "wysiwyg");
|
|
}
|
|
let blockElement;
|
|
Array.from(window.siyuan.mobile.editor.protyle.wysiwyg.element.querySelectorAll(`[data-node-id="${id}"]`)).find((item: HTMLElement) => {
|
|
if (!hasClosestByAttribute(item.parentElement, "data-type", "NodeBlockQueryEmbed")) {
|
|
blockElement = item;
|
|
return true;
|
|
}
|
|
});
|
|
if (blockElement) {
|
|
pushBack();
|
|
focusBlock(blockElement);
|
|
scrollCenter(window.siyuan.mobile.editor.protyle, blockElement, true);
|
|
closePanel();
|
|
return;
|
|
}
|
|
}
|
|
|
|
fetchPost("/api/block/getBlockInfo", {id}, (data) => {
|
|
if (data.code === 3) {
|
|
showMessage(data.msg);
|
|
return;
|
|
}
|
|
if (window.siyuan.mobile.editor) {
|
|
pushBack();
|
|
addLoading(window.siyuan.mobile.editor.protyle);
|
|
fetchPost("/api/filetree/getDoc", {
|
|
id,
|
|
size: action.includes(Constants.CB_GET_ALL) ? Constants.SIZE_GET_MAX : window.siyuan.config.editor.dynamicLoadBlocks,
|
|
mode: action.includes(Constants.CB_GET_CONTEXT) ? 3 : 0,
|
|
}, getResponse => {
|
|
onGet(getResponse, window.siyuan.mobile.editor.protyle, action);
|
|
window.siyuan.mobile.editor.protyle.breadcrumb?.render(window.siyuan.mobile.editor.protyle);
|
|
});
|
|
window.siyuan.mobile.editor.protyle.undo.clear();
|
|
} else {
|
|
window.siyuan.mobile.editor = new Protyle(document.getElementById("editor"), {
|
|
blockId: id,
|
|
action,
|
|
render: {
|
|
scroll: true,
|
|
background: true,
|
|
gutter: true,
|
|
},
|
|
typewriterMode: true,
|
|
preview: {
|
|
actions: ["mp-wechat", "zhihu"]
|
|
},
|
|
after: (editor) => {
|
|
// protyle 仅初始化一次,后续更新时会对 url 等再次复制
|
|
if (window.siyuan.config.readonly || window.siyuan.config.editor.readOnly) {
|
|
disabledProtyle(editor.protyle);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
(document.getElementById("toolbarName") as HTMLInputElement).value = data.data.rootTitle === "Untitled" ? "" : data.data.rootTitle;
|
|
setEditor();
|
|
closePanel();
|
|
});
|
|
};
|