/* ============================================================================ * Copyright (c) Palo Alto Networks * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * ========================================================================== */ import React, { type JSX } from "react"; import { useDoc } from "@docusaurus/plugin-content-docs/client"; import { useWindowSize } from "@docusaurus/theme-common"; import ContentVisibility from "@theme/ContentVisibility"; import DocBreadcrumbs from "@theme/DocBreadcrumbs"; import DocItemContent from "@theme/DocItem/Content"; import DocItemFooter from "@theme/DocItem/Footer"; import type { Props } from "@theme/DocItem/Layout"; 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 clsx from "clsx"; 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 ? : undefined; const desktop = canRender && (windowSize === "desktop" || windowSize === "ssr") ? ( ) : undefined; return { hidden, mobile, desktop, }; } export default function DocItemLayout({ children }: Props): JSX.Element { const docTOC = useDocTOC(); const { metadata } = useDoc(); const { frontMatter } = useDoc(); const api = frontMatter.api; const schema = frontMatter.schema; return (
{docTOC.mobile} {children}
{docTOC.desktop &&
{docTOC.desktop}
}
); }