import {popSearch} from "./search"; import {initAppearance} from "../settings/appearance"; import {closePanel} from "../util/closePanel"; import {mountHelp, newDailyNote, newNotebook} from "../../util/mount"; import {repos} from "../../config/repos"; import {exitSiYuan, lockScreen, processSync} from "../../dialog/processSystem"; import {openHistory} from "../../history/history"; import {syncGuide} from "../../sync/syncGuide"; import {openCard} from "../../card/openCard"; import {activeBlur, hideKeyboardToolbar} from "../util/keyboardToolbar"; import {initAI} from "../settings/ai"; import {initRiffCard} from "../settings/riffCard"; import {login, showAccountInfo} from "../settings/account"; import {openModel} from "./model"; import {initAbout} from "../settings/about"; import {getRecentDocs} from "./getRecentDocs"; import {initEditor} from "../settings/editor"; import {App} from "../../index"; import {isHuawei, isInAndroid, isInIOS} from "../../protyle/util/compatibility"; import {newFile} from "../../util/newFile"; import {afterLoadPlugin} from "../../plugin/loader"; import {Menu} from "../../plugin/Menu"; import {commandPanel} from "../../plugin/commandPanel"; export const popMenu = () => { activeBlur(); hideKeyboardToolbar(); document.getElementById("menu").style.transform = "translateX(0px)"; }; export const initRightMenu = (app: App) => { const menuElement = document.getElementById("menu"); let accountHTML = ""; if (window.siyuan.user && !window.siyuan.config.readonly) { accountHTML = ``; } else if (!window.siyuan.config.readonly) { accountHTML = ``; } let aiHTML = ``; if (isHuawei()) { // Access to the OpenAI API is no longer supported on Huawei devices https://github.com/siyuan-note/siyuan/issues/8192 aiHTML = ""; } menuElement.innerHTML = `
${window.siyuan.languages.back}
${accountHTML}
${aiHTML}
${window.siyuan.languages.feedback}
`; processSync(); const unPinsMenu: IMenu[] = []; app.plugins.forEach(item => { const unPinMenu = afterLoadPlugin(item); if (unPinMenu) { unPinMenu.forEach(unpinItem => { unPinsMenu.push(unpinItem); }); } }); // 只能用 click,否则无法上下滚动 https://github.com/siyuan-note/siyuan/issues/6628 menuElement.addEventListener("click", (event) => { let target = event.target as HTMLElement; while (target && !target.isEqualNode(menuElement)) { if (target.classList.contains("b3-menu__title")) { closePanel(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuSearch") { popSearch(app); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuRecent") { getRecentDocs(app); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuAppearance") { initAppearance(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuAI") { initAI(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuRiffCard") { initRiffCard(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuEditor") { initEditor(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuSafeQuit") { exitSiYuan(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuAbout") { initAbout(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuPlugin") { const menu = new Menu(); menu.addItem({ icon: "iconLayoutBottom", label: window.siyuan.languages.commandPanel, click() { commandPanel(app); } }); if (unPinsMenu.length > 0) { menu.addSeparator(); } unPinsMenu.forEach(item => { menu.addItem(item); }); menu.fullscreen(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuNewDaily") { newDailyNote(app); closePanel(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuCard") { openCard(app); closePanel(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuNewNotebook") { newNotebook(); closePanel(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuNewDoc") { newFile({ app, useSavePath: true }); closePanel(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuHelp") { mountHelp(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuLock") { lockScreen(app); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuSync") { openModel({ title: window.siyuan.languages.cloud, icon: "iconCloud", html: repos.genHTML(), bindEvent(modelMainElement: HTMLElement) { repos.element = modelMainElement; repos.bindEvent(); } }); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuSyncNow") { syncGuide(); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuHistory") { openHistory(app); event.preventDefault(); event.stopPropagation(); break; } else if (target.id === "menuAccount") { event.preventDefault(); event.stopPropagation(); if (document.querySelector("#menuAccount img")) { showAccountInfo(); return; } login(); break; } target = target.parentElement; } }); };