angular-rich-text-editor
Version:
A lightweight, configurable rich-text editor component for Angular applications.
78 lines (77 loc) • 3.79 kB
TypeScript
import { ElementRef, OnDestroy, OnInit, AfterViewInit, Injector, ChangeDetectorRef, NgZone } from '@angular/core';
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
import { RichTextEditorService } from './rich-text-editor.service';
import { RTEImageTool, RTEPreset } from './rich-text-editor.constant';
import * as i0 from "@angular/core";
/**
* Configuration options for the toolbar
*/
export interface RichTextEditorConfig {
height?: number;
width?: number | string;
toolbar?: string;
toolbar_custom?: string;
[key: string]: any;
}
export declare class RichTextEditorComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor, Validator {
private injector;
private rteService;
private cdr;
private ngZone;
private globalLicenseKey;
editorContainer: ElementRef;
licenseKey: string;
config: RichTextEditorConfig;
rtePreset: RTEPreset | null;
imageToolbarItems: (RTEImageTool | '/')[] | null;
excludedToolbarItems: string[];
initialContent: string;
errorMessages: {
[key: string]: string;
};
fileUploadHandler: (file: File, callback: (url: string | null, errorCode?: string) => void, optionalIndex?: number, optionalFiles?: File[]) => void;
enableImageUpload: boolean;
enableVideoEmbed: boolean;
readonly: boolean;
private eventManager;
private editorInstance;
private value;
private ngControl;
private changeTimer;
private isDestroyed;
private cleanupAttempts;
private eventListeners;
private domCleanupTimer;
onChange: (value: any) => void;
onTouched: () => void;
constructor(injector: Injector, rteService: RichTextEditorService, cdr: ChangeDetectorRef, ngZone: NgZone, globalLicenseKey: string);
ngOnInit(): void;
ngAfterViewInit(): void;
private initEditor;
private cleanupExistingEditor;
private setupEventListeners;
private removeAllEventListeners;
private updateImageToolbar;
private checkImageSelection;
writeValue(value: any): void;
private normalizeHtml;
registerOnChange(fn: any): void;
registerOnTouched(fn: any): void;
setDisabledState?(isDisabled: boolean): void;
ngOnDestroy(): void;
private performCleanup;
validate(control: AbstractControl): ValidationErrors | null;
private fixCharacterCount;
getCharacterCount(): number;
get showError(): boolean;
get currentErrorMessage(): string | null;
private getMobileExpandedToolbar;
private getDefaultMobileExpandedToolbar;
private prepareConfiguration;
private _applyCustomStyles;
insertContentAtCursor(content: string): void;
hideAllFloatPanels(): void;
excludeToolbarItems(toolbar: string): string;
static ɵfac: i0.ɵɵFactoryDeclaration<RichTextEditorComponent, [null, null, null, null, { optional: true; }]>;
static ɵcmp: i0.ɵɵComponentDeclaration<RichTextEditorComponent, "lib-rich-text-editor", never, { "licenseKey": { "alias": "licenseKey"; "required": false; }; "config": { "alias": "config"; "required": false; }; "rtePreset": { "alias": "rtePreset"; "required": false; }; "imageToolbarItems": { "alias": "imageToolbarItems"; "required": false; }; "excludedToolbarItems": { "alias": "excludedToolbarItems"; "required": false; }; "initialContent": { "alias": "initialContent"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "fileUploadHandler": { "alias": "fileUploadHandler"; "required": false; }; "enableImageUpload": { "alias": "enableImageUpload"; "required": false; }; "enableVideoEmbed": { "alias": "enableVideoEmbed"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; }, {}, never, never, false, never>;
}