diff --git a/app/page.jsx b/app/page.jsx index 346b09b..c48b62e 100644 --- a/app/page.jsx +++ b/app/page.jsx @@ -265,6 +265,7 @@ export default function Home() { onSelectDev={handleSelectDev} onSelectCountry={handleSelectCountry} onClearCountry={handleClearCountry} + tooltipDisabled={Boolean(selectedDev || compareDevs.length === 2)} /> { + if (!tooltipDisabled) return; + tooltipRef.current?.classList.remove('visible'); + setHoverCountry(null); + }, [tooltipDisabled]); + const handleHover = useCallback((point) => { const tooltip = tooltipRef.current; if (!tooltip) return; + if (tooltipDisabled) { + tooltip.classList.remove('visible'); + return; + } + if (point) { tooltip.innerHTML = `
@@ -255,7 +267,7 @@ const Globe = forwardRef(function Globe({ tooltip.classList.remove('visible'); setAutoRotate(true); } - }, [setAutoRotate]); + }, [setAutoRotate, tooltipDisabled]); const handleClick = useCallback((point) => { if (point) onSelectDev(point); @@ -282,10 +294,17 @@ const Globe = forwardRef(function Globe({ }, [hoverCountry, selectedFeature]); const handleCountryHover = useCallback((feat) => { - setHoverCountry(feat || null); const tooltip = tooltipRef.current; if (!tooltip) return; + if (tooltipDisabled) { + setHoverCountry(null); + tooltip.classList.remove('visible'); + return; + } + + setHoverCountry(feat || null); + if (feat) { const name = featureName(feat); const safeName = String(name).replace(/[&<>"']/g, ch => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }[ch])); @@ -301,7 +320,7 @@ const Globe = forwardRef(function Globe({ tooltip.classList.remove('visible'); setAutoRotate(true); } - }, [devCountByCountry, setAutoRotate]); + }, [devCountByCountry, setAutoRotate, tooltipDisabled]); const handleCountryClick = useCallback((feat) => { if (!feat) return; @@ -330,14 +349,14 @@ const Globe = forwardRef(function Globe({ // Track mouse for tooltip useEffect(() => { const handler = (e) => { - if (tooltipRef.current) { + if (tooltipRef.current && !tooltipDisabled) { tooltipRef.current.style.left = (e.clientX + 12) + 'px'; tooltipRef.current.style.top = (e.clientY + 12) + 'px'; } }; document.addEventListener('mousemove', handler); return () => document.removeEventListener('mousemove', handler); - }, []); + }, [tooltipDisabled]); return ( <> diff --git a/components/Header.jsx b/components/Header.jsx index 20efdde..8f61a7e 100644 --- a/components/Header.jsx +++ b/components/Header.jsx @@ -9,7 +9,7 @@ export default function Header({ onHome, theme, onToggleTheme, user, onLogout, o
DevGlobe

DevGlobe

- Visualizing the World's Top Open-Source Contributors + Where Developers and AI Agents Connect