@@ -644,6 +644,7 @@ function TasksTreeView({
644644 const [ showDurations , setShowDurations ] = useState ( true ) ;
645645 const [ showQueueTime , setShowQueueTime ] = useState ( false ) ;
646646 const [ scale , setScale ] = useState ( 0 ) ;
647+ const [ hoveredNodeId , setHoveredNodeId ] = useState < string | null > ( null ) ;
647648 const parentRef = useRef < HTMLDivElement > ( null ) ;
648649 const treeScrollRef = useRef < HTMLDivElement > ( null ) ;
649650 const timelineScrollRef = useRef < HTMLDivElement > ( null ) ;
@@ -769,19 +770,27 @@ function TasksTreeView({
769770 getNodeProps = { getNodeProps }
770771 getTreeProps = { getTreeProps }
771772 parentClassName = "pl-3"
772- renderNode = { ( { node, state, index } ) => (
773- < >
774- < div
775- className = { cn (
776- "flex h-8 cursor-pointer items-center overflow-hidden rounded-l-sm pr-2" ,
777- state . selected
778- ? "bg-grid-dimmed hover:bg-grid-bright"
779- : "bg-transparent hover:bg-grid-dimmed"
780- ) }
781- onClick = { ( ) => {
782- selectNode ( node . id ) ;
783- } }
784- >
773+ renderNode = { ( { node, state, index } ) => {
774+ const isHovered = hoveredNodeId === node . id ;
775+ return (
776+ < >
777+ < div
778+ className = { cn (
779+ "flex h-8 cursor-pointer items-center overflow-hidden rounded-l-sm pr-2" ,
780+ state . selected
781+ ? isHovered
782+ ? "bg-grid-bright"
783+ : "bg-grid-dimmed"
784+ : isHovered
785+ ? "bg-grid-dimmed"
786+ : "bg-transparent"
787+ ) }
788+ onClick = { ( ) => {
789+ selectNode ( node . id ) ;
790+ } }
791+ onMouseEnter = { ( ) => setHoveredNodeId ( node . id ) }
792+ onMouseLeave = { ( ) => setHoveredNodeId ( null ) }
793+ >
785794 < div className = "flex h-8 items-center" >
786795 { Array . from ( { length : node . level } ) . map ( ( _ , index ) => (
787796 < TaskLine
@@ -837,7 +846,8 @@ function TasksTreeView({
837846 </ div >
838847 </ div >
839848 </ >
840- ) }
849+ ) ;
850+ } }
841851 onScroll = { ( scrollTop ) => {
842852 //sync the scroll to the tree
843853 if ( timelineScrollRef . current ) {
@@ -870,6 +880,8 @@ function TasksTreeView({
870880 treeScrollRef = { treeScrollRef }
871881 virtualizer = { virtualizer }
872882 toggleNodeSelection = { toggleNodeSelection }
883+ hoveredNodeId = { hoveredNodeId }
884+ setHoveredNodeId = { setHoveredNodeId }
873885 />
874886 </ ResizablePanel >
875887 </ ResizablePanelGroup >
@@ -935,6 +947,8 @@ type TimelineViewProps = Pick<
935947 toggleNodeSelection : UseTreeStateOutput [ "toggleNodeSelection" ] ;
936948 showDurations : boolean ;
937949 treeScrollRef : React . RefObject < HTMLDivElement > ;
950+ hoveredNodeId : string | null ;
951+ setHoveredNodeId : ( nodeId : string | null ) => void ;
938952} ;
939953
940954const tickCount = 5 ;
@@ -954,6 +968,8 @@ function TimelineView({
954968 showDurations,
955969 treeScrollRef,
956970 queuedDuration,
971+ hoveredNodeId,
972+ setHoveredNodeId,
957973} : TimelineViewProps ) {
958974 const timelineContainerRef = useRef < HTMLDivElement > ( null ) ;
959975 const initialTimelineDimensions = useInitialDimensions ( timelineContainerRef ) ;
@@ -1098,20 +1114,26 @@ function TimelineView({
10981114 parentClassName = "h-full scrollbar-hide"
10991115 renderNode = { ( { node, state, index, virtualizer, virtualItem } ) => {
11001116 const isTopSpan = node . id === events [ 0 ] ?. id ;
1117+ const isHovered = hoveredNodeId === node . id ;
11011118
11021119 return (
11031120 < Timeline . Row
11041121 key = { index }
11051122 className = { cn (
11061123 "group flex h-8 items-center" ,
11071124 state . selected
1108- ? "bg-grid-dimmed hover:bg-grid-bright"
1109- : "bg-transparent hover:bg-grid-dimmed"
1125+ ? isHovered
1126+ ? "bg-grid-bright"
1127+ : "bg-grid-dimmed"
1128+ : isHovered
1129+ ? "bg-grid-dimmed"
1130+ : "bg-transparent"
11101131 ) }
1111- // onMouseOver={() => console.log(`hover ${index}`)}
11121132 onClick = { ( e ) => {
11131133 toggleNodeSelection ( node . id ) ;
11141134 } }
1135+ onMouseEnter = { ( ) => setHoveredNodeId ( node . id ) }
1136+ onMouseLeave = { ( ) => setHoveredNodeId ( null ) }
11151137 >
11161138 { node . data . level === "TRACE" ? (
11171139 < >
0 commit comments