|
| 1 | +diff --git a/dist/alpha.d.ts b/dist/alpha.d.ts |
| 2 | +index b939c98bf499fc42ce68dc074cac8eb641ed7462..83e93f40f32bd4d021dd12b7844d393648ce1804 100644 |
| 3 | +--- a/dist/alpha.d.ts |
| 4 | ++++ b/dist/alpha.d.ts |
| 5 | +@@ -18,7 +18,7 @@ declare const searchTranslationRef: _backstage_core_plugin_api_alpha.Translation |
| 6 | + }>; |
| 7 | + |
| 8 | + /** @alpha */ |
| 9 | +-declare const searchApi: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{ |
| 10 | ++declare const searchApi: _backstage_frontend_plugin_api.ExtensionDefinition<{ |
| 11 | + kind: "api"; |
| 12 | + name: undefined; |
| 13 | + config: {}; |
| 14 | +@@ -28,7 +28,7 @@ declare const searchApi: _backstage_frontend_plugin_api.OverridableExtensionDefi |
| 15 | + params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_core_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_core_plugin_api.AnyApiFactory>; |
| 16 | + }>; |
| 17 | + /** @alpha */ |
| 18 | +-declare const searchPage: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{ |
| 19 | ++declare const searchPage: _backstage_frontend_plugin_api.ExtensionDefinition<{ |
| 20 | + config: { |
| 21 | + noTrack: boolean; |
| 22 | + } & { |
| 23 | +@@ -46,7 +46,6 @@ declare const searchPage: _backstage_frontend_plugin_api.OverridableExtensionDef |
| 24 | + items: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<{ |
| 25 | + predicate?: _backstage_plugin_search_react_alpha.SearchResultItemExtensionPredicate; |
| 26 | + component: _backstage_plugin_search_react_alpha.SearchResultItemExtensionComponent; |
| 27 | +- icon?: react.JSX.Element; |
| 28 | + }, "search.search-result-list-item.item", {}>, { |
| 29 | + singleton: false; |
| 30 | + optional: false; |
| 31 | +@@ -54,7 +53,7 @@ declare const searchPage: _backstage_frontend_plugin_api.OverridableExtensionDef |
| 32 | + resultTypes: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<{ |
| 33 | + value: string; |
| 34 | + name: string; |
| 35 | +- icon: react.JSX.Element; |
| 36 | ++ icon: JSX.Element; |
| 37 | + }, "search.filters.result-types.type", {}>, { |
| 38 | + singleton: false; |
| 39 | + optional: false; |
| 40 | +@@ -76,7 +75,7 @@ declare const searchPage: _backstage_frontend_plugin_api.OverridableExtensionDef |
| 41 | + }; |
| 42 | + }>; |
| 43 | + /** @alpha */ |
| 44 | +-declare const searchNavItem: _backstage_frontend_plugin_api.OverridableExtensionDefinition<{ |
| 45 | ++declare const searchNavItem: _backstage_frontend_plugin_api.ExtensionDefinition<{ |
| 46 | + kind: "nav-item"; |
| 47 | + name: undefined; |
| 48 | + config: {}; |
| 49 | +@@ -97,7 +96,7 @@ declare const searchNavItem: _backstage_frontend_plugin_api.OverridableExtension |
| 50 | + declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin<{ |
| 51 | + root: _backstage_frontend_plugin_api.RouteRef<undefined>; |
| 52 | + }, {}, { |
| 53 | +- "api:search": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{ |
| 54 | ++ "api:search": _backstage_frontend_plugin_api.ExtensionDefinition<{ |
| 55 | + kind: "api"; |
| 56 | + name: undefined; |
| 57 | + config: {}; |
| 58 | +@@ -106,7 +105,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin |
| 59 | + inputs: {}; |
| 60 | + params: <TApi, TImpl extends TApi, TDeps extends { [name in string]: unknown; }>(params: _backstage_core_plugin_api.ApiFactory<TApi, TImpl, TDeps>) => _backstage_frontend_plugin_api.ExtensionBlueprintParams<_backstage_core_plugin_api.AnyApiFactory>; |
| 61 | + }>; |
| 62 | +- "nav-item:search": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{ |
| 63 | ++ "nav-item:search": _backstage_frontend_plugin_api.ExtensionDefinition<{ |
| 64 | + kind: "nav-item"; |
| 65 | + name: undefined; |
| 66 | + config: {}; |
| 67 | +@@ -123,7 +122,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin |
| 68 | + routeRef: _backstage_frontend_plugin_api.RouteRef<undefined>; |
| 69 | + }; |
| 70 | + }>; |
| 71 | +- "page:search": _backstage_frontend_plugin_api.OverridableExtensionDefinition<{ |
| 72 | ++ "page:search": _backstage_frontend_plugin_api.ExtensionDefinition<{ |
| 73 | + config: { |
| 74 | + noTrack: boolean; |
| 75 | + } & { |
| 76 | +@@ -141,7 +140,6 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin |
| 77 | + items: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<{ |
| 78 | + predicate?: _backstage_plugin_search_react_alpha.SearchResultItemExtensionPredicate; |
| 79 | + component: _backstage_plugin_search_react_alpha.SearchResultItemExtensionComponent; |
| 80 | +- icon?: react.JSX.Element; |
| 81 | + }, "search.search-result-list-item.item", {}>, { |
| 82 | + singleton: false; |
| 83 | + optional: false; |
| 84 | +@@ -149,7 +147,7 @@ declare const _default: _backstage_frontend_plugin_api.OverridableFrontendPlugin |
| 85 | + resultTypes: _backstage_frontend_plugin_api.ExtensionInput<_backstage_frontend_plugin_api.ConfigurableExtensionDataRef<{ |
| 86 | + value: string; |
| 87 | + name: string; |
| 88 | +- icon: react.JSX.Element; |
| 89 | ++ icon: JSX.Element; |
| 90 | + }, "search.filters.result-types.type", {}>, { |
| 91 | + singleton: false; |
| 92 | + optional: false; |
| 93 | +diff --git a/dist/components/SearchPage/SearchPage.esm.js b/dist/components/SearchPage/SearchPage.esm.js |
| 94 | +index cac9c3a6f3dcb7b2777586c076d8ccf7e62b37da..27129f72edb65b535dbbdad8c897280fdc1c9eb0 100644 |
| 95 | +--- a/dist/components/SearchPage/SearchPage.esm.js |
| 96 | ++++ b/dist/components/SearchPage/SearchPage.esm.js |
| 97 | +@@ -22,7 +22,7 @@ const UrlUpdater = () => { |
| 98 | + if (location.search === prevQueryParams) { |
| 99 | + return; |
| 100 | + } |
| 101 | +- const query = qs.parse(location.search.substring(1), { arrayLimit: 0 }) || {}; |
| 102 | ++ const query = qs.parse(location.search.substring(1), { arrayLimit: 1e4 }) || {}; |
| 103 | + if (query.filters) { |
| 104 | + setFilters(query.filters); |
| 105 | + } |
| 106 | +diff --git a/dist/components/SearchPage/SearchPage.esm.js.map b/dist/components/SearchPage/SearchPage.esm.js.map |
| 107 | +index 590d6ed3f78412f698a41509d75002806b564d9b..7c7ec20dacd8767208ae5258b1f6f069abba7816 100644 |
| 108 | +--- a/dist/components/SearchPage/SearchPage.esm.js.map |
| 109 | ++++ b/dist/components/SearchPage/SearchPage.esm.js.map |
| 110 | +@@ -1 +1 @@ |
| 111 | +-{"version":3,"file":"SearchPage.esm.js","sources":["../../../src/components/SearchPage/SearchPage.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 { 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"],"names":[],"mappings":";;;;;;;AA0BO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,MACE,SAAA,EAAU;AAEd,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,QAAA,CAAS,MAAM,CAAA;AACnD,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,QAAA,CAAS,WAAW,eAAA,EAAiB;AACvC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GACJ,EAAA,CAAG,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,EAAG,EAAE,UAAA,EAAY,CAAA,EAAG,KAAK,EAAC;AAEhE,IAAA,IAAI,MAAM,OAAA,EAAS;AACjB,MAAA,UAAA,CAAW,MAAM,OAAqB,CAAA;AAAA,IACxC;AAEA,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,OAAA,CAAQ,MAAM,KAAe,CAAA;AAAA,IAC/B;AAEA,IAAA,IAAI,MAAM,UAAA,EAAY;AACpB,MAAA,aAAA,CAAc,MAAM,UAAoB,CAAA;AAAA,IAC1C;AAEA,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,QAAA,CAAS,MAAM,KAAiB,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,QAAA,EAAU,SAAS,QAAA,EAAU,aAAA,EAAe,UAAU,CAAC,CAAA;AAE5E,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,YAAY,EAAA,CAAG,SAAA;AAAA,MACnB;AAAA,QACE,KAAA,EAAO,IAAA;AAAA,QACP,KAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,EAAE,aAAa,UAAA;AAAW,KAC5B;AACA,IAAA,MAAM,SAAS,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,QAAQ,IAAI,SAAS,CAAA,CAAA;AAMvD,IAAA,MAAA,CAAO,OAAA,CAAQ,YAAA,CAAa,IAAA,EAAM,QAAA,CAAS,OAAO,MAAM,CAAA;AAAA,EAC1D,GAAG,CAAC,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,OAAO,CAAC,CAAA;AAErC,EAAA,OAAO,IAAA;AACT;AAKO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,4BACG,qBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAAA,IACX;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"} |
| 112 | +\ No newline at end of file |
| 113 | ++{"version":3,"file":"SearchPage.esm.js","sources":["../../../src/components/SearchPage/SearchPage.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 { 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: 10000 }) || {};\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"],"names":[],"mappings":";;;;;;;AA0BO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,WAAW,WAAA,EAAY;AAC7B,EAAA,MAAM;AAAA,IACJ,IAAA;AAAA,IACA,OAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,aAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,MACE,SAAA,EAAU;AAEd,EAAA,MAAM,eAAA,GAAkB,WAAA,CAAY,QAAA,CAAS,MAAM,CAAA;AACnD,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,IAAI,QAAA,CAAS,WAAW,eAAA,EAAiB;AACvC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,KAAA,GACJ,EAAA,CAAG,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA,EAAG,EAAE,UAAA,EAAY,GAAA,EAAO,KAAK,EAAC;AAEpE,IAAA,IAAI,MAAM,OAAA,EAAS;AACjB,MAAA,UAAA,CAAW,MAAM,OAAqB,CAAA;AAAA,IACxC;AAEA,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,OAAA,CAAQ,MAAM,KAAe,CAAA;AAAA,IAC/B;AAEA,IAAA,IAAI,MAAM,UAAA,EAAY;AACpB,MAAA,aAAA,CAAc,MAAM,UAAoB,CAAA;AAAA,IAC1C;AAEA,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,QAAA,CAAS,MAAM,KAAiB,CAAA;AAAA,IAClC;AAAA,EACF,CAAA,EAAG,CAAC,eAAA,EAAiB,QAAA,EAAU,SAAS,QAAA,EAAU,aAAA,EAAe,UAAU,CAAC,CAAA;AAE5E,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,YAAY,EAAA,CAAG,SAAA;AAAA,MACnB;AAAA,QACE,KAAA,EAAO,IAAA;AAAA,QACP,KAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,EAAE,aAAa,UAAA;AAAW,KAC5B;AACA,IAAA,MAAM,SAAS,CAAA,EAAG,MAAA,CAAO,QAAA,CAAS,QAAQ,IAAI,SAAS,CAAA,CAAA;AAMvD,IAAA,MAAA,CAAO,OAAA,CAAQ,YAAA,CAAa,IAAA,EAAM,QAAA,CAAS,OAAO,MAAM,CAAA;AAAA,EAC1D,GAAG,CAAC,IAAA,EAAM,KAAA,EAAO,UAAA,EAAY,OAAO,CAAC,CAAA;AAErC,EAAA,OAAO,IAAA;AACT;AAKO,MAAM,aAAa,MAAM;AAC9B,EAAA,MAAM,SAAS,SAAA,EAAU;AAEzB,EAAA,4BACG,qBAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,CAAA;AAAA,IACX;AAAA,GAAA,EACH,CAAA;AAEJ;;;;"} |
| 114 | +\ No newline at end of file |
0 commit comments