update: use zotero-types

This commit is contained in:
xiangyu 2022-08-29 19:12:04 +08:00
parent 8bad0cffff
commit cef9153bc5
11 changed files with 5 additions and 837 deletions

View File

@ -33,6 +33,7 @@
"replace-in-file": "^6.3.2"
},
"devDependencies": {
"release-it": "^14.14.0"
"release-it": "^14.14.0",
"zotero-types": "^0.0.1"
}
}

View File

@ -1,3 +1,4 @@
import { Zotero } from "zotero-types";
import { Addon, addonName } from "./addon";
import AddonModule from "./module";

View File

@ -1,3 +1,4 @@
import { Zotero } from "zotero-types";
import { Addon } from "./addon";
Zotero.AddonTemplate = new Addon();

View File

@ -1,3 +1,4 @@
import { XUL, Zotero } from "zotero-types";
import { Addon } from "./addon";
import AddonModule from "./module";
const { addonRef } = require("../package.json");

275
typing/data.d.ts vendored
View File

@ -1,275 +0,0 @@
// chrome/content/zotero/xpcom/data/dataObject.js
declare interface _ZoteroDataObject {
objectType: string;
id: number;
libraryID: number;
library: _ZoteroLibrary;
key: string;
libraryKey: string;
parentKey: string;
parentID: number;
itemTypeID: number;
parentItem: _ZoteroItem;
getRelations: () => object;
getRelationsByPredicate: (predicate: string) => string[];
addRelation: (predicate: string, object: object) => boolean;
hasRelation: (predicate: string, object: object) => boolean;
removeRelation: (predicate: string, object: object) => boolean;
setRelations: (newRelations: object) => boolean;
hasChanged: () => boolean;
isEditable: (_op: string = "edit") => boolean;
save: (options?: any) => Promise<boolean>;
saveTx: (options?: any) => Promise<boolean>;
eraseTx: (options?: any) => Promise<boolean>;
erase: (options?: any) => Promise<boolean>;
_version: number;
_synced: boolean;
}
declare interface _ZoteroDataObjectConstructable {
new (): _ZoteroDataObject;
}
// chrome/content/zotero/xpcom/data/item.js
// TODO: complete this part
declare interface _ZoteroItem extends _ZoteroDataObject {
isRegularItem: () => boolean;
isAttachment: () => boolean;
isAnnotation: () => boolean;
isPDFAttachment: () => boolean;
getTags: () => { tag: string; type: number }[];
addTag: (name: string, type: number) => boolean;
removeTag: (tag: string) => boolean;
// Only regular item
addToCollection: (id: number) => void;
getNotes: () => _ZoteroItem[];
getCollections: () => number[];
getAttachments: () => _ZoteroItem[];
getField: (
name: string,
unformatted?: boolean,
includeBaseMapped?: boolean
) => any;
setField: (name: string, value: string | number) => void;
getCreators: () => {
firstName?: string;
lastName: string;
fieldMode: number;
creatorTypeID: number;
}[];
getCreatorsJSON: () => {
firstName?: string;
lastName?: string;
name?: string;
creatorType: string;
}[];
getBestAttachment: () => Promise<_ZoteroItem>;
getBestAttachments: () => Promise<_ZoteroItem[]>;
getBestAttachmentState: () => Promise<object>;
// Only image annotation & attachment item
getFilePathAsync: () => string;
// Only notes
isNote: () => boolean;
getNote: () => string;
setNote: (content: string) => void;
getNoteTitle: () => string;
// Only Annotation
getAnnotations: (includeTrashed: boolean = false) => _ZoteroItem[];
annotationType: string;
annotationComment: string;
annotationText: string;
annotationPosition: string;
annotationColor: string;
annotationPageLabel: string;
}
declare interface _ZoteroItemConstructable {
new (itemTypeOrID?: string): _ZoteroItem;
}
// chrome/content/zotero/xpcom/data/items.js
declare class _ZoteroItems {
[attr: string]: any;
get: (
ids: number | number[] | string | string[]
) => _ZoteroItem | _ZoteroItem[];
getAll: (
libraryID: number,
onlyTopLevel: boolean = false,
includeDeleted: boolean = false,
asIDs: boolean = false
) => Promise<Array<Zotero.Item | number>>;
getAPIData: (libraryID, apiPath) => string; // item data in web API format
apiDataGenerator: (params: object) => Promise<string>;
copyChildItems: (fromItem: _ZoteroItem, toItem: _ZoteroItem) => Promise<void>;
moveChildItems: (
fromItem: _ZoteroItem,
toItem: _ZoteroItem,
includeTrashed: boolean = false
) => Promise<void>;
merge: (item: _ZoteroItem, otherItems: _ZoteroItem[]) => Promise<any>;
trash: (ids: number[]) => Promise<void>;
trashTx: (ids: number[]) => Promise<void>;
emptyTrash: (libraryID: number, options: object = {}) => Promise<number>; // return deleted items count
addToPublications: (
items: _ZoteroItem[],
options: object = {}
) => Promise<void>;
removeFromPublications: (items: _ZoteroItem[]) => Promise<void>;
purge: () => Promise<void>; // Purge unused data values
getFirstCreatorFromJSON: (json: JSON) => any;
getFirstCreatorFromData: (itemTypeID: number, creatorsData: object) => string;
keepParents: (items: _ZoteroItem[]) => _ZoteroItem[]; // Returns an array of items with children of selected parents removed
getSortTitle: (title: string | number) => string;
}
// chrome/content/zotero/xpcom/data/collection.js
declare interface _ZoteroCollection extends _ZoteroDataObject {
name: string;
version: number;
synced: boolean;
treeViewID: string;
treeViewImage: string;
loadFromRow: (row: object[]) => void;
hasChildCollections: (includeTrashed: boolean = false) => boolean;
hasChildItems: () => boolean;
getChildCollections: (
asIDs: boolean = false
) => _ZoteroCollection[] | number[];
getChildItems: (
asIDs: boolean,
includeDeleted: boolean = false
) => _ZoteroItem[] | number[];
addItem: (itemID: number, options: object = {}) => Promise<any>; // do not require save
addItems: (itemIDs: number[], options: object = {}) => Promise<any>; // do not require save
removeItem: (itemID: number, options: object = {}) => Promise<any>;
removeItems: (itemIDs: number[], options: object = {}) => Promise<any>;
hasItem: (item: number | _ZoteroItem) => boolean;
hasDescendent: (type: string, id: number) => boolean;
diff: (collection: _ZoteroCollection, includeMatches: boolean) => Array<any>;
clone: (libraryID: number) => _ZoteroCollection; // not saved
isCollection: () => true;
serialize: (nested: boolean = false) => {
primary: {
collectionID: number;
libraryID: number;
key: string;
};
fields: {
name: string;
parentKey: string;
};
childCollections: _ZoteroCollection[];
childItems: _ZoteroItem[];
descendents: object[];
};
fromJSON: (json: JSON, options: object = {}) => void;
toJSON: (options: object = {}) => JSON;
getDescendents: (
nested: boolean,
type: string,
includeDeletedItems: boolean = false,
level: number = 1
) => object[];
getLinkedCollection: (
libraryID: number,
bidrectional: boolean
) => Promise<_ZoteroCollection>;
addLinkedCollection: (collection: _ZoteroCollection) => Promise<any>;
}
declare interface _ZoteroCollectionConstructable {
new (params: object = {}): _ZoteroCollection;
}
// chrome/content/zotero/xpcom/data/collections.js
declare class _ZoteroCollections {
getName: () => string;
getChildItems: (arg1: boolean, arg2: boolean) => Array<_ZoteroItem>;
getByLibrary: (
libraryID: number,
recursive: boolean = false
) => _ZoteroCollection[];
getByParent: (
parentCollectionID: number,
recursive: boolean = false
) => _ZoteroCollection[];
getCollectionsContainingItems: (
itemIDs: number[],
asIDs: boolean = false
) => _ZoteroItem[] | number[];
registerChildCollection: (
collectionID: number,
childCollectionID: number
) => void;
unregisterChildCollection: (
collectionID: number,
childCollectionID: number
) => void;
registerChildItem: (collectionID: number, itemID: number) => void;
unregisterChildItem: (collectionID: number, itemID: number) => void;
}
// chrome/content/zotero/xpcom/data/library.js
declare interface _ZoteroLibrary {
libraryID: number;
id: number;
libraryType: "user" | "group";
libraryTypeID: number;
isGroup: boolean;
libraryVersion: number;
syncable: boolean;
lastSync: string;
name: string;
treeViewID: string;
treeViewImage: string;
hasTrash: boolean;
allowsLinkedFiles: boolean;
editable: boolean;
filesEditable: boolean;
storageVersion: number;
archived: boolean;
storageDownloadNeeded: boolean;
loadAllDataTypes: () => Promise<any>;
getDataLoaded: (objectType: string) => boolean;
setDataLoading: (objectType: string) => void;
getDataLoadedPromise: (objectType: string) => Promise<any>;
setDataLoaded: (objectType: string) => void;
waitForDataLoad: (objectType: string) => Promise<any>;
isChildObjectAllowed: (type: string) => boolean;
updateLastSyncTime: () => void;
save: (options?: any) => Promise<boolean>;
saveTx: (options?: any) => Promise<boolean>;
eraseTx: (options?: any) => Promise<boolean>;
erase: (options?: any) => Promise<boolean>;
hasCollections: () => boolean;
updateCollections: () => Promise<any>;
hasSearches: () => boolean;
updateSearches: () => Promise<any>;
hasItems: () => Promise<boolean>;
hasItem: (item: _ZoteroItem) => boolean;
}
declare interface _ZoteroLibraryConstructable {
new (params: object = {}): _ZoteroLibrary;
}
// chrome/content/zotero/xpcom/data/libraries.js
declare class _ZoteroLibraries {
[attr: string]: any;
userLibraryID: number = 1;
userLibrary: _ZoteroLibrary;
register: (library: _ZoteroLibrary) => void;
unregister: (libraryID: number) => void;
init: () => void;
exists: (libraryID: number) => boolean;
getAll: () => _ZoteroLibrary[];
get: (libraryID: number) => _ZoteroLibrary;
}

