@backstage/plugin-techdocs 1.1.1-next.0 → 1.1.1-next.3

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 CHANGED
@@ -1,5 +1,46 @@
1
1
  # @backstage/plugin-techdocs
2
2
 
3
+ ## 1.1.1-next.3
4
+
5
+ ### Patch Changes
6
+
7
+ - cc8ddd0979: revert dependency `event-source-polyfill` to `1.0.25`
8
+ - Updated dependencies
9
+ - @backstage/core-components@0.9.4-next.2
10
+
11
+ ## 1.1.1-next.2
12
+
13
+ ### Patch Changes
14
+
15
+ - 52419be116: Create a menu in the sub header of documentation pages, it is responsible for rendering TechDocs addons that allow users to customize their reading experience.
16
+ - 1af133f779: Updated dependency `event-source-polyfill` to `1.0.26`.
17
+ - 2dcb2c9678: Loading SVGs correctly with `bota` with extended characters
18
+ - 3a74e203a8: Updated search result components to support rendering content with highlighted matched terms
19
+ - Updated dependencies
20
+ - @backstage/core-components@0.9.4-next.1
21
+ - @backstage/plugin-techdocs-react@0.1.1-next.2
22
+ - @backstage/config@1.0.1-next.0
23
+ - @backstage/plugin-search-react@0.2.0-next.2
24
+ - @backstage/plugin-search-common@0.3.4-next.0
25
+ - @backstage/plugin-catalog-react@1.1.0-next.2
26
+ - @backstage/catalog-model@1.0.2-next.0
27
+ - @backstage/core-plugin-api@1.0.2-next.1
28
+ - @backstage/integration@1.2.0-next.1
29
+ - @backstage/integration-react@1.1.0-next.2
30
+
31
+ ## 1.1.1-next.1
32
+
33
+ ### Patch Changes
34
+
35
+ - 52fddad92d: The `TechDocsStorageApi` and its associated ref are now exported by `@backstage/plugin-techdocs-react`. The API interface, ref, and types are now deprecated in `@backstage/plugin-techdocs` and will be removed in a future release.
36
+ - Updated dependencies
37
+ - @backstage/core-components@0.9.4-next.0
38
+ - @backstage/core-plugin-api@1.0.2-next.0
39
+ - @backstage/plugin-catalog-react@1.1.0-next.1
40
+ - @backstage/plugin-search-react@0.2.0-next.1
41
+ - @backstage/plugin-techdocs-react@0.1.1-next.1
42
+ - @backstage/integration-react@1.1.0-next.1
43
+
3
44
  ## 1.1.1-next.0
4
45
 
5
46
  ### Patch Changes
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
2
2
  import useAsync from 'react-use/lib/useAsync';
3
3
  import { makeStyles } from '@material-ui/core';
4
4
  import { catalogApiRef, CATALOG_FILTER_EXISTS, useEntityOwnership } from '@backstage/plugin-catalog-react';
5
- import { T as TechDocsPageWrapper, D as DocsTable, a as DocsCardGrid } from './index-3d3f8718.esm.js';
5
+ import { T as TechDocsPageWrapper, D as DocsTable, a as DocsCardGrid } from './index-c537b1f3.esm.js';
6
6
  import { Content, Progress, WarningPanel, CodeSnippet, HeaderTabs, ContentHeader, SupportButton } from '@backstage/core-components';
7
7
  import { useApi } from '@backstage/core-plugin-api';
8
8
  import '@backstage/errors';
@@ -11,7 +11,6 @@ import 'react-router-dom';
11
11
  import '@backstage/plugin-techdocs-react';
12
12
  import 'jss';
13
13
  import '@material-ui/styles';
14
- import 'react-text-truncate';
15
14
  import '@backstage/plugin-search-react';
16
15
  import '@material-ui/icons/Search';
17
16
  import '@material-ui/lab/Autocomplete';
@@ -31,6 +30,7 @@ import 'dompurify';
31
30
  import 'react-helmet';
32
31
  import '@material-ui/icons/Code';
33
32
  import '@backstage/catalog-model';
