App.jsx (954B)
1 import { lazy, Suspense } from 'react'; 2 import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'; 3 import LocalEditorPage from './pages/LocalEditorPage.jsx'; 4 import { STR } from './lib/strings.js'; 5 6 const SharedViewPage = lazy(() => import('./pages/SharedViewPage.jsx')); 7 const SharedEditPage = lazy(() => import('./pages/SharedEditPage.jsx')); 8 9 function RouteFallback() { 10 return ( 11 <div className="app"> 12 <p className="page-loading">{STR.LOADING_DOCUMENT}</p> 13 </div> 14 ); 15 } 16 17 export default function App() { 18 return ( 19 <BrowserRouter> 20 <Suspense fallback={<RouteFallback />}> 21 <Routes> 22 <Route path="/" element={<LocalEditorPage />} /> 23 <Route path="/v/:token" element={<SharedViewPage />} /> 24 <Route path="/e/:token" element={<SharedEditPage />} /> 25 <Route path="*" element={<Navigate to="/" replace />} /> 26 </Routes> 27 </Suspense> 28 </BrowserRouter> 29 ); 30 }