import React, { Component, type ErrorInfo, type ReactNode } from 'react';
import ReactDOM from 'react-dom/client';
import { Box, Typography, Button } from '@mui/material';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { AppThemeProvider } from './theme/ThemeContext';
import App from './App';
console.log("[Renderer] Initializing React App...");
window.addEventListener('error', (event) => {
console.error("[Global Error]", event.error);
});
window.addEventListener('unhandledrejection', (event) => {
console.error("[Unhandled Rejection]", event.reason);
});
class ErrorBoundary extends Component<{ children: ReactNode }, { hasError: boolean, error: Error | null }> {
constructor(props: any) {
super(props);
this.state = { hasError: false, error: null };
}
static getDerivedStateFromError(error: Error) {
return { hasError: true, error };
}
componentDidCatch(error: Error, errorInfo: ErrorInfo) {
console.error("[Renderer] CRASH DETECTED:", error);
console.error("[Renderer] Error Info:", errorInfo);
}
render() {
if (this.state.hasError) {
return (
Application Error
{this.state.error?.stack || this.state.error?.message}
);
}
return this.props.children;
}
}
const queryClient = new QueryClient();
const rootElement = document.getElementById('root');
if (!rootElement) {
console.error("[Renderer] Failed to find #root element!");
} else {
ReactDOM.createRoot(rootElement).render(
);
console.log("[Renderer] Render initiated.");
}