usfm-editor
Version:
A WYSIWYG editor component for USFM
50 lines (49 loc) • 2.01 kB
TypeScript
/// <reference types="react" />
import PropTypes from "prop-types";
import { ToolbarSpecs } from "./components/UsfmToolbar";
export declare type IdentificationHeaders = Record<string, string | string[] | null>;
export interface UsfmEditorRef {
getMarksAtSelection: () => string[];
addMarkAtSelection: (mark: string) => void;
removeMarkAtSelection: (mark: string) => void;
getParagraphTypesAtSelection: () => string[];
setParagraphTypeAtSelection: (marker: string) => void;
goToVerse: (verseObject: Verse) => void;
}
export interface UsfmEditorProps {
usfmString: string;
onChange?: (usfm: string) => void;
readOnly?: boolean;
identification?: IdentificationHeaders;
onIdentificationChange?: (identification: IdentificationHeaders) => void;
goToVerse?: Verse;
onVerseChange?: (verseRange: VerseRange) => void;
toolbarSpecs: ToolbarSpecs;
}
export declare const usfmEditorPropTypes: {
usfmString: PropTypes.Validator<string>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
readOnly: PropTypes.Requireable<boolean>;
identification: PropTypes.Requireable<object>;
onIdentificationChange: PropTypes.Requireable<(...args: any[]) => any>;
goToVerse: PropTypes.Requireable<object>;
onVerseChange: PropTypes.Requireable<(...args: any[]) => any>;
toolbarSpecs: PropTypes.Requireable<object>;
};
export declare const usfmEditorDefaultProps: Partial<UsfmEditorProps>;
export declare type Verse = {
chapter: number;
verse: number;
key?: unknown;
};
export declare type VerseRange = {
chapter: number;
verseStart: number;
verseEnd: number;
};
export declare type ForwardRefUsfmEditor<R extends UsfmEditorRef> = React.ForwardRefExoticComponent<UsfmEditorProps & React.RefAttributes<R>>;
export declare type HocUsfmEditorProps<W extends UsfmEditorRef> = UsfmEditorProps & HasWrappedEditor<W>;
interface HasWrappedEditor<W extends UsfmEditorRef> {
wrappedEditor: ForwardRefUsfmEditor<W>;
}
export {};