From 74b879fca3aa760264388b2d8dc11a56e80ae21a Mon Sep 17 00:00:00 2001 From: Ashton Anderson Date: Wed, 25 Feb 2026 12:00:56 -0500 Subject: [PATCH] fix: disable eval bars when analysis is hidden --- src/components/Analysis/BoardChrome.tsx | 30 +++++++++++++-- src/pages/analysis/[...id].tsx | 51 ++++++++++++++++++++----- 2 files changed, 67 insertions(+), 14 deletions(-) diff --git a/src/components/Analysis/BoardChrome.tsx b/src/components/Analysis/BoardChrome.tsx index 72be0cc6..8a72e862 100644 --- a/src/components/Analysis/BoardChrome.tsx +++ b/src/components/Analysis/BoardChrome.tsx @@ -16,6 +16,7 @@ interface AnalysisStockfishEvalBarProps { hasEval: boolean displayText: string labelPositionTop: MotionValue + disabled?: boolean variant?: StockfishEvalBarVariant className?: string range?: number @@ -38,6 +39,7 @@ interface AnalysisMaiaWinrateBarProps { hasValue: boolean displayText: string labelPositionTop: MotionValue + disabled?: boolean className?: string bubbleMinWidthPx?: number desktopSize?: 'compact' | 'expanded' @@ -134,6 +136,7 @@ export const AnalysisStockfishEvalBar: React.FC< hasEval, displayText, labelPositionTop, + disabled = false, variant = 'mobile', className, range = 4, @@ -165,7 +168,13 @@ export const AnalysisStockfishEvalBar: React.FC< .join(' ')} >
-
+
-{range}
+ {disabled ? ( +
+ ) : null}
@@ -221,6 +233,7 @@ export const AnalysisMaiaWinrateBar: React.FC = ({ hasValue, displayText, labelPositionTop, + disabled = false, className, bubbleMinWidthPx, desktopSize = 'compact', @@ -238,7 +251,13 @@ export const AnalysisMaiaWinrateBar: React.FC = ({
-
+
= ({ > 0
+ {disabled ? ( +
+ ) : null}
= ({ style={{ top: labelPositionTop, boxShadow: '0 0 0 2px rgb(255 255 255 / 0.32)', - opacity: hasValue ? 1 : 0.6, + opacity: disabled ? 0.45 : hasValue ? 1 : 0.6, minWidth: bubbleMinWidthPx, }} > diff --git a/src/pages/analysis/[...id].tsx b/src/pages/analysis/[...id].tsx index a452e256..a780b82e 100644 --- a/src/pages/analysis/[...id].tsx +++ b/src/pages/analysis/[...id].tsx @@ -1044,6 +1044,16 @@ const Analysis: React.FC = ({ () => Math.max(0, Math.min(100, displayedMaiaWhiteWinBar.percent)), [displayedMaiaWhiteWinBar.percent], ) + const renderedMaiaWhiteWinBar = useMemo( + () => + analysisEnabled + ? displayedMaiaWhiteWinBar + : { hasValue: false, percent: 50, label: '--' }, + [analysisEnabled, displayedMaiaWhiteWinBar], + ) + const maiaWhiteWinBarPositionTargetPercent = analysisEnabled + ? maiaWhiteWinPositionPercent + : 50 const smoothedMaiaWhiteWinPosition = useSpring(50, { stiffness: 520, @@ -1056,8 +1066,8 @@ const Analysis: React.FC = ({ ) useIsomorphicLayoutEffect(() => { - smoothedMaiaWhiteWinPosition.set(maiaWhiteWinPositionPercent) - }, [maiaWhiteWinPositionPercent, smoothedMaiaWhiteWinPosition]) + smoothedMaiaWhiteWinPosition.set(maiaWhiteWinBarPositionTargetPercent) + }, [maiaWhiteWinBarPositionTargetPercent, smoothedMaiaWhiteWinPosition]) const desktopMaiaBubbleReservePx = useMemo( () => (width >= 1360 ? 62 : 52), @@ -1197,10 +1207,28 @@ const Analysis: React.FC = ({ smoothedEvalPosition, (value) => `${100 - value}%`, ) + const renderedStockfishEvalBar = useMemo( + () => + analysisEnabled + ? displayedStockfishEvalBar + : { + hasEval: false, + pawns: 0, + displayPawns: 0, + label: '--', + }, + [analysisEnabled, displayedStockfishEvalBar], + ) + const renderedStockfishEvalText = analysisEnabled + ? displayedStockfishEvalText + : '--' + const evalBarPositionTargetPercent = analysisEnabled + ? evalPositionPercent + : 50 useIsomorphicLayoutEffect(() => { - smoothedEvalPosition.set(evalPositionPercent) - }, [evalPositionPercent, smoothedEvalPosition]) + smoothedEvalPosition.set(evalBarPositionTargetPercent) + }, [evalBarPositionTargetPercent, smoothedEvalPosition]) const NestedGameInfo = () => (
@@ -1486,11 +1514,12 @@ const Analysis: React.FC = ({ >
@@ -1555,9 +1584,10 @@ const Analysis: React.FC = ({
@@ -1786,9 +1816,10 @@ const Analysis: React.FC = ({