UNPKG

@backstage/plugin-techdocs

Version:

The Backstage plugin that renders technical documentation for your components

47 lines (44 loc) 1.19 kB
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