in src/hooks/use-search-query.ts [14:62]
function useSearchQuery() {
const isBrowser = useIsBrowser();
const history = useHistory();
const location = useLocation();
const { siteConfig: { baseUrl }, } = useDocusaurusContext();
const params = isBrowser ? new URLSearchParams(location.search) : null;
const searchValue = params?.get(SEARCH_PARAM_QUERY) || "";
const searchContext = params?.get(SEARCH_PARAM_CONTEXT) || "";
const searchVersion = params?.get(SEARCH_PARAM_VERSION) || "";
const getSearchParams = (searchValue) => {
const searchParams = new URLSearchParams(location.search);
if (searchValue) {
searchParams.set(SEARCH_PARAM_QUERY, searchValue);
}
else {
searchParams.delete(SEARCH_PARAM_QUERY);
}
return searchParams;
};
return {
searchValue,
searchContext: searchContext &&
Array.isArray(searchContextByPaths) &&
searchContextByPaths.some((item) => typeof item === "string"
? item === searchContext
: item.path === searchContext)
? searchContext
: "",
searchVersion,
updateSearchPath: (searchValue) => {
const searchParams = getSearchParams(searchValue);
history.replace({
search: searchParams.toString(),
});
},
updateSearchContext: (value) => {
const searchParams = new URLSearchParams(location.search);
searchParams.set(SEARCH_PARAM_CONTEXT, value);
history.replace({
search: searchParams.toString(),
});
},
generateSearchPageLink: (searchValue) => {
const searchParams = getSearchParams(searchValue);
// Refer to https://github.com/facebook/docusaurus/pull/2838
return `${baseUrl}search?${searchParams.toString()}`;
},
};
}