2022-08-22 16:41:17 +08:00

155 lines
4.7 KiB
TypeScript

// 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>;
}