UNPKG

zotero-types

Version:

This package contains type definitions for Zotero (https://www.zotero.org/) plugin.

231 lines (217 loc) 8.56 kB
/// <reference path="../../../../internal.d.ts" /> /// <reference path="../../common/types.d.ts" /> /// <reference path="find.d.ts" /> declare namespace _ZoteroTypes { namespace Reader { type DOMViewOptions<State extends DOMViewState, Data> = { portal?: boolean; container: Element; tool: Tool; selectedAnnotationIDs: string[]; annotations: WADMAnnotation[]; showAnnotations: boolean; annotationPopup: AnnotationPopupParams<WADMAnnotation> | null; selectionPopup: SelectionPopupParams<WADMAnnotation> | null; overlayPopup: OverlayPopupParams | null; findState: FindState; viewState?: State; fontFamily?: string; onSetOutline: (outline: OutlineItem[]) => void; onChangeViewState: (state: State, primary?: boolean) => void; onChangeViewStats: (stats: ViewStats) => void; onSetDataTransferAnnotations: ( dataTransfer: DataTransfer, annotation: | NewAnnotation<WADMAnnotation> | NewAnnotation<WADMAnnotation>[], fromText?: boolean, ) => void; onAddAnnotation: ( annotation: NewAnnotation<WADMAnnotation>, select?: boolean, ) => void; onUpdateAnnotations: (annotations: Annotation[]) => void; onOpenLink: (url: string) => void; onSelectAnnotations: ( ids: string[], triggeringEvent?: KeyboardEvent | MouseEvent, ) => void; onSetSelectionPopup: ( params?: SelectionPopupParams<WADMAnnotation> | null, ) => void; onSetAnnotationPopup: ( params?: AnnotationPopupParams<WADMAnnotation> | null, ) => void; onSetOverlayPopup: (params?: OverlayPopupParams) => void; onSetFindState: (state?: FindState) => void; onOpenViewContextMenu: (params: { x: number; y: number }) => void; onOpenAnnotationContextMenu: (params: { ids: string[]; x: number; y: number; view: boolean; }) => void; onFocus: () => void; onTabOut: (isShiftTab?: boolean) => void; onKeyUp: (event: KeyboardEvent) => void; onKeyDown: (event: KeyboardEvent) => void; data: Data & { buf?: Uint8Array; baseURI?: string; }; }; interface DOMViewState { scale?: number; } interface CustomScrollIntoViewOptions extends Omit<ScrollIntoViewOptions, "inline"> { block?: "center" | "start"; ifNeeded?: boolean; offsetY?: number; } interface NavigateOptions extends CustomScrollIntoViewOptions { skipNavStack?: boolean; } abstract class DOMView<State extends DOMViewState, Data> { initializedPromise: Promise<void>; protected readonly _container: Element; protected readonly _iframe: HTMLIFrameElement; protected _iframeWindow: Window & typeof globalThis; protected _iframeDocument: Document; protected _tool: Tool; protected _selectedAnnotationIDs: string[]; protected _annotations: WADMAnnotation[]; protected _annotationsByID: Map<string, WADMAnnotation>; protected _showAnnotations: boolean; protected _annotationPopup: AnnotationPopupParams<WADMAnnotation> | null; protected _selectionPopup: SelectionPopupParams<WADMAnnotation> | null; protected _overlayPopup: OverlayPopupParams | null; protected _findState: FindState | null; protected abstract _find: FindProcessor | null; protected readonly _options: DOMViewOptions<State, Data>; protected _overlayPopupDelayer: anyObj; protected _disableAnnotationPointerEvents: boolean; protected _highlightedPosition: Selector | null; protected _pointerMovedWhileDown: boolean; protected _gotPointerUp: boolean; protected _handledPointerIDs: Set<number>; protected _previewAnnotation: NewAnnotation<WADMAnnotation> | null; protected _draggingNoteAnnotation: WADMAnnotation | null; protected _resizing: boolean; protected constructor(options: DOMViewOptions<State, Data>); protected _initialize(): Promise<void>; protected _getCSP(): string; protected abstract _getSrcDoc(): string; abstract getData(): Data; protected abstract _onInitialDisplay( viewState: Partial<Readonly<State>>, ): MaybePromise<void>; // *** // Utilities for annotations - abstractions over the specific types of selectors used by the two views // *** abstract toSelector(range: Range): Selector | null; abstract toDisplayedRange(selector: Selector): Range | null; protected abstract _navigateToSelector( selector: Selector, options?: NavigateOptions, ): void; // *** // Abstractions over document structure // *** protected abstract _getAnnotationFromRange( range: Range, type: AnnotationType, color?: string, ): NewAnnotation<WADMAnnotation> | null; protected abstract _updateViewState(): void; protected abstract _updateViewStats(): void; // *** // Utilities - called in appropriate event handlers // *** protected _isExternalLink(link: HTMLAnchorElement): boolean; protected _getViewportBoundingRect(range: Range): DOMRect; protected _getAnnotationFromTextSelection( type: AnnotationType, color?: string, ): NewAnnotation<WADMAnnotation> | null; protected _tryUseTool(): void; protected _tryUseToolDebounced: typeof this._tryUseTool; protected _handleViewUpdate(): void; protected _repositionPopups(): void; protected _renderAnnotations(): void; protected _openSelectionPopup(selection: Selection): void; protected _openAnnotationPopup(annotation: WADMAnnotation): void; protected _openExternalLinkOverlayPopup( linkNode: HTMLAnchorElement, ): void; /** * For use in the console during development. */ protected _normalizeAnnotations(): void; // *** // Event handlers // *** protected _handleIFrameLoad(): Promise<void>; protected _handlePointerOver(event: PointerEvent): void; protected _handleDragEnter(event: DragEvent): void; protected _handleDragOver(event: DragEvent): void; protected _handleDrop(): void; protected _getNoteTargetRange( event: PointerEvent | DragEvent, ): Range | null; protected _handleClick(event: MouseEvent): void; protected abstract _handleInternalLinkClick( link: HTMLAnchorElement, ): void; protected _handleKeyDown(event: KeyboardEvent): void; private _handleDragStart(event: DragEvent): void; private _handleDragEnd(_event: DragEvent): void; private _handleContextMenu(event: MouseEvent): void; private _handleSelectionChange(): void; private _handleAnnotationPointerDown( id: string, event: React.PointerEvent, ): void; private _handleAnnotationPointerUp( id: string, event: React.PointerEvent, ): void; private _getAnnotationsAtPoint( clientX: number, clientY: number, ): string[]; private _handleAnnotationDragStart( id: string, dataTransfer: DataTransfer, ): void; private _handleAnnotationResizeStart(_id: string): void; private _handleAnnotationResizeEnd( id: string, range: Range, cancelled: boolean, ): void; protected _handleCopy(event: ClipboardEvent): void; protected _handlePointerDown(event: PointerEvent): void; protected _handlePointerMove(event: PointerEvent): void; protected _handlePointerUp(event: PointerEvent): void; protected _handleResize(): void; protected _handleScroll(): void; private _handleFocus(): void; // *** // Setters that get called once there are changes in reader._state // *** setTool(tool: Tool): void; setAnnotations(annotations: WADMAnnotation[]): void; setShowAnnotations(show: boolean): void; setSelectedAnnotationIDs(ids: string[]): void; setAnnotationPopup(popup: AnnotationPopupParams<WADMAnnotation>): void; setSelectionPopup(popup: SelectionPopupParams<WADMAnnotation>): void; setOverlayPopup(popup: OverlayPopupParams): void; // *** // Public methods to control the view from the outside // *** focus(): void; navigate(location: NavLocation, options?: NavigateOptions): void; } } }