UNPKG

@backstage/plugin-techdocs

Version:

The Backstage plugin that renders technical documentation for your components

62 lines (59 loc) 3.16 kB
import { jsxs, jsx } from 'react/jsx-runtime'; import { Children } from 'react'; import { useOutlet } from 'react-router-dom'; import { Page } from '@backstage/core-components'; import { TECHDOCS_ADDONS_WRAPPER_KEY, TECHDOCS_ADDONS_KEY, TechDocsReaderPageProvider } from '@backstage/plugin-techdocs-react'; import { TechDocsReaderPageContent } from '../TechDocsReaderPageContent/TechDocsReaderPageContent.esm.js'; import { TechDocsReaderPageHeader } from '../TechDocsReaderPageHeader/TechDocsReaderPageHeader.esm.js'; import { TechDocsReaderPageSubheader } from '../TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.esm.js'; import { rootDocsRouteRef } from '../../../routes.esm.js'; import { useRouteRefParams, getComponentData } from '@backstage/core-plugin-api'; import { CookieAuthRefreshProvider } from '@backstage/plugin-auth-react'; import { styled, useTheme, createTheme, ThemeProvider } from '@material-ui/core/styles'; const TechDocsReaderLayout = (props) => { const { withSearch, withHeader = true } = props; return /* @__PURE__ */ jsxs(Page, { themeId: "documentation", children: [ withHeader && /* @__PURE__ */ jsx(TechDocsReaderPageHeader, {}), /* @__PURE__ */ jsx(TechDocsReaderPageSubheader, {}), /* @__PURE__ */ jsx(TechDocsReaderPageContent, { withSearch }) ] }); }; const StyledPage = styled(Page)({ height: "inherit", overflowY: "visible" }); const TechDocsReaderPage = (props) => { const currentTheme = useTheme(); const readerPageTheme = createTheme({ ...currentTheme, ...props.overrideThemeOptions || {} }); const { kind, name, namespace } = useRouteRefParams(rootDocsRouteRef); const { children, entityRef = { kind, name, namespace } } = props; const outlet = useOutlet(); if (!children) { const childrenList = outlet ? Children.toArray(outlet.props.children) : []; const grandChildren = childrenList.flatMap( (child) => child?.props?.children ?? [] ); const page = grandChildren.find( (grandChild) => !getComponentData(grandChild, TECHDOCS_ADDONS_WRAPPER_KEY) && !getComponentData(grandChild, TECHDOCS_ADDONS_KEY) ); return /* @__PURE__ */ jsx(ThemeProvider, { theme: readerPageTheme, children: /* @__PURE__ */ jsx(CookieAuthRefreshProvider, { pluginId: "techdocs", children: /* @__PURE__ */ jsx(TechDocsReaderPageProvider, { entityRef, children: page || /* @__PURE__ */ jsx(TechDocsReaderLayout, {}) }) }) }); } return /* @__PURE__ */ jsx(ThemeProvider, { theme: readerPageTheme, children: /* @__PURE__ */ jsx(CookieAuthRefreshProvider, { pluginId: "techdocs", children: /* @__PURE__ */ jsx(TechDocsReaderPageProvider, { entityRef, children: ({ metadata, entityMetadata, onReady }) => /* @__PURE__ */ jsx( StyledPage, { themeId: "documentation", className: "techdocs-reader-page", children: children instanceof Function ? children({ entityRef, techdocsMetadataValue: metadata.value, entityMetadataValue: entityMetadata.value, onReady }) : children } ) }) }) }); }; export { TechDocsReaderLayout, TechDocsReaderPage }; //# sourceMappingURL=TechDocsReaderPage.esm.js.map