import { Component, ReactElement } from 'react';
import { IReactionDisposer } from 'mobx';
import { ColumnProps } from './Column';
import { ElementProps } from '../core/ViewComponent';
import { FormField, FormFieldProps } from '../field/FormField';
import TableContext, { TableContextValue } from './TableContext';
import { ColumnLock } from './enum';
export interface TableEditorProps extends ElementProps {
    column: ColumnProps;
}
export default class TableEditor extends Component<TableEditorProps> {
    static displayName: string;
    static get contextType(): typeof TableContext;
    context: TableContextValue;
    editorProps?: any;
    width?: any;
    height?: number;
    rendered?: boolean;
    inTab: boolean;
    keep?: boolean;
    editor: FormField<FormFieldProps> | null;
    wrap: HTMLDivElement | null;
    originalCssText: string | undefined;
    reaction: IReactionDisposer | undefined;
    cellNode: HTMLSpanElement | undefined;
    tdNode: HTMLTableDataCellElement | null | undefined;
    get lock(): ColumnLock | boolean | undefined;
    handleWindowResize(): void;
    /**
     * 触发多行编辑器失焦切换编辑/只读模式
     * @param e
     */
    handleWindowClick(e: any): void;
    connect(): void;
    disconnect(): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    saveRef(node: any): void;
    saveWrap(node: any): void;
    handleEditorKeyEnterDown(e: any): void;
    handleKeyDownCTRLD(e: any): void;
    handleKeyDownCTRLS(e: any): void;
    handleEditorKeyDown(e: any): void;
    handleEditorBlur(e: any): void;
    /**
     * 多行编辑切换编辑器阻止冒泡
     * @param e
     */
    handleEditorClick(e: any): void;
    handleEditorResize(width: any, height: any, target: any): void;
    blur(): void;
    focus(): void;
    alignEditor(cellNode?: HTMLSpanElement | undefined, height?: number): void;
    hideEditor(keep?: boolean): void;
    showNextEditor(reserve: boolean): void;
    /**
     * 渲染多行编辑单元格
     */
    renderMultiLineEditor(): ReactElement<FormFieldProps> | undefined;
    renderEditor(): ReactElement<FormFieldProps> | undefined;
    render(): JSX.Element | null;
}
