var _excluded = ["_highlightResult", "_snippetResult"]; function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } function isLocalStorageSupported() { var key = '__TEST_KEY__'; try { localStorage.setItem(key, ''); localStorage.removeItem(key); return true; } catch (error) { return false; } } function createStorage(key) { if (isLocalStorageSupported() === false) { return { setItem: function setItem() {}, getItem: function getItem() { return []; } }; } return { setItem: function setItem(item) { return window.localStorage.setItem(key, JSON.stringify(item)); }, getItem: function getItem() { var item = window.localStorage.getItem(key); return item ? JSON.parse(item) : []; } }; } export function createStoredSearches(_ref) { var key = _ref.key, _ref$limit = _ref.limit, limit = _ref$limit === void 0 ? 5 : _ref$limit; var storage = createStorage(key); var items = storage.getItem().slice(0, limit); return { add: function add(item) { var _ref2 = item, _highlightResult = _ref2._highlightResult, _snippetResult = _ref2._snippetResult, hit = _objectWithoutProperties(_ref2, _excluded); var isQueryAlreadySaved = items.findIndex(function (x) { return x.objectID === hit.objectID; }); if (isQueryAlreadySaved > -1) { items.splice(isQueryAlreadySaved, 1); } items.unshift(hit); items = items.slice(0, limit); storage.setItem(items); }, remove: function remove(item) { items = items.filter(function (x) { return x.objectID !== item.objectID; }); storage.setItem(items); }, getAll: function getAll() { return items; } }; }