X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/01ca27ba0a1ef84c53e223004249505435a788b6..4a9e5c926179b3ab8ff7231904e2db93d42149e0:/services/workbench2/src/views-components/side-panel/side-panel.tsx diff --git a/services/workbench2/src/views-components/side-panel/side-panel.tsx b/services/workbench2/src/views-components/side-panel/side-panel.tsx index e19daefa87..80cfe75b27 100644 --- a/services/workbench2/src/views-components/side-panel/side-panel.tsx +++ b/services/workbench2/src/views-components/side-panel/side-panel.tsx @@ -59,13 +59,24 @@ export const SidePanel = withStyles(styles)( if (!splitPane) return; - const observer = new ResizeObserver((entries)=>{ - const width = entries[0].contentRect.width - props.setCurrentSideWidth(width) - }) + const observerCallback: ResizeObserverCallback = (entries: ResizeObserverEntry[]) => { + try { + //prevents potential infinite resize triggers + window.requestAnimationFrame((): void | undefined => { + if (!Array.isArray(entries) || !entries.length) { + return; + } + const width = entries[0].contentRect.width + props.setCurrentSideWidth(width) + }); + } catch (error) { + console.error('Error in resize observer callback', error); + } + }; - observer.observe(splitPane) + const observer = new ResizeObserver(observerCallback) + observer.observe(splitPane) return ()=> observer.disconnect() }, [props]) @@ -73,22 +84,21 @@ export const SidePanel = withStyles(styles)( {props.isCollapsed ?
- <> - - - - -
+ <> + + + + : <> -
- - - - - -
- +
+ + + + + +
+ }
)}