@@ -623,7 +623,7 @@ const Analysis: React.FC<Props> = ({
623623 [ ] ,
624624 )
625625
626- const compactBlunderMeterData = useMemo (
626+ const rawCompactBlunderMeterData = useMemo (
627627 ( ) =>
628628 analysisEnabled && ! controller . learnFromMistakes . state . isActive
629629 ? controller . blunderMeter
@@ -635,6 +635,42 @@ const Analysis: React.FC<Props> = ({
635635 emptyBlunderMeterData ,
636636 ] ,
637637 )
638+ const [
639+ displayedCompactBlunderMeterData ,
640+ setDisplayedCompactBlunderMeterData ,
641+ ] = useState ( rawCompactBlunderMeterData )
642+
643+ const hasUsableBlunderMeterData = useMemo ( ( ) => {
644+ const totalProbability =
645+ rawCompactBlunderMeterData . goodMoves . probability +
646+ rawCompactBlunderMeterData . okMoves . probability +
647+ rawCompactBlunderMeterData . blunderMoves . probability
648+ const hasMoves =
649+ rawCompactBlunderMeterData . goodMoves . moves . length > 0 ||
650+ rawCompactBlunderMeterData . okMoves . moves . length > 0 ||
651+ rawCompactBlunderMeterData . blunderMoves . moves . length > 0
652+
653+ return totalProbability > 0 || hasMoves
654+ } , [ rawCompactBlunderMeterData ] )
655+
656+ useIsomorphicLayoutEffect ( ( ) => {
657+ if ( ! analysisEnabled || controller . learnFromMistakes . state . isActive ) {
658+ setDisplayedCompactBlunderMeterData ( emptyBlunderMeterData )
659+ return
660+ }
661+
662+ if ( hasUsableBlunderMeterData ) {
663+ setDisplayedCompactBlunderMeterData ( rawCompactBlunderMeterData )
664+ }
665+ } , [
666+ analysisEnabled ,
667+ controller . learnFromMistakes . state . isActive ,
668+ emptyBlunderMeterData ,
669+ hasUsableBlunderMeterData ,
670+ rawCompactBlunderMeterData ,
671+ ] )
672+
673+ const compactBlunderMeterData = displayedCompactBlunderMeterData
638674
639675 const hover = ( move ?: string ) => {
640676 if ( move && analysisEnabled ) {
0 commit comments