From 1e0f558f048e53068ee4804c191b72fc879e0f3f Mon Sep 17 00:00:00 2001 From: Josh-Cena Date: Tue, 31 Aug 2021 17:14:24 +0800 Subject: [PATCH 1/8] Migrate Signed-off-by: Josh-Cena --- .../docusaurus-theme-classic/package.json | 2 ++ .../docusaurus-theme-classic/src/index.ts | 16 +++++++---- .../src/theme/CodeBlock/index.tsx | 3 +- .../src/theme/DocSidebar/index.tsx | 2 +- .../src/theme/DocSidebarItem/index.tsx | 5 +++- .../src/theme/DocVersionBanner/index.tsx | 7 ++++- .../DocsVersionDropdownNavbarItem.tsx | 5 ++-- .../src/theme/NavbarItem/index.tsx | 4 ++- .../src/theme/hooks/useTabGroupChoice.ts | 4 +-- ...eThemeConfig.js => validateThemeConfig.ts} | 28 ++++++++++++------- .../docusaurus-theme-classic/tsconfig.json | 1 - yarn.lock | 23 +++++++++++++++ 12 files changed, 75 insertions(+), 25 deletions(-) rename packages/docusaurus-theme-classic/src/{validateThemeConfig.js => validateThemeConfig.ts} (94%) diff --git a/packages/docusaurus-theme-classic/package.json b/packages/docusaurus-theme-classic/package.json index 0f3cf69a7572..17b7d1c135f7 100644 --- a/packages/docusaurus-theme-classic/package.json +++ b/packages/docusaurus-theme-classic/package.json @@ -51,7 +51,9 @@ }, "devDependencies": { "@docusaurus/module-type-aliases": "2.0.0-beta.5", + "@types/mdx-js__react": "^1.5.4", "@types/parse-numeric-range": "^0.0.1", + "@types/rtlcss": "^3.1.1", "utility-types": "^3.10.0" }, "peerDependencies": { diff --git a/packages/docusaurus-theme-classic/src/index.ts b/packages/docusaurus-theme-classic/src/index.ts index 7bf65db0f213..08b7ddbfad4a 100644 --- a/packages/docusaurus-theme-classic/src/index.ts +++ b/packages/docusaurus-theme-classic/src/index.ts @@ -10,7 +10,7 @@ import type {ThemeConfig} from '@docusaurus/theme-common'; import {getTranslationFiles, translateThemeConfig} from './translations'; import path from 'path'; import Module from 'module'; -import type {AcceptedPlugin, Result, Plugin as PostCssPlugin} from 'postcss'; +import type {AcceptedPlugin, Plugin as PostCssPlugin} from 'postcss'; import rtlcss from 'rtlcss'; import {readDefaultCodeTranslationMessages} from '@docusaurus/utils'; @@ -25,7 +25,13 @@ const ContextReplacementPlugin = requireFromDocusaurusCore( // Need to be inlined to prevent dark mode FOUC // Make sure that the 'storageKey' is the same as the one in `/theme/hooks/useTheme.js` const ThemeStorageKey = 'theme'; -const noFlashColorMode = ({defaultMode, respectPrefersColorScheme}) => { +const noFlashColorMode = ({ + defaultMode, + respectPrefersColorScheme, +}: { + defaultMode: string; + respectPrefersColorScheme: boolean; +}) => { return `(function() { var defaultMode = '${defaultMode}'; var respectPrefersColorScheme = ${respectPrefersColorScheme}; @@ -83,7 +89,7 @@ const AnnouncementBarInlineJavaScript = ` document.documentElement.setAttribute('${AnnouncementBarDismissDataAttribute}', isDismissed()); })();`; -function getInfimaCSSFile(direction) { +function getInfimaCSSFile(direction: string) { return `infima/dist/css/default/default${ direction === 'rtl' ? '-rtl' : '' }.css`; @@ -183,13 +189,13 @@ export default function docusaurusThemeClassic( const resolvedInfimaFile = require.resolve(getInfimaCSSFile(direction)); const plugin: PostCssPlugin = { postcssPlugin: 'RtlCssPlugin', - prepare: (result: Result) => { + prepare: (result) => { const file = result.root?.source?.input?.file; // Skip Infima as we are using the its RTL version. if (file === resolvedInfimaFile) { return {}; } - return rtlcss(result.root); + return rtlcss((result.root as unknown) as rtlcss.ConfigOptions); }, }; postCssOptions.plugins.push(plugin); diff --git a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx index 086186bb8b41..0d7e10e4baa2 100644 --- a/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/CodeBlock/index.tsx @@ -19,8 +19,9 @@ import styles from './styles.module.css'; import {useThemeConfig, parseCodeBlockTitle} from '@docusaurus/theme-common'; const highlightLinesRangeRegex = /{([\d,-]+)}/; +const languageTypes = ['js', 'jsBlock', 'jsx', 'python', 'html'] as const; const getHighlightDirectiveRegex = ( - languages = ['js', 'jsBlock', 'jsx', 'python', 'html'], + languages: ReadonlyArray = languageTypes, ) => { // supported types of comments const comments = { diff --git a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx index 702e7a54ca35..fd5f3fe33169 100644 --- a/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx +++ b/packages/docusaurus-theme-classic/src/theme/DocSidebar/index.tsx @@ -35,7 +35,7 @@ function useShowAnnouncementBar() { return showAnnouncementBar; } -function HideableSidebarButton({onClick}) { +function HideableSidebarButton({onClick}: {onClick: React.MouseEventHandler}) { return (