home.tsx 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. "use client";
  2. import ErrorBoundary from "@/components/error-boundary";
  3. import styles from "./home.module.scss";
  4. import { SlotID, Path } from "@/constant/route";
  5. import {
  6. BrowserRouter,
  7. Routes,
  8. Route,
  9. Outlet,
  10. Navigate,
  11. useLocation,
  12. HashRouter,
  13. } from "react-router-dom";
  14. import { ExtractorSide } from "./extract-side";
  15. import { LanguageProvider } from "@/context/language-provider";
  16. import PDFUpload from "@/pages/extract/components/pdf-upload";
  17. import PDFExtractionJob from "@/pages/extract/components/pdf-extraction";
  18. export function WindowContent() {
  19. const location = useLocation();
  20. const isHome = location.pathname === Path.Home;
  21. return (
  22. <>
  23. <ExtractorSide className={isHome ? styles["sidebar-show"] : ""} />
  24. <div className="flex-1">
  25. <Outlet />
  26. </div>
  27. </>
  28. );
  29. }
  30. function Screen() {
  31. const renderContent = () => {
  32. return (
  33. <div className="w-full h-full flex" id={SlotID.AppBody}>
  34. <Routes>
  35. <Route path="/" element={<WindowContent />}>
  36. <Route
  37. index
  38. element={<Navigate to="/OpenSourceTools/Extractor/PDF" replace />}
  39. />
  40. <Route
  41. path="/OpenSourceTools/Extractor/PDF"
  42. element={<PDFUpload />}
  43. />
  44. <Route
  45. path="/OpenSourceTools/Extractor/PDF/:jobID"
  46. element={<PDFExtractionJob />}
  47. />
  48. <Route
  49. path="*"
  50. element={<Navigate to="/OpenSourceTools/Extractor/PDF" replace />}
  51. />
  52. </Route>
  53. </Routes>
  54. </div>
  55. );
  56. };
  57. return <>{renderContent()}</>;
  58. }
  59. export function Home() {
  60. return (
  61. <ErrorBoundary>
  62. <LanguageProvider>
  63. <HashRouter>
  64. <Screen />
  65. </HashRouter>
  66. </LanguageProvider>
  67. </ErrorBoundary>
  68. );
  69. }