update: registerShortcuts
This commit is contained in:
		
							parent
							
								
									032aa74f6e
								
							
						
					
					
						commit
						3d9f8a8a0d
					
				
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							@ -32,22 +32,22 @@
 | 
			
		||||
  },
 | 
			
		||||
  "homepage": "https://github.com/windingwind/zotero-addon-template#readme",
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "zotero-plugin-toolkit": "^2.3.11"
 | 
			
		||||
    "zotero-plugin-toolkit": "^2.3.15"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/node": "^20.10.4",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^6.13.2",
 | 
			
		||||
    "@typescript-eslint/parser": "^6.13.2",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^6.14.0",
 | 
			
		||||
    "@typescript-eslint/parser": "^6.14.0",
 | 
			
		||||
    "chokidar": "^3.5.3",
 | 
			
		||||
    "compressing": "^1.10.0",
 | 
			
		||||
    "esbuild": "^0.19.8",
 | 
			
		||||
    "esbuild": "^0.19.9",
 | 
			
		||||
    "eslint": "^8.55.0",
 | 
			
		||||
    "eslint-config-prettier": "^9.1.0",
 | 
			
		||||
    "prettier": "^3.1.0",
 | 
			
		||||
    "prettier": "^3.1.1",
 | 
			
		||||
    "release-it": "^17.0.1",
 | 
			
		||||
    "replace-in-file": "^7.0.2",
 | 
			
		||||
    "typescript": "^5.3.3",
 | 
			
		||||
    "zotero-types": "^1.3.7"
 | 
			
		||||
    "zotero-types": "^1.3.10"
 | 
			
		||||
  },
 | 
			
		||||
  "eslintConfig": {
 | 
			
		||||
    "env": {
 | 
			
		||||
 | 
			
		||||
@ -30,6 +30,8 @@ async function onStartup() {
 | 
			
		||||
 | 
			
		||||
  BasicExampleFactory.registerNotifier();
 | 
			
		||||
 | 
			
		||||
  KeyExampleFactory.registerShortcuts();
 | 
			
		||||
 | 
			
		||||
  await onMainWindowLoad(window);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -48,8 +50,6 @@ async function onMainWindowLoad(win: Window): Promise<void> {
 | 
			
		||||
    })
 | 
			
		||||
    .show();
 | 
			
		||||
 | 
			
		||||
  KeyExampleFactory.registerShortcuts();
 | 
			
		||||
 | 
			
		||||
  await Zotero.Promise.delay(1000);
 | 
			
		||||
  popupWin.changeLine({
 | 
			
		||||
    progress: 30,
 | 
			
		||||
@ -151,9 +151,6 @@ function onShortcuts(type: string) {
 | 
			
		||||
    case "smaller":
 | 
			
		||||
      KeyExampleFactory.exampleShortcutSmallerCallback();
 | 
			
		||||
      break;
 | 
			
		||||
    case "confliction":
 | 
			
		||||
      KeyExampleFactory.exampleShortcutConflictingCallback();
 | 
			
		||||
      break;
 | 
			
		||||
    default:
 | 
			
		||||
      break;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -86,55 +86,17 @@ export class BasicExampleFactory {
 | 
			
		||||
export class KeyExampleFactory {
 | 
			
		||||
  @example
 | 
			
		||||
  static registerShortcuts() {
 | 
			
		||||
    const keysetId = `${config.addonRef}-keyset`;
 | 
			
		||||
    const cmdsetId = `${config.addonRef}-cmdset`;
 | 
			
		||||
    const cmdSmallerId = `${config.addonRef}-cmd-smaller`;
 | 
			
		||||
    // Register an event key for Alt+L
 | 
			
		||||
    ztoolkit.Shortcut.register("event", {
 | 
			
		||||
      id: `${config.addonRef}-key-larger`,
 | 
			
		||||
      key: "L",
 | 
			
		||||
      modifiers: "alt",
 | 
			
		||||
      callback: (keyOptions) => {
 | 
			
		||||
    ztoolkit.Keyboard.register((ev, keyOptions) => {
 | 
			
		||||
      ztoolkit.log(ev, keyOptions.keyboard);
 | 
			
		||||
      if (keyOptions.keyboard.equals("shift,l")) {
 | 
			
		||||
        addon.hooks.onShortcuts("larger");
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
    // Register an element key using <key> for Alt+S
 | 
			
		||||
    ztoolkit.Shortcut.register("element", {
 | 
			
		||||
      id: `${config.addonRef}-key-smaller`,
 | 
			
		||||
      key: "S",
 | 
			
		||||
      modifiers: "alt",
 | 
			
		||||
      xulData: {
 | 
			
		||||
        document,
 | 
			
		||||
        command: cmdSmallerId,
 | 
			
		||||
        _parentId: keysetId,
 | 
			
		||||
        _commandOptions: {
 | 
			
		||||
          id: cmdSmallerId,
 | 
			
		||||
          document,
 | 
			
		||||
          _parentId: cmdsetId,
 | 
			
		||||
          oncommand: `Zotero.${config.addonInstance}.hooks.onShortcuts('smaller')`,
 | 
			
		||||
        },
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
    // Here we register an conflict key for Alt+S
 | 
			
		||||
    // just to show how the confliction check works.
 | 
			
		||||
    // This is something you should avoid in your plugin.
 | 
			
		||||
    ztoolkit.Shortcut.register("event", {
 | 
			
		||||
      id: `${config.addonRef}-key-smaller-conflict`,
 | 
			
		||||
      key: "S",
 | 
			
		||||
      modifiers: "alt",
 | 
			
		||||
      callback: (keyOptions) => {
 | 
			
		||||
        ztoolkit.getGlobal("alert")("Smaller! This is a conflict key.");
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
    // Register an event key to check confliction
 | 
			
		||||
    ztoolkit.Shortcut.register("event", {
 | 
			
		||||
      id: `${config.addonRef}-key-check-conflict`,
 | 
			
		||||
      key: "C",
 | 
			
		||||
      modifiers: "alt",
 | 
			
		||||
      callback: (keyOptions) => {
 | 
			
		||||
        addon.hooks.onShortcuts("confliction");
 | 
			
		||||
      },
 | 
			
		||||
      }
 | 
			
		||||
      if (ev.shiftKey && ev.key === "S") {
 | 
			
		||||
        addon.hooks.onShortcuts("smaller");
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    new ztoolkit.ProgressWindow(config.addonName)
 | 
			
		||||
      .createLine({
 | 
			
		||||
        text: "Example Shortcuts: Alt+L/S/C",
 | 
			
		||||
@ -162,22 +124,6 @@ export class KeyExampleFactory {
 | 
			
		||||
      })
 | 
			
		||||
      .show();
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @example
 | 
			
		||||
  static exampleShortcutConflictingCallback() {
 | 
			
		||||
    const conflictingGroups = ztoolkit.Shortcut.checkAllKeyConflicting();
 | 
			
		||||
    new ztoolkit.ProgressWindow("Check Key Conflicting")
 | 
			
		||||
      .createLine({
 | 
			
		||||
        text: `${conflictingGroups.length} groups of conflicting keys found. Details are in the debug output/console.`,
 | 
			
		||||
      })
 | 
			
		||||
      .show(-1);
 | 
			
		||||
    ztoolkit.log(
 | 
			
		||||
      "Conflicting:",
 | 
			
		||||
      conflictingGroups,
 | 
			
		||||
      "All keys:",
 | 
			
		||||
      ztoolkit.Shortcut.getAll(),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class UIExampleFactory {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user