1
1
// Original swizzled version: https://github.com/cursorless-dev/cursorless/blob/01028c948387ad98e3c6099c3eda9e8a96753c19/website/src/theme/SearchBar/index.js
2
2
3
- import React , { useState , useRef , useCallback , useMemo } from ' react' ;
4
- import { createPortal } from ' react-dom' ;
5
- import useDocusaurusContext from ' @docusaurus/useDocusaurusContext' ;
6
- import { useHistory } from ' @docusaurus/router' ;
7
- import { useBaseUrlUtils } from ' @docusaurus/useBaseUrl' ;
8
- import Link from ' @docusaurus/Link' ;
9
- import Head from ' @docusaurus/Head' ;
10
- import { isRegexpStringMatch } from ' @docusaurus/theme-common' ;
11
- import { useSearchPage } from ' @docusaurus/theme-common/internal' ;
12
- import { DocSearchButton , useDocSearchKeyboardEvents } from ' @docsearch/react' ;
13
- import { useAlgoliaContextualFacetFilters } from ' @docusaurus/theme-search-algolia/client' ;
14
- import useIsBrowser from ' @docusaurus/useIsBrowser' ;
15
- import Translate from ' @docusaurus/Translate' ;
16
- import translations from ' @theme/SearchTranslations' ;
3
+ import React , { useState , useRef , useCallback , useMemo } from " react" ;
4
+ import { createPortal } from " react-dom" ;
5
+ import useDocusaurusContext from " @docusaurus/useDocusaurusContext" ;
6
+ import { useHistory } from " @docusaurus/router" ;
7
+ import { useBaseUrlUtils } from " @docusaurus/useBaseUrl" ;
8
+ import Link from " @docusaurus/Link" ;
9
+ import Head from " @docusaurus/Head" ;
10
+ import { isRegexpStringMatch } from " @docusaurus/theme-common" ;
11
+ import { useSearchPage } from " @docusaurus/theme-common/internal" ;
12
+ import { DocSearchButton , useDocSearchKeyboardEvents } from " @docsearch/react" ;
13
+ import { useAlgoliaContextualFacetFilters } from " @docusaurus/theme-search-algolia/client" ;
14
+ import useIsBrowser from " @docusaurus/useIsBrowser" ;
15
+ import Translate from " @docusaurus/Translate" ;
16
+ import translations from " @theme/SearchTranslations" ;
17
17
let DocSearchModal = null ;
18
- function Hit ( { hit, children} ) {
18
+ function Hit ( { hit, children } ) {
19
19
return < Link to = { hit . url } > { children } </ Link > ;
20
20
}
21
- function ResultsFooter ( { state, onClose} ) {
22
- const { generateSearchPageLink} = useSearchPage ( ) ;
21
+ function ResultsFooter ( { state, onClose } ) {
22
+ const { generateSearchPageLink } = useSearchPage ( ) ;
23
23
return (
24
24
< Link to = { generateSearchPageLink ( state . query ) } onClick = { onClose } >
25
25
< Translate
26
26
id = "theme.SearchBar.seeAll"
27
- values = { { count : state . context . nbHits } } >
28
- { 'See all {count} results' }
27
+ values = { { count : state . context . nbHits } }
28
+ >
29
+ { "See all {count} results" }
29
30
</ Translate >
30
31
</ Link >
31
32
) ;
32
33
}
33
34
function mergeFacetFilters ( f1 , f2 ) {
34
- const normalize = ( f ) => ( typeof f === ' string' ? [ f ] : f ) ;
35
+ const normalize = ( f ) => ( typeof f === " string" ? [ f ] : f ) ;
35
36
return [ ...normalize ( f1 ) , ...normalize ( f2 ) ] ;
36
37
}
37
- function DocSearch ( { contextualSearch, externalUrlRegex, ...props } ) {
38
- const { siteMetadata} = useDocusaurusContext ( ) ;
38
+ function DocSearch ( { contextualSearch, externalUrlRegex, ...props } ) {
39
+ const { siteMetadata } = useDocusaurusContext ( ) ;
39
40
const contextualSearchFacetFilters = useAlgoliaContextualFacetFilters ( ) ;
40
41
const configFacetFilters = props . searchParameters ?. facetFilters ?? [ ] ;
41
42
const facetFilters = contextualSearch
@@ -44,7 +45,7 @@ function DocSearch({contextualSearch, externalUrlRegex, ...props}) {
44
45
: // ... or use config facetFilters
45
46
configFacetFilters ;
46
47
47
- const isBrowser = useIsBrowser ( )
48
+ const isBrowser = useIsBrowser ( ) ;
48
49
49
50
// Tweak search so that we prefer:
50
51
// - the same lvl0 as the current doc (eg "For users"),
@@ -61,12 +62,9 @@ function DocSearch({contextualSearch, externalUrlRegex, ...props}) {
61
62
const searchParameters = {
62
63
...props . searchParameters ,
63
64
facetFilters,
64
- optionalFilters : [
65
- `hierarchy.lvl0: ${ lvl0 } ` ,
66
- "is_api: no"
67
- ] ,
65
+ optionalFilters : [ `hierarchy.lvl0: ${ lvl0 } ` , "is_api: no" ] ,
68
66
} ;
69
- const { withBaseUrl} = useBaseUrlUtils ( ) ;
67
+ const { withBaseUrl } = useBaseUrlUtils ( ) ;
70
68
const history = useHistory ( ) ;
71
69
const searchContainer = useRef ( null ) ;
72
70
const searchButtonRef = useRef ( null ) ;
@@ -77,16 +75,16 @@ function DocSearch({contextualSearch, externalUrlRegex, ...props}) {
77
75
return Promise . resolve ( ) ;
78
76
}
79
77
return Promise . all ( [
80
- import ( ' @docsearch/react/modal' ) ,
81
- import ( ' @docsearch/react/style' ) ,
82
- import ( ' ./styles.css' ) ,
83
- ] ) . then ( ( [ { DocSearchModal : Modal } ] ) => {
78
+ import ( " @docsearch/react/modal" ) ,
79
+ import ( " @docsearch/react/style" ) ,
80
+ import ( " ./styles.css" ) ,
81
+ ] ) . then ( ( [ { DocSearchModal : Modal } ] ) => {
84
82
DocSearchModal = Modal ;
85
83
} ) ;
86
84
} , [ ] ) ;
87
85
const onOpen = useCallback ( ( ) => {
88
86
importDocSearchModalIfNeeded ( ) . then ( ( ) => {
89
- searchContainer . current = document . createElement ( ' div' ) ;
87
+ searchContainer . current = document . createElement ( " div" ) ;
90
88
document . body . insertBefore (
91
89
searchContainer . current ,
92
90
document . body . firstChild ,
@@ -108,7 +106,7 @@ function DocSearch({contextualSearch, externalUrlRegex, ...props}) {
108
106
[ importDocSearchModalIfNeeded , setIsOpen , setInitialQuery ] ,
109
107
) ;
110
108
const navigator = useRef ( {
111
- navigate ( { itemUrl} ) {
109
+ navigate ( { itemUrl } ) {
112
110
// Algolia results could contain URL's from other domains which cannot
113
111
// be served through history and should navigate with window.location
114
112
if ( isRegexpStringMatch ( externalUrlRegex , itemUrl ) ) {
@@ -143,7 +141,7 @@ function DocSearch({contextualSearch, externalUrlRegex, ...props}) {
143
141
const transformSearchClient = useCallback (
144
142
( searchClient ) => {
145
143
searchClient . addAlgoliaAgent (
146
- ' docusaurus' ,
144
+ " docusaurus" ,
147
145
siteMetadata . docusaurusVersion ,
148
146
) ;
149
147
return searchClient ;
@@ -205,6 +203,6 @@ function DocSearch({contextualSearch, externalUrlRegex, ...props}) {
205
203
) ;
206
204
}
207
205
export default function SearchBar ( ) {
208
- const { siteConfig} = useDocusaurusContext ( ) ;
206
+ const { siteConfig } = useDocusaurusContext ( ) ;
209
207
return < DocSearch { ...siteConfig . themeConfig . algolia } /> ;
210
208
}
0 commit comments