import React, {useState, useEffect, useRef} from 'react'; import {Button, ButtonGroup} from 'reactstrap'; import {FontAwesomeIcon} from '@fortawesome/react-fontawesome'; import {faStar as filledStar} from '@fortawesome/free-solid-svg-icons'; import {faStar as emptyStar} from '@fortawesome/free-regular-svg-icons'; import {faHeartCirclePlus, faArrowCircleRight} from '@fortawesome/free-solid-svg-icons'; export function FavoriteBar({teams}) { const [favorite, setFavorite] = useState(null); const [isVisible, setIsVisible] = useState(false); const [isLoading, setIsLoading] = useState(true); const [isPulsing, setIsPulsing] = useState(false); const headingRef = useRef(null); const favoriteBarRef = useRef(null); useEffect(() => { const savedFavorite = localStorage.getItem('favoriteTeam'); if (savedFavorite) { const team = teams.find(team => team.id === parseInt(savedFavorite, 10)); if (team) { setFavorite(team); } } setIsLoading(false); }, [teams]); useEffect(() => { if (isVisible && favoriteBarRef.current) { favoriteBarRef.current.style.maxHeight = `${favoriteBarRef.current.scrollHeight}px`; } else if (favoriteBarRef.current) { favoriteBarRef.current.style.maxHeight = '0'; } }, [isVisible]); const toggleFavorite = team => { if (favorite && favorite.id === team.id) { setFavorite(null); localStorage.removeItem('favoriteTeam'); } else { setFavorite(team); localStorage.setItem('favoriteTeam', team.id); setIsPulsing(true); headingRef.current.scrollIntoView({behavior: 'smooth', block: 'center'}); } setIsVisible(false); // Close the favorite menu }; const scrollToFavorite = () => { if (!favorite) { return; } const stageElements = document.querySelectorAll(`[id^='favorite-team-level-'][id$='-${favorite.id}']`); let lowestStageEl = null; let lowestStageNum = Infinity; stageElements.forEach(el => { const match = el.id.match(/^favorite-team-level-(\d+)-(\d+)$/); if (match) { const stage = parseInt(match[1]); if (stage < lowestStageNum) { lowestStageNum = stage; lowestStageEl = el; } } }); if (lowestStageEl) { lowestStageEl.scrollIntoView({behavior: 'smooth', block: 'end'}); } else { const groupEl = document.getElementById(`favorite-team-groupstage-${favorite.id}`); if (groupEl) { groupEl.scrollIntoView({behavior: 'smooth', block: 'end'}); } } setIsPulsing(false); }; if (isLoading) { return
{favorite ? favorite.name : ''}