@@ -15,24 +15,11 @@ import './styles/markdown.less';
1515
1616import { reservedMeta } from './plugins/reservedMeta' ;
1717
18- const rehypeRewriteHandle = ( node : ElementContent , index : number | null , parent : Root | Element | null ) => {
19- if ( node . type === 'element' && parent && parent . type === 'root' && / h ( 1 | 2 | 3 | 4 | 5 | 6 ) / . test ( node . tagName ) ) {
20- const child = node . children && ( node . children [ 0 ] as Element ) ;
21- if ( child && child . properties && child . properties . ariaHidden === 'true' ) {
22- child . properties = { class : 'anchor' , ...child . properties } ;
23- child . children = [ octiconLink ] ;
24- }
25- }
26- if ( node . type === 'element' && node . tagName === 'pre' ) {
27- const code = getCodeString ( node . children ) ;
28- node . children . push ( copyElement ( code ) ) ;
29- }
30- } ;
31-
3218export interface MarkdownPreviewProps extends Omit < Options , 'children' > {
3319 prefixCls ?: string ;
3420 className ?: string ;
3521 source ?: string ;
22+ disableCopy ?: boolean ;
3623 style ?: React . CSSProperties ;
3724 pluginsFilter ?: ( type : 'rehype' | 'remark' , plugin : PluggableList ) => PluggableList ;
3825 warpperElement ?: React . DetailedHTMLProps < React . HTMLAttributes < HTMLDivElement > , HTMLDivElement > ;
@@ -50,6 +37,7 @@ export default React.forwardRef<MarkdownPreviewRef, MarkdownPreviewProps>((props
5037 className,
5138 source,
5239 style,
40+ disableCopy = false ,
5341 onScroll,
5442 onMouseOver,
5543 pluginsFilter,
@@ -59,6 +47,21 @@ export default React.forwardRef<MarkdownPreviewRef, MarkdownPreviewProps>((props
5947 const mdp = React . createRef < HTMLDivElement > ( ) ;
6048 useImperativeHandle ( ref , ( ) => ( { ...props , mdp } ) , [ mdp , props ] ) ;
6149 const cls = `${ prefixCls || '' } ${ className || '' } ` ;
50+
51+ const rehypeRewriteHandle = ( node : ElementContent , index : number | null , parent : Root | Element | null ) => {
52+ if ( node . type === 'element' && parent && parent . type === 'root' && / h ( 1 | 2 | 3 | 4 | 5 | 6 ) / . test ( node . tagName ) ) {
53+ const child = node . children && ( node . children [ 0 ] as Element ) ;
54+ if ( child && child . properties && child . properties . ariaHidden === 'true' ) {
55+ child . properties = { class : 'anchor' , ...child . properties } ;
56+ child . children = [ octiconLink ] ;
57+ }
58+ }
59+ if ( node . type === 'element' && node . tagName === 'pre' && ! disableCopy ) {
60+ const code = getCodeString ( node . children ) ;
61+ node . children . push ( copyElement ( code ) ) ;
62+ }
63+ } ;
64+
6265 const rehypePlugins : PluggableList = [
6366 reservedMeta ,
6467 [ rehypePrism , { ignoreMissing : true } ] ,
0 commit comments