| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import DocBreadcrumbs from '@theme/DocBreadcrumbs';
- import DocItemContent from '@theme/DocItem/Content';
- import DocItemFooter from '@theme/DocItem/Footer';
- import DocItemPaginator from '@theme/DocItem/Paginator';
- import DocItemTOCDesktop from '@theme/DocItem/TOC/Desktop';
- import DocItemTOCMobile from '@theme/DocItem/TOC/Mobile';
- import DocVersionBadge from '@theme/DocVersionBadge';
- import DocVersionBanner from '@theme/DocVersionBanner';
- import React from 'react';
- import clsx from 'clsx';
- import {useDoc} from '@docusaurus/theme-common/internal';
- import {useWindowSize} from '@docusaurus/theme-common';
- import styles from './styles.module.css';
- /**
- * Decide if the toc should be rendered, on mobile or desktop viewports
- */
- function useDocTOC() {
- const {frontMatter, toc} = useDoc();
- const windowSize = useWindowSize();
- const hidden = frontMatter.hide_table_of_contents;
- const canRender = !hidden && toc.length > 0;
- const mobile = canRender ? <DocItemTOCMobile /> : undefined;
- const desktop =
- canRender && (windowSize === 'desktop' || windowSize === 'ssr') ? (
- <DocItemTOCDesktop />
- ) : undefined;
- return {
- hidden,
- mobile,
- desktop,
- };
- }
- export default function DocItemLayout({children}) {
- const docTOC = useDocTOC();
- return (
- <div className="row docitem-content">
- <div className={clsx('col', !docTOC.hidden && styles.docItemCol)}>
- <DocVersionBanner />
- <div className={styles.docItemContainer}>
- <article>
- <div className='breadcrumb-row'>
- <div>
- <DocBreadcrumbs />
- </div>
- <div>
- <DocVersionBadge />
- </div>
- </div>
- {docTOC.mobile}
- <DocItemContent>{children}</DocItemContent>
- <DocItemFooter />
- </article>
- <DocItemPaginator />
- </div>
- </div>
- {docTOC.desktop && <div className="col col--3">{docTOC.desktop}</div>}
- </div>
- );
- }
|