@docusaurus/theme-search-algolia 0.0.0-4403 → 0.0.0-4416

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.
@@ -27,6 +27,10 @@ function ResultsFooter({ state, onClose }) {
27
27
  See all {state.context.nbHits} results
28
28
  </Link>);
29
29
  }
30
+ function mergeFacetFilters(f1, f2) {
31
+ const normalize = (f) => f instanceof Array ? f : [f];
32
+ return [...normalize(f1), ...normalize(f2)];
33
+ }
30
34
  function DocSearch({ contextualSearch, externalUrlRegex, ...props }) {
31
35
  var _a, _b;
32
36
  const { siteMetadata } = useDocusaurusContext();
@@ -34,7 +38,7 @@ function DocSearch({ contextualSearch, externalUrlRegex, ...props }) {
34
38
  const configFacetFilters = (_b = (_a = props.searchParameters) === null || _a === void 0 ? void 0 : _a.facetFilters) !== null && _b !== void 0 ? _b : [];
35
39
  const facetFilters = contextualSearch
36
40
  ? // Merge contextual search filters with config filters
37
- [...contextualSearchFacetFilters, ...configFacetFilters]
41
+ mergeFacetFilters(contextualSearchFacetFilters, configFacetFilters)
38
42
  : // ... or use config facetFilters
39
43
  configFacetFilters;
40
44
  // we let user override default searchParameters if he wants to
@@ -104,9 +108,9 @@ function DocSearch({ contextualSearch, externalUrlRegex, ...props }) {
104
108
  url: withBaseUrl(`${url.pathname}${url.hash}`),
105
109
  };
106
110
  })).current;
