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

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';