import { Generic } from "cmf.core/src/core"; import * as ng from "@angular/core"; import { ZoomAndPanNavigationService } from "./zoomAndPanNavigationService"; /** * @What it does * This directive allows a specific element in the DOM to become panoramic (allowing zoom and pan with the mouse) * * @HotToUse * There must be two Elements. The parent plays the role of the viewport and the child, the role of the paper. * It will allow to have a panoramic view of the paper. Note that the paper must be much bigger than viewport. * IMPORTANT: child element must have this attribute: **cmf-core-controls-zoomAndPan-paper** * * ## Inputs * * ## Outputs * * `{x: number, y: number}` : **localMousePointChange** - Returns the current local mouse point in the paper * * ## Example * * Assume this HTML Template * * ```html * *
*
*
* ``` */ export declare class ZoomAndPan extends Generic implements ng.OnDestroy, ng.AfterViewInit { private el; private _ngZone; private navigationService; private transformController; private viewport; private paper; private paperInitialWidth; private paperInitialHeight; private mouseCurrentX; private mouseCurrentY; private dragStartX; private dragStartY; private mouseCurrentTransformedX; private mouseCurrentTransformedY; private isMousePressed; private navigationMapCanvas; private navigationMapCanvasContext; private paperScreenshot; private dragSubscription; private zoomSubscription; /** * Local mouse point change * @event localMousePointChange */ localMousePointChange: ng.EventEmitter<{ x: number; y: number; }>; /** * Constructor */ constructor(el: ng.ElementRef, _ngZone: ng.NgZone, navigationService: ZoomAndPanNavigationService); /** * Fix transformations to fit paper in viewport */ private fixTransform; /** * Get viewport center */ private getViewportCenter; /** * Get mouse coordinates */ private getMouseCoordinates; /** * On mouse wheel * @param {MouseEvent} event */ private mouseWheel; /** * On mouse move * @param {MouseEvent} event */ private mouseMove; /** * On mouse down * @param {MouseEvent} event */ private mouseDown; /** * On mouse up * @param {MouseEvent} event */ private mouseUp; /** * Zoom from service */ private zoomFromService; /** * Drag from service */ private dragFromService; /** * Zoom * @param {number} amount */ private setZoom; /** * Drag by * @param {number} x * @param {number} y */ private drag; /** * Update paper */ private updatePaper; /** * Update navigation map */ private updateNavigationMap; /** * Update screenshot of paper */ updatePaperScreenshot(screenshotURL: string): void; /** * Get local mouse coordinates */ getLocalMouseCoordinates(event: any): { x: number; y: number; }; /** * Set transform */ setTransform(matrix: number[]): void; /** * Get transform */ getTransform(): number[]; /** * Refresh size */ refreshSize(): void; /** * Zoom in from viewport center */ zoomIn(amount?: number): void; /** * Zoom out from viewport center */ zoomOut(amount?: number): void; /** * Fit to viewport */ fitToViewport(getContentBBox: () => { x: number; y: number; width: number; height: number; }): void; /** * On component destruction - unsubscribe event. */ ngOnDestroy(): void; /** * After view init */ ngAfterViewInit(): void; } export declare class ZoomAndPanModule { }