UNPKG

@redocly/theme

Version:

Shared UI components lib

37 lines 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useRecentSearches = void 0; const react_1 = require("react"); const use_store_1 = require("../use-store"); const js_utils_1 = require("../../utils/js-utils"); const RECENT_SEARCHES_KEY = 'recentSearches'; const RECENT_SEARCHES_LIMIT = 5; const recentSearchesStore = (0, use_store_1.createStore)({ storageKey: RECENT_SEARCHES_KEY, }); const useRecentSearches = () => { const [items, setItems] = (0, use_store_1.useStore)(recentSearchesStore, []); const updateItems = (0, react_1.useCallback)((value, isAdd) => { if (!(0, js_utils_1.isBrowser)()) return; const currentItems = [...items]; const valueIndex = currentItems.indexOf(value); if (valueIndex !== -1) { currentItems.splice(valueIndex, 1); } if (isAdd) { currentItems.unshift(value); } const limitedItems = currentItems.slice(0, RECENT_SEARCHES_LIMIT); setItems(limitedItems); }, [items, setItems]); const addSearchHistoryItem = (0, react_1.useCallback)((value) => { updateItems(value, true); }, [updateItems]); const removeSearchHistoryItem = (0, react_1.useCallback)((value) => { updateItems(value, false); }, [updateItems]); return { items, addSearchHistoryItem, removeSearchHistoryItem }; }; exports.useRecentSearches = useRecentSearches; //# sourceMappingURL=use-recent-searches.js.map