147
typing/global.d.ts vendored
View File

@ -1,147 +0,0 @@
declare interface DirectoryIterator {
forEach(handler: any): Promise<void>;
close(): void;
next: () => any;
}
declare interface DirectoryIteratorConstructable {
new (path: string): DirectoryIterator; // eslint-disable-line @typescript-eslint/prefer-function-type
}
declare namespace OS {
namespace File {
type Entry = {
isDir: boolean;
size: number;
path: string;
unixMode?: number;
};
type FileInfo = {
isDir: boolean;
size: number;
unixMode?: number;
lastModificationDate: Date;
};
}
}
declare const OS: {
// https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_the_main_thread
File: {
exists: (path: string) => boolean | Promise<boolean>;
read: (
path: string | BufferSource,
options?: { encoding?: string }
) =>
| string
| Promise<string>
| Uint8Array
| Promise<Uint8Array>
| Promise<BufferSource>;
move: (from: string, to: string) => void | Promise<void>;
remove: (
path: string,
options?: { ignoreAbsent: boolean }
) => Promise<void>;
writeAtomic: (
path: string,
data: Uint8Array | string,
options?: { tmpPath?: string; encoding?: string }
) => void | Promise<void>;
makeDir: (
path: string,
options?: { ignoreExisting?: boolean }
) => void | Promise<void>;
stat: (path: string) => OS.File.FileInfo | Promise<OS.File.FileInfo>;
copy: (
src: string,
tgt: string,
options?: { noOverwrite?: boolean }
) => void;
removeDir: (
path: string,
options?: { ignoreAbsent?: boolean; ignorePermissions?: boolean }
) => void;
DirectoryIterator: DirectoryIteratorConstructable;
};
// https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.Path
Path: {
join: (...args: string[]) => string;
dirname: (path: string) => string;
basename: (path: string) => string;
normalize: (path: string) => string;
split: (path: string) => {
absolute: boolean;
components: string[];
winDrive?: string;
};
toFileURI: (path: string) => string;
};
};
declare const NetUtil: { [attr: string]: any };
// https://stackoverflow.com/questions/39040108/import-class-in-definition-file-d-ts
declare const Zotero: {
[attr: string]: any;
debug: (message, level?, maxDepth?, stack?) => void;
log: (
message,
type?,
sourceName?,
sourceLine?,
lineNumber?,
columnNumber?
) => void;
Prefs: {
get: (pref: string, global: boolean = false) => boolean | string | number;
set: (
pref: string,
value: boolean | string | number,
global: boolean = false
) => any;
};
Notifier: {
registerObserver: (
ref: { notify: Function },
types?: string[],
id?: string,
priority?: null
) => string;
unregisterObserver: (id: String) => void;
};
DataObject: _ZoteroDataObjectConstructable;
Item: _ZoteroItemConstructable;
Items: _ZoteroItems;
Collection: _ZoteroCollectionConstructable;
Collections: _ZoteroCollection;
Library: _ZoteroLibraryConstructable;
Libraries: _ZoteroLibraries;
Reader: _ZoteroReader;
EditorInstance: _ZoteroEditorInstanceConstructable;
EditorInstanceUtilities: _ZoteroEditorInstanceUtilities;
Notes: _ZoteroNotes;
AddonTemplate: import("../src/addon");
};
declare const ZoteroPane_Local: {
getSelectedCollection: () => _ZoteroCollection;
newNote: (popup?, parentKey?, text?, citeURI?) => Promise<number>;
};
declare const Zotero_File_Interface: {
exportItemsToClipboard: (items: _ZoteroItem[], translatorID: string) => void;
};
declare class Zotero_File_Exporter {
items: _ZoteroItem[];
save = async () => {};
}
declare const Components: any;
declare const Services: any;
declare const ZoteroContextPane: {
[attr: string]: any;
getActiveEditor: () => _ZoteroEditorInstance;
};