33
+ import '@material-ui/icons/Settings';
34
34
  import 'react-use/lib/useCopyToClipboard';
35
35
  import 'lodash';
36
36
  import '@material-ui/icons/Share';
@@ -132,4 +132,4 @@ const TechDocsCustomHome = (props) => {
132
132
  };
133
133
 
134
134
  export { TechDocsCustomHome };
135
- //# sourceMappingURL=TechDocsCustomHome-7836f59f.esm.js.map
135
+ //# sourceMappingURL=TechDocsCustomHome-b77adc6d.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TechDocsCustomHome-7836f59f.esm.js","sources":["../../src/home/components/TechDocsCustomHome.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 React, { useState } from 'react';\nimport useAsync from 'react-use/lib/useAsync';\nimport { makeStyles } from '@material-ui/core';\nimport { CSSProperties } from '@material-ui/styles';\nimport {\n CATALOG_FILTER_EXISTS,\n catalogApiRef,\n CatalogApi,\n useEntityOwnership,\n} from '@backstage/plugin-catalog-react';\nimport { Entity } from '@backstage/catalog-model';\nimport { DocsTable } from './Tables';\nimport { DocsCardGrid } from './Grids';\nimport { TechDocsPageWrapper } from './TechDocsPageWrapper';\n\nimport {\n CodeSnippet,\n Content,\n HeaderTabs,\n Progress,\n WarningPanel,\n SupportButton,\n ContentHeader,\n} from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nconst panels = {\n DocsTable: DocsTable,\n DocsCardGrid: DocsCardGrid,\n};\n\n/**\n * Available panel types\n *\n * @public\n */\nexport type PanelType = 'DocsCardGrid' | 'DocsTable';\n\n/**\n * Type representing a TechDocsCustomHome panel.\n *\n * @public\n */\nexport interface PanelConfig {\n title: string;\n description: string;\n panelType: PanelType;\n panelCSS?: CSSProperties;\n filterPredicate: ((entity: Entity) => boolean) | string;\n}\n\n/**\n * Type representing a TechDocsCustomHome tab.\n *\n * @public\n */\nexport interface TabConfig {\n label: string;\n panels: PanelConfig[];\n}\n\n/**\n * Type representing a list of TechDocsCustomHome tabs.\n *\n * @public\n */\nexport type TabsConfig = TabConfig[];\n\nconst CustomPanel = ({\n config,\n entities,\n index,\n}: {\n config: PanelConfig;\n entities: Entity[];\n index: number;\n}) => {\n const useStyles = makeStyles({\n panelContainer: {\n marginBottom: '2rem',\n ...(config.panelCSS ? config.panelCSS : {}),\n },\n });\n const classes = useStyles();\n const { loading: loadingOwnership, isOwnedEntity } = useEntityOwnership();\n\n const Panel = panels[config.panelType];\n\n const shownEntities = entities.filter(entity => {\n if (config.filterPredicate === 'ownedByUser') {\n if (loadingOwnership) {\n return false;\n }\n return isOwnedEntity(entity);\n }\n\n return (\n typeof config.filterPredicate === 'function' &&\n config.filterPredicate(entity)\n );\n });\n\n return (\n <>\n <ContentHeader title={config.title} description={config.description}>\n {index === 0 ? (\n <SupportButton>\n Discover documentation in your ecosystem.\n </SupportButton>\n ) : null}\n </ContentHeader>\n <div className={classes.panelContainer}>\n <Panel data-testid=\"techdocs-custom-panel\" entities={shownEntities} />\n </div>\n </>\n );\n};\n\n/**\n * Props for {@link TechDocsCustomHome}\n *\n * @public\n */\nexport type TechDocsCustomHomeProps = {\n tabsConfig: TabsConfig;\n};\n\nexport const TechDocsCustomHome = (props: TechDocsCustomHomeProps) => {\n const { tabsConfig } = props;\n const [selectedTab, setSelectedTab] = useState<number>(0);\n const catalogApi: CatalogApi = useApi(catalogApiRef);\n\n const {\n value: entities,\n loading,\n error,\n } = useAsync(async () => {\n const response = await catalogApi.getEntities({\n filter: {\n 'metadata.annotations.backstage.io/techdocs-ref': CATALOG_FILTER_EXISTS,\n },\n fields: [\n 'apiVersion',\n 'kind',\n 'metadata',\n 'relations',\n 'spec.owner',\n 'spec.type',\n ],\n });\n return response.items.filter((entity: Entity) => {\n return !!entity.metadata.annotations?.['backstage.io/techdocs-ref'];\n });\n });\n\n const currentTabConfig = tabsConfig[selectedTab];\n\n if (loading) {\n return (\n <TechDocsPageWrapper>\n <Content>\n <Progress />\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n if (error) {\n return (\n <TechDocsPageWrapper>\n <Content>\n <WarningPanel\n severity=\"error\"\n title=\"Could not load available documentation.\"\n >\n <CodeSnippet language=\"text\" text={error.toString()} />\n </WarningPanel>\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n return (\n <TechDocsPageWrapper>\n <HeaderTabs\n selectedIndex={selectedTab}\n onChange={index => setSelectedTab(index)}\n tabs={tabsConfig.map(({ label }, index) => ({\n id: index.toString(),\n label,\n }))}\n />\n <Content data-testid=\"techdocs-content\">\n {currentTabConfig.panels.map((config, index) => (\n <CustomPanel\n key={index}\n config={config}\n entities={!!entities ? entities : []}\n index={index}\n />\n ))}\n </Content>\n </TechDocsPageWrapper>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TechDocsCustomHome-b77adc6d.esm.js","sources":["../../src/home/components/TechDocsCustomHome.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 React, { useState } from 'react';\nimport useAsync from 'react-use/lib/useAsync';\nimport { makeStyles } from '@material-ui/core';\nimport { CSSProperties } from '@material-ui/styles';\nimport {\n CATALOG_FILTER_EXISTS,\n catalogApiRef,\n CatalogApi,\n useEntityOwnership,\n} from '@backstage/plugin-catalog-react';\nimport { Entity } from '@backstage/catalog-model';\nimport { DocsTable } from './Tables';\nimport { DocsCardGrid } from './Grids';\nimport { TechDocsPageWrapper } from './TechDocsPageWrapper';\n\nimport {\n CodeSnippet,\n Content,\n HeaderTabs,\n Progress,\n WarningPanel,\n SupportButton,\n ContentHeader,\n} from '@backstage/core-components';\nimport { useApi } from '@backstage/core-plugin-api';\n\nconst panels = {\n DocsTable: DocsTable,\n DocsCardGrid: DocsCardGrid,\n};\n\n/**\n * Available panel types\n *\n * @public\n */\nexport type PanelType = 'DocsCardGrid' | 'DocsTable';\n\n/**\n * Type representing a TechDocsCustomHome panel.\n *\n * @public\n */\nexport interface PanelConfig {\n title: string;\n description: string;\n panelType: PanelType;\n panelCSS?: CSSProperties;\n filterPredicate: ((entity: Entity) => boolean) | string;\n}\n\n/**\n * Type representing a TechDocsCustomHome tab.\n *\n * @public\n */\nexport interface TabConfig {\n label: string;\n panels: PanelConfig[];\n}\n\n/**\n * Type representing a list of TechDocsCustomHome tabs.\n *\n * @public\n */\nexport type TabsConfig = TabConfig[];\n\nconst CustomPanel = ({\n config,\n entities,\n index,\n}: {\n config: PanelConfig;\n entities: Entity[];\n index: number;\n}) => {\n const useStyles = makeStyles({\n panelContainer: {\n marginBottom: '2rem',\n ...(config.panelCSS ? config.panelCSS : {}),\n },\n });\n const classes = useStyles();\n const { loading: loadingOwnership, isOwnedEntity } = useEntityOwnership();\n\n const Panel = panels[config.panelType];\n\n const shownEntities = entities.filter(entity => {\n if (config.filterPredicate === 'ownedByUser') {\n if (loadingOwnership) {\n return false;\n }\n return isOwnedEntity(entity);\n }\n\n return (\n typeof config.filterPredicate === 'function' &&\n config.filterPredicate(entity)\n );\n });\n\n return (\n <>\n <ContentHeader title={config.title} description={config.description}>\n {index === 0 ? (\n <SupportButton>\n Discover documentation in your ecosystem.\n </SupportButton>\n ) : null}\n </ContentHeader>\n <div className={classes.panelContainer}>\n <Panel data-testid=\"techdocs-custom-panel\" entities={shownEntities} />\n </div>\n </>\n );\n};\n\n/**\n * Props for {@link TechDocsCustomHome}\n *\n * @public\n */\nexport type TechDocsCustomHomeProps = {\n tabsConfig: TabsConfig;\n};\n\nexport const TechDocsCustomHome = (props: TechDocsCustomHomeProps) => {\n const { tabsConfig } = props;\n const [selectedTab, setSelectedTab] = useState<number>(0);\n const catalogApi: CatalogApi = useApi(catalogApiRef);\n\n const {\n value: entities,\n loading,\n error,\n } = useAsync(async () => {\n const response = await catalogApi.getEntities({\n filter: {\n 'metadata.annotations.backstage.io/techdocs-ref': CATALOG_FILTER_EXISTS,\n },\n fields: [\n 'apiVersion',\n 'kind',\n 'metadata',\n 'relations',\n 'spec.owner',\n 'spec.type',\n ],\n });\n return response.items.filter((entity: Entity) => {\n return !!entity.metadata.annotations?.['backstage.io/techdocs-ref'];\n });\n });\n\n const currentTabConfig = tabsConfig[selectedTab];\n\n if (loading) {\n return (\n <TechDocsPageWrapper>\n <Content>\n <Progress />\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n if (error) {\n return (\n <TechDocsPageWrapper>\n <Content>\n <WarningPanel\n severity=\"error\"\n title=\"Could not load available documentation.\"\n >\n <CodeSnippet language=\"text\" text={error.toString()} />\n </WarningPanel>\n </Content>\n </TechDocsPageWrapper>\n );\n }\n\n return (\n <TechDocsPageWrapper>\n <HeaderTabs\n selectedIndex={selectedTab}\n onChange={index => setSelectedTab(index)}\n tabs={tabsConfig.map(({ label }, index) => ({\n id: index.toString(),\n label,\n }))}\n />\n <Content data-testid=\"techdocs-content\">\n {currentTabConfig.panels.map((config, index) => (\n <CustomPanel\n key={index}\n config={config}\n entities={!!entities ? entities : []}\n index={index}\n />\n ))}\n </Content>\n </TechDocsPageWrapper>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { c as TechDocsReaderLayout, b as TechDocsReaderPage } from './index-3d3f8718.esm.js';
1
+ export { c as TechDocsReaderLayout, b as TechDocsReaderPage } from './index-c537b1f3.esm.js';
2
2
  import '@backstage/core-plugin-api';
