96 lines
2.7 KiB
TypeScript
96 lines
2.7 KiB
TypeScript
declare module "panzoom" {
|
|
interface Bounds {
|
|
left: number;
|
|
top: number;
|
|
right: number;
|
|
bottom: number;
|
|
}
|
|
|
|
export interface TransformOrigin {
|
|
x: number;
|
|
y: number;
|
|
}
|
|
|
|
export interface Transform {
|
|
x: number;
|
|
y: number;
|
|
scale: number;
|
|
}
|
|
|
|
export interface PanZoomController {
|
|
getOwner: () => Element;
|
|
applyTransform: (transform: Transform) => void;
|
|
}
|
|
|
|
export interface PanZoomOptions {
|
|
filterKey?: () => boolean;
|
|
bounds?: boolean | Bounds;
|
|
maxZoom?: number;
|
|
minZoom?: number;
|
|
boundsPadding?: number;
|
|
zoomDoubleClickSpeed?: number;
|
|
zoomSpeed?: number;
|
|
initialX?: number,
|
|
initialY?: number,
|
|
initialZoom?: number,
|
|
pinchSpeed?: number;
|
|
beforeWheel?: (e: WheelEvent) => void;
|
|
beforeMouseDown?: (e: MouseEvent) => void;
|
|
autocenter?: boolean;
|
|
onTouch?: (e: TouchEvent) => void;
|
|
onDoubleClick?: (e: Event) => void;
|
|
|
|
/**
|
|
* Called after user "clicks" with a single tap or mouse button.
|
|
* The event comes a bit later after a tap, to allow for double
|
|
* tap disambiguation.
|
|
*/
|
|
onClick?: (e: Event) => void;
|
|
smoothScroll?: boolean;
|
|
controller?: PanZoomController;
|
|
enableTextSelection?: boolean;
|
|
disableKeyboardInteraction?: boolean;
|
|
transformOrigin?: TransformOrigin;
|
|
}
|
|
|
|
export interface PanZoom {
|
|
dispose: () => void;
|
|
moveBy: (dx: number, dy: number, smooth: boolean) => void;
|
|
moveTo: (x: number, y: number) => void;
|
|
smoothMoveTo: (x: number, y: number) => void;
|
|
centerOn: (ui: any) => void;
|
|
zoomTo: (clientX: number, clientY: number, scaleMultiplier: number) => void;
|
|
zoomAbs: (clientX: number, clientY: number, zoomLevel: number) => void;
|
|
smoothZoom: (
|
|
clientX: number,
|
|
clientY: number,
|
|
scaleMultiplier: number
|
|
) => void;
|
|
smoothZoomAbs: (
|
|
clientX: number,
|
|
clientY: number,
|
|
toScaleValue: number
|
|
) => void;
|
|
getTransform: () => Transform;
|
|
showRectangle: (rect: ClientRect) => void;
|
|
pause: () => void;
|
|
resume: () => void;
|
|
isPaused: () => boolean;
|
|
on: <T>(eventName: string, handler: (e: T) => void) => void;
|
|
off: (eventName: string, handler: Function) => void;
|
|
fire: (eventName: string) => void;
|
|
getMinZoom: () => number;
|
|
setMinZoom: (newMinZoom: number) => number;
|
|
getMaxZoom: () => number;
|
|
setMaxZoom: (newMaxZoom: number) => number;
|
|
getTransformOrigin: () => TransformOrigin;
|
|
setTransformOrigin: (newTransformOrigin: TransformOrigin) => void;
|
|
getZoomSpeed: () => number;
|
|
setZoomSpeed: (zoomSpeed: number) => void;
|
|
}
|
|
|
|
export default function createPanZoom(
|
|
domElement: HTMLElement | SVGElement,
|
|
options?: PanZoomOptions
|
|
): PanZoom;
|
|
}
|