UNPKG

@redocly/theme

Version:

Shared UI components lib

41 lines 1.66 kB
"use strict"; 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