refactor(theme-common): split package into public/internal API entrypoints (#7660)

* add theme-common/internal export

* Split @docusaurus/theme-common into public/internal apis

* fixes

* public <-> private

* public <-> private

* public <-> private

* fix

* add "removeThemeInternalReexport" CI script

* :s windows CI check not working: not that useful

* remove bad import

* refactors

* reorder

* make useBackToTopButton internal

Co-authored-by: Joshua Chen <sidachen2003@gmail.com>
This commit is contained in:
Sébastien Lorber 2022-06-24 11:21:27 +02:00 committed by GitHub
parent 35d320fa2c
commit 9473508c33
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
59 changed files with 278 additions and 204 deletions

1
.eslintrc.js vendored
View file

@ -451,6 +451,7 @@ module.exports = {
'admin/**',
'jest/**',
'website/**',
'packages/docusaurus-theme-common/removeThemeInternalReexport.mjs',
'packages/docusaurus-theme-translations/update.mjs',
'packages/docusaurus-theme-translations/src/utils.ts',
],

View file

@ -40,3 +40,7 @@ jobs:
run: yarn test
- name: TypeCheck website
run: yarn workspace website typecheck
- name: Remove Theme Internal Re-export
run: yarn workspace @docusaurus/theme-common removeThemeInternalReexport
- name: Docusaurus Build
run: yarn build:website:fast

View file

@ -1103,7 +1103,7 @@ declare module '@theme/TOCItems' {
}
declare module '@theme/TOCItems/Tree' {
import type {TOCTreeNode} from '@docusaurus/theme-common';
import type {TOCTreeNode} from '@docusaurus/theme-common/internal';
export interface Props {
readonly toc: readonly TOCTreeNode[];

View file

@ -7,7 +7,8 @@
import React from 'react';
import clsx from 'clsx';
import {useThemeConfig, useAnnouncementBar} from '@docusaurus/theme-common';
import {useThemeConfig} from '@docusaurus/theme-common';
import {useAnnouncementBar} from '@docusaurus/theme-common/internal';
import {translate} from '@docusaurus/Translate';
import IconClose from '@theme/IconClose';

View file

@ -8,7 +8,8 @@
import React from 'react';
import clsx from 'clsx';
import {translate} from '@docusaurus/Translate';
import {ThemeClassNames, useBackToTopButton} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {useBackToTopButton} from '@docusaurus/theme-common/internal';
import styles from './styles.module.css';

View file

@ -7,11 +7,8 @@
import React, {type ComponentProps} from 'react';
import clsx from 'clsx';
import {
usePrismTheme,
getPrismCssVariables,
ThemeClassNames,
} from '@docusaurus/theme-common';
import {ThemeClassNames, usePrismTheme} from '@docusaurus/theme-common';
import {getPrismCssVariables} from '@docusaurus/theme-common/internal';
import styles from './styles.module.css';
export default function CodeBlockContainer<T extends 'div' | 'pre'>({

View file

@ -7,15 +7,14 @@
import React from 'react';
import clsx from 'clsx';
import {useThemeConfig, usePrismTheme} from '@docusaurus/theme-common';
import {
useThemeConfig,
parseCodeBlockTitle,
parseLanguage,
parseLines,
containsLineNumbers,
usePrismTheme,
useCodeWordWrap,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import Highlight, {defaultProps, type Language} from 'prism-react-renderer';
import Line from '@theme/CodeBlock/Line';
import CopyButton from '@theme/CodeBlock/CopyButton';

View file

@ -7,11 +7,11 @@
import React, {type ReactNode} from 'react';
import clsx from 'clsx';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {
ThemeClassNames,
useSidebarBreadcrumbs,
useHomePageRoute,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import Link from '@docusaurus/Link';
import useBaseUrl from '@docusaurus/useBaseUrl';
import {translate} from '@docusaurus/Translate';

View file

@ -8,7 +8,10 @@
import React, {type ReactNode} from 'react';
import clsx from 'clsx';
import Link from '@docusaurus/Link';
import {findFirstCategoryLink, useDocById} from '@docusaurus/theme-common';
import {
findFirstCategoryLink,
useDocById,
} from '@docusaurus/theme-common/internal';
import isInternalUrl from '@docusaurus/isInternalUrl';
import {translate} from '@docusaurus/Translate';
import type {Props} from '@theme/DocCard';

View file

@ -7,7 +7,7 @@
import React from 'react';
import clsx from 'clsx';
import {findFirstCategoryLink} from '@docusaurus/theme-common';
import {findFirstCategoryLink} from '@docusaurus/theme-common/internal';
import DocCard from '@theme/DocCard';
import type {Props} from '@theme/DocCardList';
import type {PropSidebarItem} from '@docusaurus/plugin-content-docs';

View file

@ -7,7 +7,8 @@
import React from 'react';
import clsx from 'clsx';
import {ThemeClassNames, useDoc} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {useDoc} from '@docusaurus/theme-common/internal';
import Heading from '@theme/Heading';
import MDXContent from '@theme/MDXContent';
import type {Props} from '@theme/DocItem/Content';

View file

@ -7,11 +7,8 @@
import React from 'react';
import clsx from 'clsx';
import {
ThemeClassNames,
useDoc,
type DocContextValue,
} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {useDoc, type DocContextValue} from '@docusaurus/theme-common/internal';
import LastUpdated from '@theme/LastUpdated';
import EditThisPage from '@theme/EditThisPage';
import TagsListInline, {

View file

@ -7,7 +7,8 @@
import React from 'react';
import clsx from 'clsx';
import {useWindowSize, useDoc} from '@docusaurus/theme-common';
import {useWindowSize} from '@docusaurus/theme-common';
import {useDoc} from '@docusaurus/theme-common/internal';
import DocItemPaginator from '@theme/DocItem/Paginator';
import DocVersionBanner from '@theme/DocVersionBanner';
import DocVersionBadge from '@theme/DocVersionBadge';

View file

@ -6,7 +6,8 @@
*/
import React from 'react';
import {PageMetadata, useDoc} from '@docusaurus/theme-common';
import {PageMetadata} from '@docusaurus/theme-common';
import {useDoc} from '@docusaurus/theme-common/internal';
export default function DocItemMetadata(): JSX.Element {
const {metadata, frontMatter, assets} = useDoc();

View file

@ -6,7 +6,7 @@
*/
import React from 'react';
import {useDoc} from '@docusaurus/theme-common';
import {useDoc} from '@docusaurus/theme-common/internal';
import DocPaginator from '@theme/DocPaginator';
/**

View file

@ -6,7 +6,8 @@
*/
import React from 'react';
import {ThemeClassNames, useDoc} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {useDoc} from '@docusaurus/theme-common/internal';
import TOC from '@theme/TOC';

View file

@ -7,7 +7,9 @@
import React from 'react';
import clsx from 'clsx';
import {ThemeClassNames, useDoc} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {useDoc} from '@docusaurus/theme-common/internal';
import TOCCollapsible from '@theme/TOCCollapsible';
import styles from './styles.module.css';

View file

@ -6,7 +6,8 @@
*/
import React from 'react';
import {HtmlClassNameProvider, DocProvider} from '@docusaurus/theme-common';
import {HtmlClassNameProvider} from '@docusaurus/theme-common';
import {DocProvider} from '@docusaurus/theme-common/internal';
import DocItemMetadata from '@theme/DocItem/Metadata';
import DocItemLayout from '@theme/DocItem/Layout';
import type {Props} from '@theme/DocItem';

View file

@ -7,7 +7,7 @@
import React from 'react';
import clsx from 'clsx';
import {useDocsSidebar} from '@docusaurus/theme-common';
import {useDocsSidebar} from '@docusaurus/theme-common/internal';
import type {Props} from '@theme/DocPage/Layout/Main';
import styles from './styles.module.css';

View file

@ -7,7 +7,8 @@
import React, {type ReactNode, useState, useCallback} from 'react';
import clsx from 'clsx';
import {ThemeClassNames, useDocsSidebar} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {useDocsSidebar} from '@docusaurus/theme-common/internal';
import {useLocation} from '@docusaurus/router';
import DocSidebar from '@theme/DocSidebar';
import ExpandButton from '@theme/DocPage/Layout/Sidebar/ExpandButton';

View file

@ -6,7 +6,7 @@
*/
import React, {useState} from 'react';
import {useDocsSidebar} from '@docusaurus/theme-common';
import {useDocsSidebar} from '@docusaurus/theme-common/internal';
import Layout from '@theme/Layout';
import BackToTopButton from '@theme/BackToTopButton';
import DocPageLayoutSidebar from '@theme/DocPage/Layout/Sidebar';

View file

@ -7,14 +7,13 @@
import React from 'react';
import clsx from 'clsx';
import {HtmlClassNameProvider, ThemeClassNames} from '@docusaurus/theme-common';
import {
HtmlClassNameProvider,
ThemeClassNames,
docVersionSearchTag,
DocsSidebarProvider,
DocsVersionProvider,
useDocRouteMetadata,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import DocPageLayout from '@theme/DocPage/Layout';
import NotFound from '@theme/NotFound';
import SearchMetadata from '@theme/SearchMetadata';

View file

@ -7,11 +7,11 @@
import React, {useState} from 'react';
import clsx from 'clsx';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {
ThemeClassNames,
useAnnouncementBar,
useScrollPosition,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import DocSidebarItems from '@theme/DocSidebarItems';
import type {Props} from '@theme/DocSidebar/Desktop/Content';

View file

@ -11,8 +11,8 @@ import {
NavbarSecondaryMenuFiller,
type NavbarSecondaryMenuComponent,
ThemeClassNames,
useNavbarMobileSidebar,
} from '@docusaurus/theme-common';
import {useNavbarMobileSidebar} from '@docusaurus/theme-common/internal';
import DocSidebarItems from '@theme/DocSidebarItems';
import type {Props} from '@theme/DocSidebar/Mobile';

View file

@ -8,16 +8,18 @@
import React, {type ComponentProps, useEffect, useMemo} from 'react';
import clsx from 'clsx';
import {
isActiveSidebarItem,
ThemeClassNames,
useThemeConfig,
usePrevious,
Collapsible,
useCollapsible,
} from '@docusaurus/theme-common';
import {
isActiveSidebarItem,
findFirstCategoryLink,
ThemeClassNames,
useThemeConfig,
useDocSidebarItemsExpandedState,
isSamePath,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import Link from '@docusaurus/Link';
import {translate} from '@docusaurus/Translate';
import useIsBrowser from '@docusaurus/useIsBrowser';

View file

@ -7,7 +7,8 @@
import React from 'react';
import clsx from 'clsx';
import {isActiveSidebarItem, ThemeClassNames} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {isActiveSidebarItem} from '@docusaurus/theme-common/internal';
import Link from '@docusaurus/Link';
import isInternalUrl from '@docusaurus/isInternalUrl';
import IconExternalLink from '@theme/IconExternalLink';

View file

@ -6,7 +6,7 @@
*/
import React, {memo} from 'react';
import {DocSidebarItemsExpandedStateProvider} from '@docusaurus/theme-common';
import {DocSidebarItemsExpandedStateProvider} from '@docusaurus/theme-common/internal';
import DocSidebarItem from '@theme/DocSidebarItem';
import type {Props} from '@theme/DocSidebarItems';

View file

@ -8,7 +8,8 @@
import React from 'react';
import clsx from 'clsx';
import Translate from '@docusaurus/Translate';
import {ThemeClassNames, useDocsVersion} from '@docusaurus/theme-common';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {useDocsVersion} from '@docusaurus/theme-common/internal';
import type {Props} from '@theme/DocVersionBadge';
export default function DocVersionBadge({

View file

@ -15,12 +15,11 @@ import {
useDocVersionSuggestions,
type GlobalVersion,
} from '@docusaurus/plugin-content-docs/client';
import {ThemeClassNames} from '@docusaurus/theme-common';
import {
ThemeClassNames,
useDocsPreferredVersion,
useDocsVersion,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import type {Props} from '@theme/DocVersionBanner';
import type {
VersionBanner,

View file

@ -8,11 +8,8 @@
import React from 'react';
import clsx from 'clsx';
import ErrorBoundary from '@docusaurus/ErrorBoundary';
import {
PageMetadata,
ThemeClassNames,
useKeyboardNavigation,
} from '@docusaurus/theme-common';
import {PageMetadata, ThemeClassNames} from '@docusaurus/theme-common';
import {useKeyboardNavigation} from '@docusaurus/theme-common/internal';
import SkipToContent from '@theme/SkipToContent';
import AnnouncementBar from '@theme/AnnouncementBar';
import Navbar from '@theme/Navbar';

View file

@ -14,7 +14,7 @@ import {
ScrollControllerProvider,
NavbarProvider,
PluginHtmlClassNameProvider,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import type {Props} from '@theme/LayoutProviders';
export default function LayoutProviders({children}: Props): JSX.Element {

View file

@ -6,11 +6,11 @@
*/
import React, {type ReactNode} from 'react';
import {useThemeConfig} from '@docusaurus/theme-common';
import {
splitNavbarItems,
useNavbarMobileSidebar,
useThemeConfig,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import NavbarItem, {type Props as NavbarItemConfig} from '@theme/NavbarItem';
import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle';
import SearchBar from '@theme/SearchBar';

View file

@ -7,11 +7,11 @@
import React, {type ComponentProps} from 'react';
import clsx from 'clsx';
import {useThemeConfig} from '@docusaurus/theme-common';
import {
useThemeConfig,
useHideableNavbar,
useNavbarMobileSidebar,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import NavbarMobileSidebar from '@theme/Navbar/MobileSidebar';
import type {Props} from '@theme/Navbar/Layout';

View file

@ -6,7 +6,7 @@
*/
import React from 'react';
import {useNavbarMobileSidebar} from '@docusaurus/theme-common';
import {useNavbarMobileSidebar} from '@docusaurus/theme-common/internal';
import NavbarColorModeToggle from '@theme/Navbar/ColorModeToggle';
import IconClose from '@theme/IconClose';
import NavbarLogo from '@theme/Navbar/Logo';

View file

@ -7,7 +7,7 @@
import React from 'react';
import clsx from 'clsx';
import {useNavbarSecondaryMenu} from '@docusaurus/theme-common';
import {useNavbarSecondaryMenu} from '@docusaurus/theme-common/internal';
import type {Props} from '@theme/Navbar/MobileSidebar/Layout';
export default function NavbarMobileSidebarLayout({

View file

@ -6,7 +6,8 @@
*/
import React from 'react';
import {useNavbarMobileSidebar, useThemeConfig} from '@docusaurus/theme-common';
import {useThemeConfig} from '@docusaurus/theme-common';
import {useNavbarMobileSidebar} from '@docusaurus/theme-common/internal';
import NavbarItem, {type Props as NavbarItemConfig} from '@theme/NavbarItem';
function useNavbarItems() {

View file

@ -6,7 +6,8 @@
*/
import React, {type ComponentProps} from 'react';
import {useNavbarSecondaryMenu, useThemeConfig} from '@docusaurus/theme-common';
import {useThemeConfig} from '@docusaurus/theme-common';
import {useNavbarSecondaryMenu} from '@docusaurus/theme-common/internal';
import Translate from '@docusaurus/Translate';
function SecondaryMenuBackButton(props: ComponentProps<'button'>) {

View file

@ -6,7 +6,7 @@
*/
import React from 'react';
import {useNavbarMobileSidebar} from '@docusaurus/theme-common';
import {useNavbarMobileSidebar} from '@docusaurus/theme-common/internal';
import IconMenu from '@theme/IconMenu';
export default function MobileSidebarToggle(): JSX.Element {

View file

@ -9,7 +9,7 @@ import React from 'react';
import {
useLockBodyScroll,
useNavbarMobileSidebar,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import NavbarMobileSidebarLayout from '@theme/Navbar/MobileSidebar/Layout';
import NavbarMobileSidebarHeader from '@theme/Navbar/MobileSidebar/Header';
import NavbarMobileSidebarPrimaryMenu from '@theme/Navbar/MobileSidebar/PrimaryMenu';

View file

@ -7,7 +7,7 @@
import React from 'react';
import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client';
import {useLayoutDoc} from '@docusaurus/theme-common';
import {useLayoutDoc} from '@docusaurus/theme-common/internal';
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
import type {Props} from '@theme/NavbarItem/DocNavbarItem';

View file

@ -7,7 +7,7 @@
import React from 'react';
import {useActiveDocContext} from '@docusaurus/plugin-content-docs/client';
import {useLayoutDocsSidebar} from '@docusaurus/theme-common';
import {useLayoutDocsSidebar} from '@docusaurus/theme-common/internal';
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
import type {Props} from '@theme/NavbarItem/DocSidebarNavbarItem';

View file

@ -13,7 +13,7 @@ import {
import {
useDocsPreferredVersion,
useDocsVersionCandidates,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import {translate} from '@docusaurus/Translate';
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';

View file

@ -6,7 +6,7 @@
*/
import React from 'react';
import {useDocsVersionCandidates} from '@docusaurus/theme-common';
import {useDocsVersionCandidates} from '@docusaurus/theme-common/internal';
import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
import type {Props} from '@theme/NavbarItem/DocsVersionNavbarItem';
import type {GlobalVersion} from '@docusaurus/plugin-content-docs/client';

View file

@ -8,12 +8,11 @@
import React, {useState, useRef, useEffect} from 'react';
import clsx from 'clsx';
import {
isSamePath,
isRegexpStringMatch,
useCollapsible,
Collapsible,
isRegexpStringMatch,
useLocalPathname,
} from '@docusaurus/theme-common';
import {isSamePath, useLocalPathname} from '@docusaurus/theme-common/internal';
import NavbarNavLink from '@theme/NavbarItem/NavbarNavLink';
import NavbarItem, {type LinkLikeNavbarItemProps} from '@theme/NavbarItem';
import type {

View file

@ -7,7 +7,7 @@
import React from 'react';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import {useAlternatePageUtils} from '@docusaurus/theme-common';
import {useAlternatePageUtils} from '@docusaurus/theme-common/internal';
import {translate} from '@docusaurus/Translate';
import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
import IconLanguage from '@theme/IconLanguage';

View file

@ -9,13 +9,12 @@ import React from 'react';
import Head from '@docusaurus/Head';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import useBaseUrl from '@docusaurus/useBaseUrl';
import {PageMetadata, useThemeConfig} from '@docusaurus/theme-common';
import {
PageMetadata,
DEFAULT_SEARCH_TAG,
useAlternatePageUtils,
useThemeConfig,
keyboardFocusedClassName,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import {useLocation} from '@docusaurus/router';
import SearchMetadata from '@theme/SearchMetadata';

View file

@ -7,7 +7,7 @@
import React from 'react';
import Translate from '@docusaurus/Translate';
import {useSkipToContent} from '@docusaurus/theme-common';
import {useSkipToContent} from '@docusaurus/theme-common/internal';
import styles from './styles.module.css';

View file

@ -6,12 +6,12 @@
*/
import React, {useMemo} from 'react';
import {useThemeConfig} from '@docusaurus/theme-common';
import {
type TOCHighlightConfig,
useThemeConfig,
useTOCHighlight,
useFilteredAndTreeifiedTOC,
} from '@docusaurus/theme-common';
type TOCHighlightConfig,
} from '@docusaurus/theme-common/internal';
import TOCItemTree from '@theme/TOCItems/Tree';
import type {Props} from '@theme/TOCItems';

View file

@ -10,7 +10,7 @@ import renderer from 'react-test-renderer';
import {
TabGroupChoiceProvider,
ScrollControllerProvider,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import Tabs from '../index';
import TabItem from '../../TabItem';

View file

@ -13,11 +13,11 @@ import React, {
} from 'react';
import clsx from 'clsx';
import useIsBrowser from '@docusaurus/useIsBrowser';
import {duplicates} from '@docusaurus/theme-common';
import {
useScrollPositionBlocker,
duplicates,
useTabGroupChoice,
} from '@docusaurus/theme-common';
} from '@docusaurus/theme-common/internal';
import type {Props} from '@theme/Tabs';
import type {Props as TabItemProps} from '@theme/TabItem';

View file

@ -1,3 +1,4 @@
.tsbuildinfo*
tsconfig*
__tests__
removeThemeInternalReexport.mjs

View file

@ -10,13 +10,15 @@
],
"exports": {
".": "./lib/index.js",
"./internal": "./lib/internal.js",
"./Details": "./lib/components/Details/index.js"
},
"scripts": {
"build": "tsc && node ../../admin/scripts/copyUntypedFiles.js",
"watch": "run-p -c copy:watch build:watch",
"build:watch": "tsc --watch",
"copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch"
"copy:watch": "node ../../admin/scripts/copyUntypedFiles.js --watch",
"removeThemeInternalReexport": "node removeThemeInternalReexport.mjs"
},
"publishConfig": {
"access": "public"

View file

@ -0,0 +1,32 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import fs from 'fs-extra';
// See comment in src/internal.ts
// This script should be run by CI tests to remove:
// export * from './index'
const filePath = 'lib/internal.js';
const lineToRemove = "export * from './index';\n";
if (!(await fs.pathExists(filePath))) {
throw new Error(`internal entrypoint file not found at ${filePath}`);
}
const fileContent = await fs.readFile(filePath, 'utf8');
const fileContentUpdated = fileContent.replaceAll(lineToRemove, '');
// Ensure the script correctly removes the re-export
if (fileContent === fileContentUpdated) {
throw new Error(
'Unexpected: internal re-export has not been replaced.\nMake sure this script works, and is only run once.',
);
}
await fs.writeFile(filePath, fileContentUpdated);

View file

@ -5,6 +5,10 @@
* LICENSE file in the root directory of this source tree.
*/
/*
* APIs to document
*/
export {
useThemeConfig,
type ThemeConfig,
@ -19,71 +23,41 @@ export {
type FooterLinkItem,
type ColorModeConfig,
} from './utils/useThemeConfig';
export {
DocSidebarItemsExpandedStateProvider,
useDocSidebarItemsExpandedState,
} from './contexts/docSidebarItemsExpandedState';
export {DocsVersionProvider, useDocsVersion} from './contexts/docsVersion';
export {DocsSidebarProvider, useDocsSidebar} from './contexts/docsSidebar';
export {DocProvider, useDoc} from './contexts/doc';
export type {DocContextValue} from './contexts/doc';
export {createStorageSlot, listStorageKeys} from './utils/storageUtils';
export {useAlternatePageUtils} from './utils/useAlternatePageUtils';
export {useContextualSearchFilters} from './utils/searchUtils';
export {
parseCodeBlockTitle,
parseLanguage,
parseLines,
containsLineNumbers,
getPrismCssVariables,
} from './utils/codeBlockUtils';
export {
docVersionSearchTag,
DEFAULT_SEARCH_TAG,
useContextualSearchFilters,
} from './utils/searchUtils';
export {
isDocsPluginEnabled,
useDocById,
findSidebarCategory,
findFirstCategoryLink,
useCurrentSidebarCategory,
isActiveSidebarItem,
useSidebarBreadcrumbs,
useDocsVersionCandidates,
useLayoutDoc,
useLayoutDocsSidebar,
useDocRouteMetadata,
} from './utils/docsUtils';
export {useTitleFormatter} from './utils/generalUtils';
export {useCurrentSidebarCategory} from './utils/docsUtils';
export {usePluralForm} from './utils/usePluralForm';
export {useLocationChange} from './utils/useLocationChange';
export {useCollapsible, Collapsible} from './components/Collapsible';
export {
useDocsPreferredVersion,
useDocsPreferredVersionByPluginId,
DocsPreferredVersionContextProvider,
} from './contexts/docsPreferredVersion';
export {duplicates, uniq} from './utils/jsUtils';
export {ThemeClassNames} from './utils/ThemeClassNames';
export {
AnnouncementBarProvider,
useAnnouncementBar,
} from './contexts/announcementBar';
useIsomorphicLayoutEffect,
useDynamicCallback, // TODO rename to useEvent()
usePrevious,
ReactContextError,
} from './utils/reactUtils';
export {useLocalPathname} from './utils/useLocalPathname';
export {PageMetadata, HtmlClassNameProvider} from './utils/metadataUtils';
export {useColorMode, type ColorMode} from './contexts/colorMode';
export {
NavbarSecondaryMenuFiller,
type NavbarSecondaryMenuComponent,
} from './contexts/navbarSecondaryMenu/content';
export {useWindowSize} from './hooks/useWindowSize';
/*
* APIs kept undocumented, on purpose
* Note: we still guarantee retro-compatibility on those
*/
export {
translateTagsPageTitle,
@ -91,75 +65,10 @@ export {
type TagLetterEntry,
} from './utils/tagsUtils';
export {useHistoryPopHandler} from './utils/historyUtils';
export {
useTOCHighlight,
type TOCHighlightConfig,
} from './hooks/useTOCHighlight';
export {
useFilteredAndTreeifiedTOC,
useTreeifiedTOC,
type TOCTreeNode,
} from './utils/tocUtils';
export {isMultiColumnFooterLinks} from './utils/footerUtils';
export {
ScrollControllerProvider,
useScrollController,
useScrollPosition,
useScrollPositionBlocker,
useSmoothScrollTo,
} from './utils/scrollUtils';
export {
useIsomorphicLayoutEffect,
useDynamicCallback,
usePrevious,
ReactContextError,
} from './utils/reactUtils';
export {isRegexpStringMatch} from './utils/regexpUtils';
export {useHomePageRoute, isSamePath} from './utils/routesUtils';
export {duplicates, uniq} from './utils/jsUtils';
export {
PageMetadata,
HtmlClassNameProvider,
PluginHtmlClassNameProvider,
} from './utils/metadataUtils';
export {
useColorMode,
ColorModeProvider,
type ColorMode,
} from './contexts/colorMode';
export {splitNavbarItems, NavbarProvider} from './utils/navbarUtils';
export {
useTabGroupChoice,
TabGroupChoiceProvider,
} from './contexts/tabGroupChoice';
export {useNavbarMobileSidebar} from './contexts/navbarMobileSidebar';
export {
NavbarSecondaryMenuFiller,
type NavbarSecondaryMenuComponent,
} from './contexts/navbarSecondaryMenu/content';
export {useNavbarSecondaryMenu} from './contexts/navbarSecondaryMenu/display';
export {useBackToTopButton} from './hooks/useBackToTopButton';
export {useHideableNavbar} from './hooks/useHideableNavbar';
export {
useKeyboardNavigation,
keyboardFocusedClassName,
} from './hooks/useKeyboardNavigation';
export {usePrismTheme} from './hooks/usePrismTheme';
export {useLockBodyScroll} from './hooks/useLockBodyScroll';
export {useWindowSize} from './hooks/useWindowSize';
export {useSearchPage} from './hooks/useSearchPage';
export {useCodeWordWrap} from './hooks/useCodeWordWrap';
export {useSkipToContent} from './hooks/useSkipToContent';

View file

@ -0,0 +1,117 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
// This re-export permits to handle some level of retro-compatibility. Users
// might swizzle unsafe components and expose these internal imports. When we
// move an API from internal to public, former internal imports should keep
// working, so that the change doesn't become breaking.
//
// Important: this line is removed from build output with the
// "removeThemeInternalReexport" script for CI checks. This ensures that none of
// our internal code relies on this re-export and that we don't forget to
// migrate theme internal imports to public imports.
//
// eslint-disable-next-line no-restricted-syntax
export * from './index';
export {
DocSidebarItemsExpandedStateProvider,
useDocSidebarItemsExpandedState,
} from './contexts/docSidebarItemsExpandedState';
export {DocsVersionProvider, useDocsVersion} from './contexts/docsVersion';
export {DocsSidebarProvider, useDocsSidebar} from './contexts/docsSidebar';
export {DocProvider, useDoc, type DocContextValue} from './contexts/doc';
export {
useDocsPreferredVersion,
useDocsPreferredVersionByPluginId,
DocsPreferredVersionContextProvider,
} from './contexts/docsPreferredVersion';
export {
AnnouncementBarProvider,
useAnnouncementBar,
} from './contexts/announcementBar';
export {
useTabGroupChoice,
TabGroupChoiceProvider,
} from './contexts/tabGroupChoice';
export {useNavbarMobileSidebar} from './contexts/navbarMobileSidebar';
export {useNavbarSecondaryMenu} from './contexts/navbarSecondaryMenu/display';
export {ColorModeProvider} from './contexts/colorMode';
export {useAlternatePageUtils} from './utils/useAlternatePageUtils';
export {
parseCodeBlockTitle,
parseLanguage,
parseLines,
containsLineNumbers,
} from './utils/codeBlockUtils';
export {docVersionSearchTag, DEFAULT_SEARCH_TAG} from './utils/searchUtils';
export {
isDocsPluginEnabled,
useDocById,
findSidebarCategory,
findFirstCategoryLink,
isActiveSidebarItem,
useSidebarBreadcrumbs,
useDocsVersionCandidates,
useLayoutDoc,
useLayoutDocsSidebar,
useDocRouteMetadata,
} from './utils/docsUtils';
export {useTitleFormatter} from './utils/generalUtils';
export {useLocationChange} from './utils/useLocationChange';
export {useLocalPathname} from './utils/useLocalPathname';
export {useHistoryPopHandler} from './utils/historyUtils';
export {
useFilteredAndTreeifiedTOC,
useTreeifiedTOC,
type TOCTreeNode,
} from './utils/tocUtils';
export {
ScrollControllerProvider,
useScrollController,
useScrollPosition,
useScrollPositionBlocker,
useSmoothScrollTo,
} from './utils/scrollUtils';
export {useHomePageRoute, isSamePath} from './utils/routesUtils';
export {PluginHtmlClassNameProvider} from './utils/metadataUtils';
export {splitNavbarItems, NavbarProvider} from './utils/navbarUtils';
export {
useTOCHighlight,
type TOCHighlightConfig,
} from './hooks/useTOCHighlight';
export {useHideableNavbar} from './hooks/useHideableNavbar';
export {
useKeyboardNavigation,
keyboardFocusedClassName,
} from './hooks/useKeyboardNavigation';
export {useLockBodyScroll} from './hooks/useLockBodyScroll';
export {useSearchPage} from './hooks/useSearchPage';
export {useCodeWordWrap} from './hooks/useCodeWordWrap';
export {useSkipToContent} from './hooks/useSkipToContent';
export {getPrismCssVariables} from './utils/codeBlockUtils';
export {useBackToTopButton} from './hooks/useBackToTopButton';

View file

@ -12,7 +12,8 @@ import {useHistory} from '@docusaurus/router';
import {useBaseUrlUtils} from '@docusaurus/useBaseUrl';
import Link from '@docusaurus/Link';
import Head from '@docusaurus/Head';
import {isRegexpStringMatch, useSearchPage} from '@docusaurus/theme-common';
import {isRegexpStringMatch} from '@docusaurus/theme-common';
import {useSearchPage} from '@docusaurus/theme-common/internal';
import {DocSearchButton, useDocSearchKeyboardEvents} from '@docsearch/react';
import {useAlgoliaContextualFacetFilters} from '@docusaurus/theme-search-algolia/client';
import Translate, {translate} from '@docusaurus/Translate';

View file

@ -18,12 +18,14 @@ import Link from '@docusaurus/Link';
import ExecutionEnvironment from '@docusaurus/ExecutionEnvironment';
import {
HtmlClassNameProvider,
useTitleFormatter,
usePluralForm,
isRegexpStringMatch,
useDynamicCallback,
useSearchPage,
} from '@docusaurus/theme-common';
import {
useTitleFormatter,
useSearchPage,
} from '@docusaurus/theme-common/internal';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import {useAllDocsData} from '@docusaurus/plugin-content-docs/client';
import Translate, {translate} from '@docusaurus/Translate';

View file

@ -12,7 +12,7 @@ import React, {
useRef,
type ReactNode,
} from 'react';
import {useDocsPreferredVersion} from '@docusaurus/theme-common';
import {useDocsPreferredVersion} from '@docusaurus/theme-common/internal';
import {useVersions} from '@docusaurus/plugin-content-docs/client';
import Translate from '@docusaurus/Translate';
import CodeBlock from '@theme/CodeBlock';

View file

@ -6,7 +6,7 @@
*/
import React from 'react';
import {useLayoutDoc} from '@docusaurus/theme-common';
import {useLayoutDoc} from '@docusaurus/theme-common/internal';
import Link from '@docusaurus/Link';
import Translate from '@docusaurus/Translate';
import DocCategoryGeneratedIndexPage from '@theme-original/DocCategoryGeneratedIndexPage';