/** * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import { useAllDocsData, useActivePluginAndVersion, } from '@docusaurus/plugin-content-docs/client'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import { useDocsPreferredVersionByPluginId } from '../contexts/docsPreferredVersion'; export const DEFAULT_SEARCH_TAG = 'default'; /** The search tag to append as each doc's metadata. */ export function docVersionSearchTag(pluginId, versionName) { return `docs-${pluginId}-${versionName}`; } /** * Gets the relevant context information for contextual search. * * The value is generic and not coupled to Algolia/DocSearch, since we may want * to support multiple search engines, or allowing users to use their own search * engine solution. */ export function useContextualSearchFilters() { const { i18n } = useDocusaurusContext(); const allDocsData = useAllDocsData(); const activePluginAndVersion = useActivePluginAndVersion(); const docsPreferredVersionByPluginId = useDocsPreferredVersionByPluginId(); // This can't use more specialized hooks because we are mapping over all // plugin instances. function getDocPluginTags(pluginId) { const activeVersion = activePluginAndVersion?.activePlugin.pluginId === pluginId ? activePluginAndVersion.activeVersion : undefined; const preferredVersion = docsPreferredVersionByPluginId[pluginId]; const latestVersion = allDocsData[pluginId].versions.find((v) => v.isLast); const version = activeVersion ?? preferredVersion ?? latestVersion; return docVersionSearchTag(pluginId, version.name); } const tags = [ DEFAULT_SEARCH_TAG, ...Object.keys(allDocsData).map(getDocPluginTags), ]; return { locale: i18n.currentLocale, tags, }; } //# sourceMappingURL=searchUtils.js.map