import { BehaviorSubject, Observable, Subject } from 'rxjs'; import { ElementRef } from '@angular/core'; import { Destroyable } from '@bespunky/angular-zen/core'; import { ViewPort } from '../shared/view-port'; import { ViewBounds } from '../shared/view-bounds'; import * as i0 from "@angular/core"; export declare type PanAxis = 'x' | 'y' | 'both'; export declare abstract class Camera extends Destroyable { protected element: ElementRef; private readonly zoomLevelInput; private readonly viewCenterXInput; private readonly viewCenterYInput; readonly zoomFactor: BehaviorSubject; readonly panAxisOnZoom: BehaviorSubject; readonly leftBound: BehaviorSubject; readonly rightBound: BehaviorSubject; readonly topBound: BehaviorSubject; readonly bottomBound: BehaviorSubject; protected readonly horizontalBoundReached: Subject; protected readonly verticalBoundReached: Subject; /** * A zoom dependant value to use as a unit for sizing elements on the screen. * * @type {Observable} */ readonly viewPort: Observable; readonly zoomLevel: Observable; readonly sizeUnit: Observable; readonly viewCenterX: Observable; readonly viewCenterY: Observable; readonly viewBounds: Observable; private _currentViewBounds; get currentViewBounds(): ViewBounds; private _currentZoomLevel; get currentZoomLevel(): number; constructor(element: ElementRef); protected viewPortFeed(): Observable; protected zoomLevelFeed(): Observable; protected sizeUnitFeed(): Observable; protected viewCenterXFeed(): Observable; protected viewCenterYFeed(): Observable; protected viewBoundsFeed(): Observable; protected abstract panToItem(item: TItem): void; protected abstract zoomOnItem(item: TItem, amount: number): void; panTo(item: TItem): void; panTo(positionX: number, positionY: number): void; panToX(position: number): void; panToY(position: number): void; zoomOn(item: TItem, amount: number): void; zoomOn(positionX: number, positionY: number, amount: number): void; panX(amount: number): void; panY(amount: number): void; pan(amountX: number, amountY: number): void; protected panToPosition(positionX: number, positionY: number): void; zoom(amount: number): void; setZoom(zoomLevel: number): void; protected zoomOnPosition(positionX: number, positionY: number, amount: number): void; private calculateZoomChangeInPixels; /** * * * @private * @param {number} currentViewCenter The current center position of the viewbox relative to the complete drawing. * @param {number} position * @param {number} zoomedBy * @returns {number} */ private calculateViewCenterZoomedToPosition; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; }