121
typing/note.d.ts vendored
View File

@ -1,121 +0,0 @@
// chrome/content/zotero/xpcom/editorInstance.js
declare interface _ZoteroEditorInstance {
[attr: string]: any;
init: (options: {
onNavigate?: Function;
item?: _ZoteroItem;
reloaded?: boolean;
viewMode?: string;
readOnly?: boolean;
disableUI?: boolean;
onReturn?: Function;
iframeWindow?: XUL.Element;
popup?: any;
state?: any;
placeholder?: any;
}) => Promise<void>;
uninit: () => Promise<void>;
focus: () => void;
notify: (event, type, ids, extraData) => Promise<void>;
saveSync: () => void;
insertAnnotations: (annotations: any) => Promise<void>;
_postMessage: (message: any) => void;
_isReadOnly: () => boolean;
_getFont: () => { fontSize: number; fontFamily: string };
_handleFontChange: () => void;
_handleStyleChange: () => void;
_handleSpellCheckChange: () => void;
_showInLibrary: (ids: number | number[]) => void;
importImages: (annotations: any) => Promise<void>;
_digestItems: (ids: number[]) => string | null;
_messageHandler: (e: MessageEvent) => Promise<void>;
_updateCitationItems: (citationItemsList: object[]) => Promise<void>;
_feedSubscription: (subscription: object) => Promise<void>;
_importImage: (src: string, download: boolean) => Promise<string>;
_openPopup: (
x: number,
y: number,
pos: any,
itemGroups: any
) => Promise<void>;
_updateCitationItems: (citationItemsList: object[]) => Promise<void>;
_getSpellChecker: () => any;
_ensureNoteCreated: () => Promise<void>;
_save: (noteData: object, skipDateModifiedUpdate: boolean) => Promise<void>;
_arrayBufferToBase64: (buffer: Buffer) => string;
_dataURLtoBlob: (dataurl: string) => Blob | null;
_getDataURL: (item: _ZoteroItem) => Promise<string>;
_openQuickFormatDialog: (
nodeID: number,
citationData: any,
filterLibraryIDs: any,
openedEmpty: any
) => Promise<void>;
getItemFromURIs: (uris: string[]) => Promise<_ZoteroItem>;
createNoteFromAnnotations: (
annotations: _ZoteroItem[],
parentID: number
) => Promise<_ZoteroItem>;
_iframeWindow: XULWindow;
_item: _ZoteroItem;
_initPromise: Promise;
_viewMode: string;
_reloaded: boolean;
_readOnly: boolean;
_filesReadOnly: boolean;
_disableUI: boolean;
_onReturn: Function;
_popup: any;
_state: any;
_disableSaving: boolean;
_subscriptions: [];
_quickFormatWindow: any;
_citationItemsList: any;
_prefObserverIDs: any[];
}
declare interface _ZoteroEditorInstanceConstructable {
new (): _ZoteroEditorInstance;
}
declare class _ZoteroEditorInstanceUtilities {
serializeAnnotations: (
annotations: object[],
skipEmbeddingItemData: boolean
) => { html: string; citationItems: _ZoteroItem[] };
_transformTextToHTML: (text: string) => string;
_formatCitationItemPreview: (citationItem: _ZoteroItem) => string;
formatCitation: (citation: object) => string;
}
// chrome/content/zotero/xpcom/data/notes.js
declare class _ZoteroNotes {
[attr: string]: any;
AUTO_SYNC_DELAY: number = 15;
MAX_TITLE_LENGTH: number = 120;
defaultNote: string;
notePrefix: string;
noteSuffix: string;
_editorInstances: _ZoteroEditorInstance[];
_downloadInProgressPromise: Promise;
registerEditorInstance: (instance: _ZoteroEditorInstance) => void;
unregisterEditorInstance: (instance: _ZoteroEditorInstance) => Promise<void>;
updateUser: (fromUserID: number, toUserID: number) => Promise<void>;
replaceAllItemKeys: (
item: _ZoteroItem,
itemKeyMap: Map<string, string>
) => void;
replaceItemKey: (
item: _ZoteroItem,
fromItemKey: string,
toItemKey: string
) => void;
getExportableNote: (item: _ZoteroItem) => Promise<string>;
ensureEmbeddedImagesAreAvailable: (item: _ZoteroItem) => Promise<boolean>;
copyEmbeddedImages: (fromItemKey: string, toItemKey: string) => Promise<void>;
promptToIgnoreMissingImage: () => boolean;
deleteUnusedEmbeddedImages: (item: _ZoteroItem) => Promise<void>;
hasSchemaVersion: (note: _ZoteroItem) => boolean;
}