3
3
  import '@backstage/errors';
4
4
  import 'event-source-polyfill';
@@ -9,7 +9,6 @@ import '@backstage/plugin-techdocs-react';
9
9
  import 'jss';
10
10
  import '@material-ui/core';
11
11
  import '@material-ui/styles';
12
- import 'react-text-truncate';
13
12
  import '@backstage/plugin-search-react';
14
13
  import '@material-ui/icons/Search';
15
14
  import '@material-ui/lab/Autocomplete';
@@ -31,9 +30,10 @@ import 'react-helmet';
31
30
  import '@material-ui/icons/Code';
32
31
  import '@backstage/plugin-catalog-react';
33
32
  import '@backstage/catalog-model';
33
+ import '@material-ui/icons/Settings';
34
34
  import 'react-use/lib/useCopyToClipboard';
35
35
  import 'lodash';
36
36
  import '@material-ui/icons/Share';
37
37
  import '@material-ui/icons/Star';
38
38
  import '@material-ui/icons/StarBorder';
39
- //# sourceMappingURL=index-28e41621.esm.js.map
39
+ //# sourceMappingURL=index-52f21300.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-52f21300.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -4,12 +4,11 @@ import { EventSourcePolyfill } from 'event-source-polyfill';
4
4
  import React, { useState, useEffect, useReducer, useRef, useMemo, createContext, useContext, useCallback, Children } from 'react';