107
- const resultsFooterComponent = useMemo(
111
+ const resultsFooterComponent = useMemo(() =>
108
112
  // eslint-disable-next-line react/no-unstable-nested-components
109
- () => (footerProps) => <ResultsFooter {...footerProps} onClose={onClose}/>, [onClose]);
113
+ (footerProps) => <ResultsFooter {...footerProps} onClose={onClose}/>, [onClose]);
110
114
  const transformSearchClient = useCallback((searchClient) => {
111
115
  searchClient.addAlgoliaAgent('docusaurus', siteMetadata.docusaurusVersion);
112
116
  return searchClient;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@docusaurus/theme-search-algolia",
3
- "version": "0.0.0-4403",
3
+ "version": "0.0.0-4416",
4
4
  "description": "Algolia search component for Docusaurus.",
5
5
  "main": "lib/index.js",
6
6
  "exports": {
@@ -25,12 +25,12 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@docsearch/react": "^3.0.0-alpha.39",
28
- "@docusaurus/core": "0.0.0-4403",
29
- "@docusaurus/logger": "0.0.0-4403",
30
- "@docusaurus/theme-common": "0.0.0-4403",
31
- "@docusaurus/theme-translations": "0.0.0-4403",
32
- "@docusaurus/utils": "0.0.0-4403",
33
- "@docusaurus/utils-validation": "0.0.0-4403",
28
+ "@docusaurus/core": "0.0.0-4416",
29
+ "@docusaurus/logger": "0.0.0-4416",
30
+ "@docusaurus/theme-common": "0.0.0-4416",
31
+ "@docusaurus/theme-translations": "0.0.0-4416",
32
+ "@docusaurus/utils": "0.0.0-4416",
33
+ "@docusaurus/utils-validation": "0.0.0-4416",
34
34
  "algoliasearch": "^4.10.5",
35
35
  "algoliasearch-helper": "^3.5.5",
36
36
  "clsx": "^1.1.1",
@@ -40,7 +40,7 @@
40
40
  "utility-types": "^3.10.0"
41
41
  },
42
42
  "devDependencies": {
43
- "@docusaurus/module-type-aliases": "0.0.0-4403",
43
+ "@docusaurus/module-type-aliases": "0.0.0-4416",
44
44
  "fs-extra": "^10.0.0"
45
45
  },
46
46
  "peerDependencies": {
@@ -50,5 +50,5 @@
50
50
  "engines": {
51
51
  "node": ">=14"
52
52
  },
53
- "gitHead": "550d336db77e6225a4409a859f47e4f705a3908a"
53
+ "gitHead": "1e293693c98bbc0b8052e82ce35159807ec5eaa9"
54
54
  }
@@ -64,6 +64,18 @@ function ResultsFooter({state, onClose}: ResultsFooterProps) {
64
64
  );
65
65
  }
66
66
 
67
+ type FacetFilters = Required<
68
+ Required<DocSearchProps>['searchParameters']
69
+ >['facetFilters'];
70
+
71
+ function mergeFacetFilters(f1: FacetFilters, f2: FacetFilters): FacetFilters {
72
+ const normalize = (
73
+ f: FacetFilters,
74
+ ): readonly string[] | ReadonlyArray<readonly string[]> =>
75
+ f instanceof Array ? f : [f];
76
+ return [...normalize(f1), ...normalize(f2)] as FacetFilters;
77
+ }
78
+
67
79
  function DocSearch({
68
80
  contextualSearch,
69
81
  externalUrlRegex,
@@ -71,18 +83,20 @@ function DocSearch({
71
83
  }: DocSearchProps) {
72
84
  const {siteMetadata} = useDocusaurusContext();
73
85
 
74
- const contextualSearchFacetFilters = useAlgoliaContextualFacetFilters();
86
+ const contextualSearchFacetFilters =
87
+ useAlgoliaContextualFacetFilters() as FacetFilters;
75
88
 
76
- const configFacetFilters = props.searchParameters?.facetFilters ?? [];
89
+ const configFacetFilters: FacetFilters =
90
+ props.searchParameters?.facetFilters ?? [];
77
91
 
78
- const facetFilters = contextualSearch
92
+ const facetFilters: FacetFilters = contextualSearch
79
93
  ? // Merge contextual search filters with config filters
80
- [...contextualSearchFacetFilters, ...configFacetFilters]
94
+ mergeFacetFilters(contextualSearchFacetFilters, configFacetFilters)
81
95
  : // ... or use config facetFilters
82
96
  configFacetFilters;
83
97
 
84
98
  // we let user override default searchParameters if he wants to
85
- const searchParameters = {
99
+ const searchParameters: DocSearchProps['searchParameters'] = {
86
100
  ...props.searchParameters,
87
101
  facetFilters,
88
102
  };
@@ -167,12 +181,14 @@ function DocSearch({
167
181
  }),
168
182
  ).current;
169
183
 
170
- const resultsFooterComponent = useMemo(
171
- // eslint-disable-next-line react/no-unstable-nested-components
172
- () => (footerProps: ResultsFooterProps) =>
173
- <ResultsFooter {...footerProps} onClose={onClose} />,
174
- [onClose],
175
- );
184
+ const resultsFooterComponent: DocSearchProps['resultsFooterComponent'] =
185
+ useMemo(
186
+ () =>
187
+ // eslint-disable-next-line react/no-unstable-nested-components
188
+ (footerProps: Omit<ResultsFooterProps, 'onClose'>): JSX.Element =>
189
+ <ResultsFooter {...footerProps} onClose={onClose} />,
190
+ [onClose],
191
+ );
176
192
 
177
193
  const transformSearchClient = useCallback(
178
194
  (searchClient) => {
package/src/types.d.ts CHANGED
@@ -8,3 +8,7 @@
8
8
  /// <reference types="@docusaurus/module-type-aliases" />
9
9
  /// <reference types="@docusaurus/theme-common" />
10
10
  /// <reference types="@docusaurus/theme-classic" />
11
+
12
+ export type FacetFilters = Required<
13
+ Required<DocSearchProps>['searchParameters']
14
+ >['facetFilters'];