@redocly/portal-plugin-soap-api
Version:
SOAP API plugin for Redocly products
45 lines (35 loc) • 1.23 kB
text/typescript
const SEARCH_GROUP_FIELD = 'redocly_category';
const SEARCH_GROUP_NAME_API = 'API Reference';
export function setDocumentSearchFacets(
actions: any,
documentSearchFacets: { [key: string]: string | Set<string> },
) {
const searchFacets = actions.getSearchFacets();
for (const [key, value] of Object.entries(documentSearchFacets)) {
const facet = searchFacets.get(key);
if (facet) {
const facetValues = new Set((facet.values as string[]) ?? []);
if (value instanceof Set) {
[...value].forEach((v) => (facet.values = Array.from(facetValues.add(v))));
} else {
facet.values = Array.from(facetValues.add(value));
}
}
}
actions.setSearchFacets(searchFacets);
}
export function extractDocumentSearchFacets(
actions: any,
metadata?: Record<string, unknown>,
): { [key: string]: string } {
const searchFacets: { [key: string]: string } = {
[SEARCH_GROUP_FIELD]: SEARCH_GROUP_NAME_API,
};
if (!metadata) return searchFacets;
const targetSearchFacets = actions.getSearchFacets();
for (const [key, value] of Object.entries(metadata)) {
if (!targetSearchFacets.has(key)) continue;
searchFacets[key] = String(value);
}
return searchFacets;
}