pdfjs-dist
Version:
Generic build of Mozilla's PDF.js library.
388 lines (387 loc) • 11.7 kB
TypeScript
export type AnnotationEditor = import("./editor.js").AnnotationEditor;
export type AnnotationEditorLayer = import("./annotation_editor_layer.js").AnnotationEditorLayer;
/**
* A pdf has several pages and each of them when it will rendered
* will have an AnnotationEditorLayer which will contain the some
* new Annotations associated to an editor in order to modify them.
*
* This class is used to manage all the different layers, editors and
* some action like copy/paste, undo/redo, ...
*/
export class AnnotationEditorUIManager {
static TRANSLATE_SMALL: number;
static TRANSLATE_BIG: number;
static get _keyboardManager(): any;
constructor(container: any, viewer: any, altTextManager: any, eventBus: any, pdfDocument: any, pageColors: any, highlightColors: any, enableHighlightFloatingButton: any, mlManager: any);
_eventBus: any;
viewParameters: {
realScale: number;
rotation: number;
};
isShiftKeyDown: boolean;
destroy(): void;
mlGuess(data: any): Promise<any>;
get hasMLManager(): boolean;
get hcmFilter(): any;
get direction(): any;
get highlightColors(): any;
get highlightColorNames(): any;
setMainHighlightColorPicker(colorPicker: any): void;
editAltText(editor: any): void;
onPageChanging({ pageNumber }: {
pageNumber: any;
}): void;
focusMainContainer(): void;
findParent(x: any, y: any): any;
disableUserSelect(value?: boolean): void;
addShouldRescale(editor: any): void;
removeShouldRescale(editor: any): void;
onScaleChanging({ scale }: {
scale: any;
}): void;
onRotationChanging({ pagesRotation }: {
pagesRotation: any;
}): void;
highlightSelection(methodOfCreation?: string): void;
/**
* Add an editor in the annotation storage.
* @param {AnnotationEditor} editor
*/
addToAnnotationStorage(editor: AnnotationEditor): void;
blur(): void;
focus(): void;
addEditListeners(): void;
removeEditListeners(): void;
/**
* Copy callback.
* @param {ClipboardEvent} event
*/
copy(event: ClipboardEvent): void;
/**
* Cut callback.
* @param {ClipboardEvent} event
*/
cut(event: ClipboardEvent): void;
/**
* Paste callback.
* @param {ClipboardEvent} event
*/
paste(event: ClipboardEvent): void;
/**
* Keydown callback.
* @param {KeyboardEvent} event
*/
keydown(event: KeyboardEvent): void;
/**
* Keyup callback.
* @param {KeyboardEvent} event
*/
keyup(event: KeyboardEvent): void;
/**
* Execute an action for a given name.
* For example, the user can click on the "Undo" entry in the context menu
* and it'll trigger the undo action.
*/
onEditingAction({ name }: {
name: any;
}): void;
/**
* Set the editing state.
* It can be useful to temporarily disable it when the user is editing a
* FreeText annotation.
* @param {boolean} isEditing
*/
setEditingState(isEditing: boolean): void;
registerEditorTypes(types: any): void;
/**
* Get an id.
* @returns {string}
*/
getId(): string;
get currentLayer(): any;
getLayer(pageIndex: any): any;
get currentPageIndex(): number;
/**
* Add a new layer for a page which will contains the editors.
* @param {AnnotationEditorLayer} layer
*/
addLayer(layer: AnnotationEditorLayer): void;
/**
* Remove a layer.
* @param {AnnotationEditorLayer} layer
*/
removeLayer(layer: AnnotationEditorLayer): void;
/**
* Change the editor mode (None, FreeText, Ink, ...)
* @param {number} mode
* @param {string|null} editId
* @param {boolean} [isFromKeyboard] - true if the mode change is due to a
* keyboard action.
*/
updateMode(mode: number, editId?: string | null, isFromKeyboard?: boolean | undefined): void;
addNewEditorFromKeyboard(): void;
/**
* Update the toolbar if it's required to reflect the tool currently used.
* @param {number} mode
* @returns {undefined}
*/
updateToolbar(mode: number): undefined;
/**
* Update a parameter in the current editor or globally.
* @param {number} type
* @param {*} value
*/
updateParams(type: number, value: any): void;
showAllEditors(type: any, visible: any, updateButton?: boolean): void;
enableWaiting(mustWait?: boolean): void;
/**
* Get all the editors belonging to a given page.
* @param {number} pageIndex
* @returns {Array<AnnotationEditor>}
*/
getEditors(pageIndex: number): Array<AnnotationEditor>;
/**
* Get an editor with the given id.
* @param {string} id
* @returns {AnnotationEditor}
*/
getEditor(id: string): AnnotationEditor;
/**
* Add a new editor.
* @param {AnnotationEditor} editor
*/
addEditor(editor: AnnotationEditor): void;
/**
* Remove an editor.
* @param {AnnotationEditor} editor
*/
removeEditor(editor: AnnotationEditor): void;
/**
* The annotation element with the given id has been deleted.
* @param {AnnotationEditor} editor
*/
addDeletedAnnotationElement(editor: AnnotationEditor): void;
/**
* Check if the annotation element with the given id has been deleted.
* @param {string} annotationElementId
* @returns {boolean}
*/
isDeletedAnnotationElement(annotationElementId: string): boolean;
/**
* The annotation element with the given id have been restored.
* @param {AnnotationEditor} editor
*/
removeDeletedAnnotationElement(editor: AnnotationEditor): void;
/**
* Set the given editor as the active one.
* @param {AnnotationEditor} editor
*/
setActiveEditor(editor: AnnotationEditor): void;
/**
* Update the UI of the active editor.
* @param {AnnotationEditor} editor
*/
updateUI(editor: AnnotationEditor): void;
/**
* Add or remove an editor the current selection.
* @param {AnnotationEditor} editor
*/
toggleSelected(editor: AnnotationEditor): void;
/**
* Set the last selected editor.
* @param {AnnotationEditor} editor
*/
setSelected(editor: AnnotationEditor): void;
/**
* Check if the editor is selected.
* @param {AnnotationEditor} editor
*/
isSelected(editor: AnnotationEditor): boolean;
get firstSelectedEditor(): any;
/**
* Unselect an editor.
* @param {AnnotationEditor} editor
*/
unselect(editor: AnnotationEditor): void;
get hasSelection(): boolean;
get isEnterHandled(): any;
/**
* Undo the last command.
*/
undo(): void;
/**
* Redo the last undoed command.
*/
redo(): void;
/**
* Add a command to execute (cmd) and another one to undo it.
* @param {Object} params
*/
addCommands(params: Object): void;
/**
* Delete the current editor or all.
*/
delete(): void;
commitOrRemove(): void;
hasSomethingToControl(): boolean;
/**
* Select all the editors.
*/
selectAll(): void;
/**
* Unselect all the selected editors.
*/
unselectAll(): void;
translateSelectedEditors(x: any, y: any, noCommit?: boolean): void;
/**
* Set up the drag session for moving the selected editors.
*/
setUpDragSession(): void;
/**
* Ends the drag session.
* @returns {boolean} true if at least one editor has been moved.
*/
endDragSession(): boolean;
/**
* Drag the set of selected editors.
* @param {number} tx
* @param {number} ty
*/
dragSelectedEditors(tx: number, ty: number): void;
/**
* Rebuild the editor (usually on undo/redo actions) on a potentially
* non-rendered page.
* @param {AnnotationEditor} editor
*/
rebuild(editor: AnnotationEditor): void;
get isEditorHandlingKeyboard(): any;
/**
* Is the current editor the one passed as argument?
* @param {AnnotationEditor} editor
* @returns
*/
isActive(editor: AnnotationEditor): boolean;
/**
* Get the current active editor.
* @returns {AnnotationEditor|null}
*/
getActive(): AnnotationEditor | null;
/**
* Get the current editor mode.
* @returns {number}
*/
getMode(): number;
get imageManager(): any;
getSelectionBoxes(textLayer: any): {
x: number;
y: number;
width: number;
height: number;
}[] | null;
#private;
}
export function bindEvents(obj: any, element: any, names: any): void;
export class ColorManager {
static _colorsMapping: Map<string, number[]>;
get _colors(): any;
/**
* In High Contrast Mode, the color on the screen is not always the
* real color used in the pdf.
* For example in some cases white can appear to be black but when saving
* we want to have white.
* @param {string} color
* @returns {Array<number>}
*/
convert(color: string): Array<number>;
/**
* An input element must have its color value as a hex string
* and not as color name.
* So this function converts a name into an hex string.
* @param {string} name
* @returns {string}
*/
getHexCode(name: string): string;
}
/**
* Class to handle undo/redo.
* Commands are just saved in a buffer.
* If we hit some memory issues we could likely use a circular buffer.
* It has to be used as a singleton.
*/
export class CommandManager {
constructor(maxSize?: number);
/**
* @typedef {Object} addOptions
* @property {function} cmd
* @property {function} undo
* @property {function} [post]
* @property {boolean} mustExec
* @property {number} type
* @property {boolean} overwriteIfSameType
* @property {boolean} keepUndo
*/
/**
* Add a new couple of commands to be used in case of redo/undo.
* @param {addOptions} options
*/
add({ cmd, undo, post, mustExec, type, overwriteIfSameType, keepUndo, }: {
cmd: Function;
undo: Function;
post?: Function | undefined;
mustExec: boolean;
type: number;
overwriteIfSameType: boolean;
keepUndo: boolean;
}): void;
/**
* Undo the last command.
*/
undo(): void;
/**
* Redo the last command.
*/
redo(): void;
/**
* Check if there is something to undo.
* @returns {boolean}
*/
hasSomethingToUndo(): boolean;
/**
* Check if there is something to redo.
* @returns {boolean}
*/
hasSomethingToRedo(): boolean;
destroy(): void;
#private;
}
/**
* Class to handle the different keyboards shortcuts we can have on mac or
* non-mac OSes.
*/
export class KeyboardManager {
/**
* Create a new keyboard manager class.
* @param {Array<Array>} callbacks - an array containing an array of shortcuts
* and a callback to call.
* A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.
*/
constructor(callbacks: Array<any[]>);
buffer: any[];
callbacks: Map<any, any>;
allKeys: Set<any>;
/**
* Execute a callback, if any, for a given keyboard event.
* The self is used as `this` in the callback.
* @param {Object} self
* @param {KeyboardEvent} event
* @returns
*/
exec(self: Object, event: KeyboardEvent): void;
#private;
}
/**
* Convert a number between 0 and 100 into an hex number between 0 and 255.
* @param {number} opacity
* @return {string}
*/
export function opacityToHex(opacity: number): string;