@backstage/plugin-techdocs
Version:
The Backstage plugin that renders technical documentation for your components
47 lines (44 loc) • 1.19 kB
JavaScript
import { useState, useRef, useEffect } from 'react';
import { useSearch } from '@backstage/plugin-search-react';
function useTechDocsSearch(entityId) {
const {
setFilters,
setTerm,
term,
result: { loading, value: searchVal }
} = useSearch();
const [results, setResults] = useState([]);
const [deferredLoading, setDeferredLoading] = useState(false);
const loadingTimer = useRef();
useEffect(() => {
if (searchVal) {
setResults(searchVal.results.slice(0, 10));
}
}, [loading, searchVal]);
useEffect(() => {
clearTimeout(loadingTimer.current);
setDeferredLoading(false);
if (loading) {
loadingTimer.current = setTimeout(() => setDeferredLoading(true), 200);
}
return () => clearTimeout(loadingTimer.current);
}, [term, loading]);
const { kind, name, namespace } = entityId;
useEffect(() => {
setFilters((prevFilters) => ({
...prevFilters,
kind,
namespace,
name
}));
}, [kind, namespace, name, setFilters]);
return {
results,
term,
setTerm,
loading,
deferredLoading
};
}
export { useTechDocsSearch };
//# sourceMappingURL=useTechDocsSearch.esm.js.map