function useSearchQuery()

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()}`;
        },
    };
}