update: toolkit 0.1.3
This commit is contained in:
		
							parent
							
								
									5d3cde376d
								
							
						
					
					
						commit
						6a986305a4
					
				@ -31,7 +31,7 @@
 | 
				
			|||||||
  },
 | 
					  },
 | 
				
			||||||
  "homepage": "https://github.com/windingwind/zotero-addon-template#readme",
 | 
					  "homepage": "https://github.com/windingwind/zotero-addon-template#readme",
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "zotero-plugin-toolkit": "^0.1.1"
 | 
					    "zotero-plugin-toolkit": "^0.1.3"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "devDependencies": {
 | 
					  "devDependencies": {
 | 
				
			||||||
    "@types/node": "^18.11.17",
 | 
					    "@types/node": "^18.11.17",
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,4 @@
 | 
				
			|||||||
import { BasicExampleFactory, UIExampleFactory } from "./modules/examples";
 | 
					import { BasicExampleFactory, UIExampleFactory } from "./modules/examples";
 | 
				
			||||||
import { PopupWindow } from "./modules/popup";
 | 
					 | 
				
			||||||
import { config } from "../package.json";
 | 
					import { config } from "../package.json";
 | 
				
			||||||
import { getString, initLocale } from "./modules/locale";
 | 
					import { getString, initLocale } from "./modules/locale";
 | 
				
			||||||
import { registerPrefsScripts } from "./modules/preferenceScript";
 | 
					import { registerPrefsScripts } from "./modules/preferenceScript";
 | 
				
			||||||
@ -11,8 +10,12 @@ async function onStartup() {
 | 
				
			|||||||
    Zotero.uiReadyPromise,
 | 
					    Zotero.uiReadyPromise,
 | 
				
			||||||
  ]);
 | 
					  ]);
 | 
				
			||||||
  initLocale();
 | 
					  initLocale();
 | 
				
			||||||
 | 
					  ztoolkit.Tool.setIconURI(
 | 
				
			||||||
 | 
					    "default",
 | 
				
			||||||
 | 
					    `chrome://${config.addonRef}/content/icons/favicon.png`
 | 
				
			||||||
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const popupWin = new PopupWindow(config.addonName, {
 | 
					  const popupWin = ztoolkit.Tool.createProgressWindow(config.addonName, {
 | 
				
			||||||
    closeOnClick: true,
 | 
					    closeOnClick: true,
 | 
				
			||||||
    closeTime: -1,
 | 
					    closeTime: -1,
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,5 @@
 | 
				
			|||||||
import { config } from "../../package.json";
 | 
					import { config } from "../../package.json";
 | 
				
			||||||
import { getString } from "./locale";
 | 
					import { getString } from "./locale";
 | 
				
			||||||
import { PopupWindow } from "./popup";
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
function example(
 | 
					function example(
 | 
				
			||||||
  target: any,
 | 
					  target: any,
 | 
				
			||||||
@ -62,7 +61,7 @@ export class BasicExampleFactory {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  @example
 | 
					  @example
 | 
				
			||||||
  static exampleNotifierCallback() {
 | 
					  static exampleNotifierCallback() {
 | 
				
			||||||
    new PopupWindow(config.addonName)
 | 
					    ztoolkit.Tool.createProgressWindow(config.addonName)
 | 
				
			||||||
      .createLine({
 | 
					      .createLine({
 | 
				
			||||||
        text: "Open Tab Detected!",
 | 
					        text: "Open Tab Detected!",
 | 
				
			||||||
        type: "success",
 | 
					        type: "success",
 | 
				
			||||||
 | 
				
			|||||||
@ -1,87 +0,0 @@
 | 
				
			|||||||
import { config } from "../../package.json";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const progressWindowIcon = {
 | 
					 | 
				
			||||||
  success: "chrome://zotero/skin/tick.png",
 | 
					 | 
				
			||||||
  fail: "chrome://zotero/skin/cross.png",
 | 
					 | 
				
			||||||
  default: `chrome://${config.addonRef}/content/icons/favicon.png`,
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
interface LineOptions {
 | 
					 | 
				
			||||||
  type?: keyof typeof progressWindowIcon;
 | 
					 | 
				
			||||||
  icon?: string;
 | 
					 | 
				
			||||||
  text?: string;
 | 
					 | 
				
			||||||
  progress?: number;
 | 
					 | 
				
			||||||
  idx?: number;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export class PopupWindow extends Zotero.ProgressWindow {
 | 
					 | 
				
			||||||
  private lines: _ZoteroItemProgress[];
 | 
					 | 
				
			||||||
  private closeTime: number | undefined;
 | 
					 | 
				
			||||||
  private originalShow: typeof Zotero.ProgressWindow.prototype.show;
 | 
					 | 
				
			||||||
  // @ts-ignore
 | 
					 | 
				
			||||||
  public show!: typeof this.showWithTimer;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  constructor(
 | 
					 | 
				
			||||||
    header: string,
 | 
					 | 
				
			||||||
    options: {
 | 
					 | 
				
			||||||
      window?: Window;
 | 
					 | 
				
			||||||
      closeOnClick?: boolean;
 | 
					 | 
				
			||||||
      closeTime?: number;
 | 
					 | 
				
			||||||
    } = {
 | 
					 | 
				
			||||||
      closeOnClick: true,
 | 
					 | 
				
			||||||
      closeTime: 5000,
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  ) {
 | 
					 | 
				
			||||||
    super(options);
 | 
					 | 
				
			||||||
    this.lines = [];
 | 
					 | 
				
			||||||
    this.closeTime = options.closeTime || 5000;
 | 
					 | 
				
			||||||
    this.changeHeadline(header);
 | 
					 | 
				
			||||||
    this.originalShow = this
 | 
					 | 
				
			||||||
      .show as unknown as typeof Zotero.ProgressWindow.prototype.show;
 | 
					 | 
				
			||||||
    this.show = this.showWithTimer;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  createLine(options: LineOptions) {
 | 
					 | 
				
			||||||
    const icon = this.getIcon(options.type, options.icon);
 | 
					 | 
				
			||||||
    const line = new this.ItemProgress(icon || "", options.text || "");
 | 
					 | 
				
			||||||
    if (typeof options.progress === "number") {
 | 
					 | 
				
			||||||
      line.setProgress(options.progress);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    this.lines.push(line);
 | 
					 | 
				
			||||||
    return this;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  changeLine(options: LineOptions) {
 | 
					 | 
				
			||||||
    if (this.lines?.length === 0) {
 | 
					 | 
				
			||||||
      return this;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    const idx =
 | 
					 | 
				
			||||||
      typeof options.idx !== "undefined" &&
 | 
					 | 
				
			||||||
      options.idx >= 0 &&
 | 
					 | 
				
			||||||
      options.idx < this.lines.length
 | 
					 | 
				
			||||||
        ? options.idx
 | 
					 | 
				
			||||||
        : 0;
 | 
					 | 
				
			||||||
    const icon = this.getIcon(options.type, options.icon);
 | 
					 | 
				
			||||||
    options.text && this.lines[idx].setText(options.text);
 | 
					 | 
				
			||||||
    icon && this.lines[idx].setIcon(icon);
 | 
					 | 
				
			||||||
    typeof options.progress === "number" &&
 | 
					 | 
				
			||||||
      this.lines[idx].setProgress(options.progress);
 | 
					 | 
				
			||||||
    return this;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  protected showWithTimer(closeTime: number | undefined = undefined) {
 | 
					 | 
				
			||||||
    this.originalShow();
 | 
					 | 
				
			||||||
    typeof closeTime !== "undefined" && (this.closeTime = closeTime);
 | 
					 | 
				
			||||||
    if (this.closeTime && this.closeTime > 0) {
 | 
					 | 
				
			||||||
      this.startCloseTimer(this.closeTime);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return this;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  protected getIcon(
 | 
					 | 
				
			||||||
    type: keyof typeof progressWindowIcon | undefined,
 | 
					 | 
				
			||||||
    defaulIcon?: string | undefined
 | 
					 | 
				
			||||||
  ) {
 | 
					 | 
				
			||||||
    return type ? progressWindowIcon[type] : defaulIcon;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user