16
typing/pane.d.ts vendored
View File

@ -1,16 +0,0 @@
// chrome/content/zotero/zoteroPane.js
declare const ZoteroPane: {
[attr: string]: any;
collectionsView: any;
itemsView: {
onSelect: {
addListener: (Function) => any;
};
};
progressWindow: any;
canEdit: () => boolean;
displayCannotEditLibraryMessage: () => void;
getSelectedCollection: (arg: boolean) => _ZoteroCollection;
getSelectedItems: () => Array<_ZoteroItem>;
};

154
typing/reader.d.ts vendored
View File

@ -1,154 +0,0 @@
// chrome/content/zotero/xpcom/reader.js
declare interface _ZoteroReaderState {
pageIndex: number;
scale: string;
rotation: number;
top: number;
left: number;
sidebarView: number;
sidebarWidth: number;
scrollMode: number;
spreadMode: number;
}
declare interface _ZoteroReaderLocation {
annotationKey: String;
pageIndex: number;
}
declare class _ZoteroReaderInstance {
[attr: string]: any;
constructor();
pdfStateFileName: string = ".zotero-pdf-state";
annotationItemIDs: number[];
itemID: number;
state: _ZoteroReaderState;
_instanceID: string;
_window: Window;
_iframeWindow: Window;
_title: string;
_isReaderInitialized: boolean;
_showItemPaneToggle: boolean;
_initPromise: Promise;
focus: () => void;
open: (options: {
itemID: number;
state: _ZoteroReaderState;
location: _ZoteroReaderLocation;
}) => Promise<boolean>;
updateTitle: () => void;
setAnnotations: (items: _ZoteroItem[]) => void;
unsetAnnotations(keys: number[] | string[]);
navigate: (location: _ZoteroReaderLocation) => Promise<void>;
enableAddToNote: (enable: boolean) => void;
setSidebarWidth: (width: number) => void;
setSidebarOpen: (open: boolean) => void;
focusLastToolbarButton: () => void;
tabToolbar: (reverse: any) => void;
focusFirst: () => void;
setBottomPlaceholderHeight: (height: number) => Promise<void>;
setToolbarPlaceholderWidth: (height: number) => Promise<void>;
isHandToolActive: () => boolean;
isZoomAutoActive: () => boolean;
isZoomPageWidthActive: () => boolean;
isZoomPageHeightActive: () => boolean;
allowNavigateFirstPage: () => boolean;
allowNavigateLastPage: () => boolean;
allowNavigateBack: () => boolean;
allowNavigateForward: () => boolean;
promptToTransferAnnotations: () => boolean;
promptToDeletePages: (num: number) => boolean;
reload: () => void;
menuCmd: (
cmd: "transferFromPDF" | "export" | "showInLibrary"
) => Promise<void>;
_initIframeWindow: () => boolean;
_setState: (state: _ZoteroReaderState) => Promise<void>;
_getState: () => Promise<_ZoteroReaderState>;
_isReadOnly: () => boolean;
_dataURLtoBlob: (dataurl: string) => Blob;
_getColorIcon: (color: string, selected: boolean) => string;
_openTagsPopup: (item: _ZoteroItem, selector: string) => void;
_openPagePopup: (data: any) => void;
_openAnnotationPopup: (data: any) => void;
_openColorPopup: (data: any) => void;
_openThumbnailPopup: (data: any) => void;
_openSelectorPopup: (data: any) => void;
_postMessage: (message: object, transfer?: any) => Promise<void>;
_handleMessage: (event: MessageEvent) => Promise<void>;
_waitForReader: () => Promise<void>;
_getAnnotation: (item: _ZoteroItem) => JSON | null;
}
declare class _ZoteroReaderTab extends _ZoteroReaderInstance {
constructor(options: {
itemID: number;
title: startCloseTimer;
sidebarWidth: number;
sidebarOpen: boolean;
bottomPlaceholderHeight: number;
index: number;
tabID: string;
background: boolean;
});
close: () => void;
_toggleNoteSidebar: (isToggled?: boolean) => void;
_setTitleValue: (title: string) => void;
_addToNote: (annotations: any) => void;
}
declare class _ZoteroReaderWindow extends _ZoteroReaderInstance {
constructor(options: {
sidebarWidth: number;
sidebarOpen: boolean;
bottomPlaceholderHeigh: number;
});
init: () => void;
close: () => void;
_setTitleValue: (title: string) => void;
_handleKeyPress: (event: KeyboardEvent) => void;
_onViewMenuOpen: () => void;
_onGoMenuOpen: () => void;
}
declare class _ZoteroReader {
[attr: string]: any;
constructor();
_readers: Array<_ZoteroReaderInstance>;
_sidebarWidth: number;
_sidebarOpen: boolean;
_bottomPlaceholderHeight: number;
_notifierID: string;
onChangeSidebarWidth: (width: number) => void;
onChangeSidebarOpen: (open: boolean) => void;
getSidebarWidth: () => number;
init: () => Promise<void>;
_loadSidebarState: () => void;
_setSidebarState: () => void;
getSidebarOpen: () => boolean;
setSidebarWidth: (width: number) => void;
setSidebarOpen: (open: boolean) => void;
setBottomPlaceholderHeight: (height: number) => void;
notify: (event, type, ids, extraData) => void;
getByTabID: (tabID: string) => _ZoteroReaderInstance;
getWindowStates: () => { type: "reader"; itemID: number; title: string }[];
openURI: (
itemURI: string,
location: _ZoteroReaderLocation,
options: any
) => Promise<void>;
open: (
itemID: number,
location: _ZoteroReaderLocation,
options: {
title: string;
tabIndex: number;
tabID: string;
openInBackground: boolean;
openInWindow: boolean;
allowDuplicate: boolean;
} = {}
) => Promise<void>;
triggerAnnotationsImportCheck: (itemID: number) => Promise<void>;
}

