import { PropertyAccessor, NormalizedTextContent } from 'modern-idoc';
import { c as Text } from '../shared/modern-text.DzKfafj6.cjs';
import 'modern-font';
import 'modern-path2d';

interface IndexCharacter {
    paragraphIndex: number;
    fragmentIndex: number;
    charIndex: number;
    color: string;
    left: number;
    top: number;
    width: number;
    height: number;
    content: string;
    isFirst?: boolean;
    isLast?: boolean;
    isLastSelected?: boolean;
    isCrlf?: boolean;
}
declare class TextEditor extends HTMLElement implements PropertyAccessor {
    left: number;
    top: number;
    rotate: number;
    selection: number[];
    protected _selectionMinMax: {
        min: number;
        max: number;
    };
    protected _chars: IndexCharacter[];
    protected _selectedChars: IndexCharacter[];
    protected _cursorPosition?: {
        left: number;
        top: number;
        width: number;
        height: number;
        color: string;
    };
    protected _showCursor: boolean;
    protected _prevSelection: number[];
    protected _composition: boolean;
    get composition(): boolean;
    protected static _defined: boolean;
    static register(): void;
    protected _text: Text;
    get text(): Text;
    set text(newText: Text);
    protected _oldText: string;
    protected _container: HTMLDivElement;
    protected _selection: HTMLDivElement;
    protected _textarea: HTMLTextAreaElement;
    protected _cursor: HTMLElement;
    constructor();
    connectedCallback(): void;
    moveToDom(target: HTMLElement): void;
    set(text: Text): void;
    onUpdateProperty(key: string, _newValue: unknown, _oldValue: unknown): void;
    protected _updateChars(): void;
    protected _updateSelectedChars(): void;
    protected _updateCursorPosition(): void;
    getPlaintext(): string;
    protected _getNewContent(content: NormalizedTextContent, newString?: string, oldString?: string): NormalizedTextContent;
    protected _setTextInput(newText: string): void;
    protected _onInput(): void;
    protected _timer?: any;
    protected _onKeydown(e: KeyboardEvent): void;
    protected _onFocus(): void;
    protected _onBlur(): void;
    protected _findNearest(options: {
        x: number;
        y: number;
        xWeight?: number;
        yWeight?: number;
    }): number;
    protected _updateSelectionByDom(): void;
    protected _updateDomSelection(): void;
    protected _update(): void;
    protected _bindEventListeners(): void;
    pointerDown(e?: MouseEvent | PointerEvent): boolean;
    selectAll(): void;
    attributeChangedCallback(name: string, _oldValue: any, newValue: any): void;
    protected _emit(type: string, detail?: any): boolean;
    protected _renderSelectRange(): void;
    protected _renderCursor(): void;
    reset(): void;
}

export { TextEditor };
export type { IndexCharacter };
