Skip to content

Commit af186e0

Browse files
committed
feat: add renderPreview props.
1 parent 10e5f91 commit af186e0

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ export interface IMarkdownEditor extends ReactCodeMirrorProps {
228228
toolbars?: IToolBarProps['toolbars'];
229229
/** Tool display settings. */
230230
toolbarsMode?: IToolBarProps['toolbars'];
231+
/** Override the default preview component */
232+
renderPreview?: (props: MarkdownPreviewProps, visible: boolean) => React.ReactNode;
231233
/** [@uiw/react-markdown-preview](https://github.com/uiwjs/react-markdown-preview#options-props) options */
232234
previewProps?: MarkdownPreviewProps;
233235
}

src/index.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ export interface IMarkdownEditor extends ReactCodeMirrorProps {
2828
visibleEditor?: boolean;
2929
/** Option to hide the tool bar. */
3030
hideToolbar?: boolean;
31+
/** Override the default preview component */
32+
renderPreview?: (props: MarkdownPreviewProps, visible: boolean) => React.ReactNode;
3133
/** Tool display settings. */
3234
toolbars?: IToolBarProps['toolbars'];
3335
/** Tool display settings. */
@@ -62,6 +64,7 @@ function MarkdownEditor(
6264
toolbars = getCommands(),
6365
toolbarsMode = getModeCommands(),
6466
visible = true,
67+
renderPreview,
6568
visibleEditor = true,
6669
hideToolbar = true,
6770
previewProps = {},
@@ -92,6 +95,8 @@ function MarkdownEditor(
9295
scrollerStyle,
9396
...extensions,
9497
];
98+
previewProps['className'] = `${prefixCls}-preview`;
99+
previewProps['source'] = value;
95100
return (
96101
<div className={`${prefixCls || ''} wmde-markdown-var ${className || ''}`} ref={container}>
97102
{hideToolbar && (
@@ -116,13 +121,11 @@ function MarkdownEditor(
116121
/>
117122
)}
118123
</div>
119-
<MarkdownPreview
120-
{...previewProps}
121-
data-visible={!!visible}
122-
className={`${prefixCls}-preview`}
123-
ref={previewContainer}
124-
source={value}
125-
/>
124+
{renderPreview ? (
125+
renderPreview(previewProps, !!visible)
126+
) : (
127+
<MarkdownPreview {...previewProps} data-visible={!!visible} ref={previewContainer} />
128+
)}
126129
</div>
127130
</div>
128131
);

0 commit comments

Comments
 (0)