51
typing/tabs.d.ts vendored
View File

@ -1,51 +0,0 @@
// chrome/content/zotero/tabs.js
declare interface TabInstance {
id: string;
type: string;
title: string;
data?: any;
selected?: boolean;
}
declare const Zotero_Tabs: {
selectedID: string;
selectedType: string;
selectedIndex: number;
deck: Element;
_tabs: TabInstance[];
_getTab: (tabId: string) => { tab: TabInstance; tabIndex: number };
_update: () => void;
getTabIDByItemID: (itemID: number) => string;
init: () => void;
getState: () => TabInstance[];
restoreState: (tabs: TabInstance[]) => void;
add: (options: {
id: string;
type: string;
data: any;
title: string;
index: number;
select: boolean;
onClose: Function;
}) => { id: string; container: XUL.Element };
rename: (id: string, title: string) => void;
updateLibraryTabIcon: () => void;
close: (ids: string | string[]) => void;
closeAll: () => void;
undoClose: () => void;
move: (id: string, newIndex: number) => void;
select: (id: string, reopening: boolean, options?: any) => void;
unload: (id: string) => void;
unloadUnusedTabs: () => void;
selectPrev: () => void;
selectPrev: () => void;
selectNext: () => void;
selectLast: () => void;
jump: (index: number) => void;
_openMenu: (x: number, y: number, id: string) => void;
_updateTabBar: () => void;
_showTabBar: () => void;
_hideTabBar: () => void;
};

