@uiw/react-markdown-editor
Version:
A markdown editor with preview, implemented with React.js and TypeScript.
62 lines (61 loc) • 2.67 kB
TypeScript
import React from 'react';
import { type ReactCodeMirrorProps, type ReactCodeMirrorRef } from '@uiw/react-codemirror';
import MarkdownPreview, { MarkdownPreviewProps } from '@uiw/react-markdown-preview';
import { type Commands } from './components/ToolBar/index';
import './index.less';
export * from './theme';
export * from './commands/index';
export * from '@uiw/react-markdown-preview';
export declare const scrollerStyle: import("@codemirror/state").Extension;
export interface IMarkdownEditor extends ReactCodeMirrorProps {
className?: string;
prefixCls?: string;
/** The raw markdown that will be converted to html (**required**) */
value?: string;
/** Shows a preview that will be converted to html. */
visible?: boolean;
visibleEditor?: boolean;
/** Override the default preview component */
renderPreview?: (props: MarkdownPreviewProps, initVisible: boolean) => React.ReactNode;
/** Preview expanded width @default `50%` */
previewWidth?: string;
/** Whether to enable preview function @default `true` */
enablePreview?: boolean;
/** Whether to enable scrolling */
enableScroll?: boolean;
/** Tool display settings. */
toolbars?: Commands[];
/** The tool on the right shows the settings. */
toolbarsMode?: Commands[];
/** Tool display filter settings. */
toolbarsFilter?: (tool: Commands, idx: number) => boolean;
/** Toolbar on bottom */
toolbarBottom?: boolean;
/** Option to hide the tool bar. @deprecated The next major version will be deprecated. Please use `showToolbar`. */
hideToolbar?: boolean;
/** Option to hide the tool bar. */
showToolbar?: boolean;
/** [@uiw/react-markdown-preview](https://github.com/uiwjs/react-markdown-preview#options-props) options */
previewProps?: MarkdownPreviewProps;
/** replace the default `extensions` */
reExtensions?: ReactCodeMirrorProps['extensions'];
/** Edit mode and preview mode switching event */
onPreviewMode?: (isHide: boolean) => void;
}
export interface ToolBarProps {
prefixCls?: string;
editor: React.RefObject<ReactCodeMirrorRef>;
preview: React.RefObject<HTMLDivElement>;
container: React.RefObject<HTMLDivElement>;
containerEditor: React.RefObject<HTMLDivElement>;
editorProps: IMarkdownEditor;
}
export interface MarkdownEditorRef {
editor: React.RefObject<ReactCodeMirrorRef>;
preview: React.RefObject<HTMLDivElement> | null;
}
declare const MarkdownEditor: MarkdownEditorComponent;
type MarkdownEditorComponent = React.FC<React.PropsWithRef<IMarkdownEditor>> & {
Markdown: typeof MarkdownPreview;
};
export default MarkdownEditor;