@@ -223,29 +223,49 @@ export const Korrel8rTopology: React.FC<{
223223 return controller ;
224224 } , [ controller , selectionAction , componentFactory ] ) ;
225225
226+ const containerRef = React . useRef < HTMLDivElement > ( null ) ;
227+ React . useEffect ( ( ) => {
228+ const element = containerRef . current ;
229+ if ( ! element ) return ;
230+ let timer : ReturnType < typeof setTimeout > ;
231+ const observer = new ResizeObserver ( ( ) => {
232+ clearTimeout ( timer ) ;
233+ timer = setTimeout ( ( ) => controller . getGraph ( ) . fit ( PADDING ) , 150 ) ;
234+ } ) ;
235+ observer . observe ( element ) ;
236+ return ( ) => {
237+ clearTimeout ( timer ) ;
238+ observer . disconnect ( ) ;
239+ } ;
240+ } , [ controller ] ) ;
241+
226242 return (
227- < TopologyView
228- controlBar = {
229- < TopologyControlBar
230- controlButtons = { createTopologyControlButtons ( {
231- ...defaultControlButtonsOptions ,
232- zoomInCallback : action ( ( ) => {
233- controller . getGraph ( ) . scaleBy ( 4 / 3 ) ;
234- } ) ,
235- zoomOutCallback : action ( ( ) => {
236- controller . getGraph ( ) . scaleBy ( 0.75 ) ;
237- } ) ,
238- fitToScreenCallback : action ( ( ) => {
239- controller . getGraph ( ) . fit ( PADDING ) ;
240- } ) ,
241- legend : false ,
242- } ) }
243- />
244- }
245- >
246- < VisualizationProvider controller = { controller2 } >
247- < VisualizationSurface state = { { selectedIds } } />
248- </ VisualizationProvider >
249- </ TopologyView >
243+ < div ref = { containerRef } style = { { width : '100%' , height : '100%' } } >
244+ < TopologyView
245+ controlBar = {
246+ < TopologyControlBar
247+ controlButtons = { createTopologyControlButtons ( {
248+ ...defaultControlButtonsOptions ,
249+ zoomInCallback : action ( ( ) => {
250+ controller . getGraph ( ) . scaleBy ( 4 / 3 ) ;
251+ } ) ,
252+ zoomOutCallback : action ( ( ) => {
253+ controller . getGraph ( ) . scaleBy ( 0.75 ) ;
254+ } ) ,
255+ fitToScreen : false , // Same thing as resetView
256+ resetViewCallback : action ( ( ) => {
257+ controller . getGraph ( ) . reset ( ) ;
258+ controller . getGraph ( ) . layout ( ) ;
259+ } ) ,
260+ legend : false ,
261+ } ) }
262+ />
263+ }
264+ >
265+ < VisualizationProvider controller = { controller2 } >
266+ < VisualizationSurface state = { { selectedIds } } />
267+ </ VisualizationProvider >
268+ </ TopologyView >
269+ </ div >
250270 ) ;
251271} ;
0 commit comments