import { ChangeDetectorRef, EventEmitter, OnInit, ViewContainerRef } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { MatDialog, MatDialogRef } from '@angular/material/dialog';
import { ContextMenuItem } from '../types';
import { NgxAppMenuOptions } from '../appmenu.directive';
import * as i0 from "@angular/core";
export declare const calcMenuItemBounds: (menuItems: ContextMenuItem[], dataObj: any) => Promise<DOMRect>;
export declare class ContextMenuComponent implements OnInit {
    viewContainer: ViewContainerRef;
    sanitizer: DomSanitizer;
    private _data;
    dialog: MatDialog;
    dialogRef: MatDialogRef<any>;
    private changeDetector;
    data: any;
    parentCords: DOMRect;
    items: ContextMenuItem[];
    config: NgxAppMenuOptions;
    id: string;
    closeSignal: EventEmitter<any>;
    selfCords: DOMRect;
    readonly matIconRx: RegExp;
    showIconColumn: boolean;
    showShortcutColumn: boolean;
    constructor(viewContainer: ViewContainerRef, sanitizer: DomSanitizer, _data: any, dialog: MatDialog, // optional only for the purpose of estimating dimensions
    dialogRef: MatDialogRef<any>, changeDetector: ChangeDetectorRef);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    /**
     *
     * @param item
     * @param evt
     * @returns
     */
    onMenuItemClick(item: ContextMenuItem, row: HTMLTableRowElement, hideBackdrop?: boolean): Promise<MatDialogRef<unknown, any>>;
    /**
     *
     * @param label
     * @returns
     */
    formatLabel(label: string): string;
    /**
     * Close the context menu under these circumstances
     */
    close(): void;
    /**
     * Check if the dialog is clipping offscreen
     * if so, move it back into view.
     */
    private onResize;
    static ɵfac: i0.ɵɵFactoryDeclaration<ContextMenuComponent, [null, null, { optional: true; }, { optional: true; }, { optional: true; }, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ContextMenuComponent, "ngx-ctx-menu", never, { "data": "data"; "parentCords": "parentCords"; "items": "items"; "config": "config"; "id": "id"; }, { "closeSignal": "closeSignal"; }, never, never, true, never>;
}
