import { IWebComponentInstance, OmniaContext } from "../../";
import { IRichTextEditor, RichTextEditorExtension, RichTextEditorPlaceHolder, IRichTextEditorInstance } from ".";
import "./RichTextEditor.css";
import { RichTextModes } from "../../models";
import { RichTextEditorStyles } from "../models";
import { RichTextEditorExtensionRegistration, RichTextEditorSettingsModel } from "../../models";
import { SettingsService } from "../../services";
import { RichTextContentHelper } from ".";
import { VueComponentBase } from "..";
import { IRichTextEditorExtensionHelper } from "./IRichTextEditorExtensionHelper";
import { DirectionRuleStore } from "../../stores";
export default class RichTextEditor extends VueComponentBase implements IWebComponentInstance, IRichTextEditor, IRichTextEditorInstance {
    initialContent: string;
    onContentChange: (content: string) => void;
    onContentDataChange?: (richtextHelper: RichTextContentHelper) => void;
    onInstanceCreated?: (inst: IRichTextEditorInstance) => void;
    onBlur?: () => void;
    onFocus?: () => void;
    placeholder: RichTextEditorPlaceHolder;
    styles?: typeof RichTextEditorStyles;
    disabled: boolean;
    outlined: boolean;
    bodyClass: string;
    resetContent?: boolean;
    autoFocus?: boolean;
    disableAutofocus?: boolean;
    mode: RichTextModes;
    onConfigureAutomaticFormatCleaning?: () => boolean;
    onConfigureExtensions?: (currentExtensions: Array<RichTextEditorExtension>, registrationResolver?: (registration: RichTextEditorExtensionRegistration) => RichTextEditorExtension, extensionHelper?: IRichTextEditorExtensionHelper) => Array<RichTextEditorExtension>;
    onConfiguredExtensions?: (currentExtensions: Array<RichTextEditorExtension>, registrationResolver?: (registration: RichTextEditorExtensionRegistration) => RichTextEditorExtension) => Promise<Array<RichTextEditorExtension>>;
    ariaDescribedby?: string;
    ariaInvalid?: boolean;
    registerFocus?: (callback: () => void) => void;
    omniaCtx: OmniaContext;
    settingsService: SettingsService<RichTextEditorSettingsModel>;
    directionStore: DirectionRuleStore;
    private editorClasses;
    private editorDefaultStyle;
    private updateToolbar;
    private editor;
    private paddingTop;
    private lastScrollTop;
    private selectionDebounce;
    private content;
    private isLoading;
    private nodes;
    private toolbarItems;
    private isShowToolbar;
    private data;
    private contentHelper;
    private bubbleMenuItems;
    private pastedMenuItem;
    private pastedPosition;
    private pastedContext;
    private isSticky;
    private parentScrollOffset;
    private stickyElmScrollableParent;
    private scrollCallback;
    private uniqueEditorId;
    private extensions;
    private allExtensions;
    private isRightToLeft;
    private enableAutoCleanTextFormatAfterPaste;
    private extensionOnBlurFuncs;
    private hasLanguagePicker;
    onTopicIdChange(newValue: boolean, oldValue: boolean): void;
    onDisabledChange(): void;
    created(): void;
    mounted(): void;
    beforeDestroy(): void;
    private focusEditor;
    updateContent(content: string): void;
    initSubscribedExtensions(): void;
    registrationResolver(registration: RichTextEditorExtensionRegistration): RichTextEditorExtension;
    loadFromExtensionRegistrations(extensionSettings: RichTextEditorExtensionRegistration[]): Promise<Array<RichTextEditorExtension>>;
    buildExtensionList(extensionListFromTenantSettings: RichTextEditorExtensionRegistration[]): RichTextEditorExtension[];
    initExtensions(): void;
    private ensureHeadingNode;
    handleCursorPosition(formatedText: any, formatedHtml: any, view: any, from: any, to: any, onCompleted?: (transaction: any) => void): void;
    setupEditor(): void;
    private currentEmitedContent;
    private onEditorUpdated;
    private onContentChangedFromToolbar;
    private setExtensionData;
    get builtInExtensions(): any[];
    get elementWidth(): number;
    render(): VueTsxSupport.JSX.Element;
    renderEditor(): VueTsxSupport.JSX.Element;
    renderToolbarItem(menubar: any, config: any): import("vue").VNode;
    renderBubbleMenuToolbarItem(bubbleMenu: any, config: any): import("vue").VNode;
    renderPastedBubbleMenuToolbarItem(bubbleMenu: any, config: any): import("vue").VNode;
    private onSelectionChange;
    private parseHtml;
    private hideBubbleMenu;
    getBrowerSupport(): any;
    setPastedCursorPosition(): void;
    getDeepNode(node: Node): Node;
    registerScrollEvent(): void;
    checkSticky(): void;
    getMenuBarElement(): Promise<unknown>;
}
