@@ -5,7 +5,7 @@ import * as XtermWebfont from 'xterm-webfont'
55import SockJS from 'sockjs-client'
66import moment from 'moment'
77import CopyToast , { handleSelectionChange } from '../CopyToast'
8- import { elementDidMount , useHeightObserver } from '../../../../../../common/helpers/Helpers'
8+ import { elementDidMount } from '../../../../../../common/helpers/Helpers'
99import { CLUSTER_STATUS , SocketConnectionType } from '../../../../../../ClusterNodes/constants'
1010import { TERMINAL_STATUS } from './constants'
1111import './terminal.scss'
@@ -27,6 +27,7 @@ export default function TerminalView({
2727 dataTestId,
2828} : TerminalViewType ) {
2929 const socket = useRef ( null )
30+ const termDiv = useRef ( null )
3031 const [ firstMessageReceived , setFirstMessageReceived ] = useState ( false )
3132 const [ isReconnection , setIsReconnection ] = useState ( false )
3233 const [ popupText , setPopupText ] = useState < boolean > ( false )
@@ -42,7 +43,13 @@ export default function TerminalView({
4243 }
4344 }
4445
45- const [ myDivRef ] = useHeightObserver ( resizeSocket )
46+ useEffect ( ( ) => {
47+ /* requestAnimationFrame: will defer the resizeSocket callback to the next repaint;
48+ * sparing us from - ResizeObserver loop completed with undelivered notifications */
49+ const observer = new ResizeObserver ( ( ) => window . requestAnimationFrame ( resizeSocket ) )
50+ observer . observe ( termDiv . current )
51+ return ( ) => observer . disconnect ( )
52+ } , [ ] )
4653
4754 useEffect ( ( ) => {
4855 if ( ! terminalRef . current ) {
@@ -240,7 +247,7 @@ export default function TerminalView({
240247 < div className = "terminal-wrapper" data-testid = { dataTestId } >
241248 { renderConnectionStrip ( ) }
242249 < div
243- ref = { myDivRef }
250+ ref = { termDiv }
244251 id = "terminal-id"
245252 data-testid = "terminal-editor-container"
246253 className = "mt-8 mb-4 terminal-component ml-20"
0 commit comments