diff options
Diffstat (limited to 'docusaurus/src/theme')
-rw-r--r-- | docusaurus/src/theme/Footer/InputPreloader.tsx | 46 | ||||
-rw-r--r-- | docusaurus/src/theme/Footer/index.tsx | 27 | ||||
-rw-r--r-- | docusaurus/src/theme/NotFound/DDoSProtection.tsx | 13 | ||||
-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.tsx | 37 |
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 |