@redocly/theme
Version:
Shared UI components lib
37 lines • 1.49 kB
JavaScript
;
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