import React, { useState, useEffect, useRef } from 'react'; import MapboxView from './components/MapboxView'; import Header from './components/Header'; import Footer from './components/Footer'; import { fetchEvents } from './api/events'; import './styles/glassmorphism.css'; import './styles/animations.css'; import './styles/mapbox-theme.css'; function App() { const [events, setEvents] = useState([]); const [selectedEvent, setSelectedEvent] = useState(null); const [loading, setLoading] = useState(true); const [sentimentFilter, setSentimentFilter] = useState(null); const mapRef = useRef(null); useEffect(() => { loadEvents(); }, []); const loadEvents = async () => { try { setLoading(true); const data = await fetchEvents(); // Data now comes with real sentiment scores from backend setEvents(data); } catch (error) { console.error('Error loading events:', error); } finally { setLoading(false); } }; const handleEventClick = (event) => { console.log('=== Event clicked ==='); console.log('Full event object:', event); console.log('Event title:', event.title); console.log('Event link:', event.link); console.log('Event location:', event.location); console.log('Has location?:', !!event.location); setSelectedEvent(event); }; const handleClosePopup = () => { setSelectedEvent(null); }; const handleSentimentFilter = (sentiment) => { setSentimentFilter(sentimentFilter === sentiment ? null : sentiment); }; return (