@backstage/plugin-search 1.4.7 → 1.4.8

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,22 @@
1
1
  # @backstage/plugin-search
2
2
 
3
+ ## 1.4.8
4
+
5
+ ### Patch Changes
6
+
7
+ - e8f026a: Use ESM exports of react-use library
8
+ - Updated dependencies
9
+ - @backstage/core-components@0.14.2
10
+ - @backstage/plugin-catalog-react@1.11.1
11
+ - @backstage/plugin-search-react@1.7.8
12
+ - @backstage/frontend-plugin-api@0.6.2
13
+ - @backstage/core-compat-api@0.2.2
14
+ - @backstage/core-plugin-api@1.9.1
15
+ - @backstage/errors@1.2.4
16
+ - @backstage/types@1.1.1
17
+ - @backstage/version-bridge@1.0.7
18
+ - @backstage/plugin-search-common@1.2.11
19
+
3
20
  ## 1.4.7
4
21
 
5
22
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-search",
3
- "version": "1.4.7",
3
+ "version": "1.4.8",
4
4
  "main": "../dist/alpha.esm.js",
5
5
  "module": "../dist/alpha.esm.js",
6
6
  "types": "../dist/alpha.d.ts"
package/dist/alpha.esm.js CHANGED
@@ -9,11 +9,11 @@ import { createApiExtension, createPageExtension, createSchemaFromZod, createExt
9
9
  import { catalogApiRef, CATALOG_FILTER_EXISTS } from '@backstage/plugin-catalog-react';
10
10
  import { searchApiRef, SearchContextProvider, useSearch, SearchBar, SearchFilter, SearchPagination, SearchResult, SearchResultPager, DefaultResultListItem } from '@backstage/plugin-search-react';
11
11
  import { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha';
12
- import { d as SearchClient, r as rootRouteRef, U as UrlUpdater, a as SearchType } from './esm/SearchType-17c45ae8.esm.js';
12
+ import { d as SearchClient, r as rootRouteRef, U as UrlUpdater, a as SearchType } from './esm/SearchType-BDK6qMj4.esm.js';
13
13
  import { convertLegacyRouteRef, compatWrapper, convertLegacyRouteRefs } from '@backstage/core-compat-api';
14
14
  import '@backstage/errors';
15
15
  import 'qs';
16
- import 'react-use/lib/usePrevious';
16
+ import 'react-use/esm/usePrevious';
17
17
  import 'react-router-dom';
18
18
  import '@material-ui/core/Checkbox';
19
19
  import '@material-ui/core/Chip';
@@ -22,7 +22,7 @@ import '@material-ui/core/InputLabel';
22
22
  import '@material-ui/core/ListItemText';
23
23
  import '@material-ui/core/MenuItem';
24
24
  import '@material-ui/core/Select';
25
- import 'react-use/lib/useEffectOnce';
25
+ import 'react-use/esm/useEffectOnce';
26
26
  import '@material-ui/core/Accordion';
27
27
  import '@material-ui/core/AccordionSummary';
28
28
  import '@material-ui/core/AccordionDetails';
@@ -35,7 +35,7 @@ import '@material-ui/core/ListItem';
35
35
  import '@material-ui/core/ListItemIcon';
36
36
  import '@material-ui/icons/ExpandMore';
37
37
  import '@material-ui/icons/FontDownload';
38
- import 'react-use/lib/useAsync';
38
+ import 'react-use/esm/useAsync';
39
39
  import '@material-ui/core/Tab';
40
40
  import '@material-ui/core/Tabs';
41
41
 
@@ -3,7 +3,7 @@ import qs from 'qs';
3
3
  import { searchApiRef, SearchContextProvider, useSearch } from '@backstage/plugin-search-react';
4
4
  import { createRouteRef, createPlugin, createApiFactory, discoveryApiRef, identityApiRef, createRoutableExtension, createComponentExtension, useApi } from '@backstage/core-plugin-api';
5
5
  import React, { useEffect, useState, Fragment, cloneElement } from 'react';
6
- import usePrevious from 'react-use/lib/usePrevious';
6
+ import usePrevious from 'react-use/esm/usePrevious';
7
7
  import { useOutlet, useLocation } from 'react-router-dom';
8
8
  import Checkbox from '@material-ui/core/Checkbox';
9
9
  import Chip from '@material-ui/core/Chip';
@@ -13,7 +13,7 @@ import ListItemText from '@material-ui/core/ListItemText';
13
13
  import MenuItem from '@material-ui/core/MenuItem';
14
14
  import Select from '@material-ui/core/Select';
15
15
  import { makeStyles } from '@material-ui/core/styles';
16
- import useEffectOnce from 'react-use/lib/useEffectOnce';
16
+ import useEffectOnce from 'react-use/esm/useEffectOnce';
17
17
  import Accordion from '@material-ui/core/Accordion';
18
18
  import AccordionSummary from '@material-ui/core/AccordionSummary';
19
19
  import AccordionDetails from '@material-ui/core/AccordionDetails';
@@ -26,7 +26,7 @@ import ListItem from '@material-ui/core/ListItem';
26
26
  import ListItemIcon from '@material-ui/core/ListItemIcon';
27
27
  import ExpandMoreIcon from '@material-ui/icons/ExpandMore';
28
28
  import AllIcon from '@material-ui/icons/FontDownload';
29
- import useAsync from 'react-use/lib/useAsync';
29
+ import useAsync from 'react-use/esm/useAsync';
30
30
  import Tab from '@material-ui/core/Tab';
31
31
  import Tabs from '@material-ui/core/Tabs';
32
32
 
@@ -80,7 +80,7 @@ const searchPlugin = createPlugin({
80
80
  const SearchPage$1 = searchPlugin.provide(
81
81
  createRoutableExtension({
82
82
  name: "SearchPage",
83
- component: () => import('./index-fce5b753.esm.js').then((m) => m.SearchPage),
83
+ component: () => import('./index-LeUeJAxm.esm.js').then((m) => m.SearchPage),
84
84
  mountPoint: rootRouteRef
85
85
  })
86
86
  );
@@ -88,7 +88,7 @@ const SidebarSearchModal = searchPlugin.provide(
88
88
  createComponentExtension({
89
89
  name: "SidebarSearchModal",
90
90
  component: {
91
- lazy: () => import('./index-e86f7b58.esm.js').then(
91
+ lazy: () => import('./index-4C-7QFYg.esm.js').then(
92
92
  (m) => m.SidebarSearchModal
93
93
  )
94
94
  }
@@ -98,7 +98,7 @@ const HomePageSearchBar = searchPlugin.provide(
98
98
  createComponentExtension({
99
99
  name: "HomePageSearchBar",
100
100
  component: {
101
- lazy: () => import('./index-56b76802.esm.js').then((m) => m.HomePageSearchBar)
101
+ lazy: () => import('./index-By276Am7.esm.js').then((m) => m.HomePageSearchBar)
102
102
  }
103
103
  })
104
104
  );
@@ -410,4 +410,4 @@ SearchType.Tabs = (props) => {
410
410
  };
411
411
 
412
412
  export { HomePageSearchBar as H, SearchPage as S, UrlUpdater as U, SearchType as a, SearchPage$1 as b, SidebarSearchModal as c, SearchClient as d, rootRouteRef as r, searchPlugin as s };
413
- //# sourceMappingURL=SearchType-17c45ae8.esm.js.map
413
+ //# sourceMappingURL=SearchType-BDK6qMj4.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SearchType-17c45ae8.esm.js","sources":["../../src/apis.ts","../../src/plugin.ts","../../src/components/SearchPage/SearchPage.tsx","../../src/components/SearchType/SearchType.Accordion.tsx","../../src/components/SearchType/SearchType.Tabs.tsx","../../src/components/SearchType/SearchType.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 { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { ResponseError } from '@backstage/errors';\nimport { SearchApi } from '@backstage/plugin-search-react';\nimport { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common';\n\nimport qs from 'qs';\n\nexport class SearchClient implements SearchApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly identityApi: IdentityApi;\n\n constructor(options: {\n discoveryApi: DiscoveryApi;\n identityApi: IdentityApi;\n }) {\n this.discoveryApi = options.discoveryApi;\n this.identityApi = options.identityApi;\n }\n\n async query(query: SearchQuery): Promise<SearchResultSet> {\n const { token } = await this.identityApi.getCredentials();\n const queryString = qs.stringify(query);\n const url = `${await this.discoveryApi.getBaseUrl(\n 'search',\n )}/query?${queryString}`;\n const response = await fetch(url, {\n headers: token ? { Authorization: `Bearer ${token}` } : {},\n });\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return response.json();\n }\n}\n","/*\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 { SearchClient } from './apis';\nimport { searchApiRef } from '@backstage/plugin-search-react';\nimport {\n createApiFactory,\n createPlugin,\n createRouteRef,\n createRoutableExtension,\n discoveryApiRef,\n createComponentExtension,\n identityApiRef,\n} from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'search',\n});\n\n/**\n * @public\n */\nexport const searchPlugin = createPlugin({\n id: 'search',\n apis: [\n createApiFactory({\n api: searchApiRef,\n deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef },\n factory: ({ discoveryApi, identityApi }) => {\n return new SearchClient({ discoveryApi, identityApi });\n },\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/**\n * @public\n */\nexport const SearchPage = searchPlugin.provide(\n createRoutableExtension({\n name: 'SearchPage',\n component: () => import('./components/SearchPage').then(m => m.SearchPage),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const SidebarSearchModal = searchPlugin.provide(\n createComponentExtension({\n name: 'SidebarSearchModal',\n component: {\n lazy: () =>\n import('./components/SidebarSearchModal').then(\n m => m.SidebarSearchModal,\n ),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const HomePageSearchBar = searchPlugin.provide(\n createComponentExtension({\n name: 'HomePageSearchBar',\n component: {\n lazy: () =>\n import('./components/HomePageComponent').then(m => m.HomePageSearchBar),\n },\n }),\n);\n","/*\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 React, { useEffect } from 'react';\nimport usePrevious from 'react-use/lib/usePrevious';\nimport qs from 'qs';\nimport { useLocation, useOutlet } from 'react-router-dom';\nimport {\n SearchContextProvider,\n useSearch,\n} from '@backstage/plugin-search-react';\nimport { JsonObject } from '@backstage/types';\n\nexport const UrlUpdater = () => {\n const location = useLocation();\n const {\n term,\n setTerm,\n types,\n setTypes,\n pageCursor,\n setPageCursor,\n filters,\n setFilters,\n } = useSearch();\n\n const prevQueryParams = usePrevious(location.search);\n useEffect(() => {\n // Only respond to changes to url query params\n if (location.search === prevQueryParams) {\n return;\n }\n\n const query =\n qs.parse(location.search.substring(1), { arrayLimit: 0 }) || {};\n\n if (query.filters) {\n setFilters(query.filters as JsonObject);\n }\n\n if (query.query) {\n setTerm(query.query as string);\n }\n\n if (query.pageCursor) {\n setPageCursor(query.pageCursor as string);\n }\n\n if (query.types) {\n setTypes(query.types as string[]);\n }\n }, [prevQueryParams, location, setTerm, setTypes, setPageCursor, setFilters]);\n\n useEffect(() => {\n const newParams = qs.stringify(\n {\n query: term,\n types,\n pageCursor,\n filters,\n },\n { arrayFormat: 'brackets' },\n );\n const newUrl = `${window.location.pathname}?${newParams}`;\n\n // We directly manipulate window history here in order to not re-render\n // infinitely (state => location => state => etc). The intention of this\n // code is just to ensure the right query/filters are loaded when a user\n // clicks the \"back\" button after clicking a result.\n window.history.replaceState(null, document.title, newUrl);\n }, [term, types, pageCursor, filters]);\n\n return null;\n};\n\n/**\n * @public\n */\nexport const SearchPage = () => {\n const outlet = useOutlet();\n\n return (\n <SearchContextProvider>\n <UrlUpdater />\n {outlet}\n </SearchContextProvider>\n );\n};\n","/*\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, { cloneElement, Fragment, useEffect, useState } from 'react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { searchApiRef, useSearch } from '@backstage/plugin-search-react';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Divider from '@material-ui/core/Divider';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport AllIcon from '@material-ui/icons/FontDownload';\nimport useAsync from 'react-use/lib/useAsync';\n\nconst useStyles = makeStyles(theme => ({\n card: {\n backgroundColor: 'rgba(0, 0, 0, .11)',\n },\n cardContent: {\n paddingTop: theme.spacing(1),\n },\n icon: {\n color: theme.palette.text.primary,\n },\n list: {\n width: '100%',\n },\n listItemIcon: {\n width: '24px',\n height: '24px',\n },\n accordion: {\n backgroundColor: theme.palette.background.paper,\n },\n accordionSummary: {\n minHeight: 'auto',\n '&.Mui-expanded': {\n minHeight: 'auto',\n },\n },\n accordionSummaryContent: {\n margin: theme.spacing(2, 0),\n '&.Mui-expanded': {\n margin: theme.spacing(2, 0),\n },\n },\n accordionDetails: {\n padding: theme.spacing(0, 0, 1),\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeAccordionProps = {\n name: string;\n types: Array<{\n value: string;\n name: string;\n icon: JSX.Element;\n }>;\n defaultValue?: string;\n showCounts?: boolean;\n};\n\nexport const SearchTypeAccordion = (props: SearchTypeAccordionProps) => {\n const classes = useStyles();\n const { filters, setPageCursor, setTypes, term, types } = useSearch();\n const searchApi = useApi(searchApiRef);\n const [expanded, setExpanded] = useState(true);\n const { defaultValue, name, showCounts, types: givenTypes } = props;\n\n const toggleExpanded = () => setExpanded(prevState => !prevState);\n const handleClick = (type: string) => {\n return () => {\n setTypes(type !== '' ? [type] : []);\n setPageCursor(undefined);\n setExpanded(false);\n };\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n icon: <AllIcon />,\n },\n ...givenTypes,\n ];\n const selected = types[0] || '';\n\n const { value: resultCounts } = useAsync(async () => {\n if (!showCounts) {\n return {};\n }\n\n const counts = await Promise.all(\n definedTypes\n .map(t => t.value)\n .map(async type => {\n const { numberOfResults } = await searchApi.query({\n term,\n types: type ? [type] : [],\n filters:\n types.includes(type) || (!types.length && !type) ? filters : {},\n pageLimit: 0,\n });\n\n return [\n type,\n numberOfResults !== undefined\n ? `${\n numberOfResults >= 10000 ? `>10000` : numberOfResults\n } results`\n : ' -- ',\n ];\n }),\n );\n\n return Object.fromEntries(counts);\n }, [filters, showCounts, term, types]);\n\n return (\n <Card className={classes.card}>\n <CardHeader title={name} titleTypographyProps={{ variant: 'overline' }} />\n <CardContent className={classes.cardContent}>\n <Accordion\n className={classes.accordion}\n expanded={expanded}\n onChange={toggleExpanded}\n >\n <AccordionSummary\n classes={{\n root: classes.accordionSummary,\n content: classes.accordionSummaryContent,\n }}\n expandIcon={<ExpandMoreIcon className={classes.icon} />}\n IconButtonProps={{ size: 'small' }}\n >\n {expanded\n ? 'Collapse'\n : definedTypes.filter(t => t.value === selected)[0]!.name}\n </AccordionSummary>\n <AccordionDetails classes={{ root: classes.accordionDetails }}>\n <List\n className={classes.list}\n component=\"nav\"\n aria-label=\"filter by type\"\n disablePadding\n dense\n >\n {definedTypes.map(type => (\n <Fragment key={type.value}>\n <Divider />\n <ListItem\n selected={\n types[0] === type.value ||\n (types.length === 0 && type.value === '')\n }\n onClick={handleClick(type.value)}\n button\n >\n <ListItemIcon>\n {cloneElement(type.icon, {\n className: classes.listItemIcon,\n })}\n </ListItemIcon>\n <ListItemText\n primary={type.name}\n secondary={resultCounts && resultCounts[type.value]}\n />\n </ListItem>\n </Fragment>\n ))}\n </List>\n </AccordionDetails>\n </Accordion>\n </CardContent>\n </Card>\n );\n};\n","/*\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, { useEffect } from 'react';\nimport { useSearch } from '@backstage/plugin-search-react';\nimport Tab from '@material-ui/core/Tab';\nimport Tabs from '@material-ui/core/Tabs';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(theme => ({\n tabs: {\n borderBottom: `1px solid ${theme.palette.textVerySubtle}`,\n },\n tab: {\n height: '50px',\n fontWeight: theme.typography.fontWeightBold,\n fontSize: theme.typography.pxToRem(13),\n color: theme.palette.text.primary,\n minWidth: '130px',\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeTabsProps = {\n types: Array<{\n value: string;\n name: string;\n }>;\n defaultValue?: string;\n};\n\nexport const SearchTypeTabs = (props: SearchTypeTabsProps) => {\n const classes = useStyles();\n const { setPageCursor, setTypes, types } = useSearch();\n const { defaultValue, types: givenTypes } = props;\n\n const changeTab = (_: React.ChangeEvent<{}>, newType: string) => {\n setTypes(newType !== '' ? [newType] : []);\n setPageCursor(undefined);\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n },\n ...givenTypes,\n ];\n\n return (\n <Tabs\n aria-label=\"List of search types tabs\"\n className={classes.tabs}\n indicatorColor=\"primary\"\n value={types.length === 0 ? '' : types[0]}\n onChange={changeTab}\n >\n {definedTypes.map((type, idx) => (\n <Tab\n key={idx}\n className={classes.tab}\n label={type.name}\n value={type.value}\n />\n ))}\n </Tabs>\n );\n};\n","/*\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 */\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Chip from '@material-ui/core/Chip';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport { makeStyles } from '@material-ui/core/styles';\nimport React, { ChangeEvent } from 'react';\nimport useEffectOnce from 'react-use/lib/useEffectOnce';\nimport {\n SearchTypeAccordion,\n SearchTypeAccordionProps,\n} from './SearchType.Accordion';\nimport { SearchTypeTabs, SearchTypeTabsProps } from './SearchType.Tabs';\nimport { useSearch } from '@backstage/plugin-search-react';\n\nconst useStyles = makeStyles(theme => ({\n label: {\n textTransform: 'capitalize',\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n marginTop: theme.spacing(1),\n },\n chip: {\n margin: 2,\n },\n}));\n\n/**\n * Props for {@link SearchType}.\n *\n * @public\n */\nexport type SearchTypeProps = {\n className?: string;\n name: string;\n values?: string[];\n defaultValue?: string[] | string | null;\n};\n\n/**\n * @public\n */\nconst SearchType = (props: SearchTypeProps) => {\n const { className, defaultValue, name, values = [] } = props;\n const classes = useStyles();\n const { types, setTypes } = useSearch();\n\n useEffectOnce(() => {\n if (!types.length) {\n if (defaultValue && Array.isArray(defaultValue)) {\n setTypes(defaultValue);\n } else if (defaultValue) {\n setTypes([defaultValue]);\n }\n }\n });\n\n const handleChange = (e: ChangeEvent<{ value: unknown }>) => {\n const value = e.target.value as string[];\n setTypes(value as string[]);\n };\n\n return (\n <FormControl\n className={className}\n variant=\"filled\"\n fullWidth\n data-testid=\"search-typefilter-next\"\n >\n <InputLabel className={classes.label} margin=\"dense\">\n {name}\n </InputLabel>\n <Select\n multiple\n variant=\"outlined\"\n value={types}\n onChange={handleChange}\n placeholder=\"All Results\"\n renderValue={selected => (\n <div className={classes.chips}>\n {(selected as string[]).map(value => (\n <Chip\n key={value}\n label={value}\n className={classes.chip}\n size=\"small\"\n />\n ))}\n </div>\n )}\n >\n {values.map((value: string) => (\n <MenuItem key={value} value={value}>\n <Checkbox checked={types.indexOf(value) > -1} />\n <ListItemText primary={value} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * single-select collapsible accordion suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Accordion = (props: SearchTypeAccordionProps) => {\n return <SearchTypeAccordion {...props} />;\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * tabs suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Tabs = (props: SearchTypeTabsProps) => {\n return <SearchTypeTabs {...props} />;\n};\n\nexport { SearchType };\nexport type { SearchTypeAccordionProps, SearchTypeTabsProps };\n"],"names":["SearchPage","useStyles"],"mappings":"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"}
1
+ {"version":3,"file":"SearchType-BDK6qMj4.esm.js","sources":["../../src/apis.ts","../../src/plugin.ts","../../src/components/SearchPage/SearchPage.tsx","../../src/components/SearchType/SearchType.Accordion.tsx","../../src/components/SearchType/SearchType.Tabs.tsx","../../src/components/SearchType/SearchType.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 { DiscoveryApi, IdentityApi } from '@backstage/core-plugin-api';\nimport { ResponseError } from '@backstage/errors';\nimport { SearchApi } from '@backstage/plugin-search-react';\nimport { SearchQuery, SearchResultSet } from '@backstage/plugin-search-common';\n\nimport qs from 'qs';\n\nexport class SearchClient implements SearchApi {\n private readonly discoveryApi: DiscoveryApi;\n private readonly identityApi: IdentityApi;\n\n constructor(options: {\n discoveryApi: DiscoveryApi;\n identityApi: IdentityApi;\n }) {\n this.discoveryApi = options.discoveryApi;\n this.identityApi = options.identityApi;\n }\n\n async query(query: SearchQuery): Promise<SearchResultSet> {\n const { token } = await this.identityApi.getCredentials();\n const queryString = qs.stringify(query);\n const url = `${await this.discoveryApi.getBaseUrl(\n 'search',\n )}/query?${queryString}`;\n const response = await fetch(url, {\n headers: token ? { Authorization: `Bearer ${token}` } : {},\n });\n\n if (!response.ok) {\n throw await ResponseError.fromResponse(response);\n }\n\n return response.json();\n }\n}\n","/*\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 { SearchClient } from './apis';\nimport { searchApiRef } from '@backstage/plugin-search-react';\nimport {\n createApiFactory,\n createPlugin,\n createRouteRef,\n createRoutableExtension,\n discoveryApiRef,\n createComponentExtension,\n identityApiRef,\n} from '@backstage/core-plugin-api';\n\nexport const rootRouteRef = createRouteRef({\n id: 'search',\n});\n\n/**\n * @public\n */\nexport const searchPlugin = createPlugin({\n id: 'search',\n apis: [\n createApiFactory({\n api: searchApiRef,\n deps: { discoveryApi: discoveryApiRef, identityApi: identityApiRef },\n factory: ({ discoveryApi, identityApi }) => {\n return new SearchClient({ discoveryApi, identityApi });\n },\n }),\n ],\n routes: {\n root: rootRouteRef,\n },\n});\n\n/**\n * @public\n */\nexport const SearchPage = searchPlugin.provide(\n createRoutableExtension({\n name: 'SearchPage',\n component: () => import('./components/SearchPage').then(m => m.SearchPage),\n mountPoint: rootRouteRef,\n }),\n);\n\n/**\n * @public\n */\nexport const SidebarSearchModal = searchPlugin.provide(\n createComponentExtension({\n name: 'SidebarSearchModal',\n component: {\n lazy: () =>\n import('./components/SidebarSearchModal').then(\n m => m.SidebarSearchModal,\n ),\n },\n }),\n);\n\n/**\n * @public\n */\nexport const HomePageSearchBar = searchPlugin.provide(\n createComponentExtension({\n name: 'HomePageSearchBar',\n component: {\n lazy: () =>\n import('./components/HomePageComponent').then(m => m.HomePageSearchBar),\n },\n }),\n);\n","/*\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 React, { useEffect } from 'react';\nimport usePrevious from 'react-use/esm/usePrevious';\nimport qs from 'qs';\nimport { useLocation, useOutlet } from 'react-router-dom';\nimport {\n SearchContextProvider,\n useSearch,\n} from '@backstage/plugin-search-react';\nimport { JsonObject } from '@backstage/types';\n\nexport const UrlUpdater = () => {\n const location = useLocation();\n const {\n term,\n setTerm,\n types,\n setTypes,\n pageCursor,\n setPageCursor,\n filters,\n setFilters,\n } = useSearch();\n\n const prevQueryParams = usePrevious(location.search);\n useEffect(() => {\n // Only respond to changes to url query params\n if (location.search === prevQueryParams) {\n return;\n }\n\n const query =\n qs.parse(location.search.substring(1), { arrayLimit: 0 }) || {};\n\n if (query.filters) {\n setFilters(query.filters as JsonObject);\n }\n\n if (query.query) {\n setTerm(query.query as string);\n }\n\n if (query.pageCursor) {\n setPageCursor(query.pageCursor as string);\n }\n\n if (query.types) {\n setTypes(query.types as string[]);\n }\n }, [prevQueryParams, location, setTerm, setTypes, setPageCursor, setFilters]);\n\n useEffect(() => {\n const newParams = qs.stringify(\n {\n query: term,\n types,\n pageCursor,\n filters,\n },\n { arrayFormat: 'brackets' },\n );\n const newUrl = `${window.location.pathname}?${newParams}`;\n\n // We directly manipulate window history here in order to not re-render\n // infinitely (state => location => state => etc). The intention of this\n // code is just to ensure the right query/filters are loaded when a user\n // clicks the \"back\" button after clicking a result.\n window.history.replaceState(null, document.title, newUrl);\n }, [term, types, pageCursor, filters]);\n\n return null;\n};\n\n/**\n * @public\n */\nexport const SearchPage = () => {\n const outlet = useOutlet();\n\n return (\n <SearchContextProvider>\n <UrlUpdater />\n {outlet}\n </SearchContextProvider>\n );\n};\n","/*\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, { cloneElement, Fragment, useEffect, useState } from 'react';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { searchApiRef, useSearch } from '@backstage/plugin-search-react';\nimport Accordion from '@material-ui/core/Accordion';\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\nimport Card from '@material-ui/core/Card';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport Divider from '@material-ui/core/Divider';\nimport List from '@material-ui/core/List';\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport AllIcon from '@material-ui/icons/FontDownload';\nimport useAsync from 'react-use/esm/useAsync';\n\nconst useStyles = makeStyles(theme => ({\n card: {\n backgroundColor: 'rgba(0, 0, 0, .11)',\n },\n cardContent: {\n paddingTop: theme.spacing(1),\n },\n icon: {\n color: theme.palette.text.primary,\n },\n list: {\n width: '100%',\n },\n listItemIcon: {\n width: '24px',\n height: '24px',\n },\n accordion: {\n backgroundColor: theme.palette.background.paper,\n },\n accordionSummary: {\n minHeight: 'auto',\n '&.Mui-expanded': {\n minHeight: 'auto',\n },\n },\n accordionSummaryContent: {\n margin: theme.spacing(2, 0),\n '&.Mui-expanded': {\n margin: theme.spacing(2, 0),\n },\n },\n accordionDetails: {\n padding: theme.spacing(0, 0, 1),\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeAccordionProps = {\n name: string;\n types: Array<{\n value: string;\n name: string;\n icon: JSX.Element;\n }>;\n defaultValue?: string;\n showCounts?: boolean;\n};\n\nexport const SearchTypeAccordion = (props: SearchTypeAccordionProps) => {\n const classes = useStyles();\n const { filters, setPageCursor, setTypes, term, types } = useSearch();\n const searchApi = useApi(searchApiRef);\n const [expanded, setExpanded] = useState(true);\n const { defaultValue, name, showCounts, types: givenTypes } = props;\n\n const toggleExpanded = () => setExpanded(prevState => !prevState);\n const handleClick = (type: string) => {\n return () => {\n setTypes(type !== '' ? [type] : []);\n setPageCursor(undefined);\n setExpanded(false);\n };\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n icon: <AllIcon />,\n },\n ...givenTypes,\n ];\n const selected = types[0] || '';\n\n const { value: resultCounts } = useAsync(async () => {\n if (!showCounts) {\n return {};\n }\n\n const counts = await Promise.all(\n definedTypes\n .map(t => t.value)\n .map(async type => {\n const { numberOfResults } = await searchApi.query({\n term,\n types: type ? [type] : [],\n filters:\n types.includes(type) || (!types.length && !type) ? filters : {},\n pageLimit: 0,\n });\n\n return [\n type,\n numberOfResults !== undefined\n ? `${\n numberOfResults >= 10000 ? `>10000` : numberOfResults\n } results`\n : ' -- ',\n ];\n }),\n );\n\n return Object.fromEntries(counts);\n }, [filters, showCounts, term, types]);\n\n return (\n <Card className={classes.card}>\n <CardHeader title={name} titleTypographyProps={{ variant: 'overline' }} />\n <CardContent className={classes.cardContent}>\n <Accordion\n className={classes.accordion}\n expanded={expanded}\n onChange={toggleExpanded}\n >\n <AccordionSummary\n classes={{\n root: classes.accordionSummary,\n content: classes.accordionSummaryContent,\n }}\n expandIcon={<ExpandMoreIcon className={classes.icon} />}\n IconButtonProps={{ size: 'small' }}\n >\n {expanded\n ? 'Collapse'\n : definedTypes.filter(t => t.value === selected)[0]!.name}\n </AccordionSummary>\n <AccordionDetails classes={{ root: classes.accordionDetails }}>\n <List\n className={classes.list}\n component=\"nav\"\n aria-label=\"filter by type\"\n disablePadding\n dense\n >\n {definedTypes.map(type => (\n <Fragment key={type.value}>\n <Divider />\n <ListItem\n selected={\n types[0] === type.value ||\n (types.length === 0 && type.value === '')\n }\n onClick={handleClick(type.value)}\n button\n >\n <ListItemIcon>\n {cloneElement(type.icon, {\n className: classes.listItemIcon,\n })}\n </ListItemIcon>\n <ListItemText\n primary={type.name}\n secondary={resultCounts && resultCounts[type.value]}\n />\n </ListItem>\n </Fragment>\n ))}\n </List>\n </AccordionDetails>\n </Accordion>\n </CardContent>\n </Card>\n );\n};\n","/*\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, { useEffect } from 'react';\nimport { useSearch } from '@backstage/plugin-search-react';\nimport Tab from '@material-ui/core/Tab';\nimport Tabs from '@material-ui/core/Tabs';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst useStyles = makeStyles(theme => ({\n tabs: {\n borderBottom: `1px solid ${theme.palette.textVerySubtle}`,\n },\n tab: {\n height: '50px',\n fontWeight: theme.typography.fontWeightBold,\n fontSize: theme.typography.pxToRem(13),\n color: theme.palette.text.primary,\n minWidth: '130px',\n },\n}));\n\n/**\n * @public\n */\nexport type SearchTypeTabsProps = {\n types: Array<{\n value: string;\n name: string;\n }>;\n defaultValue?: string;\n};\n\nexport const SearchTypeTabs = (props: SearchTypeTabsProps) => {\n const classes = useStyles();\n const { setPageCursor, setTypes, types } = useSearch();\n const { defaultValue, types: givenTypes } = props;\n\n const changeTab = (_: React.ChangeEvent<{}>, newType: string) => {\n setTypes(newType !== '' ? [newType] : []);\n setPageCursor(undefined);\n };\n\n // Handle any provided defaultValue\n useEffect(() => {\n if (defaultValue) {\n setTypes([defaultValue]);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const definedTypes = [\n {\n value: '',\n name: 'All',\n },\n ...givenTypes,\n ];\n\n return (\n <Tabs\n aria-label=\"List of search types tabs\"\n className={classes.tabs}\n indicatorColor=\"primary\"\n value={types.length === 0 ? '' : types[0]}\n onChange={changeTab}\n >\n {definedTypes.map((type, idx) => (\n <Tab\n key={idx}\n className={classes.tab}\n label={type.name}\n value={type.value}\n />\n ))}\n </Tabs>\n );\n};\n","/*\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 */\nimport Checkbox from '@material-ui/core/Checkbox';\nimport Chip from '@material-ui/core/Chip';\nimport FormControl from '@material-ui/core/FormControl';\nimport InputLabel from '@material-ui/core/InputLabel';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Select from '@material-ui/core/Select';\nimport { makeStyles } from '@material-ui/core/styles';\nimport React, { ChangeEvent } from 'react';\nimport useEffectOnce from 'react-use/esm/useEffectOnce';\nimport {\n SearchTypeAccordion,\n SearchTypeAccordionProps,\n} from './SearchType.Accordion';\nimport { SearchTypeTabs, SearchTypeTabsProps } from './SearchType.Tabs';\nimport { useSearch } from '@backstage/plugin-search-react';\n\nconst useStyles = makeStyles(theme => ({\n label: {\n textTransform: 'capitalize',\n },\n chips: {\n display: 'flex',\n flexWrap: 'wrap',\n marginTop: theme.spacing(1),\n },\n chip: {\n margin: 2,\n },\n}));\n\n/**\n * Props for {@link SearchType}.\n *\n * @public\n */\nexport type SearchTypeProps = {\n className?: string;\n name: string;\n values?: string[];\n defaultValue?: string[] | string | null;\n};\n\n/**\n * @public\n */\nconst SearchType = (props: SearchTypeProps) => {\n const { className, defaultValue, name, values = [] } = props;\n const classes = useStyles();\n const { types, setTypes } = useSearch();\n\n useEffectOnce(() => {\n if (!types.length) {\n if (defaultValue && Array.isArray(defaultValue)) {\n setTypes(defaultValue);\n } else if (defaultValue) {\n setTypes([defaultValue]);\n }\n }\n });\n\n const handleChange = (e: ChangeEvent<{ value: unknown }>) => {\n const value = e.target.value as string[];\n setTypes(value as string[]);\n };\n\n return (\n <FormControl\n className={className}\n variant=\"filled\"\n fullWidth\n data-testid=\"search-typefilter-next\"\n >\n <InputLabel className={classes.label} margin=\"dense\">\n {name}\n </InputLabel>\n <Select\n multiple\n variant=\"outlined\"\n value={types}\n onChange={handleChange}\n placeholder=\"All Results\"\n renderValue={selected => (\n <div className={classes.chips}>\n {(selected as string[]).map(value => (\n <Chip\n key={value}\n label={value}\n className={classes.chip}\n size=\"small\"\n />\n ))}\n </div>\n )}\n >\n {values.map((value: string) => (\n <MenuItem key={value} value={value}>\n <Checkbox checked={types.indexOf(value) > -1} />\n <ListItemText primary={value} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * single-select collapsible accordion suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Accordion = (props: SearchTypeAccordionProps) => {\n return <SearchTypeAccordion {...props} />;\n};\n\n/**\n * A control surface for the search query's \"types\" property, displayed as a\n * tabs suitable for use in faceted search UIs.\n * @public\n */\nSearchType.Tabs = (props: SearchTypeTabsProps) => {\n return <SearchTypeTabs {...props} />;\n};\n\nexport { SearchType };\nexport type { SearchTypeAccordionProps, SearchTypeTabsProps };\n"],"names":["SearchPage","useStyles"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import SearchIcon from '@material-ui/icons/Search';
3
3
  import { SidebarItem } from '@backstage/core-components';
4
- import { a as SearchModalProvider, u as useSearchModal, S as SearchModal } from './useSearchModal-6e526dc2.esm.js';
4
+ import { a as SearchModalProvider, u as useSearchModal, S as SearchModal } from './useSearchModal-CaX46YAs.esm.js';
5
5
  import '@backstage/core-plugin-api';
6
6
  import '@backstage/plugin-search-react';
7
7
  import '@material-ui/core/Dialog';
@@ -17,10 +17,10 @@ import '@material-ui/core/IconButton';
17
17
  import '@material-ui/icons/ArrowForward';
18
18
  import '@material-ui/icons/Close';
19
19
  import 'react-router-dom';
20
- import './SearchType-17c45ae8.esm.js';
20
+ import './SearchType-BDK6qMj4.esm.js';
21
21
  import '@backstage/errors';
22
22
  import 'qs';
23
- import 'react-use/lib/usePrevious';
23
+ import 'react-use/esm/usePrevious';
24
24
  import '@material-ui/core/Checkbox';
25
25
  import '@material-ui/core/Chip';
26
26
  import '@material-ui/core/FormControl';
@@ -28,7 +28,7 @@ import '@material-ui/core/InputLabel';
28
28
  import '@material-ui/core/ListItemText';
29
29
  import '@material-ui/core/MenuItem';
30
30
  import '@material-ui/core/Select';
31
- import 'react-use/lib/useEffectOnce';
31
+ import 'react-use/esm/useEffectOnce';
32
32
  import '@material-ui/core/Accordion';
33
33
  import '@material-ui/core/AccordionSummary';
34
34
  import '@material-ui/core/AccordionDetails';
@@ -40,11 +40,11 @@ import '@material-ui/core/ListItem';
40
40
  import '@material-ui/core/ListItemIcon';
41
41
  import '@material-ui/icons/ExpandMore';
42
42
  import '@material-ui/icons/FontDownload';
43
- import 'react-use/lib/useAsync';
43
+ import 'react-use/esm/useAsync';
44
44
  import '@material-ui/core/Tab';
45
45
  import '@material-ui/core/Tabs';
46
46
  import '@backstage/version-bridge';
47
- import 'react-use/lib/useUpdateEffect';
47
+ import 'react-use/esm/useUpdateEffect';
48
48
 
49
49
  const SidebarSearchModalContent = (props) => {
50
50
  const { state, toggleModal } = useSearchModal();
@@ -71,4 +71,4 @@ const SidebarSearchModal = (props) => {
71
71
  };
72
72
 
73
73
  export { SidebarSearchModal };
74
- //# sourceMappingURL=index-e86f7b58.esm.js.map
74
+ //# sourceMappingURL=index-4C-7QFYg.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-e86f7b58.esm.js","sources":["../../src/components/SidebarSearchModal/SidebarSearchModal.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 */\nimport React from 'react';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { SidebarItem } from '@backstage/core-components';\nimport { IconComponent } from '@backstage/core-plugin-api';\nimport {\n SearchModal,\n SearchModalChildrenProps,\n SearchModalProvider,\n useSearchModal,\n} from '../SearchModal';\n\n/**\n * Props for {@link SidebarSearchModal}.\n *\n * @public\n */\nexport type SidebarSearchModalProps = {\n icon?: IconComponent;\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n};\n\nconst SidebarSearchModalContent = (props: SidebarSearchModalProps) => {\n const { state, toggleModal } = useSearchModal();\n const Icon = props.icon ? props.icon : SearchIcon;\n\n return (\n <>\n <SidebarItem\n className=\"search-icon\"\n icon={Icon}\n text=\"Search\"\n onClick={toggleModal}\n />\n <SearchModal\n {...state}\n toggleModal={toggleModal}\n children={props.children}\n />\n </>\n );\n};\n\nexport const SidebarSearchModal = (props: SidebarSearchModalProps) => {\n return (\n <SearchModalProvider>\n <SidebarSearchModalContent {...props} />\n </SearchModalProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAM,yBAAA,GAA4B,CAAC,KAAmC,KAAA;AACpE,EAAA,MAAM,EAAE,KAAA,EAAO,WAAY,EAAA,GAAI,cAAe,EAAA,CAAA;AAC9C,EAAA,MAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,UAAA,CAAA;AAEvC,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,aAAA;AAAA,MACV,IAAM,EAAA,IAAA;AAAA,MACN,IAAK,EAAA,QAAA;AAAA,MACL,OAAS,EAAA,WAAA;AAAA,KAAA;AAAA,GAEX,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,WAAA;AAAA,MACA,UAAU,KAAM,CAAA,QAAA;AAAA,KAAA;AAAA,GAEpB,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,kBAAA,GAAqB,CAAC,KAAmC,KAAA;AACpE,EAAA,2CACG,mBACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,yBAA2B,EAAA,EAAA,GAAG,OAAO,CACxC,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"index-4C-7QFYg.esm.js","sources":["../../src/components/SidebarSearchModal/SidebarSearchModal.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 */\nimport React from 'react';\nimport SearchIcon from '@material-ui/icons/Search';\nimport { SidebarItem } from '@backstage/core-components';\nimport { IconComponent } from '@backstage/core-plugin-api';\nimport {\n SearchModal,\n SearchModalChildrenProps,\n SearchModalProvider,\n useSearchModal,\n} from '../SearchModal';\n\n/**\n * Props for {@link SidebarSearchModal}.\n *\n * @public\n */\nexport type SidebarSearchModalProps = {\n icon?: IconComponent;\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n};\n\nconst SidebarSearchModalContent = (props: SidebarSearchModalProps) => {\n const { state, toggleModal } = useSearchModal();\n const Icon = props.icon ? props.icon : SearchIcon;\n\n return (\n <>\n <SidebarItem\n className=\"search-icon\"\n icon={Icon}\n text=\"Search\"\n onClick={toggleModal}\n />\n <SearchModal\n {...state}\n toggleModal={toggleModal}\n children={props.children}\n />\n </>\n );\n};\n\nexport const SidebarSearchModal = (props: SidebarSearchModalProps) => {\n return (\n <SearchModalProvider>\n <SidebarSearchModalContent {...props} />\n </SearchModalProvider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAM,yBAAA,GAA4B,CAAC,KAAmC,KAAA;AACpE,EAAA,MAAM,EAAE,KAAA,EAAO,WAAY,EAAA,GAAI,cAAe,EAAA,CAAA;AAC9C,EAAA,MAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,KAAA,CAAM,IAAO,GAAA,UAAA,CAAA;AAEvC,EAAA,uBAEI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,aAAA;AAAA,MACV,IAAM,EAAA,IAAA;AAAA,MACN,IAAK,EAAA,QAAA;AAAA,MACL,OAAS,EAAA,WAAA;AAAA,KAAA;AAAA,GAEX,kBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,WAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,WAAA;AAAA,MACA,UAAU,KAAM,CAAA,QAAA;AAAA,KAAA;AAAA,GAEpB,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEa,MAAA,kBAAA,GAAqB,CAAC,KAAmC,KAAA;AACpE,EAAA,2CACG,mBACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,yBAA2B,EAAA,EAAA,GAAG,OAAO,CACxC,CAAA,CAAA;AAEJ;;;;"}
@@ -3,10 +3,10 @@ import { makeStyles } from '@material-ui/core/styles';
3
3
  import { SearchBarBase } from '@backstage/plugin-search-react';
4
4
  import qs from 'qs';
5
5
  import { useNavigate } from 'react-router-dom';
6
- import { r as rootRouteRef } from './SearchType-17c45ae8.esm.js';
6
+ import { r as rootRouteRef } from './SearchType-BDK6qMj4.esm.js';
7
7
  import { useRouteRef } from '@backstage/core-plugin-api';
8
8
  import '@backstage/errors';
9
- import 'react-use/lib/usePrevious';
9
+ import 'react-use/esm/usePrevious';
10
10
  import '@material-ui/core/Checkbox';
11
11
  import '@material-ui/core/Chip';
12
12
  import '@material-ui/core/FormControl';
@@ -14,7 +14,7 @@ import '@material-ui/core/InputLabel';
14
14
  import '@material-ui/core/ListItemText';
15
15
  import '@material-ui/core/MenuItem';
16
16
  import '@material-ui/core/Select';
17
- import 'react-use/lib/useEffectOnce';
17
+ import 'react-use/esm/useEffectOnce';
18
18
  import '@material-ui/core/Accordion';
19
19
  import '@material-ui/core/AccordionSummary';
20
20
  import '@material-ui/core/AccordionDetails';
@@ -27,7 +27,7 @@ import '@material-ui/core/ListItem';
27
27
  import '@material-ui/core/ListItemIcon';
28
28
  import '@material-ui/icons/ExpandMore';
29
29
  import '@material-ui/icons/FontDownload';
30
- import 'react-use/lib/useAsync';
30
+ import 'react-use/esm/useAsync';
31
31
  import '@material-ui/core/Tab';
32
32
  import '@material-ui/core/Tabs';
33
33
 
@@ -83,4 +83,4 @@ const HomePageSearchBar = (props) => {
83
83
  };
84
84
 
85
85
  export { HomePageSearchBar };
86
- //# sourceMappingURL=index-56b76802.esm.js.map
86
+ //# sourceMappingURL=index-By276Am7.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-56b76802.esm.js","sources":["../../src/components/util.ts","../../src/components/HomePageComponent/HomePageSearchBar.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 */\nimport qs from 'qs';\nimport { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { rootRouteRef } from '../plugin';\n\nimport { useRouteRef } from '@backstage/core-plugin-api';\n\nexport const useNavigateToQuery = () => {\n const searchRoute = useRouteRef(rootRouteRef);\n const navigate = useNavigate();\n return useCallback(\n ({ query }: { query: string }): void => {\n const queryString = qs.stringify({ query }, { addQueryPrefix: true });\n\n navigate(`${searchRoute()}${queryString}`);\n },\n [navigate, searchRoute],\n );\n};\n","/*\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, { useCallback, useRef, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n SearchBarBase,\n SearchBarBaseProps,\n} from '@backstage/plugin-search-react';\nimport { useNavigateToQuery } from '../util';\n\nconst useStyles = makeStyles({\n searchBarRoot: {\n fontSize: '1.5em',\n },\n searchBarOutline: {\n border: '1px solid #555',\n borderRadius: '6px',\n },\n});\n\n/**\n * Props for {@link HomePageSearchBar}.\n *\n * @public\n */\nexport type HomePageSearchBarProps = Partial<\n Omit<SearchBarBaseProps, 'onChange' | 'onSubmit'>\n>;\n\n/**\n * The search bar created specifically for the composable home page.\n */\nexport const HomePageSearchBar = (props: HomePageSearchBarProps) => {\n const classes = useStyles(props);\n const [query, setQuery] = useState('');\n const ref = useRef<HTMLInputElement | null>(null);\n\n const handleSearch = useNavigateToQuery();\n\n // This handler is called when \"enter\" is pressed\n const handleSubmit = useCallback(() => {\n // Using ref to get the current field value without waiting for a query debounce\n handleSearch({ query: ref.current?.value ?? '' });\n }, [handleSearch]);\n\n return (\n <SearchBarBase\n value={query}\n onSubmit={handleSubmit}\n onChange={setQuery}\n inputProps={{ ref }}\n InputProps={{\n ...props.InputProps,\n classes: {\n root: classes.searchBarRoot,\n notchedOutline: classes.searchBarOutline,\n ...props.InputProps?.classes,\n },\n }}\n {...props}\n />\n );\n};\n"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAM,qBAAqB,MAAM;AACtC,EAAM,MAAA,WAAA,GAAc,YAAY,YAAY,CAAA,CAAA;AAC5C,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAO,OAAA,WAAA;AAAA,IACL,CAAC,EAAE,KAAA,EAAqC,KAAA;AACtC,MAAM,MAAA,WAAA,GAAc,GAAG,SAAU,CAAA,EAAE,OAAS,EAAA,EAAE,cAAgB,EAAA,IAAA,EAAM,CAAA,CAAA;AAEpE,MAAA,QAAA,CAAS,CAAG,EAAA,WAAA,EAAa,CAAA,EAAG,WAAW,CAAE,CAAA,CAAA,CAAA;AAAA,KAC3C;AAAA,IACA,CAAC,UAAU,WAAW,CAAA;AAAA,GACxB,CAAA;AACF,CAAA;;ACTA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,aAAe,EAAA;AAAA,IACb,QAAU,EAAA,OAAA;AAAA,GACZ;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,MAAQ,EAAA,gBAAA;AAAA,IACR,YAAc,EAAA,KAAA;AAAA,GAChB;AACF,CAAC,CAAA,CAAA;AAcY,MAAA,iBAAA,GAAoB,CAAC,KAAkC,KAAA;AA9CpE,EAAA,IAAA,EAAA,CAAA;AA+CE,EAAM,MAAA,OAAA,GAAU,UAAU,KAAK,CAAA,CAAA;AAC/B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AACrC,EAAM,MAAA,GAAA,GAAM,OAAgC,IAAI,CAAA,CAAA;AAEhD,EAAA,MAAM,eAAe,kBAAmB,EAAA,CAAA;AAGxC,EAAM,MAAA,YAAA,GAAe,YAAY,MAAM;AAtDzC,IAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AAwDI,IAAa,YAAA,CAAA,EAAE,KAAO,EAAA,CAAA,EAAA,GAAA,CAAAA,GAAA,GAAA,GAAA,CAAI,OAAJ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAa,CAAA,KAAA,KAAb,IAAsB,GAAA,EAAA,GAAA,EAAA,EAAI,CAAA,CAAA;AAAA,GAClD,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,KAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,QAAU,EAAA,QAAA;AAAA,MACV,UAAA,EAAY,EAAE,GAAI,EAAA;AAAA,MAClB,UAAY,EAAA;AAAA,QACV,GAAG,KAAM,CAAA,UAAA;AAAA,QACT,OAAS,EAAA;AAAA,UACP,MAAM,OAAQ,CAAA,aAAA;AAAA,UACd,gBAAgB,OAAQ,CAAA,gBAAA;AAAA,UACxB,GAAA,CAAG,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA;AAAA,SACvB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,KAAA;AAAA,GACN,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"index-By276Am7.esm.js","sources":["../../src/components/util.ts","../../src/components/HomePageComponent/HomePageSearchBar.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 */\nimport qs from 'qs';\nimport { useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { rootRouteRef } from '../plugin';\n\nimport { useRouteRef } from '@backstage/core-plugin-api';\n\nexport const useNavigateToQuery = () => {\n const searchRoute = useRouteRef(rootRouteRef);\n const navigate = useNavigate();\n return useCallback(\n ({ query }: { query: string }): void => {\n const queryString = qs.stringify({ query }, { addQueryPrefix: true });\n\n navigate(`${searchRoute()}${queryString}`);\n },\n [navigate, searchRoute],\n );\n};\n","/*\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, { useCallback, useRef, useState } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport {\n SearchBarBase,\n SearchBarBaseProps,\n} from '@backstage/plugin-search-react';\nimport { useNavigateToQuery } from '../util';\n\nconst useStyles = makeStyles({\n searchBarRoot: {\n fontSize: '1.5em',\n },\n searchBarOutline: {\n border: '1px solid #555',\n borderRadius: '6px',\n },\n});\n\n/**\n * Props for {@link HomePageSearchBar}.\n *\n * @public\n */\nexport type HomePageSearchBarProps = Partial<\n Omit<SearchBarBaseProps, 'onChange' | 'onSubmit'>\n>;\n\n/**\n * The search bar created specifically for the composable home page.\n */\nexport const HomePageSearchBar = (props: HomePageSearchBarProps) => {\n const classes = useStyles(props);\n const [query, setQuery] = useState('');\n const ref = useRef<HTMLInputElement | null>(null);\n\n const handleSearch = useNavigateToQuery();\n\n // This handler is called when \"enter\" is pressed\n const handleSubmit = useCallback(() => {\n // Using ref to get the current field value without waiting for a query debounce\n handleSearch({ query: ref.current?.value ?? '' });\n }, [handleSearch]);\n\n return (\n <SearchBarBase\n value={query}\n onSubmit={handleSubmit}\n onChange={setQuery}\n inputProps={{ ref }}\n InputProps={{\n ...props.InputProps,\n classes: {\n root: classes.searchBarRoot,\n notchedOutline: classes.searchBarOutline,\n ...props.InputProps?.classes,\n },\n }}\n {...props}\n />\n );\n};\n"],"names":["_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBO,MAAM,qBAAqB,MAAM;AACtC,EAAM,MAAA,WAAA,GAAc,YAAY,YAAY,CAAA,CAAA;AAC5C,EAAA,MAAM,WAAW,WAAY,EAAA,CAAA;AAC7B,EAAO,OAAA,WAAA;AAAA,IACL,CAAC,EAAE,KAAA,EAAqC,KAAA;AACtC,MAAM,MAAA,WAAA,GAAc,GAAG,SAAU,CAAA,EAAE,OAAS,EAAA,EAAE,cAAgB,EAAA,IAAA,EAAM,CAAA,CAAA;AAEpE,MAAA,QAAA,CAAS,CAAG,EAAA,WAAA,EAAa,CAAA,EAAG,WAAW,CAAE,CAAA,CAAA,CAAA;AAAA,KAC3C;AAAA,IACA,CAAC,UAAU,WAAW,CAAA;AAAA,GACxB,CAAA;AACF,CAAA;;ACTA,MAAM,YAAY,UAAW,CAAA;AAAA,EAC3B,aAAe,EAAA;AAAA,IACb,QAAU,EAAA,OAAA;AAAA,GACZ;AAAA,EACA,gBAAkB,EAAA;AAAA,IAChB,MAAQ,EAAA,gBAAA;AAAA,IACR,YAAc,EAAA,KAAA;AAAA,GAChB;AACF,CAAC,CAAA,CAAA;AAcY,MAAA,iBAAA,GAAoB,CAAC,KAAkC,KAAA;AA9CpE,EAAA,IAAA,EAAA,CAAA;AA+CE,EAAM,MAAA,OAAA,GAAU,UAAU,KAAK,CAAA,CAAA;AAC/B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,EAAE,CAAA,CAAA;AACrC,EAAM,MAAA,GAAA,GAAM,OAAgC,IAAI,CAAA,CAAA;AAEhD,EAAA,MAAM,eAAe,kBAAmB,EAAA,CAAA;AAGxC,EAAM,MAAA,YAAA,GAAe,YAAY,MAAM;AAtDzC,IAAA,IAAAA,GAAA,EAAA,EAAA,CAAA;AAwDI,IAAa,YAAA,CAAA,EAAE,KAAO,EAAA,CAAA,EAAA,GAAA,CAAAA,GAAA,GAAA,GAAA,CAAI,OAAJ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,GAAa,CAAA,KAAA,KAAb,IAAsB,GAAA,EAAA,GAAA,EAAA,EAAI,CAAA,CAAA;AAAA,GAClD,EAAG,CAAC,YAAY,CAAC,CAAA,CAAA;AAEjB,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,KAAO,EAAA,KAAA;AAAA,MACP,QAAU,EAAA,YAAA;AAAA,MACV,QAAU,EAAA,QAAA;AAAA,MACV,UAAA,EAAY,EAAE,GAAI,EAAA;AAAA,MAClB,UAAY,EAAA;AAAA,QACV,GAAG,KAAM,CAAA,UAAA;AAAA,QACT,OAAS,EAAA;AAAA,UACP,MAAM,OAAQ,CAAA,aAAA;AAAA,UACd,gBAAgB,OAAQ,CAAA,gBAAA;AAAA,UACxB,GAAA,CAAG,EAAM,GAAA,KAAA,CAAA,UAAA,KAAN,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,OAAA;AAAA,SACvB;AAAA,OACF;AAAA,MACC,GAAG,KAAA;AAAA,KAAA;AAAA,GACN,CAAA;AAEJ;;;;"}
@@ -1,10 +1,10 @@
1
- export { S as SearchPage } from './SearchType-17c45ae8.esm.js';
1
+ export { S as SearchPage } from './SearchType-BDK6qMj4.esm.js';
2
2
  import '@backstage/errors';
3
3
  import 'qs';
4
4
  import '@backstage/plugin-search-react';
5
5
  import '@backstage/core-plugin-api';
6
6
  import 'react';
7
- import 'react-use/lib/usePrevious';
7
+ import 'react-use/esm/usePrevious';
8
8
  import 'react-router-dom';
9
9
  import '@material-ui/core/Checkbox';
10
10
  import '@material-ui/core/Chip';
@@ -14,7 +14,7 @@ import '@material-ui/core/ListItemText';
14
14
  import '@material-ui/core/MenuItem';
15
15
  import '@material-ui/core/Select';
16
16
  import '@material-ui/core/styles';
17
- import 'react-use/lib/useEffectOnce';
17
+ import 'react-use/esm/useEffectOnce';
18
18
  import '@material-ui/core/Accordion';
19
19
  import '@material-ui/core/AccordionSummary';
20
20
  import '@material-ui/core/AccordionDetails';
@@ -27,7 +27,7 @@ import '@material-ui/core/ListItem';
27
27
  import '@material-ui/core/ListItemIcon';
28
28
  import '@material-ui/icons/ExpandMore';
29
29
  import '@material-ui/icons/FontDownload';
30
- import 'react-use/lib/useAsync';
30
+ import 'react-use/esm/useAsync';
31
31
  import '@material-ui/core/Tab';
32
32
  import '@material-ui/core/Tabs';
33
- //# sourceMappingURL=index-fce5b753.esm.js.map
33
+ //# sourceMappingURL=index-LeUeJAxm.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-LeUeJAxm.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -15,9 +15,9 @@ import ArrowForwardIcon from '@material-ui/icons/ArrowForward';
15
15
  import CloseIcon from '@material-ui/icons/Close';
16
16
  import React, { useRef, useEffect, useCallback, useState, useContext } from 'react';
17
17
  import { useNavigate, useLocation } from 'react-router-dom';
18
- import { r as rootRouteRef } from './SearchType-17c45ae8.esm.js';
18
+ import { r as rootRouteRef } from './SearchType-BDK6qMj4.esm.js';
19
19
  import { createVersionedContext, createVersionedValueMap } from '@backstage/version-bridge';
20
- import useUpdateEffect from 'react-use/lib/useUpdateEffect';
20
+ import useUpdateEffect from 'react-use/esm/useUpdateEffect';
21
21
 
22
22
  const useStyles = makeStyles((theme) => ({
23
23
  dialogTitle: {
@@ -157,4 +157,4 @@ function useSearchModal(initialState = false) {
157
157
  }
158
158
 
159
159
  export { SearchModal as S, SearchModalProvider as a, useSearchModal as u };
160
- //# sourceMappingURL=useSearchModal-6e526dc2.esm.js.map
160
+ //# sourceMappingURL=useSearchModal-CaX46YAs.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSearchModal-6e526dc2.esm.js","sources":["../../src/components/SearchModal/SearchModal.tsx","../../src/components/SearchModal/useSearchModal.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 */\nimport { useContent } from '@backstage/core-components';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport {\n SearchBar,\n SearchContextProvider,\n SearchResult,\n SearchResultPager,\n} from '@backstage/plugin-search-react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Divider from '@material-ui/core/Divider';\nimport Grid from '@material-ui/core/Grid';\nimport { useTheme } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward';\nimport CloseIcon from '@material-ui/icons/Close';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { rootRouteRef } from '../../plugin';\n\n/**\n * @public\n */\nexport interface SearchModalChildrenProps {\n /**\n * A function that should be invoked when navigating away from the modal.\n */\n toggleModal: () => void;\n}\n\n/**\n * @public\n */\nexport interface SearchModalProps {\n /**\n * If true, it renders the modal.\n */\n open?: boolean;\n /**\n * This is supposed to be used together with the open prop.\n * If `hidden` is true, it hides the modal.\n * If `open` is false, the value of `hidden` has no effect on the modal.\n * Use `open` for controlling whether the modal should be rendered or not.\n */\n hidden?: boolean;\n /**\n * a function invoked when a search item is pressed or when the dialog\n * should be closed.\n */\n toggleModal: () => void;\n /**\n * A function that returns custom content to render in the search modal in\n * place of the default.\n */\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n}\n\nconst useStyles = makeStyles(theme => ({\n dialogTitle: {\n gap: theme.spacing(1),\n display: 'grid',\n alignItems: 'center',\n gridTemplateColumns: '1fr auto',\n '&> button': {\n marginTop: theme.spacing(1),\n },\n },\n input: {\n flex: 1,\n },\n button: {\n '&:hover': {\n background: 'none',\n },\n },\n // Reduces default height of the modal, keeping a gap of 128px between the top and bottom of the page.\n paperFullWidth: { height: 'calc(100% - 128px)' },\n dialogActionsContainer: { padding: theme.spacing(1, 3) },\n viewResultsLink: { verticalAlign: '0.5em' },\n}));\n\nexport const Modal = ({ toggleModal }: SearchModalChildrenProps) => {\n const classes = useStyles();\n const navigate = useNavigate();\n const { transitions } = useTheme();\n const { focusContent } = useContent();\n\n const searchRootRoute = useRouteRef(rootRouteRef)();\n const searchBarRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n searchBarRef?.current?.focus();\n });\n\n const handleSearchResultClick = useCallback(() => {\n setTimeout(focusContent, transitions.duration.leavingScreen);\n }, [focusContent, transitions]);\n\n // This handler is called when \"enter\" is pressed\n const handleSearchBarSubmit = useCallback(() => {\n // Using ref to get the current field value without waiting for a query debounce\n const query = searchBarRef.current?.value ?? '';\n navigate(`${searchRootRoute}?query=${query}`);\n handleSearchResultClick();\n }, [navigate, handleSearchResultClick, searchRootRoute]);\n\n return (\n <>\n <DialogTitle>\n <Box className={classes.dialogTitle}>\n <SearchBar\n className={classes.input}\n inputProps={{ ref: searchBarRef }}\n onSubmit={handleSearchBarSubmit}\n />\n\n <IconButton aria-label=\"close\" onClick={toggleModal}>\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent>\n <Grid\n container\n direction=\"row-reverse\"\n justifyContent=\"flex-start\"\n alignItems=\"center\"\n >\n <Grid item>\n <Button\n className={classes.button}\n color=\"primary\"\n endIcon={<ArrowForwardIcon />}\n onClick={handleSearchBarSubmit}\n disableRipple\n >\n View Full Results\n </Button>\n </Grid>\n </Grid>\n <Divider />\n <SearchResult\n onClick={handleSearchResultClick}\n onKeyDown={handleSearchResultClick}\n />\n </DialogContent>\n <DialogActions className={classes.dialogActionsContainer}>\n <Grid container direction=\"row\">\n <Grid item xs={12}>\n <SearchResultPager />\n </Grid>\n </Grid>\n </DialogActions>\n </>\n );\n};\n\n/**\n * @public\n */\nexport const SearchModal = (props: SearchModalProps) => {\n const { open = true, hidden, toggleModal, children } = props;\n\n const classes = useStyles();\n\n return (\n <Dialog\n classes={{\n paperFullWidth: classes.paperFullWidth,\n }}\n onClose={toggleModal}\n aria-labelledby=\"search-modal-title\"\n fullWidth\n maxWidth=\"lg\"\n open={open}\n hidden={hidden}\n >\n {open && (\n <SearchContextProvider inheritParentContextIfAvailable>\n {(children && children({ toggleModal })) ?? (\n <Modal toggleModal={toggleModal} />\n )}\n </SearchContextProvider>\n )}\n </Dialog>\n );\n};\n","/*\n * Copyright 2022 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, { ReactNode, useCallback, useContext, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n createVersionedContext,\n createVersionedValueMap,\n} from '@backstage/version-bridge';\nimport useUpdateEffect from 'react-use/lib/useUpdateEffect';\n\n/**\n * The state of the search modal, as well as functions for changing the modal's\n * visibility.\n *\n * @public\n */\nexport type SearchModalValue = {\n state: {\n hidden: boolean;\n open: boolean;\n };\n toggleModal: () => void;\n setOpen: (open: boolean) => void;\n};\n\nconst SearchModalContext = createVersionedContext<{\n 1: SearchModalValue | undefined;\n}>('search-modal-context');\n\n/**\n * Props for the SearchModalProvider.\n * @public\n */\nexport type SearchModalProviderProps = {\n /**\n * Children which should have access to the SearchModal context and the\n * associated useSearchModal() hook.\n */\n children: ReactNode;\n\n /**\n * Pass true if the modal should be rendered initially.\n */\n showInitially?: boolean;\n};\n\n/**\n * A context provider responsible for storing and managing state related to the\n * search modal.\n *\n * @remarks\n * If you need to control visibility of the search toggle outside of the modal\n * itself, you can optionally place this higher up in the react tree where your\n * custom code and the search modal share the same context.\n *\n * @example\n * ```tsx\n * import {\n * SearchModalProvider,\n * SidebarSearchModal,\n * } from '@backstage/plugin-search';\n *\n * // ...\n *\n * <SearchModalProvider>\n * <KeyboardShortcutSearchToggler />\n * <SidebarSearchModal>\n * {({ toggleModal }) => <SearchModal toggleModal={toggleModal} />}\n * </SidebarSearchModal>\n * </SearchModalProvider>\n * ```\n *\n * @public\n */\nexport const SearchModalProvider = (props: SearchModalProviderProps) => {\n const value = useSearchModal(props.showInitially);\n const versionedValue = createVersionedValueMap({ 1: value });\n return (\n <SearchModalContext.Provider value={versionedValue}>\n {props.children}\n </SearchModalContext.Provider>\n );\n};\n\n/**\n * Use this hook to manage the state of {@link SearchModal}\n * and change its visibility. Monitors route changes setting the hidden state\n * to avoid having to call toggleModal on every result click.\n *\n * @public\n *\n * @param initialState - pass `true` to make the modal initially visible\n * @returns an object containing the state of the modal together with\n * functions for changing the visibility of the modal.\n */\nexport function useSearchModal(initialState = false) {\n const [state, setState] = useState({\n hidden: !initialState,\n open: initialState,\n });\n\n const toggleModal = useCallback(\n () =>\n setState(prevState => ({\n open: true,\n hidden: !prevState.hidden,\n })),\n [],\n );\n\n const setOpen = useCallback(\n (open: boolean) =>\n setState(prevState => ({\n open: prevState.open || open,\n hidden: !open,\n })),\n [],\n );\n\n // Check for any existing parent context.\n const parentContext = useContext(SearchModalContext);\n const parentContextValue = parentContext?.atVersion(1);\n const isParentContextPresent = !!parentContextValue?.state;\n\n // Monitor route changes to automatically hide the modal.\n const location = useLocation();\n const locationKey = `${location.pathname}${location.search}${location.hash}`;\n useUpdateEffect(() => {\n setState(prevState => ({\n open: prevState.open,\n hidden: true,\n }));\n }, [locationKey]);\n\n // Inherit from parent context, if set.\n return isParentContextPresent\n ? parentContextValue\n : { state, toggleModal, setOpen };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSearchModal-CaX46YAs.esm.js","sources":["../../src/components/SearchModal/SearchModal.tsx","../../src/components/SearchModal/useSearchModal.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 */\nimport { useContent } from '@backstage/core-components';\nimport { useRouteRef } from '@backstage/core-plugin-api';\nimport {\n SearchBar,\n SearchContextProvider,\n SearchResult,\n SearchResultPager,\n} from '@backstage/plugin-search-react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Divider from '@material-ui/core/Divider';\nimport Grid from '@material-ui/core/Grid';\nimport { useTheme } from '@material-ui/core/styles';\nimport Box from '@material-ui/core/Box';\nimport Button from '@material-ui/core/Button';\nimport IconButton from '@material-ui/core/IconButton';\nimport { makeStyles } from '@material-ui/core/styles';\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward';\nimport CloseIcon from '@material-ui/icons/Close';\nimport React, { useCallback, useEffect, useRef } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { rootRouteRef } from '../../plugin';\n\n/**\n * @public\n */\nexport interface SearchModalChildrenProps {\n /**\n * A function that should be invoked when navigating away from the modal.\n */\n toggleModal: () => void;\n}\n\n/**\n * @public\n */\nexport interface SearchModalProps {\n /**\n * If true, it renders the modal.\n */\n open?: boolean;\n /**\n * This is supposed to be used together with the open prop.\n * If `hidden` is true, it hides the modal.\n * If `open` is false, the value of `hidden` has no effect on the modal.\n * Use `open` for controlling whether the modal should be rendered or not.\n */\n hidden?: boolean;\n /**\n * a function invoked when a search item is pressed or when the dialog\n * should be closed.\n */\n toggleModal: () => void;\n /**\n * A function that returns custom content to render in the search modal in\n * place of the default.\n */\n children?: (props: SearchModalChildrenProps) => JSX.Element;\n}\n\nconst useStyles = makeStyles(theme => ({\n dialogTitle: {\n gap: theme.spacing(1),\n display: 'grid',\n alignItems: 'center',\n gridTemplateColumns: '1fr auto',\n '&> button': {\n marginTop: theme.spacing(1),\n },\n },\n input: {\n flex: 1,\n },\n button: {\n '&:hover': {\n background: 'none',\n },\n },\n // Reduces default height of the modal, keeping a gap of 128px between the top and bottom of the page.\n paperFullWidth: { height: 'calc(100% - 128px)' },\n dialogActionsContainer: { padding: theme.spacing(1, 3) },\n viewResultsLink: { verticalAlign: '0.5em' },\n}));\n\nexport const Modal = ({ toggleModal }: SearchModalChildrenProps) => {\n const classes = useStyles();\n const navigate = useNavigate();\n const { transitions } = useTheme();\n const { focusContent } = useContent();\n\n const searchRootRoute = useRouteRef(rootRouteRef)();\n const searchBarRef = useRef<HTMLInputElement | null>(null);\n\n useEffect(() => {\n searchBarRef?.current?.focus();\n });\n\n const handleSearchResultClick = useCallback(() => {\n setTimeout(focusContent, transitions.duration.leavingScreen);\n }, [focusContent, transitions]);\n\n // This handler is called when \"enter\" is pressed\n const handleSearchBarSubmit = useCallback(() => {\n // Using ref to get the current field value without waiting for a query debounce\n const query = searchBarRef.current?.value ?? '';\n navigate(`${searchRootRoute}?query=${query}`);\n handleSearchResultClick();\n }, [navigate, handleSearchResultClick, searchRootRoute]);\n\n return (\n <>\n <DialogTitle>\n <Box className={classes.dialogTitle}>\n <SearchBar\n className={classes.input}\n inputProps={{ ref: searchBarRef }}\n onSubmit={handleSearchBarSubmit}\n />\n\n <IconButton aria-label=\"close\" onClick={toggleModal}>\n <CloseIcon />\n </IconButton>\n </Box>\n </DialogTitle>\n <DialogContent>\n <Grid\n container\n direction=\"row-reverse\"\n justifyContent=\"flex-start\"\n alignItems=\"center\"\n >\n <Grid item>\n <Button\n className={classes.button}\n color=\"primary\"\n endIcon={<ArrowForwardIcon />}\n onClick={handleSearchBarSubmit}\n disableRipple\n >\n View Full Results\n </Button>\n </Grid>\n </Grid>\n <Divider />\n <SearchResult\n onClick={handleSearchResultClick}\n onKeyDown={handleSearchResultClick}\n />\n </DialogContent>\n <DialogActions className={classes.dialogActionsContainer}>\n <Grid container direction=\"row\">\n <Grid item xs={12}>\n <SearchResultPager />\n </Grid>\n </Grid>\n </DialogActions>\n </>\n );\n};\n\n/**\n * @public\n */\nexport const SearchModal = (props: SearchModalProps) => {\n const { open = true, hidden, toggleModal, children } = props;\n\n const classes = useStyles();\n\n return (\n <Dialog\n classes={{\n paperFullWidth: classes.paperFullWidth,\n }}\n onClose={toggleModal}\n aria-labelledby=\"search-modal-title\"\n fullWidth\n maxWidth=\"lg\"\n open={open}\n hidden={hidden}\n >\n {open && (\n <SearchContextProvider inheritParentContextIfAvailable>\n {(children && children({ toggleModal })) ?? (\n <Modal toggleModal={toggleModal} />\n )}\n </SearchContextProvider>\n )}\n </Dialog>\n );\n};\n","/*\n * Copyright 2022 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, { ReactNode, useCallback, useContext, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport {\n createVersionedContext,\n createVersionedValueMap,\n} from '@backstage/version-bridge';\nimport useUpdateEffect from 'react-use/esm/useUpdateEffect';\n\n/**\n * The state of the search modal, as well as functions for changing the modal's\n * visibility.\n *\n * @public\n */\nexport type SearchModalValue = {\n state: {\n hidden: boolean;\n open: boolean;\n };\n toggleModal: () => void;\n setOpen: (open: boolean) => void;\n};\n\nconst SearchModalContext = createVersionedContext<{\n 1: SearchModalValue | undefined;\n}>('search-modal-context');\n\n/**\n * Props for the SearchModalProvider.\n * @public\n */\nexport type SearchModalProviderProps = {\n /**\n * Children which should have access to the SearchModal context and the\n * associated useSearchModal() hook.\n */\n children: ReactNode;\n\n /**\n * Pass true if the modal should be rendered initially.\n */\n showInitially?: boolean;\n};\n\n/**\n * A context provider responsible for storing and managing state related to the\n * search modal.\n *\n * @remarks\n * If you need to control visibility of the search toggle outside of the modal\n * itself, you can optionally place this higher up in the react tree where your\n * custom code and the search modal share the same context.\n *\n * @example\n * ```tsx\n * import {\n * SearchModalProvider,\n * SidebarSearchModal,\n * } from '@backstage/plugin-search';\n *\n * // ...\n *\n * <SearchModalProvider>\n * <KeyboardShortcutSearchToggler />\n * <SidebarSearchModal>\n * {({ toggleModal }) => <SearchModal toggleModal={toggleModal} />}\n * </SidebarSearchModal>\n * </SearchModalProvider>\n * ```\n *\n * @public\n */\nexport const SearchModalProvider = (props: SearchModalProviderProps) => {\n const value = useSearchModal(props.showInitially);\n const versionedValue = createVersionedValueMap({ 1: value });\n return (\n <SearchModalContext.Provider value={versionedValue}>\n {props.children}\n </SearchModalContext.Provider>\n );\n};\n\n/**\n * Use this hook to manage the state of {@link SearchModal}\n * and change its visibility. Monitors route changes setting the hidden state\n * to avoid having to call toggleModal on every result click.\n *\n * @public\n *\n * @param initialState - pass `true` to make the modal initially visible\n * @returns an object containing the state of the modal together with\n * functions for changing the visibility of the modal.\n */\nexport function useSearchModal(initialState = false) {\n const [state, setState] = useState({\n hidden: !initialState,\n open: initialState,\n });\n\n const toggleModal = useCallback(\n () =>\n setState(prevState => ({\n open: true,\n hidden: !prevState.hidden,\n })),\n [],\n );\n\n const setOpen = useCallback(\n (open: boolean) =>\n setState(prevState => ({\n open: prevState.open || open,\n hidden: !open,\n })),\n [],\n );\n\n // Check for any existing parent context.\n const parentContext = useContext(SearchModalContext);\n const parentContextValue = parentContext?.atVersion(1);\n const isParentContextPresent = !!parentContextValue?.state;\n\n // Monitor route changes to automatically hide the modal.\n const location = useLocation();\n const locationKey = `${location.pathname}${location.search}${location.hash}`;\n useUpdateEffect(() => {\n setState(prevState => ({\n open: prevState.open,\n hidden: true,\n }));\n }, [locationKey]);\n\n // Inherit from parent context, if set.\n return isParentContextPresent\n ? parentContextValue\n : { state, toggleModal, setOpen };\n}\n"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -226,4 +226,4 @@ declare const SidebarSearchModal: (props: SidebarSearchModalProps) => React.JSX.
226
226
  */
227
227
  declare const HomePageSearchBar: (props: Partial<Omit<_backstage_plugin_search_react.SearchBarBaseProps, "onChange" | "onSubmit">>) => React.JSX.Element;
228
228
 
229
- export { HomePageSearchBar, HomePageSearchBarProps, SearchPage$1 as Router, SearchModal, SearchModalChildrenProps, SearchModalProps, SearchModalProvider, SearchModalProviderProps, SearchModalValue, SearchPage, SearchType, SearchTypeAccordionProps, SearchTypeProps, SearchTypeTabsProps, SidebarSearch, SidebarSearchModal, SidebarSearchModalProps, SidebarSearchProps, searchPlugin as plugin, searchPlugin, useSearchModal };
229
+ export { HomePageSearchBar, type HomePageSearchBarProps, SearchPage$1 as Router, SearchModal, type SearchModalChildrenProps, type SearchModalProps, SearchModalProvider, type SearchModalProviderProps, type SearchModalValue, SearchPage, SearchType, type SearchTypeAccordionProps, type SearchTypeProps, type SearchTypeTabsProps, SidebarSearch, SidebarSearchModal, type SidebarSearchModalProps, type SidebarSearchProps, searchPlugin as plugin, searchPlugin, useSearchModal };
package/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- export { S as SearchModal, a as SearchModalProvider, u as useSearchModal } from './esm/useSearchModal-6e526dc2.esm.js';
2
- import { r as rootRouteRef } from './esm/SearchType-17c45ae8.esm.js';
3
- export { H as HomePageSearchBar, S as Router, b as SearchPage, a as SearchType, c as SidebarSearchModal, s as plugin, s as searchPlugin } from './esm/SearchType-17c45ae8.esm.js';
1
+ export { S as SearchModal, a as SearchModalProvider, u as useSearchModal } from './esm/useSearchModal-CaX46YAs.esm.js';
2
+ import { r as rootRouteRef } from './esm/SearchType-BDK6qMj4.esm.js';
3
+ export { H as HomePageSearchBar, S as Router, b as SearchPage, a as SearchType, c as SidebarSearchModal, s as plugin, s as searchPlugin } from './esm/SearchType-BDK6qMj4.esm.js';
4
4
  import qs from 'qs';
5
5
  import React, { useCallback } from 'react';
6
6
  import { useNavigate } from 'react-router-dom';
@@ -20,9 +20,9 @@ import '@material-ui/core/IconButton';
20
20
  import '@material-ui/icons/ArrowForward';
21
21
  import '@material-ui/icons/Close';
22
22
  import '@backstage/version-bridge';
23
- import 'react-use/lib/useUpdateEffect';
23
+ import 'react-use/esm/useUpdateEffect';
24
24
  import '@backstage/errors';
25
- import 'react-use/lib/usePrevious';
25
+ import 'react-use/esm/usePrevious';
26
26
  import '@material-ui/core/Checkbox';
27
27
  import '@material-ui/core/Chip';
28
28
  import '@material-ui/core/FormControl';
@@ -30,7 +30,7 @@ import '@material-ui/core/InputLabel';
30
30
  import '@material-ui/core/ListItemText';
31
31
  import '@material-ui/core/MenuItem';
32
32
  import '@material-ui/core/Select';
33
- import 'react-use/lib/useEffectOnce';
33
+ import 'react-use/esm/useEffectOnce';
34
34
  import '@material-ui/core/Accordion';
35
35
  import '@material-ui/core/AccordionSummary';
36
36
  import '@material-ui/core/AccordionDetails';
@@ -42,7 +42,7 @@ import '@material-ui/core/ListItem';
42
42
  import '@material-ui/core/ListItemIcon';
43
43
  import '@material-ui/icons/ExpandMore';
44
44
  import '@material-ui/icons/FontDownload';
45
- import 'react-use/lib/useAsync';
45
+ import 'react-use/esm/useAsync';
46
46
  import '@material-ui/core/Tab';
47
47
  import '@material-ui/core/Tabs';
48
48
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-search",
3
- "version": "1.4.7",
3
+ "version": "1.4.8",
4
4
  "description": "The Backstage plugin that provides your backstage app with search",
5
5
  "backstage": {
6
6
  "role": "frontend-plugin"
@@ -49,14 +49,14 @@
49
49
  "test": "backstage-cli package test"
50
50
  },
51
51
  "dependencies": {
52
- "@backstage/core-compat-api": "^0.2.1",
53
- "@backstage/core-components": "^0.14.1",
52
+ "@backstage/core-compat-api": "^0.2.2",
53
+ "@backstage/core-components": "^0.14.2",
54
54
  "@backstage/core-plugin-api": "^1.9.1",
55
55
  "@backstage/errors": "^1.2.4",
56
- "@backstage/frontend-plugin-api": "^0.6.1",
57
- "@backstage/plugin-catalog-react": "^1.11.0",
56
+ "@backstage/frontend-plugin-api": "^0.6.2",
57
+ "@backstage/plugin-catalog-react": "^1.11.1",
58
58
  "@backstage/plugin-search-common": "^1.2.11",
59
- "@backstage/plugin-search-react": "^1.7.7",
59
+ "@backstage/plugin-search-react": "^1.7.8",
60
60
  "@backstage/types": "^1.1.1",
61
61
  "@backstage/version-bridge": "^1.0.7",
62
62
  "@material-ui/core": "^4.12.2",
@@ -66,10 +66,10 @@
66
66
  "react-use": "^17.2.4"
67
67
  },
68
68
  "devDependencies": {
69
- "@backstage/cli": "^0.26.0",
70
- "@backstage/core-app-api": "^1.12.1",
71
- "@backstage/dev-utils": "^1.0.28",
72
- "@backstage/test-utils": "^1.5.1",
69
+ "@backstage/cli": "^0.26.1",
70
+ "@backstage/core-app-api": "^1.12.2",
71
+ "@backstage/dev-utils": "^1.0.29",
72
+ "@backstage/test-utils": "^1.5.2",
73
73
  "@testing-library/dom": "^9.0.0",
74
74
  "@testing-library/jest-dom": "^6.0.0",
75
75
  "@testing-library/react": "^14.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-fce5b753.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}