@@ -73,6 +73,8 @@ export interface MDEditorProps extends Omit<React.HTMLAttributes<HTMLDivElement>
7373 * Hide the tool bar
7474 */
7575 hideToolbar ?: boolean ;
76+ /** Whether to enable scrolling */
77+ enableScroll ?: boolean ;
7678}
7779
7880function setGroupPopFalse ( data : Record < string , boolean > = { } ) {
@@ -92,6 +94,7 @@ const InternalMDEditor = (
9294 value : propsValue ,
9395 commands = getCommands ( ) ,
9496 height = 200 ,
97+ enableScroll = true ,
9598 visiableDragbar = true ,
9699 highlightEnable = true ,
97100 preview : previewType = 'live' ,
@@ -121,6 +124,9 @@ const InternalMDEditor = (
121124 } ) ;
122125 const container = useRef < HTMLDivElement > ( null ) ;
123126 const previewRef = useRef < MarkdownPreviewRef > ( null ) ;
127+ const enableScrollRef = useRef ( enableScroll ) ;
128+
129+ useMemo ( ( ) => ( enableScrollRef . current = enableScroll ) , [ enableScroll ] ) ;
124130 useEffect ( ( ) => {
125131 const stateInit : ContextStore = { } ;
126132 if ( container . current ) {
@@ -153,13 +159,7 @@ const InternalMDEditor = (
153159 useMemo ( ( ) => fullscreen !== state . fullscreen && dispatch ( { fullscreen : fullscreen } ) , [ fullscreen ] ) ;
154160
155161 const textareaDomRef = useRef < HTMLDivElement > ( ) ;
156- const previewDomRef = useRef < HTMLDivElement > ( ) ;
157162 const active = useRef < 'text' | 'preview' > ( ) ;
158- useMemo ( ( ) => {
159- if ( previewRef . current ) {
160- previewDomRef . current = previewRef . current . mdp . current || undefined ;
161- }
162- } , [ ] ) ;
163163
164164 useMemo ( ( ) => {
165165 textareaDomRef . current = state . textareaWarp ;
@@ -173,9 +173,10 @@ const InternalMDEditor = (
173173 }
174174 } , [ state . textareaWarp ] ) ;
175175
176- function handleScroll ( e : React . UIEvent < HTMLDivElement > ) {
176+ const handleScroll = ( scroll : boolean ) => ( e : React . UIEvent < HTMLDivElement > ) => {
177+ if ( ! enableScrollRef . current ) return ;
177178 const textareaDom = textareaDomRef . current ;
178- const previewDom = previewDomRef . current ;
179+ const previewDom = previewRef . current ? previewRef . current . mdp . current : undefined ;
179180 if ( textareaDom && previewDom ) {
180181 const scale =
181182 ( textareaDom . scrollHeight - textareaDom . offsetHeight ) / ( previewDom . scrollHeight - previewDom . offsetHeight ) ;
@@ -193,7 +194,8 @@ const InternalMDEditor = (
193194 }
194195 dispatch ( { scrollTop } ) ;
195196 }
196- }
197+ } ;
198+
197199 return (
198200 < EditorContext . Provider value = { { ...state , dispatch } } >
199201 < div
@@ -216,13 +218,14 @@ const InternalMDEditor = (
216218 prefixCls = { prefixCls }
217219 autoFocus = { autoFocus }
218220 { ...textareaProps }
219- onScroll = { handleScroll }
221+ onScroll = { enableScroll ? handleScroll ( enableScroll ) : undefined }
220222 />
221223 ) }
222224 { / ( l i v e | p r e v i e w ) / . test ( state . preview || '' ) && (
223225 < MarkdownPreview
224226 { ...( previewOptions as unknown ) }
225- onScroll = { handleScroll }
227+ // onScroll={handleScroll}
228+ onScroll = { enableScroll ? handleScroll ( enableScroll ) : undefined }
226229 ref = { previewRef }
227230 source = { state . markdown || '' }
228231 className = { `${ prefixCls } -preview` }
0 commit comments