@@ -49,6 +49,7 @@ import {
49
49
SchedulingEventsView ,
50
50
SnapshotsView ,
51
51
SuspenseEventsView ,
52
+ ThrownErrorsView ,
52
53
TimeAxisMarkersView ,
53
54
UserTimingMarksView ,
54
55
} from './content-views' ;
@@ -138,6 +139,7 @@ const EMPTY_CONTEXT_INFO: ReactHoverContextInfo = {
138
139
schedulingEvent : null ,
139
140
snapshot : null ,
140
141
suspenseEvent : null ,
142
+ thrownError : null ,
141
143
userTimingMark : null ,
142
144
} ;
143
145
@@ -178,6 +180,7 @@ function AutoSizedCanvas({
178
180
const flamechartViewRef = useRef ( null ) ;
179
181
const networkMeasuresViewRef = useRef ( null ) ;
180
182
const snapshotsViewRef = useRef ( null ) ;
183
+ const thrownErrorsViewRef = useRef ( null ) ;
181
184
182
185
const { hideMenu : hideContextMenu } = useContext ( RegistryContext ) ;
183
186
@@ -271,6 +274,20 @@ function AutoSizedCanvas({
271
274
true ,
272
275
) ;
273
276
277
+ let thrownErrorsViewWrapper = null ;
278
+ if ( data . thrownErrors . length > 0 ) {
279
+ const thrownErrorsView = new ThrownErrorsView (
280
+ surface ,
281
+ defaultFrame ,
282
+ data ,
283
+ ) ;
284
+ thrownErrorsViewRef . current = thrownErrorsView ;
285
+ thrownErrorsViewWrapper = createViewHelper (
286
+ thrownErrorsView ,
287
+ 'thrown errors' ,
288
+ ) ;
289
+ }
290
+
274
291
const schedulingEventsView = new SchedulingEventsView (
275
292
surface ,
276
293
defaultFrame ,
@@ -382,6 +399,9 @@ function AutoSizedCanvas({
382
399
}
383
400
rootView . addSubview ( nativeEventsViewWrapper ) ;
384
401
rootView . addSubview ( schedulingEventsViewWrapper ) ;
402
+ if ( thrownErrorsViewWrapper !== null ) {
403
+ rootView . addSubview ( thrownErrorsViewWrapper ) ;
404
+ }
385
405
if ( suspenseEventsViewWrapper !== null ) {
386
406
rootView . addSubview ( suspenseEventsViewWrapper ) ;
387
407
}
@@ -461,14 +481,7 @@ function AutoSizedCanvas({
461
481
userTimingMarksView . onHover = userTimingMark => {
462
482
if ( ! hoveredEvent || hoveredEvent . userTimingMark !== userTimingMark ) {
463
483
setHoveredEvent ( {
464
- componentMeasure : null ,
465
- flamechartStackFrame : null ,
466
- measure : null ,
467
- nativeEvent : null ,
468
- networkMeasure : null ,
469
- schedulingEvent : null ,
470
- snapshot : null ,
471
- suspenseEvent : null ,
484
+ ...EMPTY_CONTEXT_INFO ,
472
485
userTimingMark,
473
486
} ) ;
474
487
}
@@ -480,15 +493,8 @@ function AutoSizedCanvas({
480
493
nativeEventsView . onHover = nativeEvent => {
481
494
if ( ! hoveredEvent || hoveredEvent . nativeEvent !== nativeEvent ) {
482
495
setHoveredEvent ( {
483
- componentMeasure : null ,
484
- flamechartStackFrame : null ,
485
- measure : null ,
496
+ ...EMPTY_CONTEXT_INFO ,
486
497
nativeEvent,
487
- networkMeasure : null ,
488
- schedulingEvent : null ,
489
- snapshot : null ,
490
- suspenseEvent : null ,
491
- userTimingMark : null ,
492
498
} ) ;
493
499
}
494
500
} ;
@@ -499,15 +505,8 @@ function AutoSizedCanvas({
499
505
schedulingEventsView . onHover = schedulingEvent => {
500
506
if ( ! hoveredEvent || hoveredEvent . schedulingEvent !== schedulingEvent ) {
501
507
setHoveredEvent ( {
502
- componentMeasure : null ,
503
- flamechartStackFrame : null ,
504
- measure : null ,
505
- nativeEvent : null ,
506
- networkMeasure : null ,
508
+ ...EMPTY_CONTEXT_INFO ,
507
509
schedulingEvent,
508
- snapshot : null ,
509
- suspenseEvent : null ,
510
- userTimingMark : null ,
511
510
} ) ;
512
511
}
513
512
} ;
@@ -518,15 +517,8 @@ function AutoSizedCanvas({
518
517
suspenseEventsView . onHover = suspenseEvent => {
519
518
if ( ! hoveredEvent || hoveredEvent . suspenseEvent !== suspenseEvent ) {
520
519
setHoveredEvent ( {
521
- componentMeasure : null ,
522
- flamechartStackFrame : null ,
523
- measure : null ,
524
- nativeEvent : null ,
525
- networkMeasure : null ,
526
- schedulingEvent : null ,
527
- snapshot : null ,
520
+ ...EMPTY_CONTEXT_INFO ,
528
521
suspenseEvent,
529
- userTimingMark : null ,
530
522
} ) ;
531
523
}
532
524
} ;
@@ -537,15 +529,8 @@ function AutoSizedCanvas({
537
529
reactMeasuresView . onHover = measure => {
538
530
if ( ! hoveredEvent || hoveredEvent . measure !== measure ) {
539
531
setHoveredEvent ( {
540
- componentMeasure : null ,
541
- flamechartStackFrame : null ,
532
+ ...EMPTY_CONTEXT_INFO ,
542
533
measure,
543
- nativeEvent : null ,
544
- networkMeasure : null ,
545
- schedulingEvent : null ,
546
- snapshot : null ,
547
- suspenseEvent : null ,
548
- userTimingMark : null ,
549
534
} ) ;
550
535
}
551
536
} ;
@@ -559,15 +544,8 @@ function AutoSizedCanvas({
559
544
hoveredEvent . componentMeasure !== componentMeasure
560
545
) {
561
546
setHoveredEvent ( {
547
+ ...EMPTY_CONTEXT_INFO ,
562
548
componentMeasure,
563
- flamechartStackFrame : null ,
564
- measure : null ,
565
- nativeEvent : null ,
566
- networkMeasure : null ,
567
- schedulingEvent : null ,
568
- snapshot : null ,
569
- suspenseEvent : null ,
570
- userTimingMark : null ,
571
549
} ) ;
572
550
}
573
551
} ;
@@ -578,15 +556,8 @@ function AutoSizedCanvas({
578
556
snapshotsView . onHover = snapshot => {
579
557
if ( ! hoveredEvent || hoveredEvent . snapshot !== snapshot ) {
580
558
setHoveredEvent ( {
581
- componentMeasure : null ,
582
- flamechartStackFrame : null ,
583
- measure : null ,
584
- nativeEvent : null ,
585
- networkMeasure : null ,
586
- schedulingEvent : null ,
559
+ ...EMPTY_CONTEXT_INFO ,
587
560
snapshot,
588
- suspenseEvent : null ,
589
- userTimingMark : null ,
590
561
} ) ;
591
562
}
592
563
} ;
@@ -600,15 +571,8 @@ function AutoSizedCanvas({
600
571
hoveredEvent . flamechartStackFrame !== flamechartStackFrame
601
572
) {
602
573
setHoveredEvent ( {
603
- componentMeasure : null ,
574
+ ... EMPTY_CONTEXT_INFO ,
604
575
flamechartStackFrame,
605
- measure : null ,
606
- nativeEvent : null ,
607
- networkMeasure : null ,
608
- schedulingEvent : null ,
609
- snapshot : null ,
610
- suspenseEvent : null ,
611
- userTimingMark : null ,
612
576
} ) ;
613
577
}
614
578
} ) ;
@@ -619,15 +583,20 @@ function AutoSizedCanvas({
619
583
networkMeasuresView . onHover = networkMeasure => {
620
584
if ( ! hoveredEvent || hoveredEvent . networkMeasure !== networkMeasure ) {
621
585
setHoveredEvent ( {
622
- componentMeasure : null ,
623
- flamechartStackFrame : null ,
624
- measure : null ,
625
- nativeEvent : null ,
586
+ ...EMPTY_CONTEXT_INFO ,
626
587
networkMeasure,
627
- schedulingEvent : null ,
628
- snapshot : null ,
629
- suspenseEvent : null ,
630
- userTimingMark : null ,
588
+ } ) ;
589
+ }
590
+ } ;
591
+ }
592
+
593
+ const { current : thrownErrorsView } = thrownErrorsViewRef ;
594
+ if ( thrownErrorsView ) {
595
+ thrownErrorsView . onHover = thrownError => {
596
+ if ( ! hoveredEvent || hoveredEvent . thrownError !== thrownError ) {
597
+ setHoveredEvent ( {
598
+ ...EMPTY_CONTEXT_INFO ,
599
+ thrownError,
631
600
} ) ;
632
601
}
633
602
} ;
0 commit comments