commit
						7f733416ee
					
				
							
								
								
									
										39
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								.eslintrc.json
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
{
 | 
			
		||||
  "env": {
 | 
			
		||||
    "browser": true,
 | 
			
		||||
    "es2021": true
 | 
			
		||||
  },
 | 
			
		||||
  "root": true,
 | 
			
		||||
  "extends": [
 | 
			
		||||
    "eslint:recommended",
 | 
			
		||||
    "plugin:@typescript-eslint/recommended",
 | 
			
		||||
    "prettier"
 | 
			
		||||
  ],
 | 
			
		||||
  "overrides": [],
 | 
			
		||||
  "parser": "@typescript-eslint/parser",
 | 
			
		||||
  "parserOptions": {
 | 
			
		||||
    "ecmaVersion": "latest",
 | 
			
		||||
    "sourceType": "module"
 | 
			
		||||
  },
 | 
			
		||||
  "plugins": ["@typescript-eslint"],
 | 
			
		||||
  "rules": {
 | 
			
		||||
    "@typescript-eslint/ban-ts-comment": ["warn", "allow-with-description"],
 | 
			
		||||
    "@typescript-eslint/no-unused-vars": "off",
 | 
			
		||||
    "@typescript-eslint/no-explicit-any": ["off", { "ignoreRestArgs": true }],
 | 
			
		||||
    "@typescript-eslint/no-non-null-assertion": "off"
 | 
			
		||||
  },
 | 
			
		||||
  "ignorePatterns": [
 | 
			
		||||
    "**/dist/**",
 | 
			
		||||
    "**/node_modules/**",
 | 
			
		||||
    "**/abbrevIso*",
 | 
			
		||||
    "**/example*",
 | 
			
		||||
    "**/*.bak",
 | 
			
		||||
    "coverage/**",
 | 
			
		||||
    "docs-shared/lib/**",
 | 
			
		||||
    "packages/*/assets/**",
 | 
			
		||||
    "packages/*/lib/**",
 | 
			
		||||
    "!.vuepress/**",
 | 
			
		||||
    "**/.vuepress/.cache/**",
 | 
			
		||||
    "**/.vuepress/.temp/**"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1 @@
 | 
			
		||||
* text=auto eol=lf
 | 
			
		||||
							
								
								
									
										3
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.vscode/extensions.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
{
 | 
			
		||||
  "recommendations": ["dbaeumer.vscode-eslint", "esbenp.prettier-vscode"]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										48
									
								
								.vscode/launch.json
									
									
									
									
										vendored
									
									
								
							@ -1,28 +1,22 @@
 | 
			
		||||
{
 | 
			
		||||
    // 使用 IntelliSense 了解相关属性。 
 | 
			
		||||
    // 悬停以查看现有属性的描述。
 | 
			
		||||
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
 | 
			
		||||
    "version": "0.2.0",
 | 
			
		||||
    "configurations": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "node",
 | 
			
		||||
            "request": "launch",
 | 
			
		||||
            "name": "Restart",
 | 
			
		||||
            "runtimeExecutable": "npm",
 | 
			
		||||
            "runtimeArgs": [
 | 
			
		||||
                "run",
 | 
			
		||||
                "restart"
 | 
			
		||||
            ],
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "type": "node",
 | 
			
		||||
            "request": "launch",
 | 
			
		||||
            "name": "Restart in Prod Mode",
 | 
			
		||||
            "runtimeExecutable": "npm",
 | 
			
		||||
            "runtimeArgs": [
 | 
			
		||||
                "run",
 | 
			
		||||
                "restart-prod"
 | 
			
		||||
            ],
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
  // 使用 IntelliSense 了解相关属性。
 | 
			
		||||
  // 悬停以查看现有属性的描述。
 | 
			
		||||
  // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
 | 
			
		||||
  "version": "0.2.0",
 | 
			
		||||
  "configurations": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "node",
 | 
			
		||||
      "request": "launch",
 | 
			
		||||
      "name": "Restart",
 | 
			
		||||
      "runtimeExecutable": "npm",
 | 
			
		||||
      "runtimeArgs": ["run", "restart"]
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "type": "node",
 | 
			
		||||
      "request": "launch",
 | 
			
		||||
      "name": "Restart in Prod Mode",
 | 
			
		||||
      "runtimeExecutable": "npm",
 | 
			
		||||
      "runtimeArgs": ["run", "restart-prod"]
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								.vscode/setting.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.vscode/setting.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
{
 | 
			
		||||
  "editor.formatOnType": false,
 | 
			
		||||
  "editor.formatOnSave": true,
 | 
			
		||||
  "editor.codeActionsOnSave": {
 | 
			
		||||
    "source.fixAll.eslint": true
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										86
									
								
								.vscode/toolkit.code-snippets
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										86
									
								
								.vscode/toolkit.code-snippets
									
									
									
									
										vendored
									
									
								
							@ -1,45 +1,45 @@
 | 
			
		||||
{
 | 
			
		||||
    "appendElement - full": {
 | 
			
		||||
        "scope": "javascript,typescript",
 | 
			
		||||
        "prefix": "appendElement",
 | 
			
		||||
        "body": [
 | 
			
		||||
            "appendElement({",
 | 
			
		||||
            "\ttag: '${1:div}',",
 | 
			
		||||
            "\tid: '${2:id}',",
 | 
			
		||||
            "\tnamespace: '${3:html}',",
 | 
			
		||||
            "\tclassList: ['${4:class}'],",
 | 
			
		||||
            "\tstyles: {${5:style}: '$6'},",
 | 
			
		||||
            "\tproperties: {},",
 | 
			
		||||
            "\tattributes: {},",
 | 
			
		||||
            "\t[{ '${7:onload}', (e: Event) => $8, ${9:false} }],",
 | 
			
		||||
            "\tcheckExistanceParent: ${10:HTMLElement},",
 | 
			
		||||
            "\tignoreIfExists: ${11:true},",
 | 
			
		||||
            "\tskipIfExists: ${12:true},",
 | 
			
		||||
            "\tremoveIfExists: ${13:true},",
 | 
			
		||||
            "\tcustomCheck: (doc: Document, options: ElementOptions) => ${14:true},",
 | 
			
		||||
            "\tchildren: [$15]",
 | 
			
		||||
            "}, ${16:container});"
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    "appendElement - minimum": {
 | 
			
		||||
        "scope": "javascript,typescript",
 | 
			
		||||
        "prefix": "appendElement",
 | 
			
		||||
        "body": "appendElement({ tag: '$1' }, $2);"
 | 
			
		||||
    },
 | 
			
		||||
    "register Notifier": {
 | 
			
		||||
        "scope": "javascript,typescript",
 | 
			
		||||
        "prefix": "registerObserver",
 | 
			
		||||
        "body": [
 | 
			
		||||
            "registerObserver({",
 | 
			
		||||
            "\t notify: (",
 | 
			
		||||
            "\t\tevent: _ZoteroTypes.Notifier.Event,",
 | 
			
		||||
            "\t\ttype: _ZoteroTypes.Notifier.Type,",
 | 
			
		||||
            "\t\tids: string[],",
 | 
			
		||||
            "\t\textraData: _ZoteroTypes.anyObj",
 | 
			
		||||
            "\t) => {",
 | 
			
		||||
            "\t\t$0",
 | 
			
		||||
            "\t}",
 | 
			
		||||
            "});"
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
  "appendElement - full": {
 | 
			
		||||
    "scope": "javascript,typescript",
 | 
			
		||||
    "prefix": "appendElement",
 | 
			
		||||
    "body": [
 | 
			
		||||
      "appendElement({",
 | 
			
		||||
      "\ttag: '${1:div}',",
 | 
			
		||||
      "\tid: '${2:id}',",
 | 
			
		||||
      "\tnamespace: '${3:html}',",
 | 
			
		||||
      "\tclassList: ['${4:class}'],",
 | 
			
		||||
      "\tstyles: {${5:style}: '$6'},",
 | 
			
		||||
      "\tproperties: {},",
 | 
			
		||||
      "\tattributes: {},",
 | 
			
		||||
      "\t[{ '${7:onload}', (e: Event) => $8, ${9:false} }],",
 | 
			
		||||
      "\tcheckExistanceParent: ${10:HTMLElement},",
 | 
			
		||||
      "\tignoreIfExists: ${11:true},",
 | 
			
		||||
      "\tskipIfExists: ${12:true},",
 | 
			
		||||
      "\tremoveIfExists: ${13:true},",
 | 
			
		||||
      "\tcustomCheck: (doc: Document, options: ElementOptions) => ${14:true},",
 | 
			
		||||
      "\tchildren: [$15]",
 | 
			
		||||
      "}, ${16:container});"
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "appendElement - minimum": {
 | 
			
		||||
    "scope": "javascript,typescript",
 | 
			
		||||
    "prefix": "appendElement",
 | 
			
		||||
    "body": "appendElement({ tag: '$1' }, $2);"
 | 
			
		||||
  },
 | 
			
		||||
  "register Notifier": {
 | 
			
		||||
    "scope": "javascript,typescript",
 | 
			
		||||
    "prefix": "registerObserver",
 | 
			
		||||
    "body": [
 | 
			
		||||
      "registerObserver({",
 | 
			
		||||
      "\t notify: (",
 | 
			
		||||
      "\t\tevent: _ZoteroTypes.Notifier.Event,",
 | 
			
		||||
      "\t\ttype: _ZoteroTypes.Notifier.Type,",
 | 
			
		||||
      "\t\tids: string[],",
 | 
			
		||||
      "\t\textraData: _ZoteroTypes.anyObj",
 | 
			
		||||
      "\t) => {",
 | 
			
		||||
      "\t\t$0",
 | 
			
		||||
      "\t}",
 | 
			
		||||
      "});"
 | 
			
		||||
    ]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,3 @@
 | 
			
		||||
.makeItRed {
 | 
			
		||||
    background-color: tomato;
 | 
			
		||||
}
 | 
			
		||||
  background-color: tomato;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								package.json
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								package.json
									
									
									
									
									
								
							@ -24,7 +24,9 @@
 | 
			
		||||
    "restart-prod": "npm run build-prod && npm run stop && npm run start",
 | 
			
		||||
    "restart": "npm run restart-dev",
 | 
			
		||||
    "release": "release-it",
 | 
			
		||||
    "test": "echo \"Error: no test specified\" && exit 1"
 | 
			
		||||
    "lint": "prettier --write . && eslint . --ext .ts --fix",
 | 
			
		||||
    "test": "echo \"Error: no test specified\" && exit 1",
 | 
			
		||||
    "update-deps": "npm update --save"
 | 
			
		||||
  },
 | 
			
		||||
  "repository": {
 | 
			
		||||
    "type": "git",
 | 
			
		||||
@ -41,14 +43,22 @@
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@types/node": "^18.11.17",
 | 
			
		||||
    "@typescript-eslint/eslint-plugin": "^5.59.1",
 | 
			
		||||
    "@typescript-eslint/parser": "^5.59.1",
 | 
			
		||||
    "compressing": "^1.6.3",
 | 
			
		||||
    "concurrently": "^7.6.0",
 | 
			
		||||
    "cross-env": "^7.0.3",
 | 
			
		||||
    "esbuild": "^0.17.4",
 | 
			
		||||
    "eslint": "^8.39.0",
 | 
			
		||||
    "eslint-config-prettier": "^8.8.0",
 | 
			
		||||
    "minimist": "^1.2.7",
 | 
			
		||||
    "prettier": "2.8.8",
 | 
			
		||||
    "release-it": "^15.6.0",
 | 
			
		||||
    "replace-in-file": "^6.3.5",
 | 
			
		||||
    "typescript": "^4.9.4",
 | 
			
		||||
    "zotero-types": "^1.0.12"
 | 
			
		||||
  },
 | 
			
		||||
  "prettier": {
 | 
			
		||||
    "tabWidth": 2
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -6,4 +6,4 @@
 | 
			
		||||
    "6": "/path/to/zotero6.exe",
 | 
			
		||||
    "7": "/path/to/zotero7.exe"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -21,7 +21,7 @@ class Addon {
 | 
			
		||||
  // Lifecycle hooks
 | 
			
		||||
  public hooks: typeof hooks;
 | 
			
		||||
  // APIs
 | 
			
		||||
  public api: {};
 | 
			
		||||
  public api: object;
 | 
			
		||||
 | 
			
		||||
  constructor() {
 | 
			
		||||
    this.data = {
 | 
			
		||||
 | 
			
		||||
@ -8,10 +8,7 @@ export function initLocale() {
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getString(
 | 
			
		||||
  localString: string,
 | 
			
		||||
  noReload: boolean = false
 | 
			
		||||
): string {
 | 
			
		||||
export function getString(localString: string, noReload = false): string {
 | 
			
		||||
  try {
 | 
			
		||||
    return addon.data.locale?.stringBundle.GetStringFromName(localString);
 | 
			
		||||
  } catch (e) {
 | 
			
		||||
 | 
			
		||||
@ -46,7 +46,8 @@ async function updatePrefsUI() {
 | 
			
		||||
  // with addon.data.prefs.window.document
 | 
			
		||||
  // Or bind some events to the elements
 | 
			
		||||
  const renderLock = ztoolkit.getGlobal("Zotero").Promise.defer();
 | 
			
		||||
  const tableHelper = new ztoolkit.VirtualizedTable(addon.data.prefs?.window!)
 | 
			
		||||
  if (addon.data.prefs?.window == undefined) return;
 | 
			
		||||
  const tableHelper = new ztoolkit.VirtualizedTable(addon.data.prefs?.window)
 | 
			
		||||
    .setContainerId(`${config.addonRef}-table-container`)
 | 
			
		||||
    .setProp({
 | 
			
		||||
      id: `${config.addonRef}-prefs-table`,
 | 
			
		||||
@ -122,7 +123,7 @@ function bindPrefEvents() {
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
  addon.data
 | 
			
		||||
    .prefs!!.window.document.querySelector(
 | 
			
		||||
    .prefs!.window.document.querySelector(
 | 
			
		||||
      `#zotero-prefpane-${config.addonRef}-input`
 | 
			
		||||
    )
 | 
			
		||||
    ?.addEventListener("change", (e) => {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user