/** * 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 React from 'react'; import clsx from 'clsx'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import Link from '@docusaurus/Link'; import Translate from '@docusaurus/Translate'; import { useActivePlugin, useDocVersionSuggestions, } from '@docusaurus/plugin-content-docs/client'; import {ThemeClassNames} from '@docusaurus/theme-common'; import { useDocsPreferredVersion, useDocsVersion, } from '@docusaurus/theme-common/internal'; function UnreleasedVersionLabel({siteTitle, versionMetadata}) { return ( {versionMetadata.label}, }}> { 'This is unreleased documentation for {siteTitle} {versionLabel} version.' } ); } function UnmaintainedVersionLabel({siteTitle, versionMetadata}) { return ( {versionMetadata.label}, }}> { 'This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.' } ); } const BannerLabelComponents = { unreleased: UnreleasedVersionLabel, unmaintained: UnmaintainedVersionLabel, }; function BannerLabel(props) { const BannerLabelComponent = BannerLabelComponents[props.versionMetadata.banner]; return ; } function LatestVersionSuggestionLabel({versionLabel, to, onClick}) { return ( latest version ), }}> { 'For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).' } ); } function DocVersionBannerEnabled({className, versionMetadata}) { const { siteConfig: {title: siteTitle}, } = useDocusaurusContext(); const {pluginId} = useActivePlugin({failfast: true}); const getVersionMainDoc = (version) => version.docs.find((doc) => doc.id === version.mainDocId); const {savePreferredVersionName} = useDocsPreferredVersion(pluginId); const {latestDocSuggestion, latestVersionSuggestion} = useDocVersionSuggestions(pluginId); // Try to link to same doc in latest version (not always possible), falling // back to main doc of latest version const latestVersionSuggestedDoc = latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion); return (
savePreferredVersionName(latestVersionSuggestion.name)} />
); } export default function DocVersionBanner({className}) { const versionMetadata = useDocsVersion(); if (versionMetadata.banner) { return ( ); } return null; }