import { ReactiveObject, NormalizedTextContent } from 'modern-idoc';
import { T as Text, b as TextOptions } from '../shared/modern-text.BAfGVPZ9.js';
import 'modern-font';
import 'modern-path2d';

interface SelectableCharacter {
    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 ReactiveObject {
    static observedAttributes: string[];
    width: number;
    height: number;
    static register(): void;
    protected _text: Text;
    get text(): Text;
    set text(value: Text | TextOptions);
    pixelRatio: number;
    composition: boolean;
    selection: number[];
    prevSelection: number[];
    protected _oldText: string;
    $preview: HTMLCanvasElement;
    $textInput: HTMLTextAreaElement;
    $cursor: HTMLElement;
    get selectionMinMax(): {
        min: number;
        max: number;
    };
    get selectedCharacters(): SelectableCharacter[];
    get selectableCharacters(): SelectableCharacter[];
    get cursorPosition(): {
        left: number;
        top: number;
        width: number;
        height: number;
        color: string;
    };
    constructor();
    getTextValue(): string;
    getContentValue(content: NormalizedTextContent, newString?: string, oldString?: string): NormalizedTextContent;
    setTextInput(newText: string): void;
    onInput(): void;
    protected _timer?: any;
    onKeydown(e: KeyboardEvent): void;
    onBlur(): void;
    findNearest(options: {
        x: number;
        y: number;
        xWeight?: number;
        yWeight?: number;
    }): number;
    updateSelection(): void;
    updateDOMSelection(): void;
    onMousedown(e: MouseEvent): void;
    render(): void;
    requestUpdate(): void;
    attributeChangedCallback(name: string, _oldValue: any, newValue: any): void;
    emit(type: string, detail?: any): boolean;
}

export { TextEditor };
export type { SelectableCharacter };
