@backstage/plugin-techdocs
Version:
The Backstage plugin that renders technical documentation for your components
62 lines (59 loc) • 3.16 kB
JavaScript
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