From b13af974bed2f549b297822e36d940c0924290ef Mon Sep 17 00:00:00 2001 From: Martin Muzikar Date: Tue, 9 May 2023 14:57:03 +0200 Subject: [PATCH] Trigger update when container resizes --- packages/module/src/LogViewer/LogViewer.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/module/src/LogViewer/LogViewer.tsx b/packages/module/src/LogViewer/LogViewer.tsx index c508826..7928a48 100644 --- a/packages/module/src/LogViewer/LogViewer.tsx +++ b/packages/module/src/LogViewer/LogViewer.tsx @@ -102,6 +102,8 @@ const LogViewerBase: React.FunctionComponent = memo( const [loading, setLoading] = useState(true); const [listKey, setListKey] = useState(1); + const [, setEmptyState] = useState({}); + /* Parse data every time it changes */ const parsedData = React.useMemo(() => parseConsoleOutput(data), [data]); @@ -113,13 +115,21 @@ const LogViewerBase: React.FunctionComponent = memo( let resizeTimer = null as any; useEffect(() => { + let observer : ResizeObserver | undefined = undefined; if (containerRef && containerRef.current) { window.addEventListener('resize', callbackResize); + observer = new ResizeObserver((event) => { + setEmptyState({}); + }); + observer.observe(containerRef.current); setLoading(false); createDummyElements(); ansiUp.resetStyles(); } - return () => window.removeEventListener('resize', callbackResize); + return () => { + window.removeEventListener('resize', callbackResize); + observer?.disconnect(); + } }, [containerRef.current]); const callbackResize = () => { @@ -168,6 +178,9 @@ const LogViewerBase: React.FunctionComponent = memo( }, [parsedData, scrollToRow]); const createDummyElements = () => { + if (!(containerRef && containerRef.current)) { + return; + } // create dummy elements const dummyIndex = document.createElement('span'); dummyIndex.className = css(styles.logViewerIndex);