5
5
  import { useParams, useNavigate as useNavigate$1, useOutlet, Routes, Route } from 'react-router-dom';
6
6
  import { Link, LogViewer, ErrorPage, Progress, SidebarPinStateContext, Content, HeaderLabel, Header, Page, ItemCardGrid, ItemCardHeader, Button as Button$1, WarningPanel, CodeSnippet, SubvalueCell, Table, EmptyState, PageWithHeader, ContentHeader, SupportButton, MissingAnnotationEmptyState } from '@backstage/core-components';
7
- import { useTechDocsReaderPage, useTechDocsAddons, TechDocsAddonLocations, TECHDOCS_ADDONS_WRAPPER_KEY, TechDocsReaderPageProvider } from '@backstage/plugin-techdocs-react';
7
+ import { techdocsStorageApiRef as techdocsStorageApiRef$1, useTechDocsReaderPage, useTechDocsAddons, TechDocsAddonLocations, TECHDOCS_ADDONS_WRAPPER_KEY, TechDocsReaderPageProvider, techdocsApiRef as techdocsApiRef$1 } from '@backstage/plugin-techdocs-react';
8
8
  import { create } from 'jss';
9
- import { makeStyles, ListItemText, ListItem, Divider, TextField, InputAdornment, IconButton, CircularProgress, createStyles, Button, Drawer, Grid, Typography, withStyles, Tooltip, ThemeProvider, SvgIcon, useTheme, Portal, Toolbar, Box, Card, CardMedia, CardContent, CardActions } from '@material-ui/core';
9
+ import { makeStyles, ListItemText, ListItem, Divider, TextField, InputAdornment, IconButton, CircularProgress, createStyles, Button, Drawer, Grid, Typography, withStyles, Tooltip, ThemeProvider, SvgIcon, useTheme, Portal, Toolbar, Box, Menu, Card, CardMedia, CardContent, CardActions } from '@material-ui/core';
10
10
  import { jssPreset, StylesProvider, withStyles as withStyles$1 } from '@material-ui/styles';
