import { ElementRef, OnInit, ChangeDetectorRef, OnDestroy } from '@angular/core';
import { MetadataHistoryManager } from '@anglr/dynamic';
import { Subscription } from 'rxjs';
import { Coordinates, RelationsNodeMetadata } from '../../interfaces';
import { RelationsNodeManager } from '../../services';
import { NodeRelationPath } from '../../misc/nodeRelationPath';
import * as i0 from "@angular/core";
/**
 * Component used as designer component wrapper for relations component
 */
export declare class RelationsCanvasSAComponent implements OnInit, OnDestroy {
    protected element: ElementRef;
    protected relationManager: RelationsNodeManager;
    private _changeDetector;
    protected history: MetadataHistoryManager<RelationsNodeMetadata[]>;
    /**
     * Subscriptions created during initialization
     */
    protected _initSubscriptions: Subscription;
    /**
     * Background pattern size
     */
    protected backgroundSize: number;
    /**
     * Drag start position coordinates
     */
    protected dragStartPosition: Coordinates;
    /**
     * Background size css styles
     */
    protected get backgroundSizeStyle(): string;
    /**
     * Background position css styles
     */
    protected get _backgroundPositionStyle(): string;
    /**
     * Canvas position
     */
    protected canvasPosition: Coordinates;
    /**
     * Zoom level
     */
    protected zoomLevel: number;
    /**
     * Indication whether canvas is being dragged
     */
    protected isDragging: boolean;
    /**
     * Canvas bounding box
     */
    protected get boundingBox(): DOMRect;
    /**
     * Node relations svg group
     */
    protected relationsGroup: ElementRef | null | undefined;
    /**
     * Node definition data to render
     */
    nodeDefinitions: RelationsNodeMetadata[];
    constructor(element: ElementRef, relationManager: RelationsNodeManager, _changeDetector: ChangeDetectorRef, history: MetadataHistoryManager<RelationsNodeMetadata[]>);
    /**
     * Initialize component
     */
    ngOnInit(): void;
    /**
     * Called when component is destroyed
     */
    ngOnDestroy(): void;
    /**
     * Focuses canvas to selected node
     * @param id Relations node identifier
     * @returns
     */
    focusNode(id?: string | null): void;
    /**
     * Creates node relation path
     */
    createRelation(): NodeRelationPath;
    getPositionInCanvas(point: {
        x: number;
        y: number;
    }): Coordinates;
    /**
     * Mouse down event, handles moving of canvas
     * @param event - Mouse event that occured
     */
    protected onMouseDown(event: MouseEvent): void;
    /**
     * Mouse move event, handles moving of canvas
     * @param event - Mouse event that occured
     */
    protected onMouseMove(event: MouseEvent): void;
    /**
     * Mouse up event, handles moving of canvas
     * @param event - Mouse event that occured
     */
    protected onMouseUp(_: MouseEvent): void;
    /**
     * Wheel event, used for zooming
     * @param event - Wheel event that occured
     */
    protected onWheel(event: WheelEvent): void;
    /**
     * Zooms canvas in by one step
     */
    zoomIn(): void;
    /**
     * Zooms canvas out by one step
     */
    zoomOut(): void;
    /**
     * Resets zoom level
     */
    resetZoom(): void;
    /**
     * Destroys node
     * @param node - Definition of node to be destroyed
     */
    protected destroyNode(node: RelationsNodeMetadata): void;
    /**
     * Calculates new zoom level based on dalte
     * @param delta
     * @returns
     */
    private _calculateNewZoomLevel;
    /**
     * Sets zoom level
     * @param newZoomLevel new zoom level
     */
    private _setZoomLevel;
    static ɵfac: i0.ɵɵFactoryDeclaration<RelationsCanvasSAComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<RelationsCanvasSAComponent, "relations-canvas", never, { "nodeDefinitions": { "alias": "nodeDefinitions"; "required": false; }; }, {}, never, never, true, never>;
}
//# sourceMappingURL=relationsCanvas.component.d.ts.map