139 lines
4.3 KiB
JavaScript
139 lines
4.3 KiB
JavaScript
/**
|
|
* 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 useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
import Link from '@docusaurus/Link';
|
|
import Translate from '@docusaurus/Translate';
|
|
import { useActivePlugin, useDocVersionSuggestions } from '@theme/hooks/useDocs';
|
|
import { useDocsPreferredVersion } from '@docusaurus/theme-common';
|
|
|
|
function UnreleasedVersionLabel({ siteTitle, versionMetadata }) {
|
|
return (
|
|
<Translate
|
|
id="theme.docs.versions.unreleasedVersionLabel"
|
|
description="The label used to tell the user that he's browsing an unreleased doc version"
|
|
values={{
|
|
siteTitle,
|
|
versionLabel: <b>{versionMetadata.label}</b>,
|
|
latestVersionLink: (
|
|
<strong>
|
|
<Link to={"/"}>
|
|
<Translate
|
|
id="theme.docs.versions.latestVersionLinkLabel"
|
|
description="The label used for the latest version suggestion link label">
|
|
docs
|
|
</Translate>
|
|
</Link>
|
|
</strong>
|
|
),
|
|
}}>
|
|
{
|
|
'This is unreleased documentation for {siteTitle} {versionLabel} version. For up-to-date documentation, see OHIF v2.0 {latestVersionLink}.'
|
|
}
|
|
</Translate>
|
|
);
|
|
}
|
|
|
|
function UnmaintainedVersionLabel({ siteTitle, versionMetadata }) {
|
|
return (
|
|
<Translate
|
|
id="theme.docs.versions.unmaintainedVersionLabel"
|
|
description="The label used to tell the user that he's browsing an unmaintained doc version"
|
|
values={{
|
|
siteTitle,
|
|
versionLabel: <b>{versionMetadata.label}</b>,
|
|
}}>
|
|
{
|
|
'This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.'
|
|
}
|
|
</Translate>
|
|
);
|
|
}
|
|
|
|
const BannerLabelComponents = {
|
|
unreleased: UnreleasedVersionLabel,
|
|
unmaintained: UnmaintainedVersionLabel,
|
|
};
|
|
|
|
function BannerLabel(props) {
|
|
const BannerLabelComponent =
|
|
BannerLabelComponents[props.versionMetadata.banner];
|
|
return <BannerLabelComponent {...props} />;
|
|
}
|
|
|
|
function LatestVersionSuggestionLabel({ versionLabel, to, onClick }) {
|
|
return (
|
|
<Translate
|
|
id="theme.docs.versions.latestVersionSuggestionLabel"
|
|
description="The label used to tell the user to check the latest version"
|
|
values={{
|
|
versionLabel,
|
|
latestVersionLink: (
|
|
<b>
|
|
<Link to={to} onClick={onClick}>
|
|
<Translate
|
|
id="theme.docs.versions.latestVersionLinkLabel"
|
|
description="The label used for the latest version suggestion link label">
|
|
latest version
|
|
</Translate>
|
|
</Link>
|
|
</b>
|
|
),
|
|
}}>
|
|
{
|
|
'For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).'
|
|
}
|
|
</Translate>
|
|
);
|
|
}
|
|
|
|
function DocVersionBannerEnabled({ 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)
|
|
// fallback to main doc of latest version
|
|
|
|
const latestVersionSuggestedDoc =
|
|
latestDocSuggestion ?? getVersionMainDoc(latestVersionSuggestion);
|
|
return (
|
|
<div className="alert alert--warning margin-bottom--md" role="alert">
|
|
<div>
|
|
<BannerLabel siteTitle={siteTitle} versionMetadata={versionMetadata} />
|
|
</div>
|
|
{/* <div className="margin-top--md">
|
|
<LatestVersionSuggestionLabel
|
|
versionLabel={latestVersionSuggestion.label}
|
|
to={latestVersionSuggestedDoc.path}
|
|
onClick={() => savePreferredVersionName(latestVersionSuggestion.name)}
|
|
/>
|
|
</div> */}
|
|
</div>
|
|
);
|
|
}
|
|
|
|
function DocVersionBanner({ versionMetadata }) {
|
|
if (versionMetadata.banner === 'none') {
|
|
return <></>;
|
|
} else {
|
|
return <DocVersionBannerEnabled versionMetadata={versionMetadata} />;
|
|
}
|
|
}
|
|
|
|
export default DocVersionBanner;
|