@@ -102,6 +102,8 @@ const LogViewerBase: React.FunctionComponent<LogViewerProps> = memo(
102
102
const [ loading , setLoading ] = useState ( true ) ;
103
103
const [ listKey , setListKey ] = useState ( 1 ) ;
104
104
105
+ const [ , setEmptyState ] = useState ( { } ) ;
106
+
105
107
/* Parse data every time it changes */
106
108
const parsedData = React . useMemo ( ( ) => parseConsoleOutput ( data ) , [ data ] ) ;
107
109
@@ -113,16 +115,27 @@ const LogViewerBase: React.FunctionComponent<LogViewerProps> = memo(
113
115
let resizeTimer = null as any ;
114
116
115
117
useEffect ( ( ) => {
118
+ let observer : ResizeObserver | undefined = undefined ;
116
119
if ( containerRef && containerRef . current ) {
117
120
window . addEventListener ( 'resize' , callbackResize ) ;
121
+ observer = new ResizeObserver ( ( event ) => {
122
+ setEmptyState ( { } ) ;
123
+ } ) ;
124
+ observer . observe ( containerRef . current ) ;
118
125
setLoading ( false ) ;
119
126
createDummyElements ( ) ;
120
127
ansiUp . resetStyles ( ) ;
121
128
}
122
- return ( ) => window . removeEventListener ( 'resize' , callbackResize ) ;
129
+ return ( ) => {
130
+ window . removeEventListener ( 'resize' , callbackResize ) ;
131
+ observer ?. disconnect ( ) ;
132
+ }
123
133
} , [ containerRef . current ] ) ;
124
134
125
- const callbackResize = ( ) => {
135
+ const callbackResize = ( event : UIEvent ) => {
136
+ if ( event . type === 'scroll' ) {
137
+ return ;
138
+ }
126
139
if ( ! resizing ) {
127
140
setResizing ( true ) ;
128
141
}
@@ -168,6 +181,9 @@ const LogViewerBase: React.FunctionComponent<LogViewerProps> = memo(
168
181
} , [ parsedData , scrollToRow ] ) ;
169
182
170
183
const createDummyElements = ( ) => {
184
+ if ( ! ( containerRef && containerRef . current ) ) {
185
+ return ;
186
+ }
171
187
// create dummy elements
172
188
const dummyIndex = document . createElement ( 'span' ) ;
173
189
dummyIndex . className = css ( styles . logViewerIndex ) ;
0 commit comments