remove: global variables
This commit is contained in:
parent
07ab7f0902
commit
00b88f394b
10
src/hooks.ts
10
src/hooks.ts
@ -33,7 +33,9 @@ async function onStartup() {
|
|||||||
|
|
||||||
UIExampleFactory.registerReaderItemPaneSection();
|
UIExampleFactory.registerReaderItemPaneSection();
|
||||||
|
|
||||||
await onMainWindowLoad(window);
|
await Promise.all(
|
||||||
|
Zotero.getMainWindows().map((win) => onMainWindowLoad(win)),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function onMainWindowLoad(win: Window): Promise<void> {
|
async function onMainWindowLoad(win: Window): Promise<void> {
|
||||||
@ -41,7 +43,7 @@ async function onMainWindowLoad(win: Window): Promise<void> {
|
|||||||
addon.data.ztoolkit = createZToolkit();
|
addon.data.ztoolkit = createZToolkit();
|
||||||
|
|
||||||
// @ts-ignore This is a moz feature
|
// @ts-ignore This is a moz feature
|
||||||
window.MozXULElement.insertFTLIfNeeded(`${config.addonRef}-mainWindow.ftl`);
|
win.MozXULElement.insertFTLIfNeeded(`${config.addonRef}-mainWindow.ftl`);
|
||||||
|
|
||||||
const popupWin = new ztoolkit.ProgressWindow(config.addonName, {
|
const popupWin = new ztoolkit.ProgressWindow(config.addonName, {
|
||||||
closeOnClick: true,
|
closeOnClick: true,
|
||||||
@ -60,11 +62,11 @@ async function onMainWindowLoad(win: Window): Promise<void> {
|
|||||||
text: `[30%] ${getString("startup-begin")}`,
|
text: `[30%] ${getString("startup-begin")}`,
|
||||||
});
|
});
|
||||||
|
|
||||||
UIExampleFactory.registerStyleSheet();
|
UIExampleFactory.registerStyleSheet(win);
|
||||||
|
|
||||||
UIExampleFactory.registerRightClickMenuItem();
|
UIExampleFactory.registerRightClickMenuItem();
|
||||||
|
|
||||||
UIExampleFactory.registerRightClickMenuPopup();
|
UIExampleFactory.registerRightClickMenuPopup(win);
|
||||||
|
|
||||||
UIExampleFactory.registerWindowMenuWithSeparator();
|
UIExampleFactory.registerWindowMenuWithSeparator();
|
||||||
|
|
||||||
|
@ -5,10 +5,6 @@ import { config } from "../package.json";
|
|||||||
const basicTool = new BasicTool();
|
const basicTool = new BasicTool();
|
||||||
|
|
||||||
if (!basicTool.getGlobal("Zotero")[config.addonInstance]) {
|
if (!basicTool.getGlobal("Zotero")[config.addonInstance]) {
|
||||||
defineGlobal("window");
|
|
||||||
defineGlobal("document");
|
|
||||||
defineGlobal("ZoteroPane");
|
|
||||||
defineGlobal("Zotero_Tabs");
|
|
||||||
_globalThis.addon = new Addon();
|
_globalThis.addon = new Addon();
|
||||||
defineGlobal("ztoolkit", () => {
|
defineGlobal("ztoolkit", () => {
|
||||||
return _globalThis.addon.data.ztoolkit;
|
return _globalThis.addon.data.ztoolkit;
|
||||||
|
@ -44,14 +44,11 @@ export class BasicExampleFactory {
|
|||||||
"file",
|
"file",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Unregister callback when the window closes (important to avoid a memory leak)
|
Zotero.Plugins.addObserver({
|
||||||
window.addEventListener(
|
shutdown: ({ id: pluginID }) => {
|
||||||
"unload",
|
|
||||||
(e: Event) => {
|
|
||||||
this.unregisterNotifier(notifierID);
|
this.unregisterNotifier(notifierID);
|
||||||
},
|
},
|
||||||
false,
|
});
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@ -126,18 +123,17 @@ export class KeyExampleFactory {
|
|||||||
|
|
||||||
export class UIExampleFactory {
|
export class UIExampleFactory {
|
||||||
@example
|
@example
|
||||||
static registerStyleSheet() {
|
static registerStyleSheet(win: Window) {
|
||||||
const styles = ztoolkit.UI.createElement(document, "link", {
|
const doc = win.document;
|
||||||
|
const styles = ztoolkit.UI.createElement(doc, "link", {
|
||||||
properties: {
|
properties: {
|
||||||
type: "text/css",
|
type: "text/css",
|
||||||
rel: "stylesheet",
|
rel: "stylesheet",
|
||||||
href: `chrome://${config.addonRef}/content/zoteroPane.css`,
|
href: `chrome://${config.addonRef}/content/zoteroPane.css`,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
document.documentElement.appendChild(styles);
|
doc.documentElement.appendChild(styles);
|
||||||
document
|
doc.getElementById("zotero-item-pane-content")?.classList.add("makeItRed");
|
||||||
.getElementById("zotero-item-pane-content")
|
|
||||||
?.classList.add("makeItRed");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@example
|
@example
|
||||||
@ -154,7 +150,7 @@ export class UIExampleFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@example
|
@example
|
||||||
static registerRightClickMenuPopup() {
|
static registerRightClickMenuPopup(win: Window) {
|
||||||
ztoolkit.Menu.register(
|
ztoolkit.Menu.register(
|
||||||
"item",
|
"item",
|
||||||
{
|
{
|
||||||
@ -169,7 +165,7 @@ export class UIExampleFactory {
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
"before",
|
"before",
|
||||||
document.querySelector(
|
win.document.querySelector(
|
||||||
"#zotero-itemmenu-addontemplate-test",
|
"#zotero-itemmenu-addontemplate-test",
|
||||||
) as XUL.MenuItem,
|
) as XUL.MenuItem,
|
||||||
);
|
);
|
||||||
@ -214,7 +210,7 @@ export class UIExampleFactory {
|
|||||||
},
|
},
|
||||||
renderCell(index, data, column) {
|
renderCell(index, data, column) {
|
||||||
ztoolkit.log("Custom column cell is rendered!");
|
ztoolkit.log("Custom column cell is rendered!");
|
||||||
const span = document.createElementNS(
|
const span = Zotero.getMainWindow().document.createElementNS(
|
||||||
"http://www.w3.org/1999/xhtml",
|
"http://www.w3.org/1999/xhtml",
|
||||||
"span",
|
"span",
|
||||||
);
|
);
|
||||||
@ -406,7 +402,8 @@ export class PromptExampleFactory {
|
|||||||
if (i != 0) str += ", ";
|
if (i != 0) str += ", ";
|
||||||
|
|
||||||
if (typeof node === "object") {
|
if (typeof node === "object") {
|
||||||
const label = document.createElement("label");
|
const label =
|
||||||
|
Zotero.getMainWindow().document.createElement("label");
|
||||||
label.setAttribute("value", str);
|
label.setAttribute("value", str);
|
||||||
label.setAttribute("crop", "end");
|
label.setAttribute("crop", "end");
|
||||||
str = "";
|
str = "";
|
||||||
@ -500,8 +497,8 @@ export class PromptExampleFactory {
|
|||||||
type: "click",
|
type: "click",
|
||||||
listener: () => {
|
listener: () => {
|
||||||
prompt.promptNode.style.display = "none";
|
prompt.promptNode.style.display = "none";
|
||||||
Zotero_Tabs.select("zotero-pane");
|
ztoolkit.getGlobal("Zotero_Tabs").select("zotero-pane");
|
||||||
ZoteroPane.selectItem(item.id);
|
ztoolkit.getGlobal("ZoteroPane").selectItem(item.id);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -556,12 +553,12 @@ export class PromptExampleFactory {
|
|||||||
label: "Plugin Template",
|
label: "Plugin Template",
|
||||||
// The when function is executed when Prompt UI is woken up by `Shift + P`, and this command does not display when false is returned.
|
// The when function is executed when Prompt UI is woken up by `Shift + P`, and this command does not display when false is returned.
|
||||||
when: () => {
|
when: () => {
|
||||||
const items = ZoteroPane.getSelectedItems();
|
const items = ztoolkit.getGlobal("ZoteroPane").getSelectedItems();
|
||||||
return items.length > 0;
|
return items.length > 0;
|
||||||
},
|
},
|
||||||
callback(prompt) {
|
callback(prompt) {
|
||||||
prompt.inputNode.placeholder = "Hello World!";
|
prompt.inputNode.placeholder = "Hello World!";
|
||||||
const items = ZoteroPane.getSelectedItems();
|
const items = ztoolkit.getGlobal("ZoteroPane").getSelectedItems();
|
||||||
ztoolkit.getGlobal("alert")(
|
ztoolkit.getGlobal("alert")(
|
||||||
`You select ${items.length} items!\n\n${items
|
`You select ${items.length} items!\n\n${items
|
||||||
.map(
|
.map(
|
||||||
|
4
typings/global.d.ts
vendored
4
typings/global.d.ts
vendored
@ -1,10 +1,6 @@
|
|||||||
declare const _globalThis: {
|
declare const _globalThis: {
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
Zotero: _ZoteroTypes.Zotero;
|
Zotero: _ZoteroTypes.Zotero;
|
||||||
ZoteroPane: _ZoteroTypes.ZoteroPane;
|
|
||||||
Zotero_Tabs: typeof Zotero_Tabs;
|
|
||||||
window: Window;
|
|
||||||
document: Document;
|
|
||||||
ztoolkit: ZToolkit;
|
ztoolkit: ZToolkit;
|
||||||
addon: typeof addon;
|
addon: typeof addon;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user