55 * LICENSE file in the root directory of this source tree.
66 */
77
8- import React , { useState , useRef , useCallback , useMemo } from 'react' ;
9- import { createPortal } from 'react-dom' ;
10- import useDocusaurusContext from '@docusaurus/useDocusaurusContext' ;
11- import { useHistory } from '@docusaurus/router' ;
12- import { useBaseUrlUtils } from '@docusaurus/useBaseUrl' ;
13- import Link from '@docusaurus/Link' ;
8+ import React , { useCallback , useMemo , useRef , useState } from 'react' ;
9+ import { DocSearchButton , useDocSearchKeyboardEvents } from '@docsearch/react' ;
1410import Head from '@docusaurus/Head' ;
11+ import Link from '@docusaurus/Link' ;
12+ import { useHistory } from '@docusaurus/router' ;
1513import { isRegexpStringMatch } from '@docusaurus/theme-common' ;
1614import { useSearchPage } from '@docusaurus/theme-common/internal' ;
17- import { DocSearchButton , useDocSearchKeyboardEvents } from '@docsearch/react' ;
18- import { useAlgoliaContextualFacetFilters } from '@docusaurus/theme-search-algolia/client' ;
15+ import {
16+ useAlgoliaContextualFacetFilters ,
17+ useSearchResultUrlProcessor ,
18+ } from '@docusaurus/theme-search-algolia/client' ;
1919import Translate from '@docusaurus/Translate' ;
20+ import useDocusaurusContext from '@docusaurus/useDocusaurusContext' ;
21+ import { createPortal } from 'react-dom' ;
2022import translations from '@theme/SearchTranslations' ;
2123
24+ import type { AutocompleteState } from '@algolia/autocomplete-core' ;
2225import type {
2326 DocSearchModal as DocSearchModalType ,
2427 DocSearchModalProps ,
@@ -28,7 +31,6 @@ import type {
2831 StoredDocSearchHit ,
2932} from '@docsearch/react/dist/esm/types' ;
3033import type { SearchClient } from 'algoliasearch/lite' ;
31- import type { AutocompleteState } from '@algolia/autocomplete-core' ;
3234
3335type DocSearchProps = Omit <
3436 DocSearchModalProps ,
@@ -88,6 +90,7 @@ function DocSearch({
8890 ...props
8991} : DocSearchProps ) {
9092 const { siteMetadata} = useDocusaurusContext ( ) ;
93+ const processSearchResultUrl = useSearchResultUrlProcessor ( ) ;
9194
9295 const contextualSearchFacetFilters =
9396 useAlgoliaContextualFacetFilters ( ) as FacetFilters ;
@@ -107,7 +110,6 @@ function DocSearch({
107110 facetFilters,
108111 } ;
109112
110- const { withBaseUrl} = useBaseUrlUtils ( ) ;
111113 const history = useHistory ( ) ;
112114 const searchContainer = useRef < HTMLDivElement | null > ( null ) ;
113115 const searchButtonRef = useRef < HTMLButtonElement > ( null ) ;
@@ -172,20 +174,10 @@ function DocSearch({
172174
173175 const transformItems = useRef < DocSearchModalProps [ 'transformItems' ] > (
174176 ( items ) =>
175- items . map ( ( item ) => {
176- // If Algolia contains a external domain, we should navigate without
177- // relative URL
178- if ( isRegexpStringMatch ( externalUrlRegex , item . url ) ) {
179- return item ;
180- }
181-
182- // We transform the absolute URL into a relative URL.
183- const url = new URL ( item . url ) ;
184- return {
185- ...item ,
186- url : withBaseUrl ( `${ url . pathname } ${ url . hash } ` ) ,
187- } ;
188- } ) ,
177+ items . map ( ( item ) => ( {
178+ ...item ,
179+ url : processSearchResultUrl ( item . url ) ,
180+ } ) ) ,
189181 ) . current ;
190182
191183 const resultsFooterComponent : DocSearchProps [ 'resultsFooterComponent' ] =
0 commit comments