mirror of
https://github.com/facebook/docusaurus.git
synced 2025-08-02 08:19:07 +02:00
* wip: versioning * wip again * nits lint * refactor metadata code so that we can have inobject properties optimization, fix typing * remove buggy permalink code * modify versioned docs fixture such that foo/baz only exists in v1.0.0 * refactor metadata.ts so that there is less transformon object * more refactoring * reduce test fixtures, refactoring * refactoring readability * finish metadata part * refactor with readdir * first pass of implementation * fix mdx laoder * split generated routes by version for performance & smaller bundle * test data for demo * refactor with set * more tests * typo * fix typo * better temporary ui * stronger typing & docsVersion command * add 100% test coverage for docsVersion command * more test and delete manual docs cut * cut 2.0.0-alpha.35 docs * cut alpha.36 instead * copyright * delete versioned docs * stronger test on metadata * update typo
59 lines
1.8 KiB
JavaScript
59 lines
1.8 KiB
JavaScript
/**
|
|
* Copyright (c) 2017-present, Facebook, Inc.
|
|
*
|
|
* 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 {MDXProvider} from '@mdx-js/react';
|
|
|
|
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
|
import renderRoutes from '@docusaurus/renderRoutes';
|
|
import Layout from '@theme/Layout';
|
|
import DocSidebar from '@theme/DocSidebar';
|
|
import MDXComponents from '@theme/MDXComponents';
|
|
import NotFound from '@theme/NotFound';
|
|
import {matchPath} from '@docusaurus/router';
|
|
|
|
import styles from './styles.module.css';
|
|
|
|
function matchingRouteExist(routes, pathname) {
|
|
return routes.some(route => matchPath(pathname, route));
|
|
}
|
|
|
|
function DocPage(props) {
|
|
const {route, docsMetadata, location} = props;
|
|
const {permalinkToSidebar, docsSidebars, version} = docsMetadata;
|
|
const sidebar = permalinkToSidebar[location.pathname.replace(/\/$/, '')];
|
|
const {siteConfig: {themeConfig = {}} = {}} = useDocusaurusContext();
|
|
const {sidebarCollapsible = true} = themeConfig;
|
|
|
|
if (!matchingRouteExist(route.routes, location.pathname)) {
|
|
return <NotFound {...props} />;
|
|
}
|
|
|
|
return (
|
|
<Layout version={version}>
|
|
<div className={styles.docPage}>
|
|
{sidebar && (
|
|
<div className={styles.docSidebarContainer}>
|
|
<DocSidebar
|
|
docsSidebars={docsSidebars}
|
|
location={location}
|
|
sidebar={sidebar}
|
|
sidebarCollapsible={sidebarCollapsible}
|
|
/>
|
|
</div>
|
|
)}
|
|
<main className={styles.docMainContainer}>
|
|
<MDXProvider components={MDXComponents}>
|
|
{renderRoutes(route.routes)}
|
|
</MDXProvider>
|
|
</main>
|
|
</div>
|
|
</Layout>
|
|
);
|
|
}
|
|
|
|
export default DocPage;
|