diff --git a/desktop/plugins/public/ui-debugger/components/Tree2.tsx b/desktop/plugins/public/ui-debugger/components/Tree2.tsx index a1d057296..6ab821aa3 100644 --- a/desktop/plugins/public/ui-debugger/components/Tree2.tsx +++ b/desktop/plugins/public/ui-debugger/components/Tree2.tsx @@ -8,7 +8,7 @@ */ import {Id, UINode} from '../types'; -import React, {useEffect, useState} from 'react'; +import React, {Ref, useEffect, useState} from 'react'; import { HighlightManager, HighlightProvider, @@ -39,8 +39,20 @@ export function Tree2({ const treeNodes = toTreeList(nodes, rootId, expandedNodes); + const refs = treeNodes.map(() => React.createRef()); + useKeyboardShortcuts(treeNodes, selectedNode, onSelectNode); + useEffect(() => { + if (selectedNode) { + const idx = treeNodes.findIndex((node) => node.id === selectedNode); + if (idx !== -1) { + refs[idx].current?.scrollIntoView({ + block: 'nearest', + }); + } + } + }, [refs, selectedNode, treeNodes]); return ( { instance.uiState.hoveredNodes.set([]); }}> - {treeNodes.map((treeNode) => ( + {treeNodes.map((treeNode, index) => ( ; treeNode: TreeNode; selectedNode?: Id; hoveredNode?: Id; @@ -81,6 +96,7 @@ function TreeItemContainer({ const isHovered = useIsHovered(treeNode.id); return ( {