import { Observable } from 'rxjs'; import { UndoService } from '../..'; import { SanitizeHtmlOptions } from '../../helpers/sanitizeHtml'; import { ElementSelectionService } from '../../services/dom/elementSelectionService'; import { FocusService } from '../../services/dom/focusService'; import { HtmlEditService } from '../../services/html/htmlEditService'; import { HtmlService } from '../../services/html/htmlService'; import { EmptyService } from '../../services/text/emptyService'; import { TextService } from '../../services/text/textService'; import { ConnectingEditor } from './connectingEditor'; import { EditorServices, EditorSpec } from './editor'; import { ContentEditableEditorPlugin } from './plugins/contentEditableEditorPlugin'; export declare type ContentEditableElement = HTMLDivElement; export interface ContentEditableEditor extends ConnectingEditor { } export declare type EditorTrace = { type: 'copy' | 'cut' | 'paste'; duration: number; dataTransfer: DataTransfer; }; export declare type ContentEditableEditorServices = { html: HtmlService; text: TextService; empty: EmptyService; edit: HtmlEditService; focus: FocusService; selection: ElementSelectionService; undo: UndoService; }; export declare type ContentEditableEditorOptions = { sanitizeHtmlOptions?: SanitizeHtmlOptions; simplifyStylesMaxHtmlLength?: number; didSetHtml?: (element: HTMLElement, htmlLength: number) => void; plugins?: ReadonlyArray; /** * Whether to use the native delete/backspace handling. * * The default is a custom implementation to workaround this bug: * https://bugs.chromium.org/p/chromium/issues/detail?id=582844#c31 */ shouldNativeDelete?: boolean; onTrace?: (trace: EditorTrace) => void; hasTableService?: boolean; hasNewDeleteSelection?: boolean; }; declare type ContentEditableEditorSpecCreator = (baseSpec: EditorSpec, element$: Observable, options?: ContentEditableEditorOptions) => EditorSpec; export declare function createContentEditableEditor(options: ContentEditableEditorOptions, createSpec: ContentEditableEditorSpecCreator): ContentEditableEditor; export declare function createContentEditableEditor(options?: ContentEditableEditorOptions): ContentEditableEditor; export declare function createContentEditableEditorSpec(element$: Observable, options?: ContentEditableEditorOptions): EditorSpec; export {};