@redocly/theme
Version:
Shared UI components lib
41 lines • 1.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useRecentSearches = void 0;
const react_1 = require("react");
const utils_1 = require("../../../core/utils");
const RECENT_SEARCHES_KEY = 'recentSearches';
const RECENT_SEARCHES_LIMIT = 5;
function getRecentSearches() {
if (!(0, utils_1.isBrowser)())
return [];
const recentSearchesStr = window.localStorage.getItem(RECENT_SEARCHES_KEY);
if (!recentSearchesStr)
return [];
return JSON.parse(recentSearchesStr);
}
function updateRecentSearches(value, isAdd) {
if (!(0, utils_1.isBrowser)())
return [];
const recentSearches = getRecentSearches();
if (value === '')
return recentSearches;
const valueIndex = recentSearches.indexOf(value);
if (valueIndex !== -1)
recentSearches.splice(valueIndex, 1);
if (isAdd)
recentSearches.unshift(value);
localStorage === null || localStorage === void 0 ? void 0 : localStorage.setItem(RECENT_SEARCHES_KEY, JSON.stringify(recentSearches.slice(0, RECENT_SEARCHES_LIMIT)));
return recentSearches;
}
const useRecentSearches = () => {
const [items, setItems] = (0, react_1.useState)(getRecentSearches());
const addSearchHistoryItem = (0, react_1.useCallback)((value) => {
setItems(updateRecentSearches(value, true));
}, []);
const removeSearchHistoryItem = (0, react_1.useCallback)((value) => {
setItems(updateRecentSearches(value, false));
}, []);
return { items, addSearchHistoryItem, removeSearchHistoryItem };
};
exports.useRecentSearches = useRecentSearches;
//# sourceMappingURL=use-recent-searches.js.map