11
- import TextTruncate from 'react-text-truncate';
12
- import { SearchContextProvider, useSearch } from '@backstage/plugin-search-react';
11
+ import { HighlightedSearchResultText, SearchContextProvider, useSearch } from '@backstage/plugin-search-react';
13
12
  import SearchIcon from '@material-ui/icons/Search';
14
13
  import Autocomplete from '@material-ui/lab/Autocomplete';
15
14
  import { useNavigate, useOutlet as useOutlet$1 } from 'react-router';
@@ -30,6 +29,7 @@ import Helmet from 'react-helmet';
30
29
  import CodeIcon from '@material-ui/icons/Code';
31
30
  import { getEntityRelations, EntityRefLink, EntityRefLinks, useEntityList, humanizeEntityRef, useStarredEntities, CATALOG_FILTER_EXISTS, EntityListProvider, CatalogFilterLayout, UserListPicker, EntityOwnerPicker, EntityTagPicker, useEntity } from '@backstage/plugin-catalog-react';
32
31
  import { RELATION_OWNED_BY, getCompoundEntityRef } from '@backstage/catalog-model';
32
+ import SettingsIcon from '@material-ui/icons/Settings';
33
33
  import useCopyToClipboard from 'react-use/lib/useCopyToClipboard';
34
34
  import { capitalize } from 'lodash';
35
35
  import ShareIcon from '@material-ui/icons/Share';
