import { useState, useEffect, useCallback } from 'react'; import { X, BarChart3, Maximize2, Minimize2 } from 'lucide-react'; import { ProfilerService } from '../services/ProfilerService'; import { AdvancedProfiler } from './AdvancedProfiler'; import '../styles/ProfilerWindow.css'; interface AdvancedProfilerWindowProps { onClose: () => void; } interface WindowWithProfiler extends Window { __PROFILER_SERVICE__?: ProfilerService; } export function AdvancedProfilerWindow({ onClose }: AdvancedProfilerWindowProps) { const [profilerService, setProfilerService] = useState(null); const [isConnected, setIsConnected] = useState(false); const [isFullscreen, setIsFullscreen] = useState(false); useEffect(() => { const service = (window as WindowWithProfiler).__PROFILER_SERVICE__; if (service) { setProfilerService(service); } }, []); useEffect(() => { if (!profilerService) return; const checkStatus = () => { setIsConnected(profilerService.isConnected()); }; checkStatus(); const interval = setInterval(checkStatus, 1000); return () => clearInterval(interval); }, [profilerService]); // 处理 ESC 键退出全屏 useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if (e.key === 'Escape' && isFullscreen) { setIsFullscreen(false); } }; window.addEventListener('keydown', handleKeyDown); return () => window.removeEventListener('keydown', handleKeyDown); }, [isFullscreen]); const toggleFullscreen = useCallback(() => { setIsFullscreen(prev => !prev); }, []); const windowStyle = isFullscreen ? { width: '100vw', height: '100vh', maxWidth: 'none', borderRadius: 0 } : { width: '90vw', height: '85vh', maxWidth: '1600px' }; return (
e.stopPropagation()} style={windowStyle} >

Advanced Performance Profiler

{!isConnected && ( DISCONNECTED )}
); }