buroventures-harald-code
Version:
Harald Code - AI-powered coding assistant CLI
54 lines • 1.92 kB
JavaScript
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { useEffect, useCallback } from 'react';
import { useCompletion } from './useCompletion.js';
export function useReverseSearchCompletion(buffer, shellHistory, reverseSearchActive) {
const { suggestions, activeSuggestionIndex, visibleStartIndex, showSuggestions, isLoadingSuggestions, setSuggestions, setShowSuggestions, setActiveSuggestionIndex, resetCompletionState, navigateUp, navigateDown, } = useCompletion();
// whenever reverseSearchActive is on, filter history
useEffect(() => {
if (!reverseSearchActive) {
resetCompletionState();
return;
}
const q = buffer.text.toLowerCase();
const matches = shellHistory.reduce((acc, cmd) => {
const idx = cmd.toLowerCase().indexOf(q);
if (idx !== -1) {
acc.push({ label: cmd, value: cmd, matchedIndex: idx });
}
return acc;
}, []);
setSuggestions(matches);
setShowSuggestions(matches.length > 0);
setActiveSuggestionIndex(matches.length > 0 ? 0 : -1);
}, [
buffer.text,
shellHistory,
reverseSearchActive,
resetCompletionState,
setActiveSuggestionIndex,
setShowSuggestions,
setSuggestions,
]);
const handleAutocomplete = useCallback((i) => {
if (i < 0 || i >= suggestions.length)
return;
buffer.setText(suggestions[i].value);
resetCompletionState();
}, [buffer, suggestions, resetCompletionState]);
return {
suggestions,
activeSuggestionIndex,
visibleStartIndex,
showSuggestions,
isLoadingSuggestions,
navigateUp,
navigateDown,
handleAutocomplete,
resetCompletionState,
};
}
//# sourceMappingURL=useReverseSearchCompletion.js.map