react-native-cn-quill
Version:
react-native quill richtext editor
71 lines (70 loc) • 2.97 kB
TypeScript
import * as React from 'react';
import { WebViewProps } from 'react-native-webview';
import { StyleProp, ViewStyle } from 'react-native';
import type { CustomFont, QuillConfig } from '../types';
import type { EditorEventHandler, EditorEventType, SelectionChangeData, EditorChangeData, TextChangeData, HtmlChangeData } from '../constants/editor-event';
export interface EditorState {
webviewContent: string | null;
}
export interface EditorProps {
style?: StyleProp<ViewStyle>;
quill?: QuillConfig;
customFonts?: Array<CustomFont>;
defaultFontFamily?: string;
initialHtml?: string;
customStyles?: string[];
import3rdParties?: 'local' | 'cdn';
containerId?: string;
theme?: {
background: string;
color: string;
placeholder: string;
};
loading?: string | React.ReactNode;
container: boolean | React.ComponentType;
onSelectionChange?: (data: SelectionChangeData) => void;
onTextChange?: (data: TextChangeData) => void;
onHtmlChange?: (data: HtmlChangeData) => void;
onEditorChange?: (data: EditorChangeData) => void;
webview?: WebViewProps;
onBlur?: () => void;
onFocus?: () => void;
customJS?: string;
}
export default class QuillEditor extends React.Component<EditorProps, EditorState> {
private _webview;
private _handlers;
private _promises;
constructor(props: EditorProps);
private getInitalHtml;
private getKey;
private postAwait;
private post;
private toMessage;
private onMessage;
blur: () => void;
focus: () => void;
hasFocus: () => Promise<boolean>;
enable: (enable?: boolean) => void;
disable: () => void;
update: () => void;
format: (name: string, value: any) => void;
deleteText: (index: number, length: number) => void;
getContents: (index?: number | undefined, length?: number | undefined) => Promise<any>;
getHtml: () => Promise<any>;
getLength: () => Promise<any>;
getText: (index?: number | undefined, length?: number | undefined) => Promise<any>;
getBounds: (index: number, length?: number | undefined) => Promise<any>;
getSelection: (focus?: boolean) => Promise<any>;
setSelection: (index: number, length?: number | undefined, source?: String | undefined) => void;
insertEmbed: (index: number, type: string, value: any) => void;
insertText: (index: number, text: string, formats?: Record<string, any> | undefined) => void;
setContents: (delta: any) => void;
setText: (text: string) => void;
updateContents: (delta: any) => void;
on: (event: EditorEventType, handler: EditorEventHandler) => void;
off: (event: EditorEventType, handler: Function) => void;
dangerouslyPasteHTML: (index: number, html: string) => void;
renderWebview: (content: string, style: StyleProp<ViewStyle>, props?: WebViewProps) => JSX.Element;
render(): JSX.Element;
}