@@ -165,6 +165,7 @@ const useStyles$4 = makeStyles({
165
165
  const TechDocsSearchResultListItem = (props) => {
166
166
  const {
167
167
  result,
168
+ highlight,
168
169
  lineClamp = 5,
169
170
  asListItem = true,
170
171
  asLink = true,
@@ -172,17 +173,37 @@ const TechDocsSearchResultListItem = (props) => {
172
173
  } = props;
173
174
  const classes = useStyles$4();
174
175
  const TextItem = () => {
175
- var _a;
176
+ const resultTitle = (highlight == null ? void 0 : highlight.fields.title) ? /* @__PURE__ */ React.createElement(HighlightedSearchResultText, {
177
+ text: highlight.fields.title,
178
+ preTag: highlight.preTag,
179
+ postTag: highlight.postTag
180
+ }) : result.title;
181
+ const entityTitle = (highlight == null ? void 0 : highlight.fields.entityTitle) ? /* @__PURE__ */ React.createElement(HighlightedSearchResultText, {
182
+ text: highlight.fields.entityTitle,
183
+ preTag: highlight.preTag,
184
+ postTag: highlight.postTag
185
+ }) : result.entityTitle;
186
+ const resultName = (highlight == null ? void 0 : highlight.fields.name) ? /* @__PURE__ */ React.createElement(HighlightedSearchResultText, {
187
+ text: highlight.fields.name,
188
+ preTag: highlight.preTag,
189
+ postTag: highlight.postTag
190
+ }) : result.name;
176
191
  return /* @__PURE__ */ React.createElement(ListItemText, {
177
192
  className: classes.itemText,
178
193
  primaryTypographyProps: { variant: "h6" },
179
- primary: title ? title : `${result.title} | ${(_a = result.entityTitle) != null ? _a : result.name} docs`,
180
- secondary: /* @__PURE__ */ React.createElement(TextTruncate, {
181
- line: lineClamp,
182
- truncateText: "\u2026",
183
- text: result.text,
184
- element: "span"
185
- })
194
+ primary: title ? title : /* @__PURE__ */ React.createElement(React.Fragment, null, resultTitle, " | ", entityTitle != null ? entityTitle : resultName, " docs"),
195
+ secondary: /* @__PURE__ */ React.createElement("span", {
196
+ style: {
197
+ display: "-webkit-box",
198
+ WebkitBoxOrient: "vertical",
199
+ WebkitLineClamp: lineClamp,
200
+ overflow: "hidden"
201
+ }
202
+ }, (highlight == null ? void 0 : highlight.fields.text) ? /* @__PURE__ */ React.createElement(HighlightedSearchResultText, {
203
+ text: highlight.fields.text,
204
+ preTag: highlight.preTag,
205
+ postTag: highlight.postTag
206
+ }) : result.text)
186
207
  });
187
208
  };
188
209
  const LinkWrapper = ({ children }) => asLink ? /* @__PURE__ */ React.createElement(Link, {
@@ -269,12 +290,13 @@ const TechDocsSearchBar = (props) => {
269
290
  noOptionsText: "No results found",
270
291
  value: null,
271
292
  options,
272
- renderOption: ({ document }) => /* @__PURE__ */ React.createElement(TechDocsSearchResultListItem, {
293
+ renderOption: ({ document, highlight }) => /* @__PURE__ */ React.createElement(TechDocsSearchResultListItem, {
273
294
  result: document,
274
295
  lineClamp: 3,
275
296
  asListItem: false,
276
297
  asLink: false,
277
- title: document.title
298
+ title: document.title,
299
+ highlight
278
300
  }),
279
301
  loading,
280
302
  renderInput: (params) => /* @__PURE__ */ React.createElement(TextField, {
@@ -550,7 +572,7 @@ function useReaderState(kind, namespace, name, path) {
550
572
  contentLoading: true,
551
573
  buildLog: []
552
574
  });
553
- const techdocsStorageApi = useApi(techdocsStorageApiRef);
575
+ const techdocsStorageApi = useApi(techdocsStorageApiRef$1);
554
576
  const { retry: contentReload } = useAsyncRetry(async () => {
555
577
  dispatch({ type: "contentLoading" });
556
578
  try {
@@ -664,7 +686,7 @@ const addBaseUrl = ({
664
686
  try {
665
687
  const svg = await fetch(newValue, { credentials: "include" });
666
688
  const svgContent = await svg.text();
667
- elem.setAttribute(attributeName, `data:image/svg+xml;base64,${btoa(svgContent)}`);
689
+ elem.setAttribute(attributeName, `data:image/svg+xml;base64,${btoa(unescape(encodeURIComponent(svgContent)))}`);
668
690
  } catch (e) {
669
691
  elem.setAttribute("alt", `Error: ${elemAttribute}`);
670
692
  }
@@ -687,6 +709,7 @@ const addBaseUrl = ({
687
709
 
688
710
  const addGitFeedbackLink = (scmIntegrationsApi) => {
689
711
  return (dom) => {
712
+ var _a;
690
713
  const sourceAnchor = dom.querySelector('[title="Edit this page"]');
691
714
  if (!sourceAnchor || !sourceAnchor.href) {
692
715
  return dom;
@@ -696,7 +719,7 @@ const addGitFeedbackLink = (scmIntegrationsApi) => {
696
719
  if ((integration == null ? void 0 : integration.type) !== "github" && (integration == null ? void 0 : integration.type) !== "gitlab") {
697
720
  return dom;
698
721
  }
699
- const title = dom.querySelector("article>h1").childNodes[0].textContent;
722
+ const title = ((_a = dom.querySelector("article>h1")) == null ? void 0 : _a.childNodes[0].textContent) || "";
700
723
  const issueTitle = encodeURIComponent(`Documentation Feedback: ${title}`);
701
724
  const issueDesc = encodeURIComponent(`Page source:
702
725
  ${sourceAnchor.href}
@@ -982,7 +1005,7 @@ const headings = ["h1", "h2", "h3", "h4", "h5", "h6"];
982
1005
  const useTechDocsReaderDom = (entityRef) => {
983
1006
  const navigate = useNavigate$1();
984
1007
  const theme = useTheme();
985
- const techdocsStorageApi = useApi(techdocsStorageApiRef);
1008
+ const techdocsStorageApi = useApi(techdocsStorageApiRef$1);
986
1009
  const scmIntegrationsApi = useApi(scmIntegrationsApiRef);
987
1010
  const techdocsSanitizer = useApi(configApiRef);
988
1011
  const { namespace, kind, name } = entityRef;
@@ -1783,24 +1806,46 @@ const TechDocsReaderPageSubheader = ({
1783
1806
  toolbarProps
1784
1807
  }) => {
1785
1808
  const classes = useStyles();
1809
+ const [anchorEl, setAnchorEl] = useState(null);
1810
+ const handleClick = useCallback((event) => {
1811
+ setAnchorEl(event.currentTarget);
1812
+ }, []);
1813
+ const handleClose = useCallback(() => {
1814
+ setAnchorEl(null);
1815
+ }, []);
1786
1816
  const {
1787
1817
  entityMetadata: { value: entityMetadata, loading: entityMetadataLoading }
1788
1818
  } = useTechDocsReaderPage();
1789
1819
  const addons = useTechDocsAddons();
1790
1820
  const subheaderAddons = addons.renderComponentsByLocation(TechDocsAddonLocations.Subheader);
1791
- if (!subheaderAddons)
1821
+ const settingsAddons = addons.renderComponentsByLocation(TechDocsAddonLocations.Settings);
1822
+ if (!subheaderAddons && !settingsAddons)
1792
1823
  return null;
1793
1824
  if (entityMetadataLoading === false && !entityMetadata)
1794
1825
  return null;
1795
1826
  return /* @__PURE__ */ React.createElement(Toolbar, {
1796
1827
  classes,
1797
1828
  ...toolbarProps
1798
- }, subheaderAddons && /* @__PURE__ */ React.createElement(Box, {
1829
+ }, /* @__PURE__ */ React.createElement(Box, {
1799
1830
  display: "flex",
1800
1831
  justifyContent: "flex-end",
1801
1832
  width: "100%",
1802
1833
  flexWrap: "wrap"
1803
- }, subheaderAddons));
1834
+ }, subheaderAddons, settingsAddons ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Tooltip, {
1835
+ title: "Settings"
1836
+ }, /* @__PURE__ */ React.createElement(IconButton, {
1837
+ "aria-controls": "tech-docs-reader-page-settings",
1838
+ "aria-haspopup": "true",
1839
+ onClick: handleClick
1840
+ }, /* @__PURE__ */ React.createElement(SettingsIcon, null))), /* @__PURE__ */ React.createElement(Menu, {
1841
+ id: "tech-docs-reader-page-settings",
1842
+ getContentAnchorEl: null,
1843
+ anchorEl,
1844
+ anchorOrigin: { vertical: "bottom", horizontal: "right" },
1845
+ open: Boolean(anchorEl),
1846
+ onClose: handleClose,
1847
+ keepMounted: true
1848
+ }, settingsAddons)) : null));
1804
1849
  };
1805
1850
 
1806
1851
  const TechDocsReaderLayout = ({
@@ -2091,7 +2136,7 @@ const techdocsPlugin = createPlugin({
2091
2136
  id: "techdocs",
2092
2137
  apis: [
2093
2138
  createApiFactory({
2094
- api: techdocsStorageApiRef,
2139
+ api: techdocsStorageApiRef$1,
2095
2140
  deps: {
2096
2141
  configApi: configApiRef,
2097
2142
  discoveryApi: discoveryApiRef,
@@ -2106,7 +2151,7 @@ const techdocsPlugin = createPlugin({
2106
2151
  })
2107
2152
  }),
2108
2153
  createApiFactory({
2109
- api: techdocsApiRef,
2154
+ api: techdocsApiRef$1,
2110
2155
  deps: {
2111
2156
  configApi: configApiRef,
2112
2157
  discoveryApi: discoveryApiRef,
@@ -2137,7 +2182,7 @@ const EntityTechdocsContent = techdocsPlugin.provide(createRoutableExtension({
2137
2182
  }));
2138
2183
  const TechDocsCustomHome = techdocsPlugin.provide(createRoutableExtension({
2139
2184
  name: "TechDocsCustomHome",
2140
- component: () => import('./TechDocsCustomHome-7836f59f.esm.js').then((m) => m.TechDocsCustomHome),
2185
+ component: () => import('./TechDocsCustomHome-b77adc6d.esm.js').then((m) => m.TechDocsCustomHome),
2141
2186
  mountPoint: rootRouteRef
2142
2187
  }));
2143
2188
  const TechDocsIndexPage$2 = techdocsPlugin.provide(createRoutableExtension({
@@ -2147,7 +2192,7 @@ const TechDocsIndexPage$2 = techdocsPlugin.provide(createRoutableExtension({
2147
2192
  }));
2148
2193
  const TechDocsReaderPage = techdocsPlugin.provide(createRoutableExtension({
2149
2194
  name: "TechDocsReaderPage",
2150
- component: () => import('./index-28e41621.esm.js').then((m) => m.TechDocsReaderPage),
2195
+ component: () => import('./index-52f21300.esm.js').then((m) => m.TechDocsReaderPage),
2151
2196
  mountPoint: rootDocsRouteRef
2152
2197
  }));
2153
2198
 
@@ -2209,4 +2254,4 @@ var Router$1 = /*#__PURE__*/Object.freeze({
2209
2254
  });
2210
2255
 
2211
2256
  export { isTechDocsAvailable as A, Router as B, EmbeddedDocsRouter as C, DocsTable as D, EntityTechdocsContent as E, Reader as R, TechDocsPageWrapper as T, DocsCardGrid as a, TechDocsReaderPage$1 as b, TechDocsReaderLayout as c, TechDocsCustomHome as d, TechDocsIndexPage$2 as e, TechdocsPage as f, TechDocsReaderPage as g, techdocsStorageApiRef as h, techdocsApiRef as i, TechDocsClient as j, TechDocsStorageClient as k, TechDocsReaderPageHeader as l, TechDocsReaderPageContent as m, TechDocsReaderProvider as n, useTechDocsReaderDom as o, TechDocsReaderPageSubheader as p, TechDocsStateIndicator as q, TechDocsSearchResultListItem as r, TechDocsSearch as s, techdocsPlugin as t, useTechDocsReader as u, EntityListDocsGrid as v, withTechDocsReaderProvider as w, EntityListDocsTable as x, DefaultTechDocsHome as y, TechDocsPicker as z };
2212
- //# sourceMappingURL=index-3d3f8718.esm.js.map
2257
+ //# sourceMappingURL=index-c537b1f3.esm.js.map