68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import { initLocale } from "./utils/locale";
|
|
import { createZToolkit } from "./utils/ztoolkit";
|
|
import { registerLecturePane } from "./modules/lecture/ui/registerLecturePane";
|
|
import { registerSelectionExplainPopup } from "./modules/lecture/ui/registerSelectionExplainPopup";
|
|
import { registerChatPane, registerPrefs, ensureChatPapersStyles } from "./modules/ui/readerPane";
|
|
import { registerPrefsScripts } from "./modules/ui/prefs";
|
|
import { registerItemMenus } from "./modules/ui/itemMenu";
|
|
import { registerReaderSelectionHook } from "./modules/pdf/selection";
|
|
|
|
async function onStartup() {
|
|
await Promise.all([
|
|
Zotero.initializationPromise,
|
|
Zotero.unlockPromise,
|
|
Zotero.uiReadyPromise,
|
|
]);
|
|
|
|
initLocale();
|
|
registerPrefs();
|
|
registerChatPane();
|
|
registerLecturePane();
|
|
registerReaderSelectionHook();
|
|
registerSelectionExplainPopup();
|
|
|
|
await Promise.all(
|
|
Zotero.getMainWindows().map((win) => onMainWindowLoad(win)),
|
|
);
|
|
|
|
addon.data.initialized = true;
|
|
}
|
|
|
|
async function onMainWindowLoad(win: _ZoteroTypes.MainWindow): Promise<void> {
|
|
addon.data.ztoolkit = createZToolkit();
|
|
ensureChatPapersStyles(win.document);
|
|
win.MozXULElement.insertFTLIfNeeded(
|
|
`${addon.data.config.addonRef}-mainWindow.ftl`,
|
|
);
|
|
registerItemMenus();
|
|
}
|
|
|
|
async function onMainWindowUnload(_win: Window): Promise<void> {
|
|
ztoolkit.unregisterAll();
|
|
}
|
|
|
|
function onShutdown(): void {
|
|
ztoolkit.unregisterAll();
|
|
addon.data.alive = false;
|
|
// @ts-expect-error - Plugin instance is not typed
|
|
delete Zotero[addon.data.config.addonInstance];
|
|
}
|
|
|
|
async function onPrefsEvent(type: string, data: { [key: string]: any }) {
|
|
switch (type) {
|
|
case "load":
|
|
registerPrefsScripts(data.window);
|
|
break;
|
|
default:
|
|
return;
|
|
}
|
|
}
|
|
|
|
export default {
|
|
onStartup,
|
|
onShutdown,
|
|
onMainWindowLoad,
|
|
onMainWindowUnload,
|
|
onPrefsEvent,
|
|
};
|