@@ -8,7 +8,7 @@ import useForceUpdate from './useForceUpdate';
8
8
import LinkControls from './LinkControls' ;
9
9
import getLinkComponent from './getLinkComponent' ;
10
10
import { localPoint } from '@visx/event' ;
11
- import { useTooltip , useTooltipInPortal , TooltipWithBounds } from '@visx/tooltip' ;
11
+ import { useTooltip , useTooltipInPortal , TooltipWithBounds , defaultStyles } from '@visx/tooltip' ;
12
12
import { onHover , onHoverExit } from '../actions/actions' ;
13
13
import { useStoreContext } from '../store' ;
14
14
@@ -104,18 +104,24 @@ export default function ComponentMap({
104
104
hideTooltip,
105
105
} = useTooltip ( ) ;
106
106
107
- const { containerRef, TooltipInPortal } = useTooltipInPortal ( ) ;
107
+ const { containerRef, TooltipInPortal } = useTooltipInPortal ( {
108
+ detectBounds : true ,
109
+ scroll : true ,
110
+ } ) ;
108
111
109
- //mousing controls
110
- const handleMouseOver = ( event ) => {
111
- console . log ( "mouse entered" ) ;
112
- const coords = localPoint ( event . target . ownerSVGElement , event ) ;
113
- console . log ( "I'm coords" , coords ) ;
114
- showTooltip ( {
115
- tooltipLeft : coords . x ,
116
- tooltipTop : coords . y ,
117
- tooltipData : "test"
118
- } ) ;
112
+ const tooltipStyles = {
113
+ ...defaultStyles ,
114
+ minWidth : 60 ,
115
+ backgroundColor : 'rgba(0,0,0,0.9)' ,
116
+ color : 'white' ,
117
+ fontSize : '14px' ,
118
+ lineHeight : '18px' ,
119
+ fontFamily : 'Roboto' ,
120
+ } ;
121
+
122
+ const formatRenderTime = ( time ) => {
123
+ time = time . toFixed ( 3 ) ;
124
+ return `${ time } ms ` ;
119
125
}
120
126
121
127
@@ -166,6 +172,8 @@ export default function ComponentMap({
166
172
const width = widthFunc ( node . data . name ) ;
167
173
const height = 25 ;
168
174
175
+
176
+
169
177
let top : number ;
170
178
let left : number ;
171
179
if ( layout === 'polar' ) {
@@ -180,6 +188,21 @@ export default function ComponentMap({
180
188
left = node . y ;
181
189
}
182
190
191
+ //mousing controls
192
+ const handleMouseOver = ( event ) => {
193
+ ( ) => dispatch ( onHover ( node . data . rtid ) ) ;
194
+ const coords = localPoint ( event . target . ownerSVGElement , event ) ;
195
+ const tooltipObj = Object . assign ( { } , node . data ) ;
196
+ if ( typeof tooltipObj . state === 'object' ) tooltipObj . state = 'stateful' ;
197
+ console . log ( "tooltipObj" , tooltipObj )
198
+ showTooltip ( {
199
+ tooltipLeft : coords . x ,
200
+ tooltipTop : coords . y ,
201
+ tooltipData : tooltipObj
202
+ } ) ;
203
+ }
204
+
205
+
183
206
return (
184
207
< Group top = { top } left = { left } key = { key } >
185
208
{ node . depth === 0 && (
@@ -241,16 +264,23 @@ export default function ComponentMap({
241
264
</ Tree >
242
265
</ Group >
243
266
</ svg >
244
- tooltipOpen && tooltipData && (
267
+ { tooltipOpen && tooltipData && (
245
268
< TooltipInPortal
246
269
// set this to random so it correctly updates with parent bounds
247
270
key = { Math . random ( ) }
248
271
top = { tooltipTop }
249
272
left = { tooltipLeft }
273
+ style = { tooltipStyles }
250
274
>
251
- Tooltip Data: < strong > { tooltipData } </ strong >
275
+ < div style = { { } } >
276
+ { ' ' }
277
+ < strong > { tooltipData . name } </ strong > { ' ' }
278
+ </ div >
279
+ < div > State: { tooltipData . state } </ div >
280
+ < div > Render time: { formatRenderTime ( tooltipData . componentData . actualDuration ) } </ div >
281
+
252
282
</ TooltipInPortal >
253
- )
283
+ ) }
254
284
</ div >
255
285
) ;
256
286
}
0 commit comments