72
typing/xul.d.ts vendored
View File

@ -1,72 +0,0 @@
declare namespace XUL {
class Element extends HTMLElement {
public tagName?: string;
public hidden?: boolean;
public disabled?: boolean;
public value?: string;
public width?: number;
public height?: number;
public getAttribute?(name: string): string;
public setAttribute?(name: string, value: any): void;
}
class Label extends Element {
public value: string;
}
class Textbox extends XUL.Element {
public value?: string;
public readonly?: boolean;
}
class Checkbox extends XUL.Element {
public checked?: boolean;
}
class Menuitem extends XUL.Element {
public value: string;
public label: string;
}
class ProgressMeter extends XUL.Element {
public value: string | number;
}
class Menupopup extends XUL.Element {}
class Menulist extends XUL.Element {
public firstChild?: Menupopup | ChildNode;
public selectedItem?: Menuitem;
public value?: string;
public itemCount?: number;
public selectedIndex?: number;
public getItemAtIndex?: (i: number) => XUL.Menuitem;
}
class ItemElement extends XUL.Element {
public item?: _ZoteroItem;
}
class Box extends XUL.Element {
public maxHeight?: number;
public minHeight?: number;
public maxWidth?: number;
public minWidth?: number;
}
class Button extends XUL.Element {
public checked?: boolean;
public type?: string;
public tooltiptext?: string;
}
}
declare class ClassList {
public add(classname: string): void;
public remove(classname: string): void;
public contains(classname: string): boolean;
}
declare class XULEvent extends Event {
public target: XUL.Element;
}