/**
 * Copyright (c) 2018-2019 Aleksey Melnikov, True Directive Company.
 * @link https://truedirective.com/
 * @license MIT
*/
import { ElementRef, EventEmitter, Renderer2, Injector, OnDestroy, AfterContentInit, DoCheck, OnChanges, ComponentFactoryResolver, ApplicationRef, SimpleChange } from '@angular/core';
import { GridLayout } from '@true-directive/base';
import { Column } from '@true-directive/base';
import { RowCell } from './row-cell.class';
import { GridStateService } from './grid-state.service';
/**
 * Grid row directive. It's all about speed.
 */
export declare class RowDirective implements OnDestroy, AfterContentInit, DoCheck, OnChanges {
    protected _renderer: Renderer2;
    protected _cfResolver: ComponentFactoryResolver;
    protected _appRef: ApplicationRef;
    protected _injector: Injector;
    elementRef: ElementRef;
    /**
     * Row for rendering
     */
    row: any;
    /**
     * Grid's state
     */
    state: GridStateService;
    /**
     * Index in the list of displayed rows
     */
    axI: number;
    /**
     * Layout info
     */
    layout: GridLayout;
    /**
     * Indicates we're an empty line and we don't need to do anything.
     */
    empty: boolean;
    /**
     * Horizontal scroll position
     */
    viewPortLeft: number;
    /**
     * Scrollbox width
     */
    viewPortWidth: number;
    /**
     * Locale
     */
    locale: string;
    /**
     * Event - clicking on the checkbox - will cause the value to change
     */
    toggleCheckbox: EventEmitter<any>;
    /**
     * Data of the displayed row
     */
    protected readonly rowData: any;
    private _left_rendered;
    private _right_rendered;
    /**
     * Cell list
     */
    private readonly cells;
    /**
     * Cell selection levels
     */
    private selectionMap;
    /**
     * View was initialized
     */
    private _viewInitialized;
    /**
     * One of the cells was in edit mode before destroying the row
     */
    private _wasEditor;
    /**
     *  Row height in previous render
     */
    protected _height0: number;
    /**
     * Locale in previous render
     */
    private _locale0;
    private _checkedAppearance;
    protected _subscribes: any[];
    /**
     * Предыдущее значение общего текстового фильтра
     */
    private _filter0;
    protected readonly st: import("@true-directive/base").GridSettings;
    protected readonly sta: import("@true-directive/base").GridAppearance;
    protected readonly currentRowIndex: number;
    protected readonly children: any;
    protected _editorRef: any;
    protected readonly _customCellRefs: any[];
    protected readonly _skips: {
        element: HTMLElement;
        fromIndex: number;
        toIndex: number;
    }[];
    firstCellRect(): any;
    private firstCellClientHeight;
    /**
     * Получение поля по координатам
     * @param  x Координата поля
     * @return   [description]
     */
    cellByXY(x: number, y: number): string;
    /**
     * Вызывается для получения Х-координаты ячейки с целью прокрутки
     * компонента к заданной ячейке
     * @param  fieldName Наименование поля ячейки
     * @return           Координаты левого и правого края
     */
    cellHorizontalPos(fieldName: string): {
        l: number;
        r: number;
    };
    clearSelection(): void;
    private getSelectionMap;
    protected setCellSelection(cell: RowCell, idx: number): number;
    setSelection(): void;
    protected clear(saveH?: boolean): void;
    protected clearEditor(): void;
    protected renderStub(rowData: any, cell: RowCell, col: Column): void;
    protected renderBoolean(rowData: any, cell: RowCell, col: Column, v: any): void;
    protected renderCheckbox(cell: RowCell, col: Column, v: any): void;
    protected getEditorComponentType(col: Column): any;
    protected getDh(): number;
    protected setEditorHeight(cell: RowCell): void;
    protected renderEditor(rowData: any, cell: RowCell, col: Column, v: any): void;
    private renderCustomCell;
    protected getDisplayedValue(col: Column, rowData: any, v: any): string;
    protected fillCell(cell: RowCell, col: Column, rowData: any, isFirst: boolean, v: any, v_displayed: any): RowCell;
    private needRender;
    protected createTd(span: number): HTMLElement;
    /**
     * Создание ячейки
     * @param  col   Колонка
     * @param  span  Количество объединенных ячеек
     * @return       Объект RowCell
     */
    protected createCell(col: Column, span?: number, isFirst?: boolean, xPos?: number, render?: boolean): RowCell;
    protected needApplySpan(): number;
    private createSkipCell;
    protected renderRowEditor(): RowCell;
    protected renderRow(): void;
    private nextEl;
    protected unskip(cell: RowCell, i: number): void;
    protected renderByViewPort(): void;
    private checkEditor;
    /**
     * We check whether it is necessary to recreate the string when changing the
     * column. If there were simple changes (two columns swapped or one of them
     * just disappeared), we try to apply these changes without a full rerendering.
     * @return True if we don't need a rerender.
     */
    protected checkColumns(): boolean;
    protected checkValues(): boolean;
    setDisabledFields(): void;
    protected setParams(byInit?: boolean): void;
    protected checkViewPort(): boolean;
    protected check(): boolean;
    ngOnChanges(changes: {
        [property: string]: SimpleChange;
    }): void;
    ngDoCheck(): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    constructor(_renderer: Renderer2, _cfResolver: ComponentFactoryResolver, _appRef: ApplicationRef, _injector: Injector, elementRef: ElementRef);
}
