Skip to content

Commit bee4737

Browse files
committed
Trigger update when container resizes
1 parent 22e5339 commit bee4737

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

Diff for: packages/module/src/LogViewer/LogViewer.tsx

+18-2
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)