summaryrefslogtreecommitdiffstats
path: root/docusaurus/src/theme
diff options
context:
space:
mode:
Diffstat (limited to 'docusaurus/src/theme')
-rw-r--r--docusaurus/src/theme/Footer/InputPreloader.tsx46
-rw-r--r--docusaurus/src/theme/Footer/index.tsx27
-rw-r--r--docusaurus/src/theme/NotFound/DDoSProtection.tsx13
-rw-r--r--docusaurus/src/theme/NotFound/Redirection.tsx (renamed from docusaurus/src/theme/NotFound/redirectInput.tsx)49
-rw-r--r--docusaurus/src/theme/NotFound/index.tsx37
5 files changed, 67 insertions, 105 deletions
diff --git a/docusaurus/src/theme/Footer/InputPreloader.tsx b/docusaurus/src/theme/Footer/InputPreloader.tsx
index 325f8a7..2ba2e19 100644
--- a/docusaurus/src/theme/Footer/InputPreloader.tsx
+++ b/docusaurus/src/theme/Footer/InputPreloader.tsx
@@ -1,35 +1,31 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-import React, { useEffect, useState } from "react";
-
-const InputPreloader = () => {
- const [showIframe, setShowIframe] = useState(false);
-
- useEffect(() => {
- const handleIframeLoad = () => {
- // Show the iframe after a 3000ms delay
- const timerId = setTimeout(() => setShowIframe(true), 3000);
- // Cleanup the timer when the component unmounts
- return () => clearTimeout(timerId);
- };
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
- window.scroll(0, 0);
+import React from "react";
+
+export default (): React.JSX.Element => {
+ const [insertIframe, setInsertIframe] = React.useState(false);
+
+ React.useEffect((): (() => void) => {
+ const handleIframeLoad = (): (() => void) => {
+ // Insert the iframe after a 3000ms delay.
+ const timerId = setTimeout((): void => setInsertIframe(true), 3000);
+
+ // Cleanup the timer when the component unmounts.
+ return (): void => clearTimeout(timerId);
+ };
window.addEventListener("load", handleIframeLoad);
- // Cleanup the event listener when the component unmounts
- return () => window.removeEventListener("load", handleIframeLoad);
- }, []); // Empty dependency array means the effect runs only once after initial render
+ window.scroll(0, 0);
+
+ // Cleanup the event listener when the component unmounts.
+ return (): void => window.removeEventListener("load", handleIframeLoad);
+ }, []); // Empty dependency array means the effect runs only once after initial render.
return (
<>
{/* Use a descriptive title for accessibility */}
- {showIframe && (
+ {insertIframe && (
<iframe
title="Input Page Preloader"
src="/input/"
@@ -39,5 +35,3 @@ const InputPreloader = () => {
</>
);
};
-
-export default InputPreloader;
diff --git a/docusaurus/src/theme/Footer/index.tsx b/docusaurus/src/theme/Footer/index.tsx
index 2edef40..e4063c5 100644
--- a/docusaurus/src/theme/Footer/index.tsx
+++ b/docusaurus/src/theme/Footer/index.tsx
@@ -1,21 +1,14 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
-import React from "react";
import Footer from "@theme-original/Footer";
import InputPreloader from "./InputPreloader";
+import React from "react";
-const FooterWrapper = (props: React.JSX.IntrinsicAttributes) => {
- return (
- <>
- <Footer {...props} />
- <InputPreloader />
- </>
- );
-};
-
-export default FooterWrapper;
+export default (
+ props: React.JSX.ElementAttributesProperty
+): React.JSX.Element => (
+ <>
+ <Footer {...props} />
+ <InputPreloader />
+ </>
+);
diff --git a/docusaurus/src/theme/NotFound/DDoSProtection.tsx b/docusaurus/src/theme/NotFound/DDoSProtection.tsx
index 6cd8c04..b861669 100644
--- a/docusaurus/src/theme/NotFound/DDoSProtection.tsx
+++ b/docusaurus/src/theme/NotFound/DDoSProtection.tsx
@@ -1,19 +1,14 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
import React from "react";
-const DDoSProtection = () => (
+export default (): React.JSX.Element => (
<center
style={{
display: "flex",
justifyContent: "center",
alignItems: "center",
- height: 100 + "vh",
+ height: "99vh",
}}
>
<center>
@@ -30,5 +25,3 @@ const DDoSProtection = () => (
</center>
</center>
);
-
-export default DDoSProtection;
diff --git a/docusaurus/src/theme/NotFound/redirectInput.tsx b/docusaurus/src/theme/NotFound/Redirection.tsx
index 4e29b4a..3fe2d6d 100644
--- a/docusaurus/src/theme/NotFound/redirectInput.tsx
+++ b/docusaurus/src/theme/NotFound/Redirection.tsx
@@ -1,41 +1,30 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
-
-import { useEffect } from "react";
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
-const redirectInput = () => {
- useEffect(() => {
- const redirectToInputPage = () => {
- const pathname = window.location.pathname;
+import React from "react";
+import typescriptNever from "../../functions/typescriptNever";
- const isExample = pathname.includes("/example");
- if (!isExample) {
- window.location.href = "/";
- return;
- }
+export default (): React.JSX.Element => {
+ React.useEffect((): void => {
+ const pathname = window.location.pathname;
- const filename = pathname.split("/").pop();
- if (!filename) {
- window.location.href = "/";
- return;
- }
+ const isExample = pathname.includes("/example");
- const topic = "topic " + filename.replace(/-/g, " ");
+ if (isExample === true) {
+ const topic = "topic " + pathname.split("/").pop().replace(/-/g, " ");
const url = new URL("/input/", window.location.href);
url.searchParams.set("i", topic);
- window.location.href = url.href;
- };
-
- redirectToInputPage();
- }, []); // The effect runs only once on mount
+ window.location.replace(url);
+ } else if (isExample === false) {
+ window.location.replace("/");
+ } else {
+ window.location.replace("/");
+ typescriptNever(isExample);
+ }
+ }, []); // Empty dependency array means the effect runs only once after initial render.
+
+ return <></>;
};
-export default redirectInput;
-
/*
* test case:
*
diff --git a/docusaurus/src/theme/NotFound/index.tsx b/docusaurus/src/theme/NotFound/index.tsx
index d5e0208..15e9fe6 100644
--- a/docusaurus/src/theme/NotFound/index.tsx
+++ b/docusaurus/src/theme/NotFound/index.tsx
@@ -1,28 +1,21 @@
-/**
- * @license
- * SPDX-License-Identifier: AGPL-3.0-or-later
- * This file is part of Wolfree.
- * This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
- */
+/* SPDX-License-Identifier: AGPL-3.0-or-later */
-import React from "react";
-import NotFound from "@theme-original/NotFound";
-import redirectInput from "./redirectInput";
import DDoSProtection from "./DDoSProtection";
+import NotFound from "@theme-original/NotFound";
+import React from "react";
+import Redirection from "./Redirection";
-const NotFoundWrapper = (props: React.JSX.IntrinsicAttributes) => {
- redirectInput();
- return (
- <>
- <DDoSProtection />
- <div style={{ display: "none" }}>
- <NotFound {...props} />
- </div>
- </>
- );
-};
-
-export default NotFoundWrapper;
+export default (
+ props: React.JSX.ElementAttributesProperty
+): React.JSX.Element => (
+ <>
+ <Redirection />
+ <DDoSProtection />
+ <div style={{ display: "none" }}>
+ <NotFound {...props} />
+ </div>
+ </>
+);
// How can I customize the 404 page? · facebook/docusaurus · Discussion #6030
// https://github.com/facebook/docusaurus/discussions/6030