@docusaurus/theme-classic 2.0.0-beta.1 → 2.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/__tests__/validateThemeConfig.test.js +277 -3
- package/lib/admonitions.css +35 -0
- package/lib/deps.d.ts +13 -0
- package/lib/index.js +41 -16
- package/lib/prism-include-languages.js +9 -5
- package/lib/theme/AnnouncementBar/index.js +10 -16
- package/lib/theme/AnnouncementBar/styles.module.css +25 -30
- package/lib/theme/BackToTopButton/index.js +140 -0
- package/lib/theme/BackToTopButton/styles.module.css +42 -0
- package/lib/theme/BlogArchivePage/index.js +89 -0
- package/lib/theme/BlogLayout/index.js +51 -0
- package/lib/theme/BlogListPage/index.js +10 -21
- package/lib/theme/BlogPostAuthor/index.js +51 -0
- package/lib/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib/theme/BlogPostAuthors/index.js +47 -0
- package/lib/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib/theme/BlogPostItem/index.js +58 -67
- package/lib/theme/BlogPostPage/index.js +37 -24
- package/lib/theme/BlogSidebar/index.js +5 -7
- package/lib/theme/BlogSidebar/styles.module.css +2 -2
- package/lib/theme/BlogTagsListPage/index.js +8 -44
- package/lib/theme/BlogTagsPostsPage/index.js +24 -38
- package/lib/theme/CodeBlock/index.js +18 -138
- package/lib/theme/CodeBlock/styles.module.css +6 -9
- package/lib/theme/Details/index.js +30 -0
- package/lib/theme/Details/styles.module.css +13 -0
- package/lib/theme/DocCard/index.js +84 -0
- package/lib/theme/DocCard/styles.module.css +43 -0
- package/lib/theme/DocCardList/index.js +28 -0
- package/lib/theme/DocCategoryGeneratedIndexPage/index.js +57 -0
- package/lib/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/lib/theme/DocItem/index.js +29 -46
- package/lib/theme/DocItem/styles.module.css +5 -9
- package/lib/theme/DocItemFooter/index.js +79 -0
- package/lib/theme/DocItemFooter/styles.module.css +18 -0
- package/lib/theme/DocPage/index.js +35 -52
- package/lib/theme/DocPage/styles.module.css +8 -23
- package/lib/theme/DocPaginator/index.js +6 -7
- package/lib/theme/DocSidebar/index.js +53 -235
- package/lib/theme/DocSidebar/styles.module.css +0 -18
- package/lib/theme/DocSidebarItem/index.js +209 -0
- package/lib/theme/DocSidebarItem/styles.module.css +19 -0
- package/lib/theme/DocTagDocListPage/index.js +89 -0
- package/lib/theme/DocTagsListPage/index.js +44 -0
- package/lib/theme/DocVersionBadge/index.js +34 -0
- package/lib/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +39 -20
- package/lib/theme/EditThisPage/index.js +3 -1
- package/lib/theme/ErrorPageContent.js +43 -0
- package/lib/theme/Footer/index.js +16 -5
- package/lib/theme/Heading/index.js +17 -22
- package/lib/theme/Heading/styles.css +5 -6
- package/lib/theme/Heading/styles.module.css +9 -5
- package/lib/theme/IconArrow/index.js +2 -2
- package/lib/theme/IconClose/index.js +31 -0
- package/lib/theme/IconEdit/index.js +3 -3
- package/lib/theme/IconExternalLink/index.js +3 -3
- package/lib/theme/IconLanguage/index.js +3 -3
- package/lib/theme/IconMenu/index.js +3 -3
- package/lib/theme/LastUpdated/index.js +4 -2
- package/lib/theme/Layout/index.js +5 -1
- package/lib/theme/LayoutHead/index.js +22 -17
- package/lib/theme/LayoutProviders/index.js +11 -5
- package/lib/theme/Logo/index.js +16 -14
- package/lib/theme/MDXComponents/index.js +45 -4
- package/lib/theme/MDXComponents/styles.css +11 -0
- package/lib/theme/MDXPage/index.js +2 -1
- package/lib/theme/Navbar/index.js +162 -42
- package/lib/theme/Navbar/styles.module.css +10 -3
- package/lib/theme/NavbarItem/DefaultNavbarItem.js +27 -123
- package/lib/theme/NavbarItem/DocNavbarItem.js +7 -8
- package/lib/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +19 -12
- package/lib/theme/NavbarItem/DropdownNavbarItem.js +155 -0
- package/lib/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +6 -10
- package/lib/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib/theme/NavbarItem/index.js +31 -11
- package/lib/theme/{SearchMetadatas → SearchMetadata}/index.js +2 -2
- package/lib/theme/Seo/index.js +10 -7
- package/lib/theme/SkipToContent/index.js +12 -4
- package/lib/theme/SkipToContent/styles.module.css +1 -0
- package/lib/theme/TOC/index.js +9 -29
- package/lib/theme/TOC/styles.module.css +1 -1
- package/lib/theme/TOCCollapsible/index.js +53 -0
- package/lib/theme/TOCCollapsible/styles.module.css +50 -0
- package/lib/theme/TOCInline/index.js +7 -27
- package/lib/theme/TOCItems/index.js +78 -0
- package/lib/theme/Tabs/__tests__/index.test.js +123 -0
- package/lib/theme/Tabs/index.js +73 -50
- package/lib/theme/Tabs/styles.module.css +0 -13
- package/lib/theme/Tag/index.js +40 -0
- package/lib/theme/Tag/styles.module.css +70 -0
- package/lib/theme/TagsListByLetter/index.js +48 -0
- package/lib/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib/theme/TagsListInline/index.js +44 -0
- package/lib/theme/TagsListInline/styles.module.css +15 -0
- package/lib/theme/ThemeProvider/index.js +8 -3
- package/lib/theme/ThemedImage/index.js +6 -7
- package/lib/theme/Toggle/index.js +41 -44
- package/lib/theme/Toggle/styles.module.css +91 -3
- package/lib/theme/UserPreferencesProvider/index.js +9 -12
- package/lib/theme/hooks/useHideableNavbar.js +14 -32
- package/lib/theme/hooks/useTabGroupChoice.js +2 -4
- package/lib/theme/hooks/useTheme.js +3 -5
- package/lib/theme/hooks/useWindowSize.js +33 -20
- package/lib/theme/prism-include-languages.js +4 -3
- package/lib/theme-classic.d.ts +806 -0
- package/lib/translations.js +4 -4
- package/lib/types.d.ts +0 -599
- package/lib/validateThemeConfig.js +230 -246
- package/lib-next/__tests__/validateThemeConfig.test.js +277 -3
- package/lib-next/admonitions.css +35 -0
- package/lib-next/deps.d.ts +13 -0
- package/lib-next/index.js +45 -13
- package/lib-next/prism-include-languages.js +0 -2
- package/lib-next/theme/AnnouncementBar/index.js +9 -18
- package/lib-next/theme/AnnouncementBar/styles.module.css +25 -30
- package/lib-next/theme/BackToTopButton/index.js +131 -0
- package/lib-next/theme/BackToTopButton/styles.module.css +42 -0
- package/lib-next/theme/BlogArchivePage/index.js +80 -0
- package/lib-next/theme/BlogLayout/index.js +40 -0
- package/lib-next/theme/BlogListPage/index.js +17 -25
- package/lib-next/theme/BlogPostAuthor/index.js +46 -0
- package/lib-next/theme/BlogPostAuthor/styles.module.css +12 -0
- package/lib-next/theme/BlogPostAuthors/index.js +34 -0
- package/lib-next/theme/BlogPostAuthors/styles.module.css +11 -0
- package/lib-next/theme/BlogPostItem/index.js +79 -86
- package/lib-next/theme/BlogPostPage/index.js +70 -35
- package/lib-next/theme/BlogSidebar/index.js +11 -13
- package/lib-next/theme/BlogSidebar/styles.module.css +2 -2
- package/lib-next/theme/BlogTagsListPage/index.js +14 -55
- package/lib-next/theme/BlogTagsPostsPage/index.js +29 -39
- package/lib-next/theme/CodeBlock/index.js +17 -149
- package/lib-next/theme/CodeBlock/styles.module.css +6 -9
- package/lib-next/theme/Details/index.js +20 -0
- package/lib-next/theme/Details/styles.module.css +13 -0
- package/lib-next/theme/DocCard/index.js +80 -0
- package/lib-next/theme/DocCard/styles.module.css +43 -0
- package/lib-next/theme/DocCardList/index.js +19 -0
- package/lib-next/theme/DocCategoryGeneratedIndexPage/index.js +49 -0
- package/lib-next/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/lib-next/theme/DocItem/index.js +40 -56
- package/lib-next/theme/DocItem/styles.module.css +5 -9
- package/lib-next/theme/DocItemFooter/index.js +79 -0
- package/lib-next/theme/DocItemFooter/styles.module.css +18 -0
- package/lib-next/theme/DocPage/index.js +46 -47
- package/lib-next/theme/DocPage/styles.module.css +8 -23
- package/lib-next/theme/DocPaginator/index.js +7 -11
- package/lib-next/theme/DocSidebar/index.js +69 -295
- package/lib-next/theme/DocSidebar/styles.module.css +0 -18
- package/lib-next/theme/DocSidebarItem/index.js +217 -0
- package/lib-next/theme/DocSidebarItem/styles.module.css +19 -0
- package/lib-next/theme/DocTagDocListPage/index.js +89 -0
- package/lib-next/theme/DocTagsListPage/index.js +38 -0
- package/lib-next/theme/DocVersionBadge/index.js +27 -0
- package/lib-next/theme/{DocVersionSuggestions → DocVersionBanner}/index.js +51 -36
- package/lib-next/theme/EditThisPage/index.js +6 -1
- package/lib-next/theme/ErrorPageContent.js +35 -0
- package/lib-next/theme/Footer/index.js +27 -5
- package/lib-next/theme/Heading/index.js +25 -29
- package/lib-next/theme/Heading/styles.css +5 -6
- package/lib-next/theme/Heading/styles.module.css +9 -5
- package/lib-next/theme/IconArrow/index.js +2 -2
- package/lib-next/theme/IconClose/index.js +23 -0
- package/lib-next/theme/IconEdit/index.js +2 -2
- package/lib-next/theme/IconExternalLink/index.js +2 -2
- package/lib-next/theme/IconLanguage/index.js +2 -2
- package/lib-next/theme/IconMenu/index.js +2 -2
- package/lib-next/theme/LastUpdated/index.js +3 -2
- package/lib-next/theme/Layout/index.js +3 -1
- package/lib-next/theme/LayoutHead/index.js +18 -23
- package/lib-next/theme/LayoutProviders/index.js +17 -6
- package/lib-next/theme/Logo/index.js +25 -21
- package/lib-next/theme/MDXComponents/index.js +34 -7
- package/lib-next/theme/MDXComponents/styles.css +11 -0
- package/lib-next/theme/MDXPage/index.js +10 -2
- package/lib-next/theme/Navbar/index.js +193 -56
- package/lib-next/theme/Navbar/styles.module.css +10 -3
- package/lib-next/theme/NavbarItem/DefaultNavbarItem.js +45 -147
- package/lib-next/theme/NavbarItem/DocNavbarItem.js +7 -7
- package/lib-next/theme/NavbarItem/DocsVersionDropdownNavbarItem.js +31 -19
- package/lib-next/theme/NavbarItem/DropdownNavbarItem.js +159 -0
- package/lib-next/theme/NavbarItem/{LocaleDropdownNavbarItem.js → LocaleDropdownNavbarItem/index.js} +4 -12
- package/lib-next/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/lib-next/theme/NavbarItem/index.js +25 -12
- package/lib-next/theme/{SearchMetadatas → SearchMetadata}/index.js +1 -1
- package/lib-next/theme/Seo/index.js +11 -7
- package/lib-next/theme/SkipToContent/index.js +7 -8
- package/lib-next/theme/SkipToContent/styles.module.css +1 -0
- package/lib-next/theme/TOC/index.js +12 -36
- package/lib-next/theme/TOC/styles.module.css +1 -1
- package/lib-next/theme/TOCCollapsible/index.js +54 -0
- package/lib-next/theme/TOCCollapsible/styles.module.css +50 -0
- package/lib-next/theme/TOCInline/index.js +10 -28
- package/lib-next/theme/TOCItems/index.js +85 -0
- package/lib-next/theme/Tabs/__tests__/index.test.js +142 -0
- package/lib-next/theme/Tabs/index.js +91 -43
- package/lib-next/theme/Tabs/styles.module.css +0 -13
- package/lib-next/theme/Tag/index.js +27 -0
- package/lib-next/theme/Tag/styles.module.css +70 -0
- package/lib-next/theme/TagsListByLetter/index.js +42 -0
- package/lib-next/theme/TagsListByLetter/styles.module.css +11 -0
- package/lib-next/theme/TagsListInline/index.js +31 -0
- package/lib-next/theme/TagsListInline/styles.module.css +15 -0
- package/lib-next/theme/ThemeProvider/index.js +10 -7
- package/lib-next/theme/ThemedImage/index.js +7 -8
- package/lib-next/theme/Toggle/index.js +34 -37
- package/lib-next/theme/Toggle/styles.module.css +91 -3
- package/lib-next/theme/UserPreferencesProvider/index.js +9 -10
- package/lib-next/theme/hooks/useHideableNavbar.js +31 -44
- package/lib-next/theme/hooks/useTabGroupChoice.js +2 -4
- package/lib-next/theme/hooks/useTheme.js +4 -5
- package/lib-next/theme/hooks/useWindowSize.js +34 -20
- package/lib-next/theme/prism-include-languages.js +2 -1
- package/lib-next/theme-classic.d.ts +806 -0
- package/lib-next/translations.js +6 -10
- package/lib-next/types.d.ts +0 -599
- package/lib-next/validateThemeConfig.js +141 -114
- package/package.json +28 -25
- package/src/__tests__/validateThemeConfig.test.js +277 -3
- package/src/admonitions.css +35 -0
- package/src/deps.d.ts +13 -0
- package/src/index.ts +55 -22
- package/src/{prism-include-languages.js → prism-include-languages.ts} +0 -0
- package/src/theme/AnnouncementBar/index.tsx +10 -17
- package/src/theme/AnnouncementBar/styles.module.css +25 -30
- package/src/theme/BackToTopButton/index.tsx +142 -0
- package/src/theme/BackToTopButton/styles.module.css +42 -0
- package/src/theme/BlogArchivePage/index.tsx +91 -0
- package/src/theme/BlogLayout/index.tsx +44 -0
- package/src/theme/BlogListPage/index.tsx +18 -25
- package/src/theme/BlogPostAuthor/index.tsx +49 -0
- package/src/theme/BlogPostAuthor/styles.module.css +12 -0
- package/src/theme/BlogPostAuthors/index.tsx +39 -0
- package/src/theme/BlogPostAuthors/styles.module.css +11 -0
- package/src/theme/BlogPostItem/index.tsx +70 -80
- package/src/theme/BlogPostPage/index.tsx +72 -35
- package/src/theme/BlogSidebar/index.tsx +11 -13
- package/src/theme/BlogSidebar/styles.module.css +2 -2
- package/src/theme/BlogTagsListPage/index.tsx +14 -57
- package/src/theme/BlogTagsPostsPage/index.tsx +29 -39
- package/src/theme/CodeBlock/index.tsx +21 -151
- package/src/theme/CodeBlock/styles.module.css +6 -9
- package/src/theme/Details/index.tsx +24 -0
- package/src/theme/Details/styles.module.css +13 -0
- package/src/theme/DocCard/index.tsx +100 -0
- package/src/theme/DocCard/styles.module.css +43 -0
- package/src/theme/DocCardList/index.tsx +27 -0
- package/src/theme/DocCategoryGeneratedIndexPage/index.tsx +53 -0
- package/src/theme/DocCategoryGeneratedIndexPage/styles.module.css +18 -0
- package/src/theme/DocItem/index.tsx +43 -56
- package/src/theme/DocItem/styles.module.css +5 -9
- package/src/theme/DocItemFooter/index.tsx +91 -0
- package/src/theme/DocItemFooter/styles.module.css +18 -0
- package/src/theme/DocPage/index.tsx +44 -42
- package/src/theme/DocPage/styles.module.css +8 -23
- package/src/theme/DocPaginator/index.tsx +9 -13
- package/src/theme/DocSidebar/index.tsx +80 -307
- package/src/theme/DocSidebar/styles.module.css +0 -18
- package/src/theme/DocSidebarItem/index.tsx +242 -0
- package/src/theme/DocSidebarItem/styles.module.css +19 -0
- package/src/theme/DocTagDocListPage/index.tsx +89 -0
- package/src/theme/DocTagsListPage/index.tsx +41 -0
- package/src/theme/DocVersionBadge/index.tsx +30 -0
- package/src/theme/{DocVersionSuggestions → DocVersionBanner}/index.tsx +74 -44
- package/src/theme/EditThisPage/index.tsx +6 -1
- package/src/theme/ErrorPageContent.tsx +41 -0
- package/src/theme/Footer/index.tsx +30 -6
- package/src/theme/Heading/index.tsx +25 -31
- package/src/theme/Heading/styles.css +5 -6
- package/src/theme/Heading/styles.module.css +9 -5
- package/src/theme/IconArrow/index.tsx +2 -2
- package/src/theme/IconClose/index.tsx +26 -0
- package/src/theme/IconEdit/index.tsx +2 -2
- package/src/theme/IconExternalLink/index.tsx +2 -5
- package/src/theme/IconLanguage/index.tsx +2 -6
- package/src/theme/IconMenu/index.tsx +3 -3
- package/src/theme/LastUpdated/index.tsx +3 -2
- package/src/theme/Layout/index.tsx +3 -1
- package/src/theme/LayoutHead/index.tsx +18 -17
- package/src/theme/LayoutProviders/index.tsx +17 -6
- package/src/theme/Logo/index.tsx +21 -17
- package/src/theme/MDXComponents/index.tsx +39 -5
- package/src/theme/MDXComponents/styles.css +11 -0
- package/src/theme/MDXPage/index.tsx +10 -2
- package/src/theme/Navbar/index.tsx +203 -61
- package/src/theme/Navbar/styles.module.css +10 -3
- package/src/theme/NavbarItem/DefaultNavbarItem.tsx +42 -154
- package/src/theme/NavbarItem/DocNavbarItem.tsx +12 -16
- package/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.tsx +33 -21
- package/src/theme/NavbarItem/DocsVersionNavbarItem.tsx +7 -3
- package/src/theme/NavbarItem/DropdownNavbarItem.tsx +181 -0
- package/src/theme/NavbarItem/{LocaleDropdownNavbarItem.tsx → LocaleDropdownNavbarItem/index.tsx} +8 -9
- package/src/theme/NavbarItem/LocaleDropdownNavbarItem/styles.module.css +11 -0
- package/src/theme/NavbarItem/index.tsx +41 -16
- package/src/theme/{SearchMetadatas → SearchMetadata}/index.tsx +2 -2
- package/src/theme/Seo/index.tsx +7 -4
- package/src/theme/SkipToContent/index.tsx +7 -8
- package/src/theme/SkipToContent/styles.module.css +1 -0
- package/src/theme/TOC/index.tsx +12 -41
- package/src/theme/TOC/styles.module.css +1 -1
- package/src/theme/TOCCollapsible/index.tsx +58 -0
- package/src/theme/TOCCollapsible/styles.module.css +50 -0
- package/src/theme/TOCInline/index.tsx +13 -32
- package/src/theme/TOCItems/index.tsx +96 -0
- package/src/theme/Tabs/__tests__/index.test.tsx +129 -0
- package/src/theme/Tabs/index.tsx +93 -49
- package/src/theme/Tabs/styles.module.css +0 -13
- package/src/theme/Tag/index.tsx +31 -0
- package/src/theme/Tag/styles.module.css +70 -0
- package/src/theme/TagsListByLetter/index.tsx +45 -0
- package/src/theme/TagsListByLetter/styles.module.css +11 -0
- package/src/theme/TagsListInline/index.tsx +35 -0
- package/src/theme/TagsListInline/styles.module.css +15 -0
- package/src/theme/ThemeProvider/index.tsx +6 -2
- package/src/theme/ThemedImage/index.tsx +8 -8
- package/src/theme/Toggle/index.tsx +36 -43
- package/src/theme/Toggle/styles.module.css +91 -3
- package/src/theme/UserPreferencesProvider/index.tsx +9 -11
- package/src/theme/hooks/useHideableNavbar.ts +32 -45
- package/src/theme/hooks/useTabGroupChoice.ts +4 -4
- package/src/theme/hooks/useTheme.ts +4 -5
- package/src/theme/hooks/useWindowSize.ts +38 -20
- package/src/theme/prism-include-languages.ts +3 -2
- package/src/theme-classic.d.ts +806 -0
- package/src/translations.ts +8 -10
- package/src/types.d.ts +0 -599
- package/src/{validateThemeConfig.js → validateThemeConfig.ts} +151 -94
- package/tsconfig.json +1 -2
- package/codeTranslations/README.md +0 -20
- package/codeTranslations/ar.json +0 -57
- package/codeTranslations/base.json +0 -112
- package/codeTranslations/bn.json +0 -56
- package/codeTranslations/da.json +0 -57
- package/codeTranslations/de.json +0 -57
- package/codeTranslations/es.json +0 -57
- package/codeTranslations/fa.json +0 -57
- package/codeTranslations/fil.json +0 -57
- package/codeTranslations/fr.json +0 -57
- package/codeTranslations/he.json +0 -57
- package/codeTranslations/hi.json +0 -57
- package/codeTranslations/ja.json +0 -57
- package/codeTranslations/ko.json +0 -57
- package/codeTranslations/pl.json +0 -57
- package/codeTranslations/pt-BR.json +0 -57
- package/codeTranslations/pt-PT.json +0 -57
- package/codeTranslations/ru.json +0 -57
- package/codeTranslations/tr.json +0 -57
- package/codeTranslations/vi.json +0 -57
- package/codeTranslations/zh-Hans.json +0 -57
- package/codeTranslations/zh-Hant.json +0 -57
- package/lib/theme/Toggle/styles.css +0 -103
- package/lib/theme/hooks/useAnnouncementBar.js +0 -63
- package/lib/theme/hooks/useContextualSearchFilters.js +0 -47
- package/lib/theme/hooks/useScrollPosition.js +0 -49
- package/lib/theme/hooks/useTOCHighlight.js +0 -87
- package/lib-next/theme/Toggle/styles.css +0 -103
- package/lib-next/theme/hooks/useAnnouncementBar.js +0 -49
- package/lib-next/theme/hooks/useContextualSearchFilters.js +0 -41
- package/lib-next/theme/hooks/useScrollPosition.js +0 -38
- package/lib-next/theme/hooks/useTOCHighlight.js +0 -84
- package/src/theme/Toggle/styles.css +0 -103
- package/src/theme/hooks/useAnnouncementBar.ts +0 -58
- package/src/theme/hooks/useContextualSearchFilters.ts +0 -52
- package/src/theme/hooks/useScrollPosition.ts +0 -45
- package/src/theme/hooks/useTOCHighlight.ts +0 -98
- package/update-code-translations.js +0 -239
- package/update-code-translations.test.js +0 -33
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
import {useAllDocsData, useActivePluginAndVersion} from '@theme/hooks/useDocs';
|
|
8
|
-
import {
|
|
9
|
-
useDocsPreferredVersionByPluginId,
|
|
10
|
-
DEFAULT_SEARCH_TAG,
|
|
11
|
-
docVersionSearchTag,
|
|
12
|
-
} from '@docusaurus/theme-common';
|
|
13
|
-
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
14
|
-
|
|
15
|
-
type ContextualSearchFilters = {
|
|
16
|
-
locale: string;
|
|
17
|
-
tags: string[];
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
// We may want to support multiple search engines, don't couple that to Algolia/DocSearch
|
|
21
|
-
// Maybe users will want to use its own search engine solution
|
|
22
|
-
export default function useContextualSearchFilters(): ContextualSearchFilters {
|
|
23
|
-
const {i18n} = useDocusaurusContext();
|
|
24
|
-
const allDocsData = useAllDocsData();
|
|
25
|
-
const activePluginAndVersion = useActivePluginAndVersion();
|
|
26
|
-
const docsPreferredVersionByPluginId = useDocsPreferredVersionByPluginId();
|
|
27
|
-
|
|
28
|
-
function getDocPluginTags(pluginId: string) {
|
|
29
|
-
const activeVersion =
|
|
30
|
-
activePluginAndVersion?.activePlugin?.pluginId === pluginId
|
|
31
|
-
? activePluginAndVersion.activeVersion
|
|
32
|
-
: undefined;
|
|
33
|
-
|
|
34
|
-
const preferredVersion = docsPreferredVersionByPluginId[pluginId];
|
|
35
|
-
|
|
36
|
-
const latestVersion = allDocsData[pluginId].versions.find((v) => v.isLast);
|
|
37
|
-
|
|
38
|
-
const version = activeVersion ?? preferredVersion ?? latestVersion;
|
|
39
|
-
|
|
40
|
-
return docVersionSearchTag(pluginId, version.name);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const tags = [
|
|
44
|
-
DEFAULT_SEARCH_TAG,
|
|
45
|
-
...Object.keys(allDocsData).map(getDocPluginTags),
|
|
46
|
-
];
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
locale: i18n.currentLocale,
|
|
50
|
-
tags,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import {useEffect, useRef} from 'react';
|
|
9
|
-
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
|
|
10
|
-
import type {ScrollPosition} from '@theme/hooks/useScrollPosition';
|
|
11
|
-
|
|
12
|
-
const getScrollPosition = (): ScrollPosition => ({
|
|
13
|
-
scrollX: ExecutionEnvironment.canUseDOM ? window.pageXOffset : 0,
|
|
14
|
-
scrollY: ExecutionEnvironment.canUseDOM ? window.pageYOffset : 0,
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
const useScrollPosition = (
|
|
18
|
-
effect?: (position: ScrollPosition, lastPosition: ScrollPosition) => void,
|
|
19
|
-
deps = [],
|
|
20
|
-
): void => {
|
|
21
|
-
const scrollPosition = useRef(getScrollPosition());
|
|
22
|
-
|
|
23
|
-
const handleScroll = () => {
|
|
24
|
-
const currentScrollPosition = getScrollPosition();
|
|
25
|
-
|
|
26
|
-
if (effect) {
|
|
27
|
-
effect(currentScrollPosition, scrollPosition.current);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
scrollPosition.current = currentScrollPosition;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
useEffect(() => {
|
|
34
|
-
const opts: AddEventListenerOptions & EventListenerOptions = {
|
|
35
|
-
passive: true,
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
handleScroll();
|
|
39
|
-
window.addEventListener('scroll', handleScroll, opts);
|
|
40
|
-
|
|
41
|
-
return () => window.removeEventListener('scroll', handleScroll, opts);
|
|
42
|
-
}, deps);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export default useScrollPosition;
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import {useEffect, useState} from 'react';
|
|
9
|
-
|
|
10
|
-
function useTOCHighlight(
|
|
11
|
-
linkClassName: string,
|
|
12
|
-
linkActiveClassName: string,
|
|
13
|
-
topOffset: number,
|
|
14
|
-
): void {
|
|
15
|
-
const [lastActiveLink, setLastActiveLink] = useState<
|
|
16
|
-
HTMLAnchorElement | undefined
|
|
17
|
-
>(undefined);
|
|
18
|
-
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
function setActiveLink() {
|
|
21
|
-
function getActiveHeaderAnchor(): Element | null {
|
|
22
|
-
const headersAnchors: Element[] = Array.from(
|
|
23
|
-
document.getElementsByClassName('anchor'),
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
const firstAnchorUnderViewportTop = headersAnchors.find((anchor) => {
|
|
27
|
-
const {top} = anchor.getBoundingClientRect();
|
|
28
|
-
return top >= topOffset;
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
if (firstAnchorUnderViewportTop) {
|
|
32
|
-
// If first anchor in viewport is under a certain threshold, we consider it's not the active anchor.
|
|
33
|
-
// In such case, the active anchor is the previous one (if it exists), that may be above the viewport
|
|
34
|
-
if (
|
|
35
|
-
firstAnchorUnderViewportTop.getBoundingClientRect().top >= topOffset
|
|
36
|
-
) {
|
|
37
|
-
const previousAnchor =
|
|
38
|
-
headersAnchors[
|
|
39
|
-
headersAnchors.indexOf(firstAnchorUnderViewportTop) - 1
|
|
40
|
-
];
|
|
41
|
-
return previousAnchor ?? firstAnchorUnderViewportTop;
|
|
42
|
-
}
|
|
43
|
-
// If the anchor is at the top of the viewport, we consider it's the first anchor
|
|
44
|
-
else {
|
|
45
|
-
return firstAnchorUnderViewportTop;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// no anchor under viewport top? (ie we are at the bottom of the page)
|
|
49
|
-
else {
|
|
50
|
-
// highlight the last anchor found
|
|
51
|
-
return headersAnchors[headersAnchors.length - 1];
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
const activeHeaderAnchor = getActiveHeaderAnchor();
|
|
56
|
-
|
|
57
|
-
if (activeHeaderAnchor) {
|
|
58
|
-
let index = 0;
|
|
59
|
-
let itemHighlighted = false;
|
|
60
|
-
|
|
61
|
-
// @ts-expect-error: Must be <a> tags.
|
|
62
|
-
const links: HTMLCollectionOf<HTMLAnchorElement> = document.getElementsByClassName(
|
|
63
|
-
linkClassName,
|
|
64
|
-
);
|
|
65
|
-
while (index < links.length && !itemHighlighted) {
|
|
66
|
-
const link = links[index];
|
|
67
|
-
const {href} = link;
|
|
68
|
-
const anchorValue = decodeURIComponent(
|
|
69
|
-
href.substring(href.indexOf('#') + 1),
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
if (activeHeaderAnchor.id === anchorValue) {
|
|
73
|
-
if (lastActiveLink) {
|
|
74
|
-
lastActiveLink.classList.remove(linkActiveClassName);
|
|
75
|
-
}
|
|
76
|
-
link.classList.add(linkActiveClassName);
|
|
77
|
-
setLastActiveLink(link);
|
|
78
|
-
itemHighlighted = true;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
index += 1;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
document.addEventListener('scroll', setActiveLink);
|
|
87
|
-
document.addEventListener('resize', setActiveLink);
|
|
88
|
-
|
|
89
|
-
setActiveLink();
|
|
90
|
-
|
|
91
|
-
return () => {
|
|
92
|
-
document.removeEventListener('scroll', setActiveLink);
|
|
93
|
-
document.removeEventListener('resize', setActiveLink);
|
|
94
|
-
};
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
export default useTOCHighlight;
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const chalk = require('chalk');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
const fs = require('fs-extra');
|
|
11
|
-
const globby = require('globby');
|
|
12
|
-
const {mapValues, pickBy, difference, orderBy} = require('lodash');
|
|
13
|
-
|
|
14
|
-
const CodeDirPaths = [
|
|
15
|
-
path.join(__dirname, 'lib-next'),
|
|
16
|
-
// TODO other themes should rather define their own translations in the future?
|
|
17
|
-
path.join(__dirname, '..', 'docusaurus-theme-search-algolia', 'src', 'theme'),
|
|
18
|
-
path.join(__dirname, '..', 'docusaurus-theme-live-codeblock', 'src', 'theme'),
|
|
19
|
-
path.join(__dirname, '..', 'docusaurus-plugin-pwa', 'src', 'theme'),
|
|
20
|
-
];
|
|
21
|
-
|
|
22
|
-
console.log('Will scan folders for code translations:', CodeDirPaths);
|
|
23
|
-
|
|
24
|
-
function removeDescriptionSuffix(key) {
|
|
25
|
-
if (key.replace('___DESCRIPTION')) {
|
|
26
|
-
return key.replace('___DESCRIPTION', '');
|
|
27
|
-
}
|
|
28
|
-
return key;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function sortObjectKeys(obj) {
|
|
32
|
-
let keys = Object.keys(obj);
|
|
33
|
-
keys = orderBy(keys, [(k) => removeDescriptionSuffix(k)]);
|
|
34
|
-
return keys.reduce((acc, key) => {
|
|
35
|
-
acc[key] = obj[key];
|
|
36
|
-
return acc;
|
|
37
|
-
}, {});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function logSection(title) {
|
|
41
|
-
console.log(``);
|
|
42
|
-
console.log(``);
|
|
43
|
-
console.log(`##############################`);
|
|
44
|
-
console.log(`## ${chalk.blue(title)}`);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
function logKeys(keys) {
|
|
48
|
-
return `Keys:\n- ${keys.join('\n- ')}\``;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
async function extractThemeCodeMessages() {
|
|
52
|
-
// Unsafe import, should we create a package for the translationsExtractor ?
|
|
53
|
-
const {
|
|
54
|
-
globSourceCodeFilePaths,
|
|
55
|
-
extractAllSourceCodeFileTranslations,
|
|
56
|
-
} = require('@docusaurus/core/lib/server/translations/translationsExtractor');
|
|
57
|
-
|
|
58
|
-
const filePaths = (
|
|
59
|
-
await globSourceCodeFilePaths(CodeDirPaths)
|
|
60
|
-
).filter((filePath) => ['.js', '.jsx'].includes(path.extname(filePath)));
|
|
61
|
-
|
|
62
|
-
const filesExtractedTranslations = await extractAllSourceCodeFileTranslations(
|
|
63
|
-
filePaths,
|
|
64
|
-
{
|
|
65
|
-
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
|
|
66
|
-
},
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
filesExtractedTranslations.forEach((fileExtractedTranslations) => {
|
|
70
|
-
fileExtractedTranslations.warnings.forEach((warning) => {
|
|
71
|
-
throw new Error(`
|
|
72
|
-
Please make sure all theme translations are static!
|
|
73
|
-
Some warnings were found!
|
|
74
|
-
|
|
75
|
-
${warning}
|
|
76
|
-
`);
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
const translations = filesExtractedTranslations.reduce(
|
|
81
|
-
(acc, extractedTranslations) => {
|
|
82
|
-
return {...acc, ...extractedTranslations.translations};
|
|
83
|
-
},
|
|
84
|
-
{},
|
|
85
|
-
);
|
|
86
|
-
|
|
87
|
-
return translations;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
async function readMessagesFile(filePath) {
|
|
91
|
-
return JSON.parse(await fs.readFile(filePath));
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
async function writeMessagesFile(filePath, messages) {
|
|
95
|
-
const sortedMessages = sortObjectKeys(messages);
|
|
96
|
-
|
|
97
|
-
const content = `${JSON.stringify(sortedMessages, null, 2)}\n`; // \n makes prettier happy
|
|
98
|
-
await fs.writeFile(filePath, content);
|
|
99
|
-
console.log(
|
|
100
|
-
`${path.basename(filePath)} updated (${
|
|
101
|
-
Object.keys(sortedMessages).length
|
|
102
|
-
} messages)`,
|
|
103
|
-
);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
async function getCodeTranslationFiles() {
|
|
107
|
-
const codeTranslationsDir = path.join(__dirname, 'codeTranslations');
|
|
108
|
-
const baseFile = path.join(codeTranslationsDir, 'base.json');
|
|
109
|
-
const localesFiles = (await globby(codeTranslationsDir)).filter(
|
|
110
|
-
(filepath) =>
|
|
111
|
-
path.extname(filepath) === '.json' && !filepath.endsWith('base.json'),
|
|
112
|
-
);
|
|
113
|
-
return {baseFile, localesFiles};
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const DescriptionSuffix = '___DESCRIPTION';
|
|
117
|
-
|
|
118
|
-
async function updateBaseFile(baseFile) {
|
|
119
|
-
const baseMessagesWithDescriptions = await readMessagesFile(baseFile);
|
|
120
|
-
const baseMessages = pickBy(
|
|
121
|
-
baseMessagesWithDescriptions,
|
|
122
|
-
(_, key) => !key.endsWith(DescriptionSuffix),
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
const codeExtractedTranslations = await extractThemeCodeMessages();
|
|
126
|
-
const codeMessages = mapValues(
|
|
127
|
-
codeExtractedTranslations,
|
|
128
|
-
(translation) => translation.message,
|
|
129
|
-
);
|
|
130
|
-
|
|
131
|
-
const unknownMessages = difference(
|
|
132
|
-
Object.keys(baseMessages),
|
|
133
|
-
Object.keys(codeMessages),
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
if (unknownMessages.length) {
|
|
137
|
-
console.log(
|
|
138
|
-
chalk.red(`Some messages exist in base.json but were not found by the code extractor!
|
|
139
|
-
They won't be removed automatically, so do the cleanup manually if necessary!
|
|
140
|
-
${logKeys(unknownMessages)}`),
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const newBaseMessages = {
|
|
145
|
-
...baseMessages, // Ensure we don't automatically remove unknown messages
|
|
146
|
-
...codeMessages,
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
const newBaseMessagesDescriptions = Object.entries(newBaseMessages).reduce(
|
|
150
|
-
(acc, [key]) => {
|
|
151
|
-
return {
|
|
152
|
-
...acc,
|
|
153
|
-
[`${key}${DescriptionSuffix}`]: codeExtractedTranslations[key]
|
|
154
|
-
.description,
|
|
155
|
-
};
|
|
156
|
-
},
|
|
157
|
-
{},
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
const newBaseMessagesWitDescription = {
|
|
161
|
-
...newBaseMessages,
|
|
162
|
-
...newBaseMessagesDescriptions,
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
await writeMessagesFile(baseFile, newBaseMessagesWitDescription);
|
|
166
|
-
|
|
167
|
-
return newBaseMessages;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
async function updateLocaleCodeTranslations(localeFile, baseFileMessages) {
|
|
171
|
-
const localeFileMessages = await readMessagesFile(localeFile);
|
|
172
|
-
|
|
173
|
-
const unknownMessages = difference(
|
|
174
|
-
Object.keys(localeFileMessages),
|
|
175
|
-
Object.keys(baseFileMessages),
|
|
176
|
-
);
|
|
177
|
-
|
|
178
|
-
if (unknownMessages.length) {
|
|
179
|
-
console.log(
|
|
180
|
-
chalk.red(`Some localized messages do not exist in base.json!
|
|
181
|
-
You may want to delete these!
|
|
182
|
-
${logKeys(unknownMessages)}`),
|
|
183
|
-
);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
const newLocaleFileMessages = {
|
|
187
|
-
...baseFileMessages,
|
|
188
|
-
...localeFileMessages,
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
const untranslatedKeys = Object.entries(newLocaleFileMessages)
|
|
192
|
-
.filter(([key, value]) => {
|
|
193
|
-
return value === baseFileMessages[key];
|
|
194
|
-
})
|
|
195
|
-
.map(([key]) => key);
|
|
196
|
-
|
|
197
|
-
if (untranslatedKeys.length) {
|
|
198
|
-
console.warn(
|
|
199
|
-
chalk.yellow(`Some messages do not seem to be translated!
|
|
200
|
-
${logKeys(untranslatedKeys)}`),
|
|
201
|
-
);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
await writeMessagesFile(localeFile, newLocaleFileMessages);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
async function updateCodeTranslations() {
|
|
208
|
-
logSection('Will update base file');
|
|
209
|
-
const {baseFile, localesFiles} = await getCodeTranslationFiles();
|
|
210
|
-
const baseFileMessages = await updateBaseFile(baseFile);
|
|
211
|
-
|
|
212
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
213
|
-
for (const localeFile of localesFiles) {
|
|
214
|
-
logSection(`Will update ${path.basename(localeFile)}`);
|
|
215
|
-
// eslint-disable-next-line no-await-in-loop
|
|
216
|
-
await updateLocaleCodeTranslations(localeFile, baseFileMessages);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
function run() {
|
|
221
|
-
updateCodeTranslations().then(
|
|
222
|
-
() => {
|
|
223
|
-
console.log('');
|
|
224
|
-
console.log(chalk.green('updateCodeTranslations end'));
|
|
225
|
-
console.log('');
|
|
226
|
-
},
|
|
227
|
-
(e) => {
|
|
228
|
-
console.log('');
|
|
229
|
-
console.error(chalk.red(`updateCodeTranslations failure: ${e.message}`));
|
|
230
|
-
console.log('');
|
|
231
|
-
console.error(e.stack);
|
|
232
|
-
console.log('');
|
|
233
|
-
process.exit(1);
|
|
234
|
-
},
|
|
235
|
-
);
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
exports.run = run;
|
|
239
|
-
exports.extractThemeCodeMessages = extractThemeCodeMessages;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
-
*
|
|
4
|
-
* This source code is licensed under the MIT license found in the
|
|
5
|
-
* LICENSE file in the root directory of this source tree.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const {extractThemeCodeMessages} = require('./update-code-translations');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
const fs = require('fs-extra');
|
|
11
|
-
const {mapValues, pickBy} = require('lodash');
|
|
12
|
-
|
|
13
|
-
// Seems the 5s default timeout fails sometimes
|
|
14
|
-
jest.setTimeout(15000);
|
|
15
|
-
|
|
16
|
-
describe('update-code-translations', () => {
|
|
17
|
-
test(`to have base.json contain all the translations extracted from the theme. Please run "yarn workspace @docusaurus/theme-classic update-code-translations" to keep base.json up-to-date.`, async () => {
|
|
18
|
-
const baseMessages = pickBy(
|
|
19
|
-
JSON.parse(
|
|
20
|
-
await fs.readFile(
|
|
21
|
-
path.join(__dirname, 'codeTranslations', 'base.json'),
|
|
22
|
-
),
|
|
23
|
-
),
|
|
24
|
-
(_, key) => !key.endsWith('___DESCRIPTION'),
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
const codeMessages = mapValues(
|
|
28
|
-
await extractThemeCodeMessages(),
|
|
29
|
-
(translation) => translation.message,
|
|
30
|
-
);
|
|
31
|
-
expect(codeMessages).toEqual(baseMessages);
|
|
32
|
-
});
|
|
33
|
-
});
|