import {
useRef,
createElement,
useState,
useEffect,
useMemo,
Component,
} from '@wordpress/element'
import DashboardContext, { Provider, getDefaultValue } from './context'
import Heading from './Heading'
import {
createHashRouter,
RouterProvider,
Link,
useLocation,
useNavigate,
useMatch,
useParams,
Outlet,
createRoutesFromElements,
Route,
} from 'react-router-dom'
import ctEvents from 'ct-events'
window.ctDashboardLocalizations.DashboardContext = DashboardContext
import Navigation from './Navigation'
import Home from './screens/Home'
import RecommendedPlugins from './screens/RecommendedPlugins'
import Changelog from './screens/Changelog'
class ErrorBoundary extends Component {
state = { hasError: false, error: null }
static getDerivedStateFromError(error) {
return { hasError: true, error }
}
componentDidCatch(error, errorInfo) {
console.error('Dashboard Route Error:', error, errorInfo)
if (this.props.onError) {
this.props.onError(error, errorInfo)
}
}
render() {
if (this.state.hasError) {
return null
}
return this.props.children
}
}
const RouteComponentWrapper = ({ Component, ...props }) => {
const navigate = useNavigate()
const location = useLocation()
const params = useParams()
const match = useMatch('*')
return (