@@ -102,6 +102,8 @@ const LogViewerBase: React.FunctionComponent<LogViewerProps> = memo(
102102 const [ loading , setLoading ] = useState ( true ) ;
103103 const [ listKey , setListKey ] = useState ( 1 ) ;
104104
105+ const [ , setEmptyState ] = useState ( { } ) ;
106+
105107 /* Parse data every time it changes */
106108 const parsedData = React . useMemo ( ( ) => parseConsoleOutput ( data ) , [ data ] ) ;
107109
@@ -113,16 +115,27 @@ const LogViewerBase: React.FunctionComponent<LogViewerProps> = memo(
113115 let resizeTimer = null as any ;
114116
115117 useEffect ( ( ) => {
118+ let observer : ResizeObserver | undefined = undefined ;
116119 if ( containerRef && containerRef . current ) {
117120 window . addEventListener ( 'resize' , callbackResize ) ;
121+ observer = new ResizeObserver ( ( event ) => {
122+ setEmptyState ( { } ) ;
123+ } ) ;
124+ observer . observe ( containerRef . current ) ;
118125 setLoading ( false ) ;
119126 createDummyElements ( ) ;
120127 ansiUp . resetStyles ( ) ;
121128 }
122- return ( ) => window . removeEventListener ( 'resize' , callbackResize ) ;
129+ return ( ) => {
130+ window . removeEventListener ( 'resize' , callbackResize ) ;
131+ observer ?. disconnect ( ) ;
132+ }
123133 } , [ containerRef . current ] ) ;
124134
125- const callbackResize = ( ) => {
135+ const callbackResize = ( event : UIEvent ) => {
136+ if ( event . type === 'scroll' ) {
137+ return ;
138+ }
126139 if ( ! resizing ) {
127140 setResizing ( true ) ;
128141 }
@@ -168,6 +181,9 @@ const LogViewerBase: React.FunctionComponent<LogViewerProps> = memo(
168181 } , [ parsedData , scrollToRow ] ) ;
169182
170183 const createDummyElements = ( ) => {
184+ if ( ! ( containerRef && containerRef . current ) ) {
185+ return ;
186+ }
171187 // create dummy elements
172188 const dummyIndex = document . createElement ( 'span' ) ;
173189 dummyIndex . className = css ( styles . logViewerIndex ) ;
0 commit comments