@openseadragon-imaging/openseadragon-viewerinputhook
Version:
OpenSeadragon plugin which provides hooks into the viewer input event pipeline.
104 lines • 4.16 kB
TypeScript
import { default as OpenSeadragon } from 'openseadragon';
/**
* @module openseadragon-viewerinputhook
* @version __PKG_VERSION__
* @requires module:openseadragon
*/
/**
* @file viewerinputhook.ts
* @version __PKG_VERSION__
* @author Mark Salsbery <msalsbery@hotmail.com>
*
*/
declare module 'openseadragon' {
interface Viewer {
addViewerInputHook(options?: ViewerInputHookOptions): ViewerInputHook;
}
interface MouseTrackerEvent<T> {
stopHandlers?: boolean;
stopBubbling?: boolean;
}
}
type ViewerTrackerName = 'viewer' | 'viewer_outer';
type ViewerTrackers = Record<ViewerTrackerName, OpenSeadragon.MouseTracker | null>;
interface MouseTrackerEventMap {
preProcessEventHandler: OpenSeadragon.PreProcessMouseTrackerEvent;
enterHandler: OpenSeadragon.EnterLeaveMouseTrackerEvent;
exitHandler: OpenSeadragon.EnterLeaveMouseTrackerEvent;
leaveHandler: OpenSeadragon.EnterLeaveMouseTrackerEvent;
overHandler: OpenSeadragon.EnterLeaveMouseTrackerEvent;
outHandler: OpenSeadragon.EnterLeaveMouseTrackerEvent;
moveHandler: OpenSeadragon.PointerMouseTrackerEvent;
pressHandler: OpenSeadragon.PointerMouseTrackerEvent;
releaseHandler: OpenSeadragon.ReleaseMouseTrackerEvent;
nonPrimaryPressHandler: OpenSeadragon.NonPrimaryPressMouseTrackerEvent;
nonPrimaryReleaseHandler: OpenSeadragon.NonPrimaryPressMouseTrackerEvent;
clickHandler: OpenSeadragon.ClickMouseTrackerEvent;
dblClickHandler: OpenSeadragon.DblClickMouseTrackerEvent;
contextMenuHandler: OpenSeadragon.ContextMenuMouseTrackerEvent;
scrollHandler: OpenSeadragon.ScrollMouseTrackerEvent;
keyDownHandler: OpenSeadragon.KeyMouseTrackerEvent;
keyUpHandler: OpenSeadragon.KeyMouseTrackerEvent;
keyHandler: OpenSeadragon.KeyMouseTrackerEvent;
focusHandler: OpenSeadragon.MouseTrackerEvent<FocusEvent>;
blurHandler: OpenSeadragon.MouseTrackerEvent<FocusEvent>;
dragHandler: OpenSeadragon.DragMouseTrackerEvent;
dragEndHandler: OpenSeadragon.DragEndMouseTrackerEvent;
pinchHandler: OpenSeadragon.PinchMouseTrackerEvent;
stopHandler: OpenSeadragon.StopMouseTrackerEvent;
}
type MouseTrackerHandlerName = Extract<keyof OpenSeadragon.MouseTracker, keyof MouseTrackerEventMap>;
type MouseTrackerEventHandler = {
[K in MouseTrackerHandlerName]: OpenSeadragon.EventHandler<MouseTrackerEventMap[K]>;
}[MouseTrackerHandlerName];
type Hook = {
[K in MouseTrackerHandlerName]: {
tracker: OpenSeadragon.MouseTracker;
handlerName: K;
origHandler: MouseTrackerEventHandler | null;
hookHandler: MouseTrackerEventHandler;
};
}[MouseTrackerHandlerName];
export type OptionsHook = {
[K in MouseTrackerHandlerName]: {
tracker: ViewerTrackerName | OpenSeadragon.MouseTracker;
handler: K;
hookHandler: OpenSeadragon.EventHandler<MouseTrackerEventMap[K]>;
};
}[MouseTrackerHandlerName];
export interface ViewerInputHookOptions {
viewer?: OpenSeadragon.Viewer;
hooks?: OptionsHook[];
}
/**
* @class ViewerInputHook
* @classdesc Provides hooks into the OpenSeadragon viewer event pipeline.
* @param {Object} options
* @param {external:"OpenSeadragon.Viewer"} [options.viewer] - Reference to OpenSeadragon viewer to attach to.
* @param {Object[]} options.hooks
*/
export default class ViewerInputHook {
/**
* ViewerInputHook version.
* @member {Object} OpenSeadragonImaging.ViewerInputHook.version
* @static
* @property {String} versionStr - The version number as a string ('major.minor.revision').
* @property {Number} major - The major version number.
* @property {Number} minor - The minor version number.
* @property {Number} revision - The revision number.
*/
static version: {
versionStr: string;
major: number;
minor: number;
revision: number;
};
viewer: OpenSeadragon.Viewer | null;
viewerTrackers: ViewerTrackers;
hooks: Hook[];
constructor(options?: ViewerInputHookOptions);
private _callHandlers;
destroy(): void;
}
export {};
//# sourceMappingURL=openseadragon-viewerinputhook.d.ts.map