@backstage/plugin-techdocs 0.0.0-nightly-20260919022921 → 0.0.0-nightly-20260921023416
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -16
- package/dist/EntityPageDocs.esm.js.map +1 -1
- package/dist/Router.esm.js +2 -2
- package/dist/Router.esm.js.map +1 -1
- package/dist/alpha/addonsApi.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsIndexPageContent.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsReaderContent.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsReaderEntityCard.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsReaderEntityCard.module.css.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsReaderHeader.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsReaderLayout.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsReaderPage.esm.js +4 -4
- package/dist/alpha/components/TechDocsReaderPage.esm.js.map +1 -1
- package/dist/alpha/components/TechDocsReaderSearch.esm.js.map +1 -1
- package/dist/alpha/hooks/useTechdocsReaderIconLinkProps.esm.js.map +1 -1
- package/dist/alpha.esm.js.map +1 -1
- package/dist/api.esm.js.map +1 -1
- package/dist/client.esm.js.map +1 -1
- package/dist/helpers.esm.js.map +1 -1
- package/dist/home/components/DefaultTechDocsHome.esm.js.map +1 -1
- package/dist/home/components/Grids/DocsCardGrid.esm.js.map +1 -1
- package/dist/home/components/Grids/EntityListDocsGrid.esm.js.map +1 -1
- package/dist/home/components/Grids/InfoCardGrid.esm.js.map +1 -1
- package/dist/home/components/Tables/CursorPaginatedDocsTable.esm.js.map +1 -1
- package/dist/home/components/Tables/DocsTable.esm.js.map +1 -1
- package/dist/home/components/Tables/EntityListDocsTable.esm.js.map +1 -1
- package/dist/home/components/Tables/OffsetPaginatedDocsTable.esm.js.map +1 -1
- package/dist/home/components/Tables/actions.esm.js.map +1 -1
- package/dist/home/components/Tables/columns.esm.js.map +1 -1
- package/dist/home/components/Tables/helpers.esm.js.map +1 -1
- package/dist/home/components/TechDocsCustomHome.esm.js.map +1 -1
- package/dist/home/components/TechDocsIndexPage.esm.js.map +1 -1
- package/dist/home/components/TechDocsPageWrapper.esm.js.map +1 -1
- package/dist/home/components/TechDocsPicker.esm.js.map +1 -1
- package/dist/hooks/useTechDocsReaderContentData.esm.js.map +1 -1
- package/dist/hooks/useTechDocsReaderHeaderData.esm.js.map +1 -1
- package/dist/hooks/useTechDocsSearch.esm.js.map +1 -1
- package/dist/node_modules_dist/style-inject/dist/style-inject.es.esm.js.map +1 -1
- package/dist/plugin.esm.js +2 -2
- package/dist/plugin.esm.js.map +1 -1
- package/dist/plugins/techdocs/package.json.esm.js +1 -1
- package/dist/plugins/techdocs/package.json.esm.js.map +1 -1
- package/dist/reader/components/TechDocsBuildLogs.esm.js.map +1 -1
- package/dist/reader/components/TechDocsNotFound.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPage/TechDocsReaderPage.esm.js +2 -2
- package/dist/reader/components/TechDocsReaderPage/TechDocsReaderPage.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPage/useExternalRedirect.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPageContent/TechDocsReaderPageContentAddons.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPageContent/dom.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPageContent/useNavigateUrl.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPageHeader/TechDocsReaderPageHeader.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderPageSubheader/TechDocsReaderPageSubheader.esm.js.map +1 -1
- package/dist/reader/components/TechDocsReaderProvider.esm.js.map +1 -1
- package/dist/reader/components/TechDocsRedirectNotification/TechDocsRedirectNotification.esm.js.map +1 -1
- package/dist/reader/components/TechDocsStateIndicator.esm.js.map +1 -1
- package/dist/reader/components/useReaderState.esm.js.map +1 -1
- package/dist/reader/transformers/addBaseUrl.esm.js.map +1 -1
- package/dist/reader/transformers/addGitFeedbackLink.esm.js.map +1 -1
- package/dist/reader/transformers/addLinkClickListener.esm.js.map +1 -1
- package/dist/reader/transformers/addNavLinkKeyboardToggle.esm.js.map +1 -1
- package/dist/reader/transformers/addSidebarToggle.esm.js.map +1 -1
- package/dist/reader/transformers/copyToClipboard.esm.js.map +1 -1
- package/dist/reader/transformers/handleMetaRedirects.esm.js.map +1 -1
- package/dist/reader/transformers/html/hooks/attributes.esm.js.map +1 -1
- package/dist/reader/transformers/html/hooks/iframes.esm.js.map +1 -1
- package/dist/reader/transformers/html/hooks/links.esm.js.map +1 -1
- package/dist/reader/transformers/html/hooks/metatags.esm.js.map +1 -1
- package/dist/reader/transformers/html/transformer.esm.js.map +1 -1
- package/dist/reader/transformers/html/utils.esm.js.map +1 -1
- package/dist/reader/transformers/onCssReady.esm.js.map +1 -1
- package/dist/reader/transformers/removeMkdocsHeader.esm.js.map +1 -1
- package/dist/reader/transformers/renderReactElement.esm.js.map +1 -1
- package/dist/reader/transformers/rewriteDocLinks.esm.js.map +1 -1
- package/dist/reader/transformers/scrollIntoNavigation.esm.js.map +1 -1
- package/dist/reader/transformers/simplifyMkdocsFooter.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/animations.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/extensions.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/layout.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/palette.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/reset.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/rules.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/typeset.esm.js.map +1 -1
- package/dist/reader/transformers/styles/rules/variables.esm.js.map +1 -1
- package/dist/reader/transformers/styles/transformer.esm.js.map +1 -1
- package/dist/reader/transformers/transformer.esm.js.map +1 -1
- package/dist/routes.esm.js.map +1 -1
- package/dist/search/components/TechDocsSearch.esm.js.map +1 -1
- package/dist/search/components/TechDocsSearchResultListItem.esm.js.map +1 -1
- package/dist/search/hooks/useTechDocsLocation.esm.js.map +1 -1
- package/dist/translation.esm.js.map +1 -1
- package/package.json +21 -21
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @backstage/plugin-techdocs
|
|
2
2
|
|
|
3
|
-
## 0.0.0-nightly-
|
|
3
|
+
## 0.0.0-nightly-20260921023416
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
@@ -8,23 +8,24 @@
|
|
|
8
8
|
|
|
9
9
|
### Patch Changes
|
|
10
10
|
|
|
11
|
+
- 24fd0e8: Fixed TechDocs addons silently not rendering in apps using the new frontend system, on both the standalone documentation reader page and the entity documentation tab.
|
|
11
12
|
- Updated dependencies
|
|
12
|
-
- @backstage/
|
|
13
|
-
- @backstage/
|
|
14
|
-
- @backstage/
|
|
15
|
-
- @backstage/
|
|
16
|
-
- @backstage/
|
|
17
|
-
- @backstage/
|
|
18
|
-
- @backstage/plugin-
|
|
19
|
-
- @backstage/plugin-
|
|
20
|
-
- @backstage/
|
|
21
|
-
- @backstage/
|
|
22
|
-
- @backstage/plugin-auth-react@0.0.0-nightly-
|
|
23
|
-
- @backstage/catalog-
|
|
24
|
-
- @backstage/plugin-search-common@0.0.0-nightly-20260919022921
|
|
25
|
-
- @backstage/catalog-model@1.10.1
|
|
26
|
-
- @backstage/errors@1.3.1
|
|
13
|
+
- @backstage/integration@0.0.0-nightly-20260921023416
|
|
14
|
+
- @backstage/config@0.0.0-nightly-20260921023416
|
|
15
|
+
- @backstage/errors@0.0.0-nightly-20260921023416
|
|
16
|
+
- @backstage/integration-react@0.0.0-nightly-20260921023416
|
|
17
|
+
- @backstage/core-components@0.0.0-nightly-20260921023416
|
|
18
|
+
- @backstage/core-plugin-api@0.0.0-nightly-20260921023416
|
|
19
|
+
- @backstage/frontend-plugin-api@0.0.0-nightly-20260921023416
|
|
20
|
+
- @backstage/plugin-techdocs-react@0.0.0-nightly-20260921023416
|
|
21
|
+
- @backstage/catalog-client@0.0.0-nightly-20260921023416
|
|
22
|
+
- @backstage/catalog-model@0.0.0-nightly-20260921023416
|
|
23
|
+
- @backstage/plugin-auth-react@0.0.0-nightly-20260921023416
|
|
24
|
+
- @backstage/plugin-catalog-react@0.0.0-nightly-20260921023416
|
|
27
25
|
- @backstage/theme@0.7.3
|
|
26
|
+
- @backstage/ui@0.18.0
|
|
27
|
+
- @backstage/plugin-search-common@0.0.0-nightly-20260921023416
|
|
28
|
+
- @backstage/plugin-search-react@0.0.0-nightly-20260921023416
|
|
28
29
|
- @backstage/plugin-techdocs-common@0.1.1
|
|
29
30
|
|
|
30
31
|
## 1.18.1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityPageDocs.esm.js","sources":["../src/EntityPageDocs.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n getCompoundEntityRef,\n parseEntityRef,\n} from '@backstage/catalog-model';\nimport { TECHDOCS_EXTERNAL_ANNOTATION } from '@backstage/plugin-techdocs-common';\nimport { getEntityRootTechDocsPath } from '@backstage/plugin-techdocs-react';\n\nimport { TechDocsReaderPage } from './plugin';\nimport { TechDocsReaderPageContent } from './reader/components/TechDocsReaderPageContent';\nimport { TechDocsReaderPageSubheader } from './reader/components/TechDocsReaderPageSubheader';\nimport { useEntityPageTechDocsRedirect } from './search/hooks/useTechDocsLocation';\n\ntype EntityPageDocsProps = {\n entity: Entity;\n /**\n * Show or hide the content search bar, defaults to true.\n */\n withSearch?: boolean;\n /**\n * Show or hide the feedback button, defaults to true.\n */\n withFeedbackLink?: boolean;\n};\n\nexport const EntityPageDocs = ({\n entity,\n withSearch = true,\n withFeedbackLink,\n}: EntityPageDocsProps) => {\n let entityRef = getCompoundEntityRef(entity);\n\n const searchResultUrlMapper = useEntityPageTechDocsRedirect(entityRef);\n\n if (entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION]) {\n try {\n entityRef = parseEntityRef(\n entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION],\n );\n } catch {\n // not a fan of this but we don't care if the parseEntityRef fails\n }\n }\n\n const defaultPath = getEntityRootTechDocsPath(entity);\n\n return (\n <TechDocsReaderPage entityRef={entityRef}>\n <TechDocsReaderPageSubheader />\n <TechDocsReaderPageContent\n withSearch={withSearch}\n withFeedbackLink={withFeedbackLink}\n searchResultUrlMapper={searchResultUrlMapper}\n defaultPath={defaultPath}\n />\n </TechDocsReaderPage>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAyCO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,MAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb;AACF,CAAA,KAA2B;AACzB,EAAA,IAAI,SAAA,GAAY,qBAAqB,MAAM,CAAA;AAE3C,EAAA,MAAM,qBAAA,GAAwB,8BAA8B,SAAS,CAAA;AAErE,EAAA,IAAI,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B,CAAA,EAAG;AAC/D,IAAA,IAAI;AACF,MAAA,SAAA,GAAY,cAAA;AAAA,QACV,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B;AAAA,OAC5D;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAc,0BAA0B,MAAM,CAAA;AAEpD,EAAA,uBACE,IAAA,CAAC,sBAAmB,SAAA,EAClB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,2BAAA,EAAA,EAA4B,CAAA;AAAA,oBAC7B,GAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACC,UAAA;AAAA,QACA,gBAAA;AAAA,QACA,qBAAA;AAAA,QACA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ
|
|
1
|
+
{"version":3,"file":"EntityPageDocs.esm.js","sources":["../src/EntityPageDocs.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Entity,\n getCompoundEntityRef,\n parseEntityRef,\n} from '@backstage/catalog-model';\nimport { TECHDOCS_EXTERNAL_ANNOTATION } from '@backstage/plugin-techdocs-common';\nimport { getEntityRootTechDocsPath } from '@backstage/plugin-techdocs-react';\n\nimport { TechDocsReaderPage } from './plugin';\nimport { TechDocsReaderPageContent } from './reader/components/TechDocsReaderPageContent';\nimport { TechDocsReaderPageSubheader } from './reader/components/TechDocsReaderPageSubheader';\nimport { useEntityPageTechDocsRedirect } from './search/hooks/useTechDocsLocation';\n\ntype EntityPageDocsProps = {\n entity: Entity;\n /**\n * Show or hide the content search bar, defaults to true.\n */\n withSearch?: boolean;\n /**\n * Show or hide the feedback button, defaults to true.\n */\n withFeedbackLink?: boolean;\n};\n\nexport const EntityPageDocs = ({\n entity,\n withSearch = true,\n withFeedbackLink,\n}: EntityPageDocsProps) => {\n let entityRef = getCompoundEntityRef(entity);\n\n const searchResultUrlMapper = useEntityPageTechDocsRedirect(entityRef);\n\n if (entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION]) {\n try {\n entityRef = parseEntityRef(\n entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION],\n );\n } catch {\n // not a fan of this but we don't care if the parseEntityRef fails\n }\n }\n\n const defaultPath = getEntityRootTechDocsPath(entity);\n\n return (\n <TechDocsReaderPage entityRef={entityRef}>\n <TechDocsReaderPageSubheader />\n <TechDocsReaderPageContent\n withSearch={withSearch}\n withFeedbackLink={withFeedbackLink}\n searchResultUrlMapper={searchResultUrlMapper}\n defaultPath={defaultPath}\n />\n </TechDocsReaderPage>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAyCO,MAAM,iBAAiB,CAAC;AAAA,EAC7B,MAAA;AAAA,EACA,UAAA,GAAa,IAAA;AAAA,EACb;AACF,CAAA,KAA2B;AACzB,EAAA,IAAI,SAAA,GAAY,qBAAqB,MAAM,CAAA;AAE3C,EAAA,MAAM,qBAAA,GAAwB,8BAA8B,SAAS,CAAA;AAErE,EAAA,IAAI,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B,CAAA,EAAG;AAC/D,IAAA,IAAI;AACF,MAAA,SAAA,GAAY,cAAA;AAAA,QACV,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B;AAAA,OAC5D;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF;AAEA,EAAA,MAAM,WAAA,GAAc,0BAA0B,MAAM,CAAA;AAEpD,EAAA,uBACE,IAAA,CAAC,sBAAmB,SAAA,EAClB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,2BAAA,EAAA,EAA4B,CAAA;AAAA,oBAC7B,GAAA;AAAA,MAAC,yBAAA;AAAA,MAAA;AAAA,QACC,UAAA;AAAA,QACA,gBAAA;AAAA,QACA,qBAAA;AAAA,QACA;AAAA;AAAA;AACF,GAAA,EACF,CAAA;AAEJ;;"}
|
package/dist/Router.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Routes, Route
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useRoutes, Routes, Route } from 'react-router-dom';
|
|
3
3
|
import { EntityPageDocs } from './EntityPageDocs.esm.js';
|
|
4
4
|
import { TechDocsIndexPage } from './home/components/TechDocsIndexPage.esm.js';
|
|
5
5
|
import { TechDocsReaderPage } from './reader/components/TechDocsReaderPage/TechDocsReaderPage.esm.js';
|
package/dist/Router.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Router.esm.js","sources":["../src/Router.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement, PropsWithChildren } from 'react';\nimport { Route, Routes, useRoutes } from 'react-router-dom';\n\nimport { Entity } from '@backstage/catalog-model';\nimport { EntityPageDocs } from './EntityPageDocs';\nimport { TechDocsIndexPage } from './home/components/TechDocsIndexPage';\nimport { TechDocsReaderPage } from './reader/components/TechDocsReaderPage';\nimport {\n useEntity,\n MissingAnnotationEmptyState,\n} from '@backstage/plugin-catalog-react';\nimport {\n TECHDOCS_ANNOTATION,\n TECHDOCS_EXTERNAL_ANNOTATION,\n} from '@backstage/plugin-techdocs-common';\n\n/**\n * Helper that takes in entity and returns true/false if TechDocs is available for the entity\n *\n * @public\n */\nexport const isTechDocsAvailable = (entity: Entity) =>\n Boolean(entity?.metadata?.annotations?.[TECHDOCS_ANNOTATION]) ||\n Boolean(entity?.metadata?.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION]);\n\n/**\n * Responsible for registering routes for TechDocs, TechDocs Homepage and separate TechDocs page\n *\n * @public\n */\nexport const Router = () => {\n return (\n <Routes>\n <Route path=\"/\" element={<TechDocsIndexPage />} />\n <Route\n path=\"/:namespace/:kind/:name/*\"\n element={<TechDocsReaderPage />}\n />\n </Routes>\n );\n};\n\nexport const TechDocsReaderRouter = (props: PropsWithChildren) => {\n const { children } = props;\n\n // Using objects instead of <Route> elements, otherwise \"outlet\" will be null on sub-pages and add-ons won't render\n const element = useRoutes([\n {\n path: '*',\n element: <TechDocsReaderPage />,\n children: [\n {\n path: '*',\n element: children,\n },\n ],\n },\n ]);\n\n return element;\n};\n\nexport const EmbeddedDocsRouter = (\n props: PropsWithChildren<{\n emptyState?: ReactElement;\n withSearch?: boolean;\n withFeedbackLink?: boolean;\n }>,\n) => {\n const { children, emptyState, withSearch = true, withFeedbackLink } = props;\n const { entity } = useEntity();\n\n // Using objects instead of <Route> elements, otherwise \"outlet\" will be null on sub-pages and add-ons won't render\n const element = useRoutes([\n {\n path: '/*',\n element: (\n <EntityPageDocs\n entity={entity}\n withSearch={withSearch}\n withFeedbackLink={withFeedbackLink}\n />\n ),\n children: [\n {\n path: '*',\n element: children,\n },\n ],\n },\n ]);\n\n const projectId =\n entity.metadata.annotations?.[TECHDOCS_ANNOTATION] ||\n entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION];\n\n if (!projectId) {\n return (\n emptyState ?? (\n <MissingAnnotationEmptyState annotation={[TECHDOCS_ANNOTATION]} />\n )\n );\n }\n return element;\n};\n\n/**\n * Responsible for registering route to view docs on Entity page\n *\n * @public\n */\nexport const LegacyEmbeddedDocsRouter = ({\n children,\n withSearch = true,\n}: PropsWithChildren<{ withSearch?: boolean }>) => {\n // Wrap the Router to avoid exposing the emptyState prop in the non-alpha\n // public API and make it easier for us to change later.\n return <EmbeddedDocsRouter children={children} withSearch={withSearch} />;\n};\n"],"names":[],"mappings":";;;;;;;;AAqCO,MAAM,mBAAA,GAAsB,CAAC,MAAA,KAClC,OAAA,CAAQ,QAAQ,QAAA,EAAU,WAAA,GAAc,mBAAmB,CAAC,KAC5D,OAAA,CAAQ,MAAA,EAAQ,QAAA,EAAU,WAAA,GAAc,4BAA4B,CAAC;AAOhE,MAAM,SAAS,MAAM;AAC1B,EAAA,4BACG,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAM,IAAA,EAAK,GAAA,EAAI,OAAA,kBAAS,GAAA,CAAC,qBAAkB,CAAA,EAAI,CAAA;AAAA,oBAChD,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,2BAAA;AAAA,QACL,OAAA,sBAAU,kBAAA,EAAA,EAAmB;AAAA;AAAA;AAC/B,GAAA,EACF,CAAA;AAEJ;AAEO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAA6B;AAChE,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AAGrB,EAAA,MAAM,UAAU,SAAA,CAAU;AAAA,IACxB;AAAA,MACE,IAAA,EAAM,GAAA;AAAA,MACN,OAAA,sBAAU,kBAAA,EAAA,EAAmB,CAAA;AAAA,MAC7B,QAAA,EAAU;AAAA,QACR;AAAA,UACE,IAAA,EAAM,GAAA;AAAA,UACN,OAAA,EAAS;AAAA;AACX;AACF;AACF,GACD,CAAA;AAED,EAAA,OAAO,OAAA;AACT;AAEO,MAAM,kBAAA,GAAqB,CAChC,KAAA,KAKG;AACH,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAY,UAAA,GAAa,IAAA,EAAM,kBAAiB,GAAI,KAAA;AACtE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAG7B,EAAA,MAAM,UAAU,SAAA,CAAU;AAAA,IACxB;AAAA,MACE,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,kBACE,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,MAEF,QAAA,EAAU;AAAA,QACR;AAAA,UACE,IAAA,EAAM,GAAA;AAAA,UACN,OAAA,EAAS;AAAA;AACX;AACF;AACF,GACD,CAAA;AAED,EAAA,MAAM,SAAA,GACJ,OAAO,QAAA,CAAS,WAAA,GAAc,mBAAmB,CAAA,IACjD,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B,CAAA;AAE5D,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OACE,8BACE,GAAA,CAAC,2BAAA,EAAA,EAA4B,UAAA,EAAY,CAAC,mBAAmB,CAAA,EAAG,CAAA;AAAA,EAGtE;AACA,EAAA,OAAO,OAAA;AACT;AAOO,MAAM,2BAA2B,CAAC;AAAA,EACvC,QAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,KAAmD;AAGjD,EAAA,uBAAO,GAAA,CAAC,kBAAA,EAAA,EAAmB,QAAA,EAAoB,UAAA,EAAwB,CAAA;AACzE
|
|
1
|
+
{"version":3,"file":"Router.esm.js","sources":["../src/Router.tsx"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement, PropsWithChildren } from 'react';\nimport { Route, Routes, useRoutes } from 'react-router-dom';\n\nimport { Entity } from '@backstage/catalog-model';\nimport { EntityPageDocs } from './EntityPageDocs';\nimport { TechDocsIndexPage } from './home/components/TechDocsIndexPage';\nimport { TechDocsReaderPage } from './reader/components/TechDocsReaderPage';\nimport {\n useEntity,\n MissingAnnotationEmptyState,\n} from '@backstage/plugin-catalog-react';\nimport {\n TECHDOCS_ANNOTATION,\n TECHDOCS_EXTERNAL_ANNOTATION,\n} from '@backstage/plugin-techdocs-common';\n\n/**\n * Helper that takes in entity and returns true/false if TechDocs is available for the entity\n *\n * @public\n */\nexport const isTechDocsAvailable = (entity: Entity) =>\n Boolean(entity?.metadata?.annotations?.[TECHDOCS_ANNOTATION]) ||\n Boolean(entity?.metadata?.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION]);\n\n/**\n * Responsible for registering routes for TechDocs, TechDocs Homepage and separate TechDocs page\n *\n * @public\n */\nexport const Router = () => {\n return (\n <Routes>\n <Route path=\"/\" element={<TechDocsIndexPage />} />\n <Route\n path=\"/:namespace/:kind/:name/*\"\n element={<TechDocsReaderPage />}\n />\n </Routes>\n );\n};\n\nexport const TechDocsReaderRouter = (props: PropsWithChildren) => {\n const { children } = props;\n\n // Using objects instead of <Route> elements, otherwise \"outlet\" will be null on sub-pages and add-ons won't render\n const element = useRoutes([\n {\n path: '*',\n element: <TechDocsReaderPage />,\n children: [\n {\n path: '*',\n element: children,\n },\n ],\n },\n ]);\n\n return element;\n};\n\nexport const EmbeddedDocsRouter = (\n props: PropsWithChildren<{\n emptyState?: ReactElement;\n withSearch?: boolean;\n withFeedbackLink?: boolean;\n }>,\n) => {\n const { children, emptyState, withSearch = true, withFeedbackLink } = props;\n const { entity } = useEntity();\n\n // Using objects instead of <Route> elements, otherwise \"outlet\" will be null on sub-pages and add-ons won't render\n const element = useRoutes([\n {\n path: '/*',\n element: (\n <EntityPageDocs\n entity={entity}\n withSearch={withSearch}\n withFeedbackLink={withFeedbackLink}\n />\n ),\n children: [\n {\n path: '*',\n element: children,\n },\n ],\n },\n ]);\n\n const projectId =\n entity.metadata.annotations?.[TECHDOCS_ANNOTATION] ||\n entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION];\n\n if (!projectId) {\n return (\n emptyState ?? (\n <MissingAnnotationEmptyState annotation={[TECHDOCS_ANNOTATION]} />\n )\n );\n }\n return element;\n};\n\n/**\n * Responsible for registering route to view docs on Entity page\n *\n * @public\n */\nexport const LegacyEmbeddedDocsRouter = ({\n children,\n withSearch = true,\n}: PropsWithChildren<{ withSearch?: boolean }>) => {\n // Wrap the Router to avoid exposing the emptyState prop in the non-alpha\n // public API and make it easier for us to change later.\n return <EmbeddedDocsRouter children={children} withSearch={withSearch} />;\n};\n"],"names":[],"mappings":";;;;;;;;AAqCO,MAAM,mBAAA,GAAsB,CAAC,MAAA,KAClC,OAAA,CAAQ,QAAQ,QAAA,EAAU,WAAA,GAAc,mBAAmB,CAAC,KAC5D,OAAA,CAAQ,MAAA,EAAQ,QAAA,EAAU,WAAA,GAAc,4BAA4B,CAAC;AAOhE,MAAM,SAAS,MAAM;AAC1B,EAAA,4BACG,MAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAM,IAAA,EAAK,GAAA,EAAI,OAAA,kBAAS,GAAA,CAAC,qBAAkB,CAAA,EAAI,CAAA;AAAA,oBAChD,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,2BAAA;AAAA,QACL,OAAA,sBAAU,kBAAA,EAAA,EAAmB;AAAA;AAAA;AAC/B,GAAA,EACF,CAAA;AAEJ;AAEO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAA6B;AAChE,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AAGrB,EAAA,MAAM,UAAU,SAAA,CAAU;AAAA,IACxB;AAAA,MACE,IAAA,EAAM,GAAA;AAAA,MACN,OAAA,sBAAU,kBAAA,EAAA,EAAmB,CAAA;AAAA,MAC7B,QAAA,EAAU;AAAA,QACR;AAAA,UACE,IAAA,EAAM,GAAA;AAAA,UACN,OAAA,EAAS;AAAA;AACX;AACF;AACF,GACD,CAAA;AAED,EAAA,OAAO,OAAA;AACT;AAEO,MAAM,kBAAA,GAAqB,CAChC,KAAA,KAKG;AACH,EAAA,MAAM,EAAE,QAAA,EAAU,UAAA,EAAY,UAAA,GAAa,IAAA,EAAM,kBAAiB,GAAI,KAAA;AACtE,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAG7B,EAAA,MAAM,UAAU,SAAA,CAAU;AAAA,IACxB;AAAA,MACE,IAAA,EAAM,IAAA;AAAA,MACN,OAAA,kBACE,GAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,MAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA;AAAA,OACF;AAAA,MAEF,QAAA,EAAU;AAAA,QACR;AAAA,UACE,IAAA,EAAM,GAAA;AAAA,UACN,OAAA,EAAS;AAAA;AACX;AACF;AACF,GACD,CAAA;AAED,EAAA,MAAM,SAAA,GACJ,OAAO,QAAA,CAAS,WAAA,GAAc,mBAAmB,CAAA,IACjD,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B,CAAA;AAE5D,EAAA,IAAI,CAAC,SAAA,EAAW;AACd,IAAA,OACE,8BACE,GAAA,CAAC,2BAAA,EAAA,EAA4B,UAAA,EAAY,CAAC,mBAAmB,CAAA,EAAG,CAAA;AAAA,EAGtE;AACA,EAAA,OAAO,OAAA;AACT;AAOO,MAAM,2BAA2B,CAAC;AAAA,EACvC,QAAA;AAAA,EACA,UAAA,GAAa;AACf,CAAA,KAAmD;AAGjD,EAAA,uBAAO,GAAA,CAAC,kBAAA,EAAA,EAAmB,QAAA,EAAoB,UAAA,EAAwB,CAAA;AACzE;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addonsApi.esm.js","sources":["../../src/alpha/addonsApi.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createApiRef,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAddonOptions } from '@backstage/plugin-techdocs-react';\n\ninterface TechDocsAddonsApi {\n getAddons(): TechDocsAddonOptions[];\n}\n\nexport const techdocsAddonsApiRef = createApiRef<TechDocsAddonsApi>({\n id: 'plugin.techdocs.addons',\n});\n\nexport const TechDocsAddonsApiExtension = ApiBlueprint.makeWithOverrides({\n name: 'addons',\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n },\n factory(originalFactory, { inputs }) {\n const addons = inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n return originalFactory(defineParams =>\n defineParams({\n api: techdocsAddonsApiRef,\n deps: {},\n factory: () => ({\n getAddons: () => addons,\n }),\n }),\n );\n },\n});\n"],"names":[],"mappings":";;;AA4BO,MAAM,uBAAuB,YAAA,CAAgC;AAAA,EAClE,EAAA,EAAI;AACN,CAAC;AAEM,MAAM,0BAAA,GAA6B,aAAa,iBAAA,CAAkB;AAAA,EACvE,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,QAAQ,oBAAA,CAAqB,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAC;AAAA,GAC9D;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,MAAA,GAAS,OAAO,MAAA,CAAO,GAAA;AAAA,MAAI,CAAA,MAAA,KAC/B,MAAA,CAAO,GAAA,CAAI,cAAA,CAAe,SAAS,KAAK;AAAA,KAC1C;AACA,IAAA,OAAO,eAAA;AAAA,MAAgB,kBACrB,YAAA,CAAa;AAAA,QACX,GAAA,EAAK,oBAAA;AAAA,QACL,MAAM,EAAC;AAAA,QACP,SAAS,OAAO;AAAA,UACd,WAAW,MAAM;AAAA,SACnB;AAAA,OACD;AAAA,KACH;AAAA,EACF;AACF,CAAC
|
|
1
|
+
{"version":3,"file":"addonsApi.esm.js","sources":["../../src/alpha/addonsApi.ts"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApiBlueprint,\n createApiRef,\n createExtensionInput,\n} from '@backstage/frontend-plugin-api';\nimport { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAddonOptions } from '@backstage/plugin-techdocs-react';\n\ninterface TechDocsAddonsApi {\n getAddons(): TechDocsAddonOptions[];\n}\n\nexport const techdocsAddonsApiRef = createApiRef<TechDocsAddonsApi>({\n id: 'plugin.techdocs.addons',\n});\n\nexport const TechDocsAddonsApiExtension = ApiBlueprint.makeWithOverrides({\n name: 'addons',\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n },\n factory(originalFactory, { inputs }) {\n const addons = inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n return originalFactory(defineParams =>\n defineParams({\n api: techdocsAddonsApiRef,\n deps: {},\n factory: () => ({\n getAddons: () => addons,\n }),\n }),\n );\n },\n});\n"],"names":[],"mappings":";;;AA4BO,MAAM,uBAAuB,YAAA,CAAgC;AAAA,EAClE,EAAA,EAAI;AACN,CAAC;AAEM,MAAM,0BAAA,GAA6B,aAAa,iBAAA,CAAkB;AAAA,EACvE,IAAA,EAAM,QAAA;AAAA,EACN,MAAA,EAAQ;AAAA,IACN,QAAQ,oBAAA,CAAqB,CAAC,cAAA,CAAe,QAAA,CAAS,KAAK,CAAC;AAAA,GAC9D;AAAA,EACA,OAAA,CAAQ,eAAA,EAAiB,EAAE,MAAA,EAAO,EAAG;AACnC,IAAA,MAAM,MAAA,GAAS,OAAO,MAAA,CAAO,GAAA;AAAA,MAAI,CAAA,MAAA,KAC/B,MAAA,CAAO,GAAA,CAAI,cAAA,CAAe,SAAS,KAAK;AAAA,KAC1C;AACA,IAAA,OAAO,eAAA;AAAA,MAAgB,kBACrB,YAAA,CAAa;AAAA,QACX,GAAA,EAAK,oBAAA;AAAA,QACL,MAAM,EAAC;AAAA,QACP,SAAS,OAAO;AAAA,UACd,WAAW,MAAM;AAAA,SACnB;AAAA,OACD;AAAA,KACH;AAAA,EACF;AACF,CAAC;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsIndexPageContent.esm.js","sources":["../../../src/alpha/components/TechDocsIndexPageContent.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Container } from '@backstage/ui';\nimport {\n CatalogFilterLayout,\n EntityListProvider,\n EntityOwnerPicker,\n EntityTagPicker,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport { TechDocsPicker } from '../../home/components/TechDocsPicker';\nimport { EntityListDocsTable } from '../../home/components/Tables';\nimport type { TechDocsIndexPageProps } from '../../home/components/TechDocsIndexPage';\n\nexport const TechDocsIndexPageContent = (props: TechDocsIndexPageProps) => {\n const {\n initialFilter = 'owned',\n columns,\n actions,\n ownerPickerMode,\n pagination,\n options,\n } = props;\n\n return (\n <Container mt=\"6\">\n <EntityListProvider pagination={pagination}>\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <TechDocsPicker />\n <UserListPicker initialFilter={initialFilter} />\n <EntityOwnerPicker mode={ownerPickerMode} />\n <EntityTagPicker />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <EntityListDocsTable\n actions={actions}\n columns={columns}\n options={options}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n </EntityListProvider>\n </Container>\n );\n};\n"],"names":[],"mappings":";;;;;;;AA4BO,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAAkC;AACzE,EAAA,MAAM;AAAA,IACJ,aAAA,GAAgB,OAAA;AAAA,IAChB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,uBACE,GAAA,CAAC,aAAU,EAAA,EAAG,GAAA,EACZ,8BAAC,kBAAA,EAAA,EAAmB,UAAA,EAClB,+BAAC,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,mBAAA,CAAoB,SAApB,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,CAAA;AAAA,sBAChB,GAAA,CAAC,kBAAe,aAAA,EAA8B,CAAA;AAAA,sBAC9C,GAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,eAAA,EAAiB,CAAA;AAAA,0BACzC,eAAA,EAAA,EAAgB;AAAA,KAAA,EACnB,CAAA;AAAA,oBACA,GAAA,CAAC,mBAAA,CAAoB,OAAA,EAApB,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ
|
|
1
|
+
{"version":3,"file":"TechDocsIndexPageContent.esm.js","sources":["../../../src/alpha/components/TechDocsIndexPageContent.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Container } from '@backstage/ui';\nimport {\n CatalogFilterLayout,\n EntityListProvider,\n EntityOwnerPicker,\n EntityTagPicker,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport { TechDocsPicker } from '../../home/components/TechDocsPicker';\nimport { EntityListDocsTable } from '../../home/components/Tables';\nimport type { TechDocsIndexPageProps } from '../../home/components/TechDocsIndexPage';\n\nexport const TechDocsIndexPageContent = (props: TechDocsIndexPageProps) => {\n const {\n initialFilter = 'owned',\n columns,\n actions,\n ownerPickerMode,\n pagination,\n options,\n } = props;\n\n return (\n <Container mt=\"6\">\n <EntityListProvider pagination={pagination}>\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <TechDocsPicker />\n <UserListPicker initialFilter={initialFilter} />\n <EntityOwnerPicker mode={ownerPickerMode} />\n <EntityTagPicker />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <EntityListDocsTable\n actions={actions}\n columns={columns}\n options={options}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n </EntityListProvider>\n </Container>\n );\n};\n"],"names":[],"mappings":";;;;;;;AA4BO,MAAM,wBAAA,GAA2B,CAAC,KAAA,KAAkC;AACzE,EAAA,MAAM;AAAA,IACJ,aAAA,GAAgB,OAAA;AAAA,IAChB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AAEJ,EAAA,uBACE,GAAA,CAAC,aAAU,EAAA,EAAG,GAAA,EACZ,8BAAC,kBAAA,EAAA,EAAmB,UAAA,EAClB,+BAAC,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,mBAAA,CAAoB,SAApB,EACC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,CAAA;AAAA,sBAChB,GAAA,CAAC,kBAAe,aAAA,EAA8B,CAAA;AAAA,sBAC9C,GAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,eAAA,EAAiB,CAAA;AAAA,0BACzC,eAAA,EAAA,EAAgB;AAAA,KAAA,EACnB,CAAA;AAAA,oBACA,GAAA,CAAC,mBAAA,CAAoB,OAAA,EAApB,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,OAAA;AAAA,QACA,OAAA;AAAA,QACA;AAAA;AAAA,KACF,EACF;AAAA,GAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsReaderContent.esm.js","sources":["../../../src/alpha/components/TechDocsReaderContent.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TechDocsShadowDom } from '@backstage/plugin-techdocs-react';\nimport { Progress } from '@backstage/core-components';\n\nimport { TechDocsStateIndicator } from '../../reader/components/TechDocsStateIndicator';\nimport { withTechDocsReaderProvider } from '../../reader/components/TechDocsReaderProvider';\nimport { TechDocsReaderPageContentAddons } from '../../reader/components/TechDocsReaderPageContent/TechDocsReaderPageContentAddons';\nimport type { TechDocsReaderPageContentProps } from '../../reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent';\nimport { useTechDocsReaderContentData } from '../../hooks/useTechDocsReaderContentData';\n\nexport const TechDocsReaderContent = withTechDocsReaderProvider(\n (props: TechDocsReaderPageContentProps) => {\n const {\n dom,\n handleAppend,\n isNotFound,\n isDomReady,\n showProgress,\n NotFoundErrorPage,\n } = useTechDocsReaderContentData({\n defaultPath: props.defaultPath,\n onReady: props.onReady,\n withFeedbackLink: props.withFeedbackLink,\n });\n\n if (isNotFound) return <NotFoundErrorPage />;\n\n if (!isDomReady) {\n return <TechDocsStateIndicator />;\n }\n\n return (\n <>\n <TechDocsStateIndicator />\n {showProgress && <Progress />}\n <TechDocsShadowDom element={dom!} onAppend={handleAppend}>\n <TechDocsReaderPageContentAddons />\n </TechDocsShadowDom>\n </>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;AAyBO,MAAM,qBAAA,GAAwB,0BAAA;AAAA,EACnC,CAAC,KAAA,KAA0C;AACzC,IAAA,MAAM;AAAA,MACJ,GAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,QACE,4BAAA,CAA6B;AAAA,MAC/B,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,kBAAkB,KAAA,CAAM;AAAA,KACzB,CAAA;AAED,IAAA,IAAI,UAAA,EAAY,uBAAO,GAAA,CAAC,iBAAA,EAAA,EAAkB,CAAA;AAE1C,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,2BAAQ,sBAAA,EAAA,EAAuB,CAAA;AAAA,IACjC;AAEA,IAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,sBAAA,EAAA,EAAuB,CAAA;AAAA,MACvB,YAAA,wBAAiB,QAAA,EAAA,EAAS,CAAA;AAAA,sBAC3B,GAAA,CAAC,qBAAkB,OAAA,EAAS,GAAA,EAAM,UAAU,YAAA,EAC1C,QAAA,kBAAA,GAAA,CAAC,mCAAgC,CAAA,EACnC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF
|
|
1
|
+
{"version":3,"file":"TechDocsReaderContent.esm.js","sources":["../../../src/alpha/components/TechDocsReaderContent.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TechDocsShadowDom } from '@backstage/plugin-techdocs-react';\nimport { Progress } from '@backstage/core-components';\n\nimport { TechDocsStateIndicator } from '../../reader/components/TechDocsStateIndicator';\nimport { withTechDocsReaderProvider } from '../../reader/components/TechDocsReaderProvider';\nimport { TechDocsReaderPageContentAddons } from '../../reader/components/TechDocsReaderPageContent/TechDocsReaderPageContentAddons';\nimport type { TechDocsReaderPageContentProps } from '../../reader/components/TechDocsReaderPageContent/TechDocsReaderPageContent';\nimport { useTechDocsReaderContentData } from '../../hooks/useTechDocsReaderContentData';\n\nexport const TechDocsReaderContent = withTechDocsReaderProvider(\n (props: TechDocsReaderPageContentProps) => {\n const {\n dom,\n handleAppend,\n isNotFound,\n isDomReady,\n showProgress,\n NotFoundErrorPage,\n } = useTechDocsReaderContentData({\n defaultPath: props.defaultPath,\n onReady: props.onReady,\n withFeedbackLink: props.withFeedbackLink,\n });\n\n if (isNotFound) return <NotFoundErrorPage />;\n\n if (!isDomReady) {\n return <TechDocsStateIndicator />;\n }\n\n return (\n <>\n <TechDocsStateIndicator />\n {showProgress && <Progress />}\n <TechDocsShadowDom element={dom!} onAppend={handleAppend}>\n <TechDocsReaderPageContentAddons />\n </TechDocsShadowDom>\n </>\n );\n },\n);\n"],"names":[],"mappings":";;;;;;;;AAyBO,MAAM,qBAAA,GAAwB,0BAAA;AAAA,EACnC,CAAC,KAAA,KAA0C;AACzC,IAAA,MAAM;AAAA,MACJ,GAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,QACE,4BAAA,CAA6B;AAAA,MAC/B,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,SAAS,KAAA,CAAM,OAAA;AAAA,MACf,kBAAkB,KAAA,CAAM;AAAA,KACzB,CAAA;AAED,IAAA,IAAI,UAAA,EAAY,uBAAO,GAAA,CAAC,iBAAA,EAAA,EAAkB,CAAA;AAE1C,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,2BAAQ,sBAAA,EAAA,EAAuB,CAAA;AAAA,IACjC;AAEA,IAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,sBAAA,EAAA,EAAuB,CAAA;AAAA,MACvB,YAAA,wBAAiB,QAAA,EAAA,EAAS,CAAA;AAAA,sBAC3B,GAAA,CAAC,qBAAkB,OAAA,EAAS,GAAA,EAAM,UAAU,YAAA,EAC1C,QAAA,kBAAA,GAAA,CAAC,mCAAgC,CAAA,EACnC;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsReaderEntityCard.esm.js","sources":["../../../src/alpha/components/TechDocsReaderEntityCard.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useTechDocsReaderPage } from '@backstage/plugin-techdocs-react';\nimport {\n EntityRefLink,\n EntityRefLinks,\n getEntityRelations,\n} from '@backstage/plugin-catalog-react';\nimport { RELATION_OWNED_BY } from '@backstage/catalog-model';\nimport { Card, CardBody, Text } from '@backstage/ui';\nimport capitalize from 'lodash/capitalize';\nimport styles from './TechDocsReaderEntityCard.module.css';\nimport { TechDocsReaderSearch } from './TechDocsReaderSearch';\n\nexport type TechDocsReaderEntityCardProps = {\n withSearch?: boolean;\n};\n\nexport const TechDocsReaderEntityCard = (\n props: TechDocsReaderEntityCardProps,\n) => {\n const { withSearch } = props;\n const {\n entityRef,\n entityMetadata: { value: entityMetadata, loading: entityMetadataLoading },\n } = useTechDocsReaderPage();\n\n if (entityMetadataLoading || !entityMetadata) return null;\n\n const { spec } = entityMetadata;\n const lifecycle = spec?.lifecycle;\n const ownedByRelations = getEntityRelations(\n entityMetadata,\n RELATION_OWNED_BY,\n );\n\n return (\n <Card className={styles.entityCard}>\n <CardBody className={styles.cardBody}>\n <dl className={styles.definitionList}>\n <div className={styles.definitionGroup}>\n <dt>\n <Text variant=\"body-small\" weight=\"bold\">\n {capitalize(entityMetadata.kind)}:\n </Text>\n </dt>\n <dd className={styles.definitionValue}>\n <EntityRefLink entityRef={entityRef} defaultKind=\"Component\" />\n </dd>\n </div>\n {ownedByRelations.length > 0 && (\n <div className={styles.definitionGroup}>\n <dt>\n <Text variant=\"body-small\" weight=\"bold\">\n Owner:\n </Text>\n </dt>\n <dd className={styles.definitionValue}>\n <EntityRefLinks\n entityRefs={ownedByRelations}\n defaultKind=\"group\"\n />\n </dd>\n </div>\n )}\n {lifecycle && (\n <div className={styles.definitionGroup}>\n <dt>\n <Text variant=\"body-small\" weight=\"bold\">\n Lifecycle:\n </Text>\n </dt>\n <dd className={styles.definitionValue}>\n <Text variant=\"body-small\">{String(lifecycle)}</Text>\n </dd>\n </div>\n )}\n </dl>\n {withSearch && (\n <div className={styles.searchWrapper}>\n <TechDocsReaderSearch entityId={entityRef} />\n </div>\n )}\n </CardBody>\n </Card>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAgCO,MAAM,wBAAA,GAA2B,CACtC,KAAA,KACG;AACH,EAAA,MAAM,EAAE,YAAW,GAAI,KAAA;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,cAAA,EAAgB,EAAE,KAAA,EAAO,cAAA,EAAgB,SAAS,qBAAA;AAAsB,MACtE,qBAAA,EAAsB;AAE1B,EAAA,IAAI,qBAAA,IAAyB,CAAC,cAAA,EAAgB,OAAO,IAAA;AAErD,EAAA,MAAM,EAAE,MAAK,GAAI,cAAA;AACjB,EAAA,MAAM,YAAY,IAAA,EAAM,SAAA;AACxB,EAAA,MAAM,gBAAA,GAAmB,kBAAA;AAAA,IACvB,cAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,QAAK,SAAA,EAAW,MAAA,CAAO,YACtB,QAAA,kBAAA,IAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAA,CAAO,QAAA,EAC1B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,cAAA,EACpB,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,eAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QACC,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,YAAA,EAAa,QAAO,MAAA,EAC/B,QAAA,EAAA;AAAA,UAAA,UAAA,CAAW,eAAe,IAAI,CAAA;AAAA,UAAE;AAAA,SAAA,EACnC,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,eAAA,EACpB,8BAAC,aAAA,EAAA,EAAc,SAAA,EAAsB,WAAA,EAAY,WAAA,EAAY,CAAA,EAC/D;AAAA,OAAA,EACF,CAAA;AAAA,MACC,iBAAiB,MAAA,GAAS,CAAA,yBACxB,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,eAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EACC,8BAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,cAAa,MAAA,EAAO,MAAA,EAAO,oBAEzC,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,eAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY,gBAAA;AAAA,YACZ,WAAA,EAAY;AAAA;AAAA,SACd,EACF;AAAA,OAAA,EACF,CAAA;AAAA,MAED,SAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,eAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EACC,8BAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,cAAa,MAAA,EAAO,MAAA,EAAO,wBAEzC,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,eAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,YAAA,EAAc,QAAA,EAAA,MAAA,CAAO,SAAS,CAAA,EAAE,CAAA,EAChD;AAAA,OAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,IACC,UAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,eACrB,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,QAAA,EAAU,SAAA,EAAW,CAAA,EAC7C;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ
|
|
1
|
+
{"version":3,"file":"TechDocsReaderEntityCard.esm.js","sources":["../../../src/alpha/components/TechDocsReaderEntityCard.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useTechDocsReaderPage } from '@backstage/plugin-techdocs-react';\nimport {\n EntityRefLink,\n EntityRefLinks,\n getEntityRelations,\n} from '@backstage/plugin-catalog-react';\nimport { RELATION_OWNED_BY } from '@backstage/catalog-model';\nimport { Card, CardBody, Text } from '@backstage/ui';\nimport capitalize from 'lodash/capitalize';\nimport styles from './TechDocsReaderEntityCard.module.css';\nimport { TechDocsReaderSearch } from './TechDocsReaderSearch';\n\nexport type TechDocsReaderEntityCardProps = {\n withSearch?: boolean;\n};\n\nexport const TechDocsReaderEntityCard = (\n props: TechDocsReaderEntityCardProps,\n) => {\n const { withSearch } = props;\n const {\n entityRef,\n entityMetadata: { value: entityMetadata, loading: entityMetadataLoading },\n } = useTechDocsReaderPage();\n\n if (entityMetadataLoading || !entityMetadata) return null;\n\n const { spec } = entityMetadata;\n const lifecycle = spec?.lifecycle;\n const ownedByRelations = getEntityRelations(\n entityMetadata,\n RELATION_OWNED_BY,\n );\n\n return (\n <Card className={styles.entityCard}>\n <CardBody className={styles.cardBody}>\n <dl className={styles.definitionList}>\n <div className={styles.definitionGroup}>\n <dt>\n <Text variant=\"body-small\" weight=\"bold\">\n {capitalize(entityMetadata.kind)}:\n </Text>\n </dt>\n <dd className={styles.definitionValue}>\n <EntityRefLink entityRef={entityRef} defaultKind=\"Component\" />\n </dd>\n </div>\n {ownedByRelations.length > 0 && (\n <div className={styles.definitionGroup}>\n <dt>\n <Text variant=\"body-small\" weight=\"bold\">\n Owner:\n </Text>\n </dt>\n <dd className={styles.definitionValue}>\n <EntityRefLinks\n entityRefs={ownedByRelations}\n defaultKind=\"group\"\n />\n </dd>\n </div>\n )}\n {lifecycle && (\n <div className={styles.definitionGroup}>\n <dt>\n <Text variant=\"body-small\" weight=\"bold\">\n Lifecycle:\n </Text>\n </dt>\n <dd className={styles.definitionValue}>\n <Text variant=\"body-small\">{String(lifecycle)}</Text>\n </dd>\n </div>\n )}\n </dl>\n {withSearch && (\n <div className={styles.searchWrapper}>\n <TechDocsReaderSearch entityId={entityRef} />\n </div>\n )}\n </CardBody>\n </Card>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAgCO,MAAM,wBAAA,GAA2B,CACtC,KAAA,KACG;AACH,EAAA,MAAM,EAAE,YAAW,GAAI,KAAA;AACvB,EAAA,MAAM;AAAA,IACJ,SAAA;AAAA,IACA,cAAA,EAAgB,EAAE,KAAA,EAAO,cAAA,EAAgB,SAAS,qBAAA;AAAsB,MACtE,qBAAA,EAAsB;AAE1B,EAAA,IAAI,qBAAA,IAAyB,CAAC,cAAA,EAAgB,OAAO,IAAA;AAErD,EAAA,MAAM,EAAE,MAAK,GAAI,cAAA;AACjB,EAAA,MAAM,YAAY,IAAA,EAAM,SAAA;AACxB,EAAA,MAAM,gBAAA,GAAmB,kBAAA;AAAA,IACvB,cAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,GAAA,CAAC,QAAK,SAAA,EAAW,MAAA,CAAO,YACtB,QAAA,kBAAA,IAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAW,MAAA,CAAO,QAAA,EAC1B,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,cAAA,EACpB,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,eAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QACC,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,YAAA,EAAa,QAAO,MAAA,EAC/B,QAAA,EAAA;AAAA,UAAA,UAAA,CAAW,eAAe,IAAI,CAAA;AAAA,UAAE;AAAA,SAAA,EACnC,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,eAAA,EACpB,8BAAC,aAAA,EAAA,EAAc,SAAA,EAAsB,WAAA,EAAY,WAAA,EAAY,CAAA,EAC/D;AAAA,OAAA,EACF,CAAA;AAAA,MACC,iBAAiB,MAAA,GAAS,CAAA,yBACxB,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,eAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EACC,8BAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,cAAa,MAAA,EAAO,MAAA,EAAO,oBAEzC,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,eAAA,EACpB,QAAA,kBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,UAAA,EAAY,gBAAA;AAAA,YACZ,WAAA,EAAY;AAAA;AAAA,SACd,EACF;AAAA,OAAA,EACF,CAAA;AAAA,MAED,SAAA,oBACC,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,eAAA,EACrB,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,IAAA,EAAA,EACC,8BAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,cAAa,MAAA,EAAO,MAAA,EAAO,wBAEzC,CAAA,EACF,CAAA;AAAA,wBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,MAAA,CAAO,eAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,IAAA,EAAA,EAAK,OAAA,EAAQ,YAAA,EAAc,QAAA,EAAA,MAAA,CAAO,SAAS,CAAA,EAAE,CAAA,EAChD;AAAA,OAAA,EACF;AAAA,KAAA,EAEJ,CAAA;AAAA,IACC,UAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,eACrB,QAAA,kBAAA,GAAA,CAAC,oBAAA,EAAA,EAAqB,QAAA,EAAU,SAAA,EAAW,CAAA,EAC7C;AAAA,GAAA,EAEJ,CAAA,EACF,CAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsReaderEntityCard.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TechDocsReaderEntityCard.module.css.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsReaderHeader.esm.js","sources":["../../../src/alpha/components/TechDocsReaderHeader.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Helmet from 'react-helmet';\nimport { Header, ButtonLink } from '@backstage/ui';\nimport { RiCodeLine } from '@remixicon/react';\nimport { TechDocsAddonLocations as locations } from '@backstage/plugin-techdocs-react';\nimport { TechDocsReaderSearch } from './TechDocsReaderSearch';\nimport { useTechDocsReaderHeaderData } from '../../hooks/useTechDocsReaderHeaderData';\n\nexport type TechDocsReaderHeaderProps = {\n withSearch?: boolean;\n};\n\nexport const TechDocsReaderHeader = (props: TechDocsReaderHeaderProps) => {\n const { withSearch = true } = props;\n const {\n title,\n entityRef,\n tabTitle,\n hidden,\n showSourceLink,\n sourceLink,\n addons,\n } = useTechDocsReaderHeaderData();\n\n if (hidden) return null;\n\n return (\n <>\n <Helmet titleTemplate=\"%s\">\n <title>{tabTitle}</title>\n </Helmet>\n <Header\n title={title || ''}\n customActions={\n <>\n {withSearch && <TechDocsReaderSearch entityId={entityRef} />}\n {showSourceLink && (\n <ButtonLink\n href={sourceLink!}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"secondary\"\n size=\"small\"\n iconStart={<RiCodeLine />}\n aria-label=\"View source\"\n />\n )}\n {addons.renderComponentsByLocation(locations.Header)}\n </>\n }\n />\n </>\n );\n};\n"],"names":["locations"],"mappings":";;;;;;;;AA2BO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAqC;AACxE,EAAA,MAAM,EAAE,UAAA,GAAa,IAAA,EAAK,GAAI,KAAA;AAC9B,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACE,2BAAA,EAA4B;AAEhC,EAAA,IAAI,QAAQ,OAAO,IAAA;AAEnB,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAO,aAAA,EAAc,IAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAO,oBAAS,CAAA,EACnB,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAA,IAAS,EAAA;AAAA,QAChB,+BACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,UAAA,oBAAc,GAAA,CAAC,oBAAA,EAAA,EAAqB,QAAA,EAAU,SAAA,EAAW,CAAA;AAAA,UACzD,cAAA,oBACC,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,UAAA;AAAA,cACN,MAAA,EAAO,QAAA;AAAA,cACP,GAAA,EAAI,qBAAA;AAAA,cACJ,OAAA,EAAQ,WAAA;AAAA,cACR,IAAA,EAAK,OAAA;AAAA,cACL,SAAA,sBAAY,UAAA,EAAA,EAAW,CAAA;AAAA,cACvB,YAAA,EAAW;AAAA;AAAA,WACb;AAAA,UAED,MAAA,CAAO,0BAAA,CAA2BA,sBAAA,CAAU,MAAM;AAAA,SAAA,EACrD;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ
|
|
1
|
+
{"version":3,"file":"TechDocsReaderHeader.esm.js","sources":["../../../src/alpha/components/TechDocsReaderHeader.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport Helmet from 'react-helmet';\nimport { Header, ButtonLink } from '@backstage/ui';\nimport { RiCodeLine } from '@remixicon/react';\nimport { TechDocsAddonLocations as locations } from '@backstage/plugin-techdocs-react';\nimport { TechDocsReaderSearch } from './TechDocsReaderSearch';\nimport { useTechDocsReaderHeaderData } from '../../hooks/useTechDocsReaderHeaderData';\n\nexport type TechDocsReaderHeaderProps = {\n withSearch?: boolean;\n};\n\nexport const TechDocsReaderHeader = (props: TechDocsReaderHeaderProps) => {\n const { withSearch = true } = props;\n const {\n title,\n entityRef,\n tabTitle,\n hidden,\n showSourceLink,\n sourceLink,\n addons,\n } = useTechDocsReaderHeaderData();\n\n if (hidden) return null;\n\n return (\n <>\n <Helmet titleTemplate=\"%s\">\n <title>{tabTitle}</title>\n </Helmet>\n <Header\n title={title || ''}\n customActions={\n <>\n {withSearch && <TechDocsReaderSearch entityId={entityRef} />}\n {showSourceLink && (\n <ButtonLink\n href={sourceLink!}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n variant=\"secondary\"\n size=\"small\"\n iconStart={<RiCodeLine />}\n aria-label=\"View source\"\n />\n )}\n {addons.renderComponentsByLocation(locations.Header)}\n </>\n }\n />\n </>\n );\n};\n"],"names":["locations"],"mappings":";;;;;;;;AA2BO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAqC;AACxE,EAAA,MAAM,EAAE,UAAA,GAAa,IAAA,EAAK,GAAI,KAAA;AAC9B,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,SAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,MACE,2BAAA,EAA4B;AAEhC,EAAA,IAAI,QAAQ,OAAO,IAAA;AAEnB,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAO,aAAA,EAAc,IAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAO,oBAAS,CAAA,EACnB,CAAA;AAAA,oBACA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAO,KAAA,IAAS,EAAA;AAAA,QAChB,+BACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,UAAA,oBAAc,GAAA,CAAC,oBAAA,EAAA,EAAqB,QAAA,EAAU,SAAA,EAAW,CAAA;AAAA,UACzD,cAAA,oBACC,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAM,UAAA;AAAA,cACN,MAAA,EAAO,QAAA;AAAA,cACP,GAAA,EAAI,qBAAA;AAAA,cACJ,OAAA,EAAQ,WAAA;AAAA,cACR,IAAA,EAAK,OAAA;AAAA,cACL,SAAA,sBAAY,UAAA,EAAA,EAAW,CAAA;AAAA,cACvB,YAAA,EAAW;AAAA;AAAA,WACb;AAAA,UAED,MAAA,CAAO,0BAAA,CAA2BA,sBAAA,CAAU,MAAM;AAAA,SAAA,EACrD;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsReaderLayout.esm.js","sources":["../../../src/alpha/components/TechDocsReaderLayout.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Container } from '@backstage/ui';\nimport { TechDocsReaderHeader } from './TechDocsReaderHeader';\nimport { TechDocsReaderEntityCard } from './TechDocsReaderEntityCard';\nimport { TechDocsReaderPageSubheader } from '../../reader/components/TechDocsReaderPageSubheader';\nimport { TechDocsReaderContent } from './TechDocsReaderContent';\n\nexport type TechDocsReaderLayoutProps = {\n withHeader?: boolean;\n withSearch?: boolean;\n withFeedbackLink?: boolean;\n};\n\nexport const TechDocsReaderLayout = (props: TechDocsReaderLayoutProps) => {\n const { withSearch, withHeader = true, withFeedbackLink } = props;\n return (\n <>\n {withHeader && <TechDocsReaderHeader withSearch={withSearch} />}\n <Container mt=\"6\">\n <TechDocsReaderEntityCard withSearch={!withHeader && withSearch} />\n <TechDocsReaderPageSubheader />\n <TechDocsReaderContent withFeedbackLink={withFeedbackLink} />\n </Container>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;AA4BO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAqC;AACxE,EAAA,MAAM,EAAE,UAAA,EAAY,UAAA,GAAa,IAAA,EAAM,kBAAiB,GAAI,KAAA;AAC5D,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,UAAA,oBAAc,GAAA,CAAC,wBAAqB,UAAA,EAAwB,CAAA;AAAA,oBAC7D,IAAA,CAAC,SAAA,EAAA,EAAU,EAAA,EAAG,GAAA,EACZ,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,wBAAA,EAAA,EAAyB,UAAA,EAAY,CAAC,UAAA,IAAc,UAAA,EAAY,CAAA;AAAA,0BAChE,2BAAA,EAAA,EAA4B,CAAA;AAAA,sBAC7B,GAAA,CAAC,yBAAsB,gBAAA,EAAoC;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ
|
|
1
|
+
{"version":3,"file":"TechDocsReaderLayout.esm.js","sources":["../../../src/alpha/components/TechDocsReaderLayout.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Container } from '@backstage/ui';\nimport { TechDocsReaderHeader } from './TechDocsReaderHeader';\nimport { TechDocsReaderEntityCard } from './TechDocsReaderEntityCard';\nimport { TechDocsReaderPageSubheader } from '../../reader/components/TechDocsReaderPageSubheader';\nimport { TechDocsReaderContent } from './TechDocsReaderContent';\n\nexport type TechDocsReaderLayoutProps = {\n withHeader?: boolean;\n withSearch?: boolean;\n withFeedbackLink?: boolean;\n};\n\nexport const TechDocsReaderLayout = (props: TechDocsReaderLayoutProps) => {\n const { withSearch, withHeader = true, withFeedbackLink } = props;\n return (\n <>\n {withHeader && <TechDocsReaderHeader withSearch={withSearch} />}\n <Container mt=\"6\">\n <TechDocsReaderEntityCard withSearch={!withHeader && withSearch} />\n <TechDocsReaderPageSubheader />\n <TechDocsReaderContent withFeedbackLink={withFeedbackLink} />\n </Container>\n </>\n );\n};\n"],"names":[],"mappings":";;;;;;;AA4BO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAqC;AACxE,EAAA,MAAM,EAAE,UAAA,EAAY,UAAA,GAAa,IAAA,EAAM,kBAAiB,GAAI,KAAA;AAC5D,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,UAAA,oBAAc,GAAA,CAAC,wBAAqB,UAAA,EAAwB,CAAA;AAAA,oBAC7D,IAAA,CAAC,SAAA,EAAA,EAAU,EAAA,EAAG,GAAA,EACZ,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,wBAAA,EAAA,EAAyB,UAAA,EAAY,CAAC,UAAA,IAAc,UAAA,EAAY,CAAA;AAAA,0BAChE,2BAAA,EAAA,EAA4B,CAAA;AAAA,sBAC7B,GAAA,CAAC,yBAAsB,gBAAA,EAAoC;AAAA,KAAA,EAC7D;AAAA,GAAA,EACF,CAAA;AAEJ;;"}
|
|
@@ -5,8 +5,8 @@ import { attachTechDocsAddonComponentData } from '@backstage/plugin-techdocs-rea
|
|
|
5
5
|
import { TechDocsReaderRouter, EmbeddedDocsRouter } from '../../Router.esm.js';
|
|
6
6
|
import { TechDocsReaderLayout } from './TechDocsReaderLayout.esm.js';
|
|
7
7
|
|
|
8
|
-
function
|
|
9
|
-
return /* @__PURE__ */ jsx(TechDocsAddons, { children:
|
|
8
|
+
function renderAddons(addonOptions) {
|
|
9
|
+
return /* @__PURE__ */ jsx(TechDocsAddons, { children: addonOptions.map((options) => {
|
|
10
10
|
const Addon = options.component;
|
|
11
11
|
attachTechDocsAddonComponentData(Addon, options);
|
|
12
12
|
return /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Addon, {}) }, options.name);
|
|
@@ -22,7 +22,7 @@ function TechDocsReaderPage(props) {
|
|
|
22
22
|
withFeedbackLink: props.withFeedbackLink
|
|
23
23
|
}
|
|
24
24
|
),
|
|
25
|
-
|
|
25
|
+
renderAddons(props.addonOptions)
|
|
26
26
|
] });
|
|
27
27
|
}
|
|
28
28
|
function TechDocsEntityContent(props) {
|
|
@@ -31,7 +31,7 @@ function TechDocsEntityContent(props) {
|
|
|
31
31
|
{
|
|
32
32
|
emptyState: props.emptyState,
|
|
33
33
|
withFeedbackLink: props.withFeedbackLink,
|
|
34
|
-
children:
|
|
34
|
+
children: renderAddons(props.addonOptions)
|
|
35
35
|
}
|
|
36
36
|
);
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsReaderPage.esm.js","sources":["../../../src/alpha/components/TechDocsReaderPage.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement, Suspense } from 'react';\nimport {\n TechDocsAddons,\n type TechDocsAddonOptions,\n} from '@backstage/plugin-techdocs-react';\nimport { attachTechDocsAddonComponentData } from '@backstage/plugin-techdocs-react/alpha';\nimport { EmbeddedDocsRouter, TechDocsReaderRouter } from '../../Router';\nimport { TechDocsReaderLayout } from './TechDocsReaderLayout';\n\
|
|
1
|
+
{"version":3,"file":"TechDocsReaderPage.esm.js","sources":["../../../src/alpha/components/TechDocsReaderPage.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactElement, Suspense } from 'react';\nimport {\n TechDocsAddons,\n type TechDocsAddonOptions,\n} from '@backstage/plugin-techdocs-react';\nimport { attachTechDocsAddonComponentData } from '@backstage/plugin-techdocs-react/alpha';\nimport { EmbeddedDocsRouter, TechDocsReaderRouter } from '../../Router';\nimport { TechDocsReaderLayout } from './TechDocsReaderLayout';\n\n// Deliberately a function call rather than a component. Addons are discovered\n// by walking the router outlet as an element tree: the walk only follows\n// `props.children` and never invokes a component, and this is also the only\n// place the addon component data is attached. A component wrapper breaks both,\n// because its children are built by a render that the walk never performs.\nfunction renderAddons(addonOptions: TechDocsAddonOptions[]) {\n return (\n <TechDocsAddons>\n {addonOptions.map(options => {\n const Addon = options.component;\n attachTechDocsAddonComponentData(Addon, options);\n return (\n <Suspense key={options.name} fallback={null}>\n <Addon />\n </Suspense>\n );\n })}\n </TechDocsAddons>\n );\n}\n\nexport function TechDocsReaderPage(props: {\n addonOptions: TechDocsAddonOptions[];\n withSearch: boolean;\n withHeader: boolean;\n withFeedbackLink: boolean;\n}) {\n return (\n <TechDocsReaderRouter>\n <TechDocsReaderLayout\n withSearch={props.withSearch}\n withHeader={props.withHeader}\n withFeedbackLink={props.withFeedbackLink}\n />\n {renderAddons(props.addonOptions)}\n </TechDocsReaderRouter>\n );\n}\n\nexport function TechDocsEntityContent(props: {\n addonOptions: TechDocsAddonOptions[];\n emptyState?: ReactElement;\n withFeedbackLink: boolean;\n}) {\n return (\n <EmbeddedDocsRouter\n emptyState={props.emptyState}\n withFeedbackLink={props.withFeedbackLink}\n >\n {renderAddons(props.addonOptions)}\n </EmbeddedDocsRouter>\n );\n}\n"],"names":[],"mappings":";;;;;;;AA8BA,SAAS,aAAa,YAAA,EAAsC;AAC1D,EAAA,uBACE,GAAA,CAAC,cAAA,EAAA,EACE,QAAA,EAAA,YAAA,CAAa,GAAA,CAAI,CAAA,OAAA,KAAW;AAC3B,IAAA,MAAM,QAAQ,OAAA,CAAQ,SAAA;AACtB,IAAA,gCAAA,CAAiC,OAAO,OAAO,CAAA;AAC/C,IAAA,uBACE,GAAA,CAAC,YAA4B,QAAA,EAAU,IAAA,EACrC,8BAAC,KAAA,EAAA,EAAM,CAAA,EAAA,EADM,QAAQ,IAEvB,CAAA;AAAA,EAEJ,CAAC,CAAA,EACH,CAAA;AAEJ;AAEO,SAAS,mBAAmB,KAAA,EAKhC;AACD,EAAA,4BACG,oBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACC,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,YAAY,KAAA,CAAM,UAAA;AAAA,QAClB,kBAAkB,KAAA,CAAM;AAAA;AAAA,KAC1B;AAAA,IACC,YAAA,CAAa,MAAM,YAAY;AAAA,GAAA,EAClC,CAAA;AAEJ;AAEO,SAAS,sBAAsB,KAAA,EAInC;AACD,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,YAAY,KAAA,CAAM,UAAA;AAAA,MAClB,kBAAkB,KAAA,CAAM,gBAAA;AAAA,MAEvB,QAAA,EAAA,YAAA,CAAa,MAAM,YAAY;AAAA;AAAA,GAClC;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechDocsReaderSearch.esm.js","sources":["../../../src/alpha/components/TechDocsReaderSearch.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useNavigate } from 'react-router-dom';\nimport {\n Text,\n Flex,\n SearchAutocomplete,\n SearchAutocompleteItem,\n} from '@backstage/ui';\nimport { SearchContextProvider } from '@backstage/plugin-search-react';\nimport { CompoundEntityRef } from '@backstage/catalog-model';\nimport { HighlightedSearchResultText } from '@backstage/plugin-search-react';\nimport { useTechDocsSearch } from '../../hooks/useTechDocsSearch';\n\ntype TechDocsReaderSearchBarProps = {\n entityId: CompoundEntityRef;\n};\n\nconst TechDocsReaderSearchBar = (props: TechDocsReaderSearchBarProps) => {\n const { entityId } = props;\n const navigate = useNavigate();\n const { results, term, setTerm, deferredLoading } =\n useTechDocsSearch(entityId);\n\n return (\n <SearchAutocomplete\n aria-label=\"Search docs\"\n placeholder=\"Search docs\"\n size=\"small\"\n inputValue={term}\n onInputChange={setTerm}\n isLoading={deferredLoading}\n popoverWidth=\"min(720px, calc(100vw - 32px))\"\n popoverPlacement=\"bottom end\"\n >\n {results.map((result, index) => (\n <SearchAutocompleteItem\n key={index}\n id={String(index)}\n textValue={result.document.title}\n onAction={() => {\n setTerm('');\n navigate(result.document.location);\n requestAnimationFrame(() => {\n (document.activeElement as HTMLElement)?.blur();\n });\n }}\n >\n <Flex direction=\"column\" gap=\"1\">\n <Text weight=\"bold\">\n {result.highlight?.fields.title ? (\n <HighlightedSearchResultText\n text={result.highlight.fields.title}\n preTag={result.highlight.preTag}\n postTag={result.highlight.postTag}\n />\n ) : (\n result.document.title\n )}\n </Text>\n {(result.highlight?.fields.text || result.document.text) && (\n <Text\n variant=\"body-small\"\n color=\"secondary\"\n style={{\n display: '-webkit-box',\n WebkitLineClamp: 3,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n }}\n >\n {result.highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={result.highlight.fields.text}\n preTag={result.highlight.preTag}\n postTag={result.highlight.postTag}\n />\n ) : (\n result.document.text\n )}\n </Text>\n )}\n </Flex>\n </SearchAutocompleteItem>\n ))}\n </SearchAutocomplete>\n );\n};\n\nexport type TechDocsReaderSearchProps = {\n entityId: CompoundEntityRef;\n};\n\nexport const TechDocsReaderSearch = (props: TechDocsReaderSearchProps) => {\n const initialState = {\n term: '',\n types: ['techdocs'],\n pageCursor: '',\n filters: props.entityId,\n };\n return (\n <SearchContextProvider initialState={initialState}>\n <TechDocsReaderSearchBar {...props} />\n </SearchContextProvider>\n );\n};\n"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"TechDocsReaderSearch.esm.js","sources":["../../../src/alpha/components/TechDocsReaderSearch.tsx"],"sourcesContent":["/*\n * Copyright 2026 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useNavigate } from 'react-router-dom';\nimport {\n Text,\n Flex,\n SearchAutocomplete,\n SearchAutocompleteItem,\n} from '@backstage/ui';\nimport { SearchContextProvider } from '@backstage/plugin-search-react';\nimport { CompoundEntityRef } from '@backstage/catalog-model';\nimport { HighlightedSearchResultText } from '@backstage/plugin-search-react';\nimport { useTechDocsSearch } from '../../hooks/useTechDocsSearch';\n\ntype TechDocsReaderSearchBarProps = {\n entityId: CompoundEntityRef;\n};\n\nconst TechDocsReaderSearchBar = (props: TechDocsReaderSearchBarProps) => {\n const { entityId } = props;\n const navigate = useNavigate();\n const { results, term, setTerm, deferredLoading } =\n useTechDocsSearch(entityId);\n\n return (\n <SearchAutocomplete\n aria-label=\"Search docs\"\n placeholder=\"Search docs\"\n size=\"small\"\n inputValue={term}\n onInputChange={setTerm}\n isLoading={deferredLoading}\n popoverWidth=\"min(720px, calc(100vw - 32px))\"\n popoverPlacement=\"bottom end\"\n >\n {results.map((result, index) => (\n <SearchAutocompleteItem\n key={index}\n id={String(index)}\n textValue={result.document.title}\n onAction={() => {\n setTerm('');\n navigate(result.document.location);\n requestAnimationFrame(() => {\n (document.activeElement as HTMLElement)?.blur();\n });\n }}\n >\n <Flex direction=\"column\" gap=\"1\">\n <Text weight=\"bold\">\n {result.highlight?.fields.title ? (\n <HighlightedSearchResultText\n text={result.highlight.fields.title}\n preTag={result.highlight.preTag}\n postTag={result.highlight.postTag}\n />\n ) : (\n result.document.title\n )}\n </Text>\n {(result.highlight?.fields.text || result.document.text) && (\n <Text\n variant=\"body-small\"\n color=\"secondary\"\n style={{\n display: '-webkit-box',\n WebkitLineClamp: 3,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n }}\n >\n {result.highlight?.fields.text ? (\n <HighlightedSearchResultText\n text={result.highlight.fields.text}\n preTag={result.highlight.preTag}\n postTag={result.highlight.postTag}\n />\n ) : (\n result.document.text\n )}\n </Text>\n )}\n </Flex>\n </SearchAutocompleteItem>\n ))}\n </SearchAutocomplete>\n );\n};\n\nexport type TechDocsReaderSearchProps = {\n entityId: CompoundEntityRef;\n};\n\nexport const TechDocsReaderSearch = (props: TechDocsReaderSearchProps) => {\n const initialState = {\n term: '',\n types: ['techdocs'],\n pageCursor: '',\n filters: props.entityId,\n };\n return (\n <SearchContextProvider initialState={initialState}>\n <TechDocsReaderSearchBar {...props} />\n </SearchContextProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;AAgCA,MAAM,uBAAA,GAA0B,CAAC,KAAA,KAAwC;AACvE,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM,EAAE,OAAA,EAAS,IAAA,EAAM,SAAS,eAAA,EAAgB,GAC9C,kBAAkB,QAAQ,CAAA;AAE5B,EAAA,uBACE,GAAA;AAAA,IAAC,kBAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAW,aAAA;AAAA,MACX,WAAA,EAAY,aAAA;AAAA,MACZ,IAAA,EAAK,OAAA;AAAA,MACL,UAAA,EAAY,IAAA;AAAA,MACZ,aAAA,EAAe,OAAA;AAAA,MACf,SAAA,EAAW,eAAA;AAAA,MACX,YAAA,EAAa,gCAAA;AAAA,MACb,gBAAA,EAAiB,YAAA;AAAA,MAEhB,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,qBACpB,GAAA;AAAA,QAAC,sBAAA;AAAA,QAAA;AAAA,UAEC,EAAA,EAAI,OAAO,KAAK,CAAA;AAAA,UAChB,SAAA,EAAW,OAAO,QAAA,CAAS,KAAA;AAAA,UAC3B,UAAU,MAAM;AACd,YAAA,OAAA,CAAQ,EAAE,CAAA;AACV,YAAA,QAAA,CAAS,MAAA,CAAO,SAAS,QAAQ,CAAA;AACjC,YAAA,qBAAA,CAAsB,MAAM;AAC1B,cAAC,QAAA,CAAS,eAA+B,IAAA,EAAK;AAAA,YAChD,CAAC,CAAA;AAAA,UACH,CAAA;AAAA,UAEA,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAK,SAAA,EAAU,QAAA,EAAS,KAAI,GAAA,EAC3B,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,QAAK,MAAA,EAAO,MAAA,EACV,QAAA,EAAA,MAAA,CAAO,SAAA,EAAW,OAAO,KAAA,mBACxB,GAAA;AAAA,cAAC,2BAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAM,MAAA,CAAO,SAAA,CAAU,MAAA,CAAO,KAAA;AAAA,gBAC9B,MAAA,EAAQ,OAAO,SAAA,CAAU,MAAA;AAAA,gBACzB,OAAA,EAAS,OAAO,SAAA,CAAU;AAAA;AAAA,aAC5B,GAEA,MAAA,CAAO,QAAA,CAAS,KAAA,EAEpB,CAAA;AAAA,YAAA,CACE,OAAO,SAAA,EAAW,MAAA,CAAO,IAAA,IAAQ,MAAA,CAAO,SAAS,IAAA,qBACjD,GAAA;AAAA,cAAC,IAAA;AAAA,cAAA;AAAA,gBACC,OAAA,EAAQ,YAAA;AAAA,gBACR,KAAA,EAAM,WAAA;AAAA,gBACN,KAAA,EAAO;AAAA,kBACL,OAAA,EAAS,aAAA;AAAA,kBACT,eAAA,EAAiB,CAAA;AAAA,kBACjB,eAAA,EAAiB,UAAA;AAAA,kBACjB,QAAA,EAAU;AAAA,iBACZ;AAAA,gBAEC,QAAA,EAAA,MAAA,CAAO,SAAA,EAAW,MAAA,CAAO,IAAA,mBACxB,GAAA;AAAA,kBAAC,2BAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAM,MAAA,CAAO,SAAA,CAAU,MAAA,CAAO,IAAA;AAAA,oBAC9B,MAAA,EAAQ,OAAO,SAAA,CAAU,MAAA;AAAA,oBACzB,OAAA,EAAS,OAAO,SAAA,CAAU;AAAA;AAAA,iBAC5B,GAEA,OAAO,QAAA,CAAS;AAAA;AAAA;AAEpB,WAAA,EAEJ;AAAA,SAAA;AAAA,QA7CK;AAAA,OA+CR;AAAA;AAAA,GACH;AAEJ,CAAA;AAMO,MAAM,oBAAA,GAAuB,CAAC,KAAA,KAAqC;AACxE,EAAA,MAAM,YAAA,GAAe;AAAA,IACnB,IAAA,EAAM,EAAA;AAAA,IACN,KAAA,EAAO,CAAC,UAAU,CAAA;AAAA,IAClB,UAAA,EAAY,EAAA;AAAA,IACZ,SAAS,KAAA,CAAM;AAAA,GACjB;AACA,EAAA,2BACG,qBAAA,EAAA,EAAsB,YAAA,EACrB,8BAAC,uBAAA,EAAA,EAAyB,GAAG,OAAO,CAAA,EACtC,CAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTechdocsReaderIconLinkProps.esm.js","sources":["../../../src/alpha/hooks/useTechdocsReaderIconLinkProps.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DocsIcon from '@material-ui/icons/Description';\n\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nimport {\n TECHDOCS_ANNOTATION,\n TECHDOCS_EXTERNAL_ANNOTATION,\n} from '@backstage/plugin-techdocs-common';\nimport { buildTechDocsURL } from '@backstage/plugin-techdocs-react';\n\nimport { useEntity } from '@backstage/plugin-catalog-react';\n\nimport { techdocsTranslationRef } from '../../translation';\nimport { rootDocsRouteRef } from '../../routes';\n\n// Note: If you update this hook, please also update the \"useTechdocsReaderIconLinkProps\" hook\n// in the \"plugins/catalog/src/components/AboutCard/AboutCard.tsx\" file\n/** @alpha */\nexport function useTechdocsReaderIconLinkProps() {\n const { entity } = useEntity();\n const viewTechdocLink = useRouteRef(rootDocsRouteRef);\n const { t } = useTranslationRef(techdocsTranslationRef);\n\n return {\n label: t('aboutCard.viewTechdocs'),\n disabled:\n !(\n entity.metadata.annotations?.[TECHDOCS_ANNOTATION] ||\n entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION]\n ) || !viewTechdocLink,\n icon: <DocsIcon />,\n href: buildTechDocsURL(entity, viewTechdocLink),\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;AAmCO,SAAS,8BAAA,GAAiC;AAC/C,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAC7B,EAAA,MAAM,eAAA,GAAkB,YAAY,gBAAgB,CAAA;AACpD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,sBAAsB,CAAA;AAEtD,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,IACjC,QAAA,EACE,EACE,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,mBAAmB,CAAA,IACjD,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B,CAAA,CAAA,IACvD,CAAC,eAAA;AAAA,IACR,IAAA,sBAAO,QAAA,EAAA,EAAS,CAAA;AAAA,IAChB,IAAA,EAAM,gBAAA,CAAiB,MAAA,EAAQ,eAAe;AAAA,GAChD;AACF
|
|
1
|
+
{"version":3,"file":"useTechdocsReaderIconLinkProps.esm.js","sources":["../../../src/alpha/hooks/useTechdocsReaderIconLinkProps.tsx"],"sourcesContent":["/*\n * Copyright 2025 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport DocsIcon from '@material-ui/icons/Description';\n\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\n\nimport {\n TECHDOCS_ANNOTATION,\n TECHDOCS_EXTERNAL_ANNOTATION,\n} from '@backstage/plugin-techdocs-common';\nimport { buildTechDocsURL } from '@backstage/plugin-techdocs-react';\n\nimport { useEntity } from '@backstage/plugin-catalog-react';\n\nimport { techdocsTranslationRef } from '../../translation';\nimport { rootDocsRouteRef } from '../../routes';\n\n// Note: If you update this hook, please also update the \"useTechdocsReaderIconLinkProps\" hook\n// in the \"plugins/catalog/src/components/AboutCard/AboutCard.tsx\" file\n/** @alpha */\nexport function useTechdocsReaderIconLinkProps() {\n const { entity } = useEntity();\n const viewTechdocLink = useRouteRef(rootDocsRouteRef);\n const { t } = useTranslationRef(techdocsTranslationRef);\n\n return {\n label: t('aboutCard.viewTechdocs'),\n disabled:\n !(\n entity.metadata.annotations?.[TECHDOCS_ANNOTATION] ||\n entity.metadata.annotations?.[TECHDOCS_EXTERNAL_ANNOTATION]\n ) || !viewTechdocLink,\n icon: <DocsIcon />,\n href: buildTechDocsURL(entity, viewTechdocLink),\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;AAmCO,SAAS,8BAAA,GAAiC;AAC/C,EAAA,MAAM,EAAE,MAAA,EAAO,GAAI,SAAA,EAAU;AAC7B,EAAA,MAAM,eAAA,GAAkB,YAAY,gBAAgB,CAAA;AACpD,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,sBAAsB,CAAA;AAEtD,EAAA,OAAO;AAAA,IACL,KAAA,EAAO,EAAE,wBAAwB,CAAA;AAAA,IACjC,QAAA,EACE,EACE,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,mBAAmB,CAAA,IACjD,MAAA,CAAO,QAAA,CAAS,WAAA,GAAc,4BAA4B,CAAA,CAAA,IACvD,CAAC,eAAA;AAAA,IACR,IAAA,sBAAO,QAAA,EAAA,EAAS,CAAA;AAAA,IAChB,IAAA,EAAM,gBAAA,CAAiB,MAAA,EAAQ,eAAe;AAAA,GAChD;AACF;;"}
|
package/dist/alpha.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha/index.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { z } from 'zod/v4';\nimport { RiArticleLine } from '@remixicon/react';\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n PageBlueprint,\n PluginHeaderActionBlueprint,\n createExtensionInput,\n coreExtensionData,\n createExtension,\n} from '@backstage/frontend-plugin-api';\nimport {\n configApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n EntityContentBlueprint,\n EntityIconLinkBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport {\n SearchFilterResultTypeBlueprint,\n SearchResultListItemBlueprint,\n} from '@backstage/plugin-search-react/alpha';\nimport { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAddonsApiExtension, techdocsAddonsApiRef } from './addonsApi';\nimport { TechDocsClient, TechDocsStorageClient } from '../client';\nimport {\n rootCatalogDocsRouteRef,\n rootDocsRouteRef,\n rootRouteRef,\n} from '../routes';\nimport {\n techdocsApiRef,\n techdocsStorageApiRef,\n} from '@backstage/plugin-techdocs-react';\n\nimport { useTechdocsReaderIconLinkProps } from './hooks/useTechdocsReaderIconLinkProps';\nimport { DocsIcon } from '@backstage/core-components';\n\n/** @alpha */\nconst techdocsEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'read-docs',\n params: {\n useProps: useTechdocsReaderIconLinkProps,\n },\n});\n\n/** @alpha */\nconst techDocsStorageApi = ApiBlueprint.make({\n name: 'storage',\n params: defineParams =>\n defineParams({\n api: techdocsStorageApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsStorageClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nconst techDocsClientApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: techdocsApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nexport const techDocsSearchResultListItemExtension =\n SearchResultListItemBlueprint.makeWithOverrides({\n configSchema: {\n title: z.string().optional(),\n lineClamp: z.number().default(5),\n asLink: z.boolean().default(true),\n asListItem: z.boolean().default(true),\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n icon: <DocsIcon />,\n predicate: result => result.type === 'techdocs',\n component: async () => {\n const { TechDocsSearchResultListItem } = await import(\n '../search/components/TechDocsSearchResultListItem'\n );\n return props => (\n <TechDocsSearchResultListItem {...props} {...config} />\n );\n },\n });\n },\n });\n\nconst techDocsSearchFilterResultTypeExtension =\n SearchFilterResultTypeBlueprint.make({\n params: {\n value: 'techdocs',\n name: 'Documentation',\n icon: <DocsIcon />,\n },\n });\n\n/**\n * Responsible for rendering the provided router element\n *\n * @alpha\n */\nconst techDocsPage = PageBlueprint.makeWithOverrides({\n configSchema: {\n initialFilter: z.enum(['all', 'owned', 'starred']).default('owned'),\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n path: '/docs',\n routeRef: rootRouteRef,\n title: 'Docs',\n icon: <RiArticleLine />,\n loader: () =>\n import('./components/TechDocsIndexPageContent').then(m => (\n <m.TechDocsIndexPageContent initialFilter={config.initialFilter} />\n )),\n });\n },\n});\n\n/**\n * Component responsible for composing a TechDocs reader page experience\n *\n * @alpha\n */\nconst techDocsReaderPage = PageBlueprint.makeWithOverrides({\n name: 'reader',\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n },\n configSchema: {\n withoutSearch: z.boolean().default(false),\n withoutHeader: z.boolean().default(false),\n withoutFeedbackLink: z.boolean().default(false),\n },\n factory(originalFactory, { apis, inputs, config }) {\n const addonsApi = apis.get(techdocsAddonsApiRef);\n\n return originalFactory({\n path: '/docs/:namespace/:kind/:name',\n routeRef: rootDocsRouteRef,\n loader: async () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n const { TechDocsReaderPage } = await import(\n './components/TechDocsReaderPage'\n );\n return (\n <TechDocsReaderPage\n addonOptions={addonOptions}\n withSearch={!config.withoutSearch}\n withHeader={!config.withoutHeader}\n withFeedbackLink={!config.withoutFeedbackLink}\n />\n );\n },\n });\n },\n});\n\n/**\n * Component responsible for rendering techdocs on entity pages\n *\n * @alpha\n */\nconst techDocsEntityContent = EntityContentBlueprint.makeWithOverrides({\n configSchema: {\n withoutFeedbackLink: z.boolean().default(false),\n },\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n emptyState: createExtensionInput(\n [coreExtensionData.reactElement.optional()],\n {\n singleton: true,\n optional: true,\n },\n ),\n },\n factory(originalFactory, context) {\n const addonsApi = context.apis.get(techdocsAddonsApiRef);\n\n return originalFactory(\n {\n path: 'docs',\n title: 'TechDocs',\n group: 'documentation',\n routeRef: rootCatalogDocsRouteRef,\n loader: () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = context.inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n return import('./components/TechDocsReaderPage').then(m => (\n <m.TechDocsEntityContent\n addonOptions={addonOptions}\n emptyState={context.inputs.emptyState?.get(\n coreExtensionData.reactElement,\n )}\n withFeedbackLink={!context.config.withoutFeedbackLink}\n />\n ));\n },\n },\n context,\n );\n },\n});\n\nconst techDocsEntityContentEmptyState = createExtension({\n kind: 'empty-state',\n name: 'entity-content',\n attachTo: { id: 'entity-content:techdocs', input: 'emptyState' },\n output: [coreExtensionData.reactElement.optional()],\n factory: () => [],\n});\n\nconst techDocsSupportAction = PluginHeaderActionBlueprint.make({\n params: defineParams =>\n defineParams({\n loader: () =>\n import('@backstage/core-components').then(({ SupportButton }) => (\n <SupportButton>\n Discover documentation in your ecosystem.\n </SupportButton>\n )),\n }),\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'techdocs',\n title: 'Documentation',\n icon: <RiArticleLine />,\n info: { packageJson: () => import('../../package.json') },\n extensions: [\n techDocsClientApi,\n techDocsStorageApi,\n TechDocsAddonsApiExtension,\n techDocsSupportAction,\n techDocsPage,\n techDocsReaderPage,\n techdocsEntityIconLink,\n techDocsEntityContent,\n techDocsEntityContentEmptyState,\n techDocsSearchFilterResultTypeExtension,\n techDocsSearchResultListItemExtension,\n ],\n routes: {\n root: rootRouteRef,\n docRoot: rootDocsRouteRef,\n entityContent: rootCatalogDocsRouteRef,\n },\n});\n\n/** @alpha */\nexport { techdocsTranslationRef } from '../translation';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alpha.esm.js","sources":["../src/alpha/index.tsx"],"sourcesContent":["/*\n * Copyright 2023 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { z } from 'zod/v4';\nimport { RiArticleLine } from '@remixicon/react';\nimport {\n createFrontendPlugin,\n ApiBlueprint,\n PageBlueprint,\n PluginHeaderActionBlueprint,\n createExtensionInput,\n coreExtensionData,\n createExtension,\n} from '@backstage/frontend-plugin-api';\nimport {\n configApiRef,\n discoveryApiRef,\n fetchApiRef,\n} from '@backstage/core-plugin-api';\nimport {\n EntityContentBlueprint,\n EntityIconLinkBlueprint,\n} from '@backstage/plugin-catalog-react/alpha';\nimport {\n SearchFilterResultTypeBlueprint,\n SearchResultListItemBlueprint,\n} from '@backstage/plugin-search-react/alpha';\nimport { AddonBlueprint } from '@backstage/plugin-techdocs-react/alpha';\nimport { TechDocsAddonsApiExtension, techdocsAddonsApiRef } from './addonsApi';\nimport { TechDocsClient, TechDocsStorageClient } from '../client';\nimport {\n rootCatalogDocsRouteRef,\n rootDocsRouteRef,\n rootRouteRef,\n} from '../routes';\nimport {\n techdocsApiRef,\n techdocsStorageApiRef,\n} from '@backstage/plugin-techdocs-react';\n\nimport { useTechdocsReaderIconLinkProps } from './hooks/useTechdocsReaderIconLinkProps';\nimport { DocsIcon } from '@backstage/core-components';\n\n/** @alpha */\nconst techdocsEntityIconLink = EntityIconLinkBlueprint.make({\n name: 'read-docs',\n params: {\n useProps: useTechdocsReaderIconLinkProps,\n },\n});\n\n/** @alpha */\nconst techDocsStorageApi = ApiBlueprint.make({\n name: 'storage',\n params: defineParams =>\n defineParams({\n api: techdocsStorageApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsStorageClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nconst techDocsClientApi = ApiBlueprint.make({\n params: defineParams =>\n defineParams({\n api: techdocsApiRef,\n deps: {\n configApi: configApiRef,\n discoveryApi: discoveryApiRef,\n fetchApi: fetchApiRef,\n },\n factory: ({ configApi, discoveryApi, fetchApi }) =>\n new TechDocsClient({\n configApi,\n discoveryApi,\n fetchApi,\n }),\n }),\n});\n\n/** @alpha */\nexport const techDocsSearchResultListItemExtension =\n SearchResultListItemBlueprint.makeWithOverrides({\n configSchema: {\n title: z.string().optional(),\n lineClamp: z.number().default(5),\n asLink: z.boolean().default(true),\n asListItem: z.boolean().default(true),\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n icon: <DocsIcon />,\n predicate: result => result.type === 'techdocs',\n component: async () => {\n const { TechDocsSearchResultListItem } = await import(\n '../search/components/TechDocsSearchResultListItem'\n );\n return props => (\n <TechDocsSearchResultListItem {...props} {...config} />\n );\n },\n });\n },\n });\n\nconst techDocsSearchFilterResultTypeExtension =\n SearchFilterResultTypeBlueprint.make({\n params: {\n value: 'techdocs',\n name: 'Documentation',\n icon: <DocsIcon />,\n },\n });\n\n/**\n * Responsible for rendering the provided router element\n *\n * @alpha\n */\nconst techDocsPage = PageBlueprint.makeWithOverrides({\n configSchema: {\n initialFilter: z.enum(['all', 'owned', 'starred']).default('owned'),\n },\n factory(originalFactory, { config }) {\n return originalFactory({\n path: '/docs',\n routeRef: rootRouteRef,\n title: 'Docs',\n icon: <RiArticleLine />,\n loader: () =>\n import('./components/TechDocsIndexPageContent').then(m => (\n <m.TechDocsIndexPageContent initialFilter={config.initialFilter} />\n )),\n });\n },\n});\n\n/**\n * Component responsible for composing a TechDocs reader page experience\n *\n * @alpha\n */\nconst techDocsReaderPage = PageBlueprint.makeWithOverrides({\n name: 'reader',\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n },\n configSchema: {\n withoutSearch: z.boolean().default(false),\n withoutHeader: z.boolean().default(false),\n withoutFeedbackLink: z.boolean().default(false),\n },\n factory(originalFactory, { apis, inputs, config }) {\n const addonsApi = apis.get(techdocsAddonsApiRef);\n\n return originalFactory({\n path: '/docs/:namespace/:kind/:name',\n routeRef: rootDocsRouteRef,\n loader: async () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n const { TechDocsReaderPage } = await import(\n './components/TechDocsReaderPage'\n );\n return (\n <TechDocsReaderPage\n addonOptions={addonOptions}\n withSearch={!config.withoutSearch}\n withHeader={!config.withoutHeader}\n withFeedbackLink={!config.withoutFeedbackLink}\n />\n );\n },\n });\n },\n});\n\n/**\n * Component responsible for rendering techdocs on entity pages\n *\n * @alpha\n */\nconst techDocsEntityContent = EntityContentBlueprint.makeWithOverrides({\n configSchema: {\n withoutFeedbackLink: z.boolean().default(false),\n },\n inputs: {\n addons: createExtensionInput([AddonBlueprint.dataRefs.addon]),\n emptyState: createExtensionInput(\n [coreExtensionData.reactElement.optional()],\n {\n singleton: true,\n optional: true,\n },\n ),\n },\n factory(originalFactory, context) {\n const addonsApi = context.apis.get(techdocsAddonsApiRef);\n\n return originalFactory(\n {\n path: 'docs',\n title: 'TechDocs',\n group: 'documentation',\n routeRef: rootCatalogDocsRouteRef,\n loader: () => {\n // Merge addons from the API with old-style direct attachments\n const apiAddons = addonsApi?.getAddons() ?? [];\n const directAddons = context.inputs.addons.map(output =>\n output.get(AddonBlueprint.dataRefs.addon),\n );\n const addonOptions = [...apiAddons, ...directAddons];\n return import('./components/TechDocsReaderPage').then(m => (\n <m.TechDocsEntityContent\n addonOptions={addonOptions}\n emptyState={context.inputs.emptyState?.get(\n coreExtensionData.reactElement,\n )}\n withFeedbackLink={!context.config.withoutFeedbackLink}\n />\n ));\n },\n },\n context,\n );\n },\n});\n\nconst techDocsEntityContentEmptyState = createExtension({\n kind: 'empty-state',\n name: 'entity-content',\n attachTo: { id: 'entity-content:techdocs', input: 'emptyState' },\n output: [coreExtensionData.reactElement.optional()],\n factory: () => [],\n});\n\nconst techDocsSupportAction = PluginHeaderActionBlueprint.make({\n params: defineParams =>\n defineParams({\n loader: () =>\n import('@backstage/core-components').then(({ SupportButton }) => (\n <SupportButton>\n Discover documentation in your ecosystem.\n </SupportButton>\n )),\n }),\n});\n\n/** @alpha */\nexport default createFrontendPlugin({\n pluginId: 'techdocs',\n title: 'Documentation',\n icon: <RiArticleLine />,\n info: { packageJson: () => import('../../package.json') },\n extensions: [\n techDocsClientApi,\n techDocsStorageApi,\n TechDocsAddonsApiExtension,\n techDocsSupportAction,\n techDocsPage,\n techDocsReaderPage,\n techdocsEntityIconLink,\n techDocsEntityContent,\n techDocsEntityContentEmptyState,\n techDocsSearchFilterResultTypeExtension,\n techDocsSearchResultListItemExtension,\n ],\n routes: {\n root: rootRouteRef,\n docRoot: rootDocsRouteRef,\n entityContent: rootCatalogDocsRouteRef,\n },\n});\n\n/** @alpha */\nexport { techdocsTranslationRef } from '../translation';\n"],"names":[],"mappings":"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"}
|
package/dist/api.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.esm.js","sources":["../src/api.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CompoundEntityRef } from '@backstage/catalog-model';\nimport {\n TechDocsEntityMetadata,\n TechDocsMetadata,\n} from '@backstage/plugin-techdocs-react';\nimport { createApiRef } from '@backstage/core-plugin-api';\n\n/**\n * Utility API reference for the {@link TechDocsStorageApi}.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport const techdocsStorageApiRef = createApiRef<TechDocsStorageApi>({\n id: 'plugin.techdocs.storageservice',\n});\n\n/**\n * Utility API reference for the {@link TechDocsApi}.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport const techdocsApiRef = createApiRef<TechDocsApi>({\n id: 'plugin.techdocs.service',\n});\n\n/**\n * The outcome of a docs sync operation.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport type SyncResult = 'cached' | 'updated';\n\n/**\n * API which talks to TechDocs storage to fetch files to render.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport interface TechDocsStorageApi {\n getApiOrigin(): Promise<string>;\n getStorageUrl(): Promise<string>;\n getBuilder(): Promise<string>;\n getEntityDocs(entityId: CompoundEntityRef, path: string): Promise<string>;\n syncEntityDocs(\n entityId: CompoundEntityRef,\n logHandler?: (line: string) => void,\n ): Promise<SyncResult>;\n getBaseUrl(\n oldBaseUrl: string,\n entityId: CompoundEntityRef,\n path: string,\n ): Promise<string>;\n}\n\n/**\n * API to talk to techdocs-backend.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport interface TechDocsApi {\n getApiOrigin(): Promise<string>;\n getTechDocsMetadata(entityId: CompoundEntityRef): Promise<TechDocsMetadata>;\n getEntityMetadata(\n entityId: CompoundEntityRef,\n ): Promise<TechDocsEntityMetadata>;\n}\n"],"names":[],"mappings":";;AA6BO,MAAM,wBAAwB,YAAA,CAAiC;AAAA,EACpE,EAAA,EAAI;AACN,CAAC;AAQM,MAAM,iBAAiB,YAAA,CAA0B;AAAA,EACtD,EAAA,EAAI;AACN,CAAC
|
|
1
|
+
{"version":3,"file":"api.esm.js","sources":["../src/api.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CompoundEntityRef } from '@backstage/catalog-model';\nimport {\n TechDocsEntityMetadata,\n TechDocsMetadata,\n} from '@backstage/plugin-techdocs-react';\nimport { createApiRef } from '@backstage/core-plugin-api';\n\n/**\n * Utility API reference for the {@link TechDocsStorageApi}.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport const techdocsStorageApiRef = createApiRef<TechDocsStorageApi>({\n id: 'plugin.techdocs.storageservice',\n});\n\n/**\n * Utility API reference for the {@link TechDocsApi}.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport const techdocsApiRef = createApiRef<TechDocsApi>({\n id: 'plugin.techdocs.service',\n});\n\n/**\n * The outcome of a docs sync operation.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport type SyncResult = 'cached' | 'updated';\n\n/**\n * API which talks to TechDocs storage to fetch files to render.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport interface TechDocsStorageApi {\n getApiOrigin(): Promise<string>;\n getStorageUrl(): Promise<string>;\n getBuilder(): Promise<string>;\n getEntityDocs(entityId: CompoundEntityRef, path: string): Promise<string>;\n syncEntityDocs(\n entityId: CompoundEntityRef,\n logHandler?: (line: string) => void,\n ): Promise<SyncResult>;\n getBaseUrl(\n oldBaseUrl: string,\n entityId: CompoundEntityRef,\n path: string,\n ): Promise<string>;\n}\n\n/**\n * API to talk to techdocs-backend.\n *\n * @public\n * @deprecated Import from `@backstage/plugin-techdocs-react` instead\n */\nexport interface TechDocsApi {\n getApiOrigin(): Promise<string>;\n getTechDocsMetadata(entityId: CompoundEntityRef): Promise<TechDocsMetadata>;\n getEntityMetadata(\n entityId: CompoundEntityRef,\n ): Promise<TechDocsEntityMetadata>;\n}\n"],"names":[],"mappings":";;AA6BO,MAAM,wBAAwB,YAAA,CAAiC;AAAA,EACpE,EAAA,EAAI;AACN,CAAC;AAQM,MAAM,iBAAiB,YAAA,CAA0B;AAAA,EACtD,EAAA,EAAI;AACN,CAAC;;"}
|
package/dist/client.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.esm.js","sources":["../src/client.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CompoundEntityRef } from '@backstage/catalog-model';\nimport { Config } from '@backstage/config';\nimport {\n DiscoveryApi,\n FetchApi,\n IdentityApi,\n} from '@backstage/core-plugin-api';\nimport { NotFoundError, ResponseError } from '@backstage/errors';\nimport {\n SyncResult,\n TechDocsApi,\n TechDocsEntityMetadata,\n TechDocsMetadata,\n TechDocsStorageApi,\n} from '@backstage/plugin-techdocs-react';\nimport { fetchEventSource } from '@microsoft/fetch-event-source';\n\n/**\n * API to talk to `techdocs-backend`.\n *\n * @public\n */\nexport class TechDocsClient implements TechDocsApi {\n public configApi: Config;\n public discoveryApi: DiscoveryApi;\n private fetchApi: FetchApi;\n\n constructor(options: {\n configApi: Config;\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n }) {\n this.configApi = options.configApi;\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n }\n\n public async getCookie(): Promise<{ expiresAt: string }> {\n const apiOrigin = await this.getApiOrigin();\n const requestUrl = `${apiOrigin}/cookie`;\n const response = await this.fetchApi.fetch(`${requestUrl}`, {\n credentials: 'include',\n });\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n return await response.json();\n }\n\n async getApiOrigin(): Promise<string> {\n return await this.discoveryApi.getBaseUrl('techdocs');\n }\n\n /**\n * Retrieve TechDocs metadata.\n *\n * When docs are built, we generate a techdocs_metadata.json and store it along with the generated\n * static files. It includes necessary data about the docs site. This method requests techdocs-backend\n * which retrieves the TechDocs metadata.\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n */\n async getTechDocsMetadata(\n entityId: CompoundEntityRef,\n ): Promise<TechDocsMetadata> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const requestUrl = `${apiOrigin}/metadata/techdocs/${namespace}/${kind}/${name}`;\n const request = await this.fetchApi.fetch(`${requestUrl}`);\n if (!request.ok) {\n throw await ResponseError.fromResponse(request);\n }\n\n return await request.json();\n }\n\n /**\n * Retrieve metadata about an entity.\n *\n * This method requests techdocs-backend which uses the catalog APIs to respond with filtered\n * information required here.\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n */\n async getEntityMetadata(\n entityId: CompoundEntityRef,\n ): Promise<TechDocsEntityMetadata> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const requestUrl = `${apiOrigin}/metadata/entity/${namespace}/${kind}/${name}`;\n\n const request = await this.fetchApi.fetch(`${requestUrl}`);\n if (!request.ok) {\n throw await ResponseError.fromResponse(request);\n }\n\n return await request.json();\n }\n}\n\n/**\n * API which talks to TechDocs storage to fetch files to render.\n *\n * @public\n */\nexport class TechDocsStorageClient implements TechDocsStorageApi {\n public configApi: Config;\n public discoveryApi: DiscoveryApi;\n private fetchApi: FetchApi;\n\n constructor(options: {\n configApi: Config;\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n /** @deprecated identityApi is not needed any more */\n identityApi?: IdentityApi;\n }) {\n this.configApi = options.configApi;\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n }\n\n async getApiOrigin(): Promise<string> {\n return await this.discoveryApi.getBaseUrl('techdocs');\n }\n\n async getStorageUrl(): Promise<string> {\n return (\n this.configApi.getOptionalString('techdocs.storageUrl') ??\n `${await this.discoveryApi.getBaseUrl('techdocs')}/static/docs`\n );\n }\n\n async getBuilder(): Promise<string> {\n return this.configApi.getOptionalString('techdocs.builder') || 'local';\n }\n\n /**\n * Fetch HTML content as text for an individual docs page in an entity's docs site.\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n * @param path - The unique path to an individual docs page e.g. overview/what-is-new\n * @returns HTML content of the docs page as string\n * @throws Throws error when the page is not found.\n */\n async getEntityDocs(\n entityId: CompoundEntityRef,\n path: string,\n ): Promise<string> {\n const { kind, namespace, name } = entityId;\n\n const storageUrl = await this.getStorageUrl();\n const url = `${storageUrl}/${namespace}/${kind}/${name}/${path}`;\n\n const request = await this.fetchApi.fetch(\n `${url.endsWith('/') ? url : `${url}/`}index.html`,\n );\n\n let errorMessage = '';\n switch (request.status) {\n case 404:\n errorMessage = 'Page not found. ';\n // path is empty for the home page of an entity's docs site\n if (!path) {\n errorMessage +=\n 'This could be because there is no index.md file in the root of the docs directory of this repository.';\n }\n throw new NotFoundError(errorMessage);\n case 500:\n errorMessage =\n 'Could not generate documentation or an error in the TechDocs backend. ';\n throw new Error(errorMessage);\n default:\n // Do nothing\n break;\n }\n\n return request.text();\n }\n\n /**\n * Check if docs are on the latest version and trigger rebuild if not\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n * @param logHandler - Callback to receive log messages from the build process\n * @returns Whether documents are currently synchronized to newest version\n * @throws Throws error on error from sync endpoint in TechDocs Backend\n */\n async syncEntityDocs(\n entityId: CompoundEntityRef,\n logHandler: (line: string) => void = () => {},\n ): Promise<SyncResult> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const url = `${apiOrigin}/sync/${namespace}/${kind}/${name}`;\n\n return new Promise((resolve, reject) => {\n const ctrl = new AbortController();\n fetchEventSource(url, {\n fetch: this.fetchApi.fetch,\n signal: ctrl.signal,\n onmessage(e: any) {\n if (e.event === 'log') {\n if (e.data) {\n logHandler(JSON.parse(e.data));\n }\n } else if (e.event === 'finish') {\n let updated: boolean = false;\n if (e.data) {\n ({ updated } = JSON.parse(e.data));\n }\n resolve(updated ? 'updated' : 'cached');\n } else if (e.event === 'error') {\n reject(new Error(e.data));\n }\n },\n onerror(err) {\n ctrl.abort();\n reject(err);\n throw err; // rethrow to stop the operation\n },\n });\n });\n }\n\n async getBaseUrl(\n oldBaseUrl: string,\n entityId: CompoundEntityRef,\n path: string,\n ): Promise<string> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const newBaseUrl = `${apiOrigin}/static/docs/${namespace}/${kind}/${name}/${path}`;\n\n return new URL(\n oldBaseUrl,\n newBaseUrl.endsWith('/') ? newBaseUrl : `${newBaseUrl}/`,\n ).toString();\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.esm.js","sources":["../src/client.ts"],"sourcesContent":["/*\n * Copyright 2020 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CompoundEntityRef } from '@backstage/catalog-model';\nimport { Config } from '@backstage/config';\nimport {\n DiscoveryApi,\n FetchApi,\n IdentityApi,\n} from '@backstage/core-plugin-api';\nimport { NotFoundError, ResponseError } from '@backstage/errors';\nimport {\n SyncResult,\n TechDocsApi,\n TechDocsEntityMetadata,\n TechDocsMetadata,\n TechDocsStorageApi,\n} from '@backstage/plugin-techdocs-react';\nimport { fetchEventSource } from '@microsoft/fetch-event-source';\n\n/**\n * API to talk to `techdocs-backend`.\n *\n * @public\n */\nexport class TechDocsClient implements TechDocsApi {\n public configApi: Config;\n public discoveryApi: DiscoveryApi;\n private fetchApi: FetchApi;\n\n constructor(options: {\n configApi: Config;\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n }) {\n this.configApi = options.configApi;\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n }\n\n public async getCookie(): Promise<{ expiresAt: string }> {\n const apiOrigin = await this.getApiOrigin();\n const requestUrl = `${apiOrigin}/cookie`;\n const response = await this.fetchApi.fetch(`${requestUrl}`, {\n credentials: 'include',\n });\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n return await response.json();\n }\n\n async getApiOrigin(): Promise<string> {\n return await this.discoveryApi.getBaseUrl('techdocs');\n }\n\n /**\n * Retrieve TechDocs metadata.\n *\n * When docs are built, we generate a techdocs_metadata.json and store it along with the generated\n * static files. It includes necessary data about the docs site. This method requests techdocs-backend\n * which retrieves the TechDocs metadata.\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n */\n async getTechDocsMetadata(\n entityId: CompoundEntityRef,\n ): Promise<TechDocsMetadata> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const requestUrl = `${apiOrigin}/metadata/techdocs/${namespace}/${kind}/${name}`;\n const request = await this.fetchApi.fetch(`${requestUrl}`);\n if (!request.ok) {\n throw await ResponseError.fromResponse(request);\n }\n\n return await request.json();\n }\n\n /**\n * Retrieve metadata about an entity.\n *\n * This method requests techdocs-backend which uses the catalog APIs to respond with filtered\n * information required here.\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n */\n async getEntityMetadata(\n entityId: CompoundEntityRef,\n ): Promise<TechDocsEntityMetadata> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const requestUrl = `${apiOrigin}/metadata/entity/${namespace}/${kind}/${name}`;\n\n const request = await this.fetchApi.fetch(`${requestUrl}`);\n if (!request.ok) {\n throw await ResponseError.fromResponse(request);\n }\n\n return await request.json();\n }\n}\n\n/**\n * API which talks to TechDocs storage to fetch files to render.\n *\n * @public\n */\nexport class TechDocsStorageClient implements TechDocsStorageApi {\n public configApi: Config;\n public discoveryApi: DiscoveryApi;\n private fetchApi: FetchApi;\n\n constructor(options: {\n configApi: Config;\n discoveryApi: DiscoveryApi;\n fetchApi: FetchApi;\n /** @deprecated identityApi is not needed any more */\n identityApi?: IdentityApi;\n }) {\n this.configApi = options.configApi;\n this.discoveryApi = options.discoveryApi;\n this.fetchApi = options.fetchApi;\n }\n\n async getApiOrigin(): Promise<string> {\n return await this.discoveryApi.getBaseUrl('techdocs');\n }\n\n async getStorageUrl(): Promise<string> {\n return (\n this.configApi.getOptionalString('techdocs.storageUrl') ??\n `${await this.discoveryApi.getBaseUrl('techdocs')}/static/docs`\n );\n }\n\n async getBuilder(): Promise<string> {\n return this.configApi.getOptionalString('techdocs.builder') || 'local';\n }\n\n /**\n * Fetch HTML content as text for an individual docs page in an entity's docs site.\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n * @param path - The unique path to an individual docs page e.g. overview/what-is-new\n * @returns HTML content of the docs page as string\n * @throws Throws error when the page is not found.\n */\n async getEntityDocs(\n entityId: CompoundEntityRef,\n path: string,\n ): Promise<string> {\n const { kind, namespace, name } = entityId;\n\n const storageUrl = await this.getStorageUrl();\n const url = `${storageUrl}/${namespace}/${kind}/${name}/${path}`;\n\n const request = await this.fetchApi.fetch(\n `${url.endsWith('/') ? url : `${url}/`}index.html`,\n );\n\n let errorMessage = '';\n switch (request.status) {\n case 404:\n errorMessage = 'Page not found. ';\n // path is empty for the home page of an entity's docs site\n if (!path) {\n errorMessage +=\n 'This could be because there is no index.md file in the root of the docs directory of this repository.';\n }\n throw new NotFoundError(errorMessage);\n case 500:\n errorMessage =\n 'Could not generate documentation or an error in the TechDocs backend. ';\n throw new Error(errorMessage);\n default:\n // Do nothing\n break;\n }\n\n return request.text();\n }\n\n /**\n * Check if docs are on the latest version and trigger rebuild if not\n *\n * @param entityId - Object containing entity data like name, namespace, etc.\n * @param logHandler - Callback to receive log messages from the build process\n * @returns Whether documents are currently synchronized to newest version\n * @throws Throws error on error from sync endpoint in TechDocs Backend\n */\n async syncEntityDocs(\n entityId: CompoundEntityRef,\n logHandler: (line: string) => void = () => {},\n ): Promise<SyncResult> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const url = `${apiOrigin}/sync/${namespace}/${kind}/${name}`;\n\n return new Promise((resolve, reject) => {\n const ctrl = new AbortController();\n fetchEventSource(url, {\n fetch: this.fetchApi.fetch,\n signal: ctrl.signal,\n onmessage(e: any) {\n if (e.event === 'log') {\n if (e.data) {\n logHandler(JSON.parse(e.data));\n }\n } else if (e.event === 'finish') {\n let updated: boolean = false;\n if (e.data) {\n ({ updated } = JSON.parse(e.data));\n }\n resolve(updated ? 'updated' : 'cached');\n } else if (e.event === 'error') {\n reject(new Error(e.data));\n }\n },\n onerror(err) {\n ctrl.abort();\n reject(err);\n throw err; // rethrow to stop the operation\n },\n });\n });\n }\n\n async getBaseUrl(\n oldBaseUrl: string,\n entityId: CompoundEntityRef,\n path: string,\n ): Promise<string> {\n const { kind, namespace, name } = entityId;\n\n const apiOrigin = await this.getApiOrigin();\n const newBaseUrl = `${apiOrigin}/static/docs/${namespace}/${kind}/${name}/${path}`;\n\n return new URL(\n oldBaseUrl,\n newBaseUrl.endsWith('/') ? newBaseUrl : `${newBaseUrl}/`,\n ).toString();\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/helpers.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.esm.js","sources":["../src/helpers.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Config } from '@backstage/config';\n\n// Lower-case entity triplets by default, but allow override.\nexport function toLowerMaybe(str: string, config: Config) {\n return config.getOptionalBoolean(\n 'techdocs.legacyUseCaseSensitiveTripletPaths',\n )\n ? str\n : str.toLowerCase();\n}\n"],"names":[],"mappings":"AAmBO,SAAS,YAAA,CAAa,KAAa,MAAA,EAAgB;AACxD,EAAA,OAAO,MAAA,CAAO,kBAAA;AAAA,IACZ;AAAA,GACF,GACI,GAAA,GACA,GAAA,CAAI,WAAA,EAAY;AACtB
|
|
1
|
+
{"version":3,"file":"helpers.esm.js","sources":["../src/helpers.ts"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Config } from '@backstage/config';\n\n// Lower-case entity triplets by default, but allow override.\nexport function toLowerMaybe(str: string, config: Config) {\n return config.getOptionalBoolean(\n 'techdocs.legacyUseCaseSensitiveTripletPaths',\n )\n ? str\n : str.toLowerCase();\n}\n"],"names":[],"mappings":"AAmBO,SAAS,YAAA,CAAa,KAAa,MAAA,EAAgB;AACxD,EAAA,OAAO,MAAA,CAAO,kBAAA;AAAA,IACZ;AAAA,GACF,GACI,GAAA,GACA,GAAA,CAAI,WAAA,EAAY;AACtB;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultTechDocsHome.esm.js","sources":["../../../src/home/components/DefaultTechDocsHome.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactNode, FC } from 'react';\nimport {\n Content,\n ContentHeader,\n SupportButton,\n} from '@backstage/core-components';\nimport {\n CatalogFilterLayout,\n EntityListProvider,\n EntityOwnerPicker,\n EntityTagPicker,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { techdocsTranslationRef } from '../../translation';\nimport { TechDocsPageWrapper } from './TechDocsPageWrapper';\nimport { TechDocsPicker } from './TechDocsPicker';\nimport { EntityListDocsTable } from './Tables';\nimport { TechDocsIndexPageProps } from './TechDocsIndexPage';\n\n/**\n * Props for {@link DefaultTechDocsHome}\n *\n * @public\n * @deprecated Please use `TechDocsIndexPageProps` instead.\n */\nexport type DefaultTechDocsHomeProps = TechDocsIndexPageProps;\n\n/**\n * Component which renders a default documentation landing page.\n *\n * @public\n */\nexport const DefaultTechDocsHome = (props: TechDocsIndexPageProps) => {\n const {\n initialFilter = 'owned',\n columns,\n actions,\n ownerPickerMode,\n pagination,\n options,\n PageWrapper,\n CustomHeader,\n } = props;\n const { t } = useTranslationRef(techdocsTranslationRef);\n const Wrapper: FC<{\n children: ReactNode;\n }> = PageWrapper ? PageWrapper : TechDocsPageWrapper;\n const Header: FC =\n CustomHeader ||\n (() => (\n <ContentHeader title=\"\">\n <SupportButton>{t('home.supportButton')}</SupportButton>\n </ContentHeader>\n ));\n return (\n <Wrapper>\n <Content>\n <Header />\n <EntityListProvider pagination={pagination}>\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <TechDocsPicker />\n <UserListPicker initialFilter={initialFilter} />\n <EntityOwnerPicker mode={ownerPickerMode} />\n <EntityTagPicker />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <EntityListDocsTable\n actions={actions}\n columns={columns}\n options={options}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n </EntityListProvider>\n </Content>\n </Wrapper>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAiDO,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAkC;AACpE,EAAA,MAAM;AAAA,IACJ,aAAA,GAAgB,OAAA;AAAA,IAChB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,sBAAsB,CAAA;AACtD,EAAA,MAAM,OAAA,GAED,cAAc,WAAA,GAAc,mBAAA;AACjC,EAAA,MAAM,MAAA,GACJ,YAAA,KACC,sBACC,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAM,EAAA,EACnB,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAe,QAAA,EAAA,CAAA,CAAE,oBAAoB,CAAA,EAAE,CAAA,EAC1C,CAAA,CAAA;AAEJ,EAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,oBACR,GAAA,CAAC,kBAAA,EAAA,EAAmB,UAAA,EAClB,QAAA,kBAAA,IAAA,CAAC,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,mBAAA,CAAoB,SAApB,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,CAAA;AAAA,wBAChB,GAAA,CAAC,kBAAe,aAAA,EAA8B,CAAA;AAAA,wBAC9C,GAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,eAAA,EAAiB,CAAA;AAAA,4BACzC,eAAA,EAAA,EAAgB;AAAA,OAAA,EACnB,CAAA;AAAA,sBACA,GAAA,CAAC,mBAAA,CAAoB,OAAA,EAApB,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ
|
|
1
|
+
{"version":3,"file":"DefaultTechDocsHome.esm.js","sources":["../../../src/home/components/DefaultTechDocsHome.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ReactNode, FC } from 'react';\nimport {\n Content,\n ContentHeader,\n SupportButton,\n} from '@backstage/core-components';\nimport {\n CatalogFilterLayout,\n EntityListProvider,\n EntityOwnerPicker,\n EntityTagPicker,\n UserListPicker,\n} from '@backstage/plugin-catalog-react';\nimport { useTranslationRef } from '@backstage/core-plugin-api/alpha';\nimport { techdocsTranslationRef } from '../../translation';\nimport { TechDocsPageWrapper } from './TechDocsPageWrapper';\nimport { TechDocsPicker } from './TechDocsPicker';\nimport { EntityListDocsTable } from './Tables';\nimport { TechDocsIndexPageProps } from './TechDocsIndexPage';\n\n/**\n * Props for {@link DefaultTechDocsHome}\n *\n * @public\n * @deprecated Please use `TechDocsIndexPageProps` instead.\n */\nexport type DefaultTechDocsHomeProps = TechDocsIndexPageProps;\n\n/**\n * Component which renders a default documentation landing page.\n *\n * @public\n */\nexport const DefaultTechDocsHome = (props: TechDocsIndexPageProps) => {\n const {\n initialFilter = 'owned',\n columns,\n actions,\n ownerPickerMode,\n pagination,\n options,\n PageWrapper,\n CustomHeader,\n } = props;\n const { t } = useTranslationRef(techdocsTranslationRef);\n const Wrapper: FC<{\n children: ReactNode;\n }> = PageWrapper ? PageWrapper : TechDocsPageWrapper;\n const Header: FC =\n CustomHeader ||\n (() => (\n <ContentHeader title=\"\">\n <SupportButton>{t('home.supportButton')}</SupportButton>\n </ContentHeader>\n ));\n return (\n <Wrapper>\n <Content>\n <Header />\n <EntityListProvider pagination={pagination}>\n <CatalogFilterLayout>\n <CatalogFilterLayout.Filters>\n <TechDocsPicker />\n <UserListPicker initialFilter={initialFilter} />\n <EntityOwnerPicker mode={ownerPickerMode} />\n <EntityTagPicker />\n </CatalogFilterLayout.Filters>\n <CatalogFilterLayout.Content>\n <EntityListDocsTable\n actions={actions}\n columns={columns}\n options={options}\n />\n </CatalogFilterLayout.Content>\n </CatalogFilterLayout>\n </EntityListProvider>\n </Content>\n </Wrapper>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;AAiDO,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAAkC;AACpE,EAAA,MAAM;AAAA,IACJ,aAAA,GAAgB,OAAA;AAAA,IAChB,OAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,EAAE,CAAA,EAAE,GAAI,iBAAA,CAAkB,sBAAsB,CAAA;AACtD,EAAA,MAAM,OAAA,GAED,cAAc,WAAA,GAAc,mBAAA;AACjC,EAAA,MAAM,MAAA,GACJ,YAAA,KACC,sBACC,GAAA,CAAC,aAAA,EAAA,EAAc,KAAA,EAAM,EAAA,EACnB,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAe,QAAA,EAAA,CAAA,CAAE,oBAAoB,CAAA,EAAE,CAAA,EAC1C,CAAA,CAAA;AAEJ,EAAA,uBACE,GAAA,CAAC,OAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,MAAA,EAAA,EAAO,CAAA;AAAA,oBACR,GAAA,CAAC,kBAAA,EAAA,EAAmB,UAAA,EAClB,QAAA,kBAAA,IAAA,CAAC,mBAAA,EAAA,EACC,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,mBAAA,CAAoB,SAApB,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,CAAA;AAAA,wBAChB,GAAA,CAAC,kBAAe,aAAA,EAA8B,CAAA;AAAA,wBAC9C,GAAA,CAAC,iBAAA,EAAA,EAAkB,IAAA,EAAM,eAAA,EAAiB,CAAA;AAAA,4BACzC,eAAA,EAAA,EAAgB;AAAA,OAAA,EACnB,CAAA;AAAA,sBACA,GAAA,CAAC,mBAAA,CAAoB,OAAA,EAApB,EACC,QAAA,kBAAA,GAAA;AAAA,QAAC,mBAAA;AAAA,QAAA;AAAA,UACC,OAAA;AAAA,UACA,OAAA;AAAA,UACA;AAAA;AAAA,OACF,EACF;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA,EACF,CAAA;AAEJ;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocsCardGrid.esm.js","sources":["../../../../src/home/components/Grids/DocsCardGrid.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { rootDocsRouteRef } from '../../../routes';\nimport { toLowerMaybe } from '../../../helpers';\nimport { Entity } from '@backstage/catalog-model';\nimport { useApi, useRouteRef, configApiRef } from '@backstage/core-plugin-api';\nimport {\n LinkButton,\n ItemCardGrid,\n ItemCardHeader,\n} from '@backstage/core-components';\nimport { EntityDisplayName } from '@backstage/plugin-catalog-react';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\n\n/**\n * Props for {@link DocsCardGrid}\n *\n * @public\n */\nexport type DocsCardGridProps = {\n entities: Entity[] | undefined;\n};\n\n/**\n * Component which accepts a list of entities and renders a item card for each entity\n *\n * @public\n */\nexport const DocsCardGrid = (props: DocsCardGridProps) => {\n const { entities } = props;\n const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef);\n const config = useApi(configApiRef);\n if (!entities) return null;\n return (\n <ItemCardGrid data-testid=\"docs-explore\">\n {!entities?.length\n ? null\n : entities.map((entity, index: number) => (\n <Card key={index}>\n <CardMedia>\n <ItemCardHeader\n title={<EntityDisplayName entityRef={entity} />}\n />\n </CardMedia>\n <CardContent>{entity.metadata.description}</CardContent>\n <CardActions>\n <LinkButton\n to={getRouteToReaderPageFor({\n namespace: toLowerMaybe(\n entity.metadata.namespace ?? 'default',\n config,\n ),\n kind: toLowerMaybe(entity.kind, config),\n name: toLowerMaybe(entity.metadata.name, config),\n })}\n color=\"primary\"\n data-testid=\"read_docs\"\n >\n Read Docs\n </LinkButton>\n </CardActions>\n </Card>\n ))}\n </ItemCardGrid>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AA6CO,MAAM,YAAA,GAAe,CAAC,KAAA,KAA6B;AACxD,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,uBAAA,GAA0B,YAAY,gBAAgB,CAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,OAAO,YAAY,CAAA;AAClC,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,aAAA,EAAY,cAAA,EACvB,WAAC,QAAA,EAAU,MAAA,GACR,IAAA,GACA,QAAA,CAAS,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,0BACnB,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,kBAAO,GAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAW,MAAA,EAAQ;AAAA;AAAA,KAC/C,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,MAAA,CAAO,QAAA,CAAS,WAAA,EAAY,CAAA;AAAA,wBACzC,WAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAI,uBAAA,CAAwB;AAAA,UAC1B,SAAA,EAAW,YAAA;AAAA,YACT,MAAA,CAAO,SAAS,SAAA,IAAa,SAAA;AAAA,YAC7B;AAAA,WACF;AAAA,UACA,IAAA,EAAM,YAAA,CAAa,MAAA,CAAO,IAAA,EAAM,MAAM,CAAA;AAAA,UACtC,IAAA,EAAM,YAAA,CAAa,MAAA,CAAO,QAAA,CAAS,MAAM,MAAM;AAAA,SAChD,CAAA;AAAA,QACD,KAAA,EAAM,SAAA;AAAA,QACN,aAAA,EAAY,WAAA;AAAA,QACb,QAAA,EAAA;AAAA;AAAA,KAED,EACF;AAAA,GAAA,EAAA,EAtBS,KAuBX,CACD,CAAA,EACP,CAAA;AAEJ
|
|
1
|
+
{"version":3,"file":"DocsCardGrid.esm.js","sources":["../../../../src/home/components/Grids/DocsCardGrid.tsx"],"sourcesContent":["/*\n * Copyright 2021 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { rootDocsRouteRef } from '../../../routes';\nimport { toLowerMaybe } from '../../../helpers';\nimport { Entity } from '@backstage/catalog-model';\nimport { useApi, useRouteRef, configApiRef } from '@backstage/core-plugin-api';\nimport {\n LinkButton,\n ItemCardGrid,\n ItemCardHeader,\n} from '@backstage/core-components';\nimport { EntityDisplayName } from '@backstage/plugin-catalog-react';\nimport Card from '@material-ui/core/Card';\nimport CardActions from '@material-ui/core/CardActions';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardMedia from '@material-ui/core/CardMedia';\n\n/**\n * Props for {@link DocsCardGrid}\n *\n * @public\n */\nexport type DocsCardGridProps = {\n entities: Entity[] | undefined;\n};\n\n/**\n * Component which accepts a list of entities and renders a item card for each entity\n *\n * @public\n */\nexport const DocsCardGrid = (props: DocsCardGridProps) => {\n const { entities } = props;\n const getRouteToReaderPageFor = useRouteRef(rootDocsRouteRef);\n const config = useApi(configApiRef);\n if (!entities) return null;\n return (\n <ItemCardGrid data-testid=\"docs-explore\">\n {!entities?.length\n ? null\n : entities.map((entity, index: number) => (\n <Card key={index}>\n <CardMedia>\n <ItemCardHeader\n title={<EntityDisplayName entityRef={entity} />}\n />\n </CardMedia>\n <CardContent>{entity.metadata.description}</CardContent>\n <CardActions>\n <LinkButton\n to={getRouteToReaderPageFor({\n namespace: toLowerMaybe(\n entity.metadata.namespace ?? 'default',\n config,\n ),\n kind: toLowerMaybe(entity.kind, config),\n name: toLowerMaybe(entity.metadata.name, config),\n })}\n color=\"primary\"\n data-testid=\"read_docs\"\n >\n Read Docs\n </LinkButton>\n </CardActions>\n </Card>\n ))}\n </ItemCardGrid>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AA6CO,MAAM,YAAA,GAAe,CAAC,KAAA,KAA6B;AACxD,EAAA,MAAM,EAAE,UAAS,GAAI,KAAA;AACrB,EAAA,MAAM,uBAAA,GAA0B,YAAY,gBAAgB,CAAA;AAC5D,EAAA,MAAM,MAAA,GAAS,OAAO,YAAY,CAAA;AAClC,EAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,EAAA,uBACE,GAAA,CAAC,YAAA,EAAA,EAAa,aAAA,EAAY,cAAA,EACvB,WAAC,QAAA,EAAU,MAAA,GACR,IAAA,GACA,QAAA,CAAS,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,0BACnB,IAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,KAAA,kBAAO,GAAA,CAAC,iBAAA,EAAA,EAAkB,SAAA,EAAW,MAAA,EAAQ;AAAA;AAAA,KAC/C,EACF,CAAA;AAAA,oBACA,GAAA,CAAC,WAAA,EAAA,EAAa,QAAA,EAAA,MAAA,CAAO,QAAA,CAAS,WAAA,EAAY,CAAA;AAAA,wBACzC,WAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,IAAI,uBAAA,CAAwB;AAAA,UAC1B,SAAA,EAAW,YAAA;AAAA,YACT,MAAA,CAAO,SAAS,SAAA,IAAa,SAAA;AAAA,YAC7B;AAAA,WACF;AAAA,UACA,IAAA,EAAM,YAAA,CAAa,MAAA,CAAO,IAAA,EAAM,MAAM,CAAA;AAAA,UACtC,IAAA,EAAM,YAAA,CAAa,MAAA,CAAO,QAAA,CAAS,MAAM,MAAM;AAAA,SAChD,CAAA;AAAA,QACD,KAAA,EAAM,SAAA;AAAA,QACN,aAAA,EAAY,WAAA;AAAA,QACb,QAAA,EAAA;AAAA;AAAA,KAED,EACF;AAAA,GAAA,EAAA,EAtBS,KAuBX,CACD,CAAA,EACP,CAAA;AAEJ;;"}
|