@algolia/autocomplete-plugin-recent-searches 1.4.0 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
3
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
4
 
@@ -4,7 +4,7 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
4
4
 
5
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
6
 
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
7
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
8
 
9
9
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
10
 
@@ -34,5 +34,5 @@ export declare type CreateRecentSearchesLocalStorageOptions<TItem extends Recent
34
34
  search?(params: SearchParams<TItem>): Array<Highlighted<TItem>>;
35
35
  };
36
36
  declare type LocalStorageRecentSearchesPluginOptions<TItem extends RecentSearchesItem> = Pick<CreateRecentSearchesPluginParams<TItem>, 'transformSource' | 'subscribe'> & CreateRecentSearchesLocalStorageOptions<TItem>;
37
- export declare function createLocalStorageRecentSearchesPlugin<TItem extends RecentSearchesItem>({ key, limit, transformSource, search, subscribe, }: LocalStorageRecentSearchesPluginOptions<TItem>): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>>;
37
+ export declare function createLocalStorageRecentSearchesPlugin<TItem extends RecentSearchesItem>(options: LocalStorageRecentSearchesPluginOptions<TItem>): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>>;
38
38
  export {};
@@ -1,23 +1,44 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
5
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
1
7
  import { LOCAL_STORAGE_KEY } from './constants';
2
8
  import { createLocalStorage } from './createLocalStorage';
3
9
  import { createRecentSearchesPlugin } from './createRecentSearchesPlugin';
4
10
  import { search as defaultSearch } from './search';
5
- export function createLocalStorageRecentSearchesPlugin(_ref) {
6
- var key = _ref.key,
7
- _ref$limit = _ref.limit,
8
- limit = _ref$limit === void 0 ? 5 : _ref$limit,
9
- transformSource = _ref.transformSource,
10
- _ref$search = _ref.search,
11
- search = _ref$search === void 0 ? defaultSearch : _ref$search,
12
- subscribe = _ref.subscribe;
11
+ export function createLocalStorageRecentSearchesPlugin(options) {
12
+ var _getOptions = getOptions(options),
13
+ key = _getOptions.key,
14
+ limit = _getOptions.limit,
15
+ transformSource = _getOptions.transformSource,
16
+ search = _getOptions.search,
17
+ subscribe = _getOptions.subscribe;
18
+
13
19
  var storage = createLocalStorage({
14
20
  key: [LOCAL_STORAGE_KEY, key].join(':'),
15
21
  limit: limit,
16
22
  search: search
17
23
  });
18
- return createRecentSearchesPlugin({
24
+ var recentSearchesPlugin = createRecentSearchesPlugin({
19
25
  transformSource: transformSource,
20
26
  storage: storage,
21
27
  subscribe: subscribe
22
28
  });
29
+ return _objectSpread(_objectSpread({}, recentSearchesPlugin), {}, {
30
+ name: 'aa.localStorageRecentSearchesPlugin',
31
+ __autocomplete_pluginOptions: options
32
+ });
33
+ }
34
+
35
+ function getOptions(options) {
36
+ return _objectSpread({
37
+ limit: 5,
38
+ search: defaultSearch,
39
+ transformSource: function transformSource(_ref) {
40
+ var source = _ref.source;
41
+ return source;
42
+ }
43
+ }, options);
23
44
  }
@@ -33,4 +33,4 @@ export declare type CreateRecentSearchesPluginParams<TItem extends RecentSearche
33
33
  }): AutocompleteSource<TItem>;
34
34
  subscribe?(params: PluginSubscribeParams<TItem>): void;
35
35
  };
36
- export declare function createRecentSearchesPlugin<TItem extends RecentSearchesItem>({ storage, transformSource, subscribe, }: CreateRecentSearchesPluginParams<TItem>): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>>;
36
+ export declare function createRecentSearchesPlugin<TItem extends RecentSearchesItem>(options: CreateRecentSearchesPluginParams<TItem>): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>>;
@@ -4,13 +4,13 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
4
4
 
5
5
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
6
 
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
7
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
8
8
 
9
9
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
10
 
11
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
12
 
13
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
13
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
14
14
 
15
15
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
16
16
 
@@ -44,20 +44,19 @@ function getDefaultSubcribe(store) {
44
44
  };
45
45
  }
46
46
 
47
- export function createRecentSearchesPlugin(_ref3) {
48
- var storage = _ref3.storage,
49
- _ref3$transformSource = _ref3.transformSource,
50
- transformSource = _ref3$transformSource === void 0 ? function (_ref4) {
51
- var source = _ref4.source;
52
- return source;
53
- } : _ref3$transformSource,
54
- subscribe = _ref3.subscribe;
47
+ export function createRecentSearchesPlugin(options) {
48
+ var _getOptions = getOptions(options),
49
+ storage = _getOptions.storage,
50
+ transformSource = _getOptions.transformSource,
51
+ subscribe = _getOptions.subscribe;
52
+
55
53
  var store = createStorageApi(storage);
56
54
  var lastItemsRef = createRef([]);
57
55
  return {
56
+ name: 'aa.recentSearchesPlugin',
58
57
  subscribe: subscribe !== null && subscribe !== void 0 ? subscribe : getDefaultSubcribe(store),
59
- onSubmit: function onSubmit(_ref5) {
60
- var state = _ref5.state;
58
+ onSubmit: function onSubmit(_ref3) {
59
+ var state = _ref3.state;
61
60
  var query = state.query;
62
61
 
63
62
  if (query) {
@@ -68,11 +67,11 @@ export function createRecentSearchesPlugin(_ref3) {
68
67
  store.addItem(recentItem);
69
68
  }
70
69
  },
71
- getSources: function getSources(_ref6) {
72
- var query = _ref6.query,
73
- setQuery = _ref6.setQuery,
74
- refresh = _ref6.refresh,
75
- state = _ref6.state;
70
+ getSources: function getSources(_ref4) {
71
+ var query = _ref4.query,
72
+ setQuery = _ref4.setQuery,
73
+ refresh = _ref4.refresh,
74
+ state = _ref4.state;
76
75
  lastItemsRef.current = store.getAll(query);
77
76
 
78
77
  function onRemove(id) {
@@ -93,8 +92,8 @@ export function createRecentSearchesPlugin(_ref3) {
93
92
  return [transformSource({
94
93
  source: {
95
94
  sourceId: 'recentSearchesPlugin',
96
- getItemInputValue: function getItemInputValue(_ref7) {
97
- var item = _ref7.item;
95
+ getItemInputValue: function getItemInputValue(_ref5) {
96
+ var item = _ref5.item;
98
97
  return item.label;
99
98
  },
100
99
  getItems: function getItems() {
@@ -133,6 +132,16 @@ export function createRecentSearchesPlugin(_ref3) {
133
132
  hitsPerPage: Math.max(1, ((_params$hitsPerPage = params.hitsPerPage) !== null && _params$hitsPerPage !== void 0 ? _params$hitsPerPage : 10) - lastItemsRef.current.length)
134
133
  });
135
134
  }
136
- })
135
+ }),
136
+ __autocomplete_pluginOptions: options
137
137
  };
138
+ }
139
+
140
+ function getOptions(options) {
141
+ return _objectSpread({
142
+ transformSource: function transformSource(_ref6) {
143
+ var source = _ref6.source;
144
+ return source;
145
+ }
146
+ }, options);
138
147
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,33 +1,22 @@
1
- /*! @algolia/autocomplete-plugin-recent-searches 1.4.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-plugin-recent-searches 1.5.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4
4
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
5
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['@algolia/autocomplete-plugin-recent-searches'] = {}));
6
- }(this, (function (exports) { 'use strict';
7
-
8
- function _defineProperty(obj, key, value) {
9
- if (key in obj) {
10
- Object.defineProperty(obj, key, {
11
- value: value,
12
- enumerable: true,
13
- configurable: true,
14
- writable: true
15
- });
16
- } else {
17
- obj[key] = value;
18
- }
19
-
20
- return obj;
21
- }
5
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@algolia/autocomplete-plugin-recent-searches"] = {}));
6
+ })(this, (function (exports) { 'use strict';
22
7
 
23
8
  function ownKeys(object, enumerableOnly) {
24
9
  var keys = Object.keys(object);
25
10
 
26
11
  if (Object.getOwnPropertySymbols) {
27
12
  var symbols = Object.getOwnPropertySymbols(object);
28
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
29
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
30
- });
13
+
14
+ if (enumerableOnly) {
15
+ symbols = symbols.filter(function (sym) {
16
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
17
+ });
18
+ }
19
+
31
20
  keys.push.apply(keys, symbols);
32
21
  }
33
22
 
@@ -54,6 +43,21 @@
54
43
  return target;
55
44
  }
56
45
 
46
+ function _defineProperty(obj, key, value) {
47
+ if (key in obj) {
48
+ Object.defineProperty(obj, key, {
49
+ value: value,
50
+ enumerable: true,
51
+ configurable: true,
52
+ writable: true
53
+ });
54
+ } else {
55
+ obj[key] = value;
56
+ }
57
+
58
+ return obj;
59
+ }
60
+
57
61
  function _toConsumableArray(arr) {
58
62
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
59
63
  }
@@ -63,7 +67,7 @@
63
67
  }
64
68
 
65
69
  function _iterableToArray(iter) {
66
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
70
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
67
71
  }
68
72
 
69
73
  function _unsupportedIterableToArray(o, minLen) {
@@ -299,20 +303,19 @@
299
303
  };
300
304
  }
301
305
 
302
- function createRecentSearchesPlugin(_ref3) {
303
- var storage = _ref3.storage,
304
- _ref3$transformSource = _ref3.transformSource,
305
- transformSource = _ref3$transformSource === void 0 ? function (_ref4) {
306
- var source = _ref4.source;
307
- return source;
308
- } : _ref3$transformSource,
309
- subscribe = _ref3.subscribe;
306
+ function createRecentSearchesPlugin(options) {
307
+ var _getOptions = getOptions$1(options),
308
+ storage = _getOptions.storage,
309
+ transformSource = _getOptions.transformSource,
310
+ subscribe = _getOptions.subscribe;
311
+
310
312
  var store = createStorageApi(storage);
311
313
  var lastItemsRef = createRef([]);
312
314
  return {
315
+ name: 'aa.recentSearchesPlugin',
313
316
  subscribe: subscribe !== null && subscribe !== void 0 ? subscribe : getDefaultSubcribe(store),
314
- onSubmit: function onSubmit(_ref5) {
315
- var state = _ref5.state;
317
+ onSubmit: function onSubmit(_ref3) {
318
+ var state = _ref3.state;
316
319
  var query = state.query;
317
320
 
318
321
  if (query) {
@@ -323,11 +326,11 @@
323
326
  store.addItem(recentItem);
324
327
  }
325
328
  },
326
- getSources: function getSources(_ref6) {
327
- var query = _ref6.query,
328
- setQuery = _ref6.setQuery,
329
- refresh = _ref6.refresh,
330
- state = _ref6.state;
329
+ getSources: function getSources(_ref4) {
330
+ var query = _ref4.query,
331
+ setQuery = _ref4.setQuery,
332
+ refresh = _ref4.refresh,
333
+ state = _ref4.state;
331
334
  lastItemsRef.current = store.getAll(query);
332
335
 
333
336
  function onRemove(id) {
@@ -348,8 +351,8 @@
348
351
  return [transformSource({
349
352
  source: {
350
353
  sourceId: 'recentSearchesPlugin',
351
- getItemInputValue: function getItemInputValue(_ref7) {
352
- var item = _ref7.item;
354
+ getItemInputValue: function getItemInputValue(_ref5) {
355
+ var item = _ref5.item;
353
356
  return item.label;
354
357
  },
355
358
  getItems: function getItems() {
@@ -388,10 +391,20 @@
388
391
  hitsPerPage: Math.max(1, ((_params$hitsPerPage = params.hitsPerPage) !== null && _params$hitsPerPage !== void 0 ? _params$hitsPerPage : 10) - lastItemsRef.current.length)
389
392
  });
390
393
  }
391
- })
394
+ }),
395
+ __autocomplete_pluginOptions: options
392
396
  };
393
397
  }
394
398
 
399
+ function getOptions$1(options) {
400
+ return _objectSpread2({
401
+ transformSource: function transformSource(_ref6) {
402
+ var source = _ref6.source;
403
+ return source;
404
+ }
405
+ }, options);
406
+ }
407
+
395
408
  function search(_ref) {
396
409
  var query = _ref.query,
397
410
  items = _ref.items,
@@ -416,24 +429,39 @@
416
429
  });
417
430
  }
418
431
 
419
- function createLocalStorageRecentSearchesPlugin(_ref) {
420
- var key = _ref.key,
421
- _ref$limit = _ref.limit,
422
- limit = _ref$limit === void 0 ? 5 : _ref$limit,
423
- transformSource = _ref.transformSource,
424
- _ref$search = _ref.search,
425
- search$1 = _ref$search === void 0 ? search : _ref$search,
426
- subscribe = _ref.subscribe;
432
+ function createLocalStorageRecentSearchesPlugin(options) {
433
+ var _getOptions = getOptions(options),
434
+ key = _getOptions.key,
435
+ limit = _getOptions.limit,
436
+ transformSource = _getOptions.transformSource,
437
+ search = _getOptions.search,
438
+ subscribe = _getOptions.subscribe;
439
+
427
440
  var storage = createLocalStorage({
428
441
  key: [LOCAL_STORAGE_KEY, key].join(':'),
429
442
  limit: limit,
430
- search: search$1
443
+ search: search
431
444
  });
432
- return createRecentSearchesPlugin({
445
+ var recentSearchesPlugin = createRecentSearchesPlugin({
433
446
  transformSource: transformSource,
434
447
  storage: storage,
435
448
  subscribe: subscribe
436
449
  });
450
+ return _objectSpread2(_objectSpread2({}, recentSearchesPlugin), {}, {
451
+ name: 'aa.localStorageRecentSearchesPlugin',
452
+ __autocomplete_pluginOptions: options
453
+ });
454
+ }
455
+
456
+ function getOptions(options) {
457
+ return _objectSpread2({
458
+ limit: 5,
459
+ search: search,
460
+ transformSource: function transformSource(_ref) {
461
+ var source = _ref.source;
462
+ return source;
463
+ }
464
+ }, options);
437
465
  }
438
466
 
439
467
  exports.addHighlightedAttribute = addHighlightedAttribute;
@@ -444,5 +472,5 @@
444
472
 
445
473
  Object.defineProperty(exports, '__esModule', { value: true });
446
474
 
447
- })));
475
+ }));
448
476
  //# sourceMappingURL=index.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.development.js","sources":["../../src/addHighlightedAttribute.ts","../../src/constants.ts","../../src/getLocalStorage.ts","../../src/createLocalStorage.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/createStorageApi.ts","../../src/getTemplates.tsx","../../src/createRecentSearchesPlugin.ts","../../src/search.ts","../../src/createLocalStorageRecentSearchesPlugin.ts"],"sourcesContent":["import { Highlighted, HistoryItem } from './types';\n\ntype HighlightParams<TItem> = {\n item: TItem;\n query: string;\n};\n\nexport function addHighlightedAttribute<TItem extends HistoryItem>({\n item,\n query,\n}: HighlightParams<TItem>): Highlighted<TItem> {\n return {\n ...item,\n _highlightResult: {\n label: {\n value: query\n ? item.label.replace(\n new RegExp(query.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'gi'),\n (match) => {\n return `__aa-highlight__${match}__/aa-highlight__`;\n }\n )\n : item.label,\n },\n },\n };\n}\n","export const LOCAL_STORAGE_KEY = 'AUTOCOMPLETE_RECENT_SEARCHES';\nexport const LOCAL_STORAGE_KEY_TEST =\n '__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__';\n","import { LOCAL_STORAGE_KEY_TEST } from './constants';\n\nfunction isLocalStorageSupported() {\n try {\n localStorage.setItem(LOCAL_STORAGE_KEY_TEST, '');\n localStorage.removeItem(LOCAL_STORAGE_KEY_TEST);\n\n return true;\n } catch (error) {\n return false;\n }\n}\n\ntype LocalStorageProps = {\n key: string;\n};\n\nexport function getLocalStorage<TItem>({ key }: LocalStorageProps) {\n if (!isLocalStorageSupported()) {\n return {\n setItem() {},\n getItem() {\n return [];\n },\n };\n }\n\n return {\n setItem(items: TItem[]) {\n return window.localStorage.setItem(key, JSON.stringify(items));\n },\n getItem(): TItem[] {\n const items = window.localStorage.getItem(key);\n\n return items ? (JSON.parse(items) as TItem[]) : [];\n },\n };\n}\n","import { CreateRecentSearchesLocalStorageOptions } from './createLocalStorageRecentSearchesPlugin';\nimport { getLocalStorage } from './getLocalStorage';\nimport { HistoryItem, Storage } from './types';\n\nexport type CreateLocalStorageProps<TItem extends HistoryItem> = Required<\n CreateRecentSearchesLocalStorageOptions<TItem>\n>;\n\nexport function createLocalStorage<TItem extends HistoryItem>({\n key,\n limit,\n search,\n}: CreateLocalStorageProps<TItem>): Storage<TItem> {\n const storage = getLocalStorage<TItem>({ key });\n\n return {\n onAdd(item) {\n storage.setItem([item, ...storage.getItem()]);\n },\n onRemove(id) {\n storage.setItem(storage.getItem().filter((x) => x.id !== id));\n },\n getAll(query = '') {\n return search({ query, items: storage.getItem(), limit }).slice(0, limit);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { HistoryItem, Storage, StorageApi } from './types';\n\nexport function createStorageApi<TItem extends HistoryItem>(\n storage: Storage<TItem>\n): StorageApi<TItem> {\n return {\n addItem(item) {\n storage.onRemove(item.id);\n storage.onAdd(item);\n },\n removeItem(id) {\n storage.onRemove(id);\n },\n getAll(query) {\n return storage.getAll(query);\n },\n };\n}\n","/** @jsx createElement */\nimport { SourceTemplates } from '@algolia/autocomplete-js';\n\nimport { RecentSearchesItem } from './types';\n\nexport type GetTemplatesParams<TItem extends RecentSearchesItem> = {\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n};\n\nexport function getTemplates<TItem extends RecentSearchesItem>({\n onRemove,\n onTapAhead,\n}: GetTemplatesParams<TItem>): SourceTemplates<TItem> {\n return {\n item({ item, createElement, components }) {\n return (\n <div className=\"aa-ItemWrapper\">\n <div className=\"aa-ItemContent\">\n <div className=\"aa-ItemIcon aa-ItemIcon--noBorder\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z\" />\n </svg>\n </div>\n <div className=\"aa-ItemContentBody\">\n <div className=\"aa-ItemContentTitle\">\n <components.ReverseHighlight hit={item} attribute=\"label\" />\n {item.category && (\n <span className=\"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline\">\n <span className=\"aa-ItemContentSubtitleIcon\" /> in{' '}\n <span className=\"aa-ItemContentSubtitleCategory\">\n {item.category}\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"aa-ItemActions\">\n <button\n className=\"aa-ItemActionButton\"\n title=\"Remove this search\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(item.id);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z\" />\n </svg>\n </button>\n <button\n className=\"aa-ItemActionButton\"\n title={`Fill query with \"${item.label}\"`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onTapAhead(item);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n },\n };\n}\n","import { PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompleteSource,\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, MaybePromise, warn } from '@algolia/autocomplete-shared';\nimport { SearchOptions } from '@algolia/client-search';\n\nimport { createStorageApi } from './createStorageApi';\nimport { getTemplates } from './getTemplates';\nimport { RecentSearchesItem, Storage, StorageApi } from './types';\n\nexport interface RecentSearchesPluginData<TItem extends RecentSearchesItem>\n extends StorageApi<TItem> {\n /**\n * Optimized [Algolia search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/). This is useful when using the plugin along with the [Query Suggestions](createQuerySuggestionsPlugin) plugin.\n *\n * This function enhances the provided search parameters by:\n * - Excluding Query Suggestions that are already displayed in recent searches.\n * - Using a shared `hitsPerPage` value to get a group limit of Query Suggestions and recent searches.\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-getalgoliasearchparams\n */\n getAlgoliaSearchParams(params?: SearchOptions): SearchOptions;\n}\n\nexport type CreateRecentSearchesPluginParams<\n TItem extends RecentSearchesItem\n> = {\n /**\n * The storage to fetch from and save recent searches into.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage\n */\n storage: Storage<TItem>;\n /**\n * A function to transform the provided source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<TItem>;\n state: AutocompleteState<TItem>;\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n }): AutocompleteSource<TItem>;\n subscribe?(params: PluginSubscribeParams<TItem>): void;\n};\n\nfunction getDefaultSubcribe<TItem extends RecentSearchesItem>(\n store: StorageApi<TItem>\n) {\n return function subscribe({ onSelect }: PluginSubscribeParams<TItem>) {\n onSelect(({ item, state, source }) => {\n const inputValue = source.getItemInputValue({ item, state });\n\n if (source.sourceId === 'querySuggestionsPlugin' && inputValue) {\n const recentItem: RecentSearchesItem = {\n id: inputValue,\n label: inputValue,\n category: (item as any).__autocomplete_qsCategory,\n };\n store.addItem(recentItem as TItem);\n }\n });\n };\n}\n\nexport function createRecentSearchesPlugin<TItem extends RecentSearchesItem>({\n storage,\n transformSource = ({ source }) => source,\n subscribe,\n}: CreateRecentSearchesPluginParams<TItem>): AutocompletePlugin<\n TItem,\n RecentSearchesPluginData<TItem>\n> {\n const store = createStorageApi<TItem>(storage);\n const lastItemsRef = createRef<MaybePromise<TItem[]>>([]);\n\n return {\n subscribe: subscribe ?? getDefaultSubcribe(store),\n onSubmit({ state }) {\n const { query } = state;\n\n if (query) {\n const recentItem: RecentSearchesItem = {\n id: query,\n label: query,\n };\n store.addItem(recentItem as TItem);\n }\n },\n getSources({ query, setQuery, refresh, state }) {\n lastItemsRef.current = store.getAll(query);\n\n function onRemove(id: string) {\n store.removeItem(id);\n refresh();\n }\n\n function onTapAhead(item: TItem) {\n setQuery(item.label);\n refresh();\n }\n\n return Promise.resolve(lastItemsRef.current).then((items) => {\n if (items.length === 0) {\n return [];\n }\n\n return [\n transformSource({\n source: {\n sourceId: 'recentSearchesPlugin',\n getItemInputValue({ item }) {\n return item.label;\n },\n getItems() {\n return items;\n },\n templates: getTemplates({ onRemove, onTapAhead }),\n },\n onRemove,\n onTapAhead,\n state: state as AutocompleteState<TItem>,\n }),\n ];\n });\n },\n data: {\n ...store,\n // @ts-ignore SearchOptions `facetFilters` is ReadonlyArray\n getAlgoliaSearchParams(params = {}) {\n // If the items returned by `store.getAll` are contained in a Promise,\n // we cannot provide the search params in time when this function is called\n // because we need to resolve the promise before getting the value.\n if (!Array.isArray(lastItemsRef.current)) {\n warn(\n false,\n 'The `getAlgoliaSearchParams` function is not supported with storages that return promises in `getAll`.'\n );\n return params;\n }\n\n return {\n ...params,\n facetFilters: [\n ...(params.facetFilters ?? []),\n // @TODO: we need to base the filter on the `query` attribute, not\n // `objectID`, because the Query Suggestions index cannot ensure\n // that the `objectID` will always be equal to the query.\n ...lastItemsRef.current.map((item) => [`objectID:-${item.label}`]),\n ],\n hitsPerPage: Math.max(\n 1,\n (params.hitsPerPage ?? 10) - lastItemsRef.current.length\n ),\n };\n },\n },\n };\n}\n","import { addHighlightedAttribute } from './addHighlightedAttribute';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type SearchParams<TItem extends RecentSearchesItem> = {\n query: string;\n items: TItem[];\n limit: number;\n};\n\nexport function search<TItem extends RecentSearchesItem>({\n query,\n items,\n limit,\n}: SearchParams<TItem>): Array<Highlighted<TItem>> {\n if (!query) {\n return items\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n }\n\n return items\n .filter((item) => item.label.toLowerCase().includes(query.toLowerCase()))\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n}\n","import { AutocompletePlugin } from '@algolia/autocomplete-js';\n\nimport { LOCAL_STORAGE_KEY } from './constants';\nimport { createLocalStorage } from './createLocalStorage';\nimport {\n createRecentSearchesPlugin,\n CreateRecentSearchesPluginParams,\n RecentSearchesPluginData,\n} from './createRecentSearchesPlugin';\nimport { search as defaultSearch, SearchParams } from './search';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type CreateRecentSearchesLocalStorageOptions<\n TItem extends RecentSearchesItem\n> = {\n /**\n * A local storage key to identify where to save and retrieve the recent searches.\n *\n * For example:\n * - \"navbar\"\n * - \"search\"\n * - \"main\"\n *\n * The plugin namespaces all keys to avoid collisions.\n *\n * @example \"top_searchbar\"\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-key\n */\n key: string;\n\n /**\n * The number of recent searches to display.\n *\n * @default 5\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-limit\n */\n limit?: number;\n\n /**\n * A search function to retrieve recent searches from.\n *\n * This function is called in [`storage.getAll`](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage) to retrieve recent searches and is useful to filter and highlight recent searches when typing a query.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-search\n */\n search?(params: SearchParams<TItem>): Array<Highlighted<TItem>>;\n};\n\ntype LocalStorageRecentSearchesPluginOptions<\n TItem extends RecentSearchesItem\n> = Pick<\n CreateRecentSearchesPluginParams<TItem>,\n 'transformSource' | 'subscribe'\n> &\n CreateRecentSearchesLocalStorageOptions<TItem>;\n\nexport function createLocalStorageRecentSearchesPlugin<\n TItem extends RecentSearchesItem\n>({\n key,\n limit = 5,\n transformSource,\n search = defaultSearch,\n subscribe,\n}: LocalStorageRecentSearchesPluginOptions<TItem>): AutocompletePlugin<\n TItem,\n RecentSearchesPluginData<TItem>\n> {\n const storage = createLocalStorage({\n key: [LOCAL_STORAGE_KEY, key].join(':'),\n limit,\n search,\n });\n\n return createRecentSearchesPlugin({\n transformSource,\n storage,\n subscribe,\n });\n}\n"],"names":["addHighlightedAttribute","item","query","_highlightResult","label","value","replace","RegExp","match","LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEY_TEST","isLocalStorageSupported","localStorage","setItem","removeItem","error","getLocalStorage","key","getItem","items","window","JSON","stringify","parse","createLocalStorage","limit","search","storage","onAdd","onRemove","id","filter","x","getAll","slice","createRef","initialValue","current","warnCache","warn","condition","message","sanitizedMessage","trim","hasAlreadyPrinted","console","concat","createStorageApi","addItem","getTemplates","onTapAhead","createElement","components","category","event","preventDefault","stopPropagation","getDefaultSubcribe","store","subscribe","onSelect","state","source","inputValue","getItemInputValue","sourceId","recentItem","__autocomplete_qsCategory","createRecentSearchesPlugin","transformSource","lastItemsRef","onSubmit","getSources","setQuery","refresh","Promise","resolve","then","length","getItems","templates","data","getAlgoliaSearchParams","params","Array","isArray","process","facetFilters","map","hitsPerPage","Math","max","toLowerCase","includes","createLocalStorageRecentSearchesPlugin","defaultSearch","join"],"mappings":"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"}
1
+ {"version":3,"file":"index.development.js","sources":["../../src/addHighlightedAttribute.ts","../../src/constants.ts","../../src/getLocalStorage.ts","../../src/createLocalStorage.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../../autocomplete-shared/dist/esm/warn.js","../../src/createStorageApi.ts","../../src/getTemplates.tsx","../../src/createRecentSearchesPlugin.ts","../../src/search.ts","../../src/createLocalStorageRecentSearchesPlugin.ts"],"sourcesContent":["import { Highlighted, HistoryItem } from './types';\n\ntype HighlightParams<TItem> = {\n item: TItem;\n query: string;\n};\n\nexport function addHighlightedAttribute<TItem extends HistoryItem>({\n item,\n query,\n}: HighlightParams<TItem>): Highlighted<TItem> {\n return {\n ...item,\n _highlightResult: {\n label: {\n value: query\n ? item.label.replace(\n new RegExp(query.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'gi'),\n (match) => {\n return `__aa-highlight__${match}__/aa-highlight__`;\n }\n )\n : item.label,\n },\n },\n };\n}\n","export const LOCAL_STORAGE_KEY = 'AUTOCOMPLETE_RECENT_SEARCHES';\nexport const LOCAL_STORAGE_KEY_TEST =\n '__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__';\n","import { LOCAL_STORAGE_KEY_TEST } from './constants';\n\nfunction isLocalStorageSupported() {\n try {\n localStorage.setItem(LOCAL_STORAGE_KEY_TEST, '');\n localStorage.removeItem(LOCAL_STORAGE_KEY_TEST);\n\n return true;\n } catch (error) {\n return false;\n }\n}\n\ntype LocalStorageProps = {\n key: string;\n};\n\nexport function getLocalStorage<TItem>({ key }: LocalStorageProps) {\n if (!isLocalStorageSupported()) {\n return {\n setItem() {},\n getItem() {\n return [];\n },\n };\n }\n\n return {\n setItem(items: TItem[]) {\n return window.localStorage.setItem(key, JSON.stringify(items));\n },\n getItem(): TItem[] {\n const items = window.localStorage.getItem(key);\n\n return items ? (JSON.parse(items) as TItem[]) : [];\n },\n };\n}\n","import { CreateRecentSearchesLocalStorageOptions } from './createLocalStorageRecentSearchesPlugin';\nimport { getLocalStorage } from './getLocalStorage';\nimport { HistoryItem, Storage } from './types';\n\nexport type CreateLocalStorageProps<TItem extends HistoryItem> = Required<\n CreateRecentSearchesLocalStorageOptions<TItem>\n>;\n\nexport function createLocalStorage<TItem extends HistoryItem>({\n key,\n limit,\n search,\n}: CreateLocalStorageProps<TItem>): Storage<TItem> {\n const storage = getLocalStorage<TItem>({ key });\n\n return {\n onAdd(item) {\n storage.setItem([item, ...storage.getItem()]);\n },\n onRemove(id) {\n storage.setItem(storage.getItem().filter((x) => x.id !== id));\n },\n getAll(query = '') {\n return search({ query, items: storage.getItem(), limit }).slice(0, limit);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","export var warnCache = {\n current: {}\n};\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nexport function warn(condition, message) {\n if (!(process.env.NODE_ENV !== 'production')) {\n return;\n }\n\n if (condition) {\n return;\n }\n\n var sanitizedMessage = message.trim();\n var hasAlreadyPrinted = warnCache.current[sanitizedMessage];\n\n if (!hasAlreadyPrinted) {\n warnCache.current[sanitizedMessage] = true; // eslint-disable-next-line no-console\n\n console.warn(\"[Autocomplete] \".concat(sanitizedMessage));\n }\n}","import { HistoryItem, Storage, StorageApi } from './types';\n\nexport function createStorageApi<TItem extends HistoryItem>(\n storage: Storage<TItem>\n): StorageApi<TItem> {\n return {\n addItem(item) {\n storage.onRemove(item.id);\n storage.onAdd(item);\n },\n removeItem(id) {\n storage.onRemove(id);\n },\n getAll(query) {\n return storage.getAll(query);\n },\n };\n}\n","/** @jsx createElement */\nimport { SourceTemplates } from '@algolia/autocomplete-js';\n\nimport { RecentSearchesItem } from './types';\n\nexport type GetTemplatesParams<TItem extends RecentSearchesItem> = {\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n};\n\nexport function getTemplates<TItem extends RecentSearchesItem>({\n onRemove,\n onTapAhead,\n}: GetTemplatesParams<TItem>): SourceTemplates<TItem> {\n return {\n item({ item, createElement, components }) {\n return (\n <div className=\"aa-ItemWrapper\">\n <div className=\"aa-ItemContent\">\n <div className=\"aa-ItemIcon aa-ItemIcon--noBorder\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z\" />\n </svg>\n </div>\n <div className=\"aa-ItemContentBody\">\n <div className=\"aa-ItemContentTitle\">\n <components.ReverseHighlight hit={item} attribute=\"label\" />\n {item.category && (\n <span className=\"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline\">\n <span className=\"aa-ItemContentSubtitleIcon\" /> in{' '}\n <span className=\"aa-ItemContentSubtitleCategory\">\n {item.category}\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"aa-ItemActions\">\n <button\n className=\"aa-ItemActionButton\"\n title=\"Remove this search\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(item.id);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z\" />\n </svg>\n </button>\n <button\n className=\"aa-ItemActionButton\"\n title={`Fill query with \"${item.label}\"`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onTapAhead(item);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n },\n };\n}\n","import { PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompleteSource,\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, MaybePromise, warn } from '@algolia/autocomplete-shared';\nimport { SearchOptions } from '@algolia/client-search';\n\nimport { createStorageApi } from './createStorageApi';\nimport { getTemplates } from './getTemplates';\nimport { RecentSearchesItem, Storage, StorageApi } from './types';\n\nexport interface RecentSearchesPluginData<TItem extends RecentSearchesItem>\n extends StorageApi<TItem> {\n /**\n * Optimized [Algolia search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/). This is useful when using the plugin along with the [Query Suggestions](createQuerySuggestionsPlugin) plugin.\n *\n * This function enhances the provided search parameters by:\n * - Excluding Query Suggestions that are already displayed in recent searches.\n * - Using a shared `hitsPerPage` value to get a group limit of Query Suggestions and recent searches.\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-getalgoliasearchparams\n */\n getAlgoliaSearchParams(params?: SearchOptions): SearchOptions;\n}\n\nexport type CreateRecentSearchesPluginParams<\n TItem extends RecentSearchesItem\n> = {\n /**\n * The storage to fetch from and save recent searches into.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage\n */\n storage: Storage<TItem>;\n /**\n * A function to transform the provided source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<TItem>;\n state: AutocompleteState<TItem>;\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n }): AutocompleteSource<TItem>;\n subscribe?(params: PluginSubscribeParams<TItem>): void;\n};\n\nfunction getDefaultSubcribe<TItem extends RecentSearchesItem>(\n store: StorageApi<TItem>\n) {\n return function subscribe({ onSelect }: PluginSubscribeParams<TItem>) {\n onSelect(({ item, state, source }) => {\n const inputValue = source.getItemInputValue({ item, state });\n\n if (source.sourceId === 'querySuggestionsPlugin' && inputValue) {\n const recentItem: RecentSearchesItem = {\n id: inputValue,\n label: inputValue,\n category: (item as any).__autocomplete_qsCategory,\n };\n store.addItem(recentItem as TItem);\n }\n });\n };\n}\n\nexport function createRecentSearchesPlugin<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { storage, transformSource, subscribe } = getOptions(options);\n const store = createStorageApi<TItem>(storage);\n const lastItemsRef = createRef<MaybePromise<TItem[]>>([]);\n\n return {\n name: 'aa.recentSearchesPlugin',\n subscribe: subscribe ?? getDefaultSubcribe(store),\n onSubmit({ state }) {\n const { query } = state;\n\n if (query) {\n const recentItem: RecentSearchesItem = {\n id: query,\n label: query,\n };\n store.addItem(recentItem as TItem);\n }\n },\n getSources({ query, setQuery, refresh, state }) {\n lastItemsRef.current = store.getAll(query);\n\n function onRemove(id: string) {\n store.removeItem(id);\n refresh();\n }\n\n function onTapAhead(item: TItem) {\n setQuery(item.label);\n refresh();\n }\n\n return Promise.resolve(lastItemsRef.current).then((items) => {\n if (items.length === 0) {\n return [];\n }\n\n return [\n transformSource({\n source: {\n sourceId: 'recentSearchesPlugin',\n getItemInputValue({ item }) {\n return item.label;\n },\n getItems() {\n return items;\n },\n templates: getTemplates({ onRemove, onTapAhead }),\n },\n onRemove,\n onTapAhead,\n state: state as AutocompleteState<TItem>,\n }),\n ];\n });\n },\n data: {\n ...store,\n // @ts-ignore SearchOptions `facetFilters` is ReadonlyArray\n getAlgoliaSearchParams(params = {}) {\n // If the items returned by `store.getAll` are contained in a Promise,\n // we cannot provide the search params in time when this function is called\n // because we need to resolve the promise before getting the value.\n if (!Array.isArray(lastItemsRef.current)) {\n warn(\n false,\n 'The `getAlgoliaSearchParams` function is not supported with storages that return promises in `getAll`.'\n );\n return params;\n }\n\n return {\n ...params,\n facetFilters: [\n ...(params.facetFilters ?? []),\n // @TODO: we need to base the filter on the `query` attribute, not\n // `objectID`, because the Query Suggestions index cannot ensure\n // that the `objectID` will always be equal to the query.\n ...lastItemsRef.current.map((item) => [`objectID:-${item.label}`]),\n ],\n hitsPerPage: Math.max(\n 1,\n (params.hitsPerPage ?? 10) - lastItemsRef.current.length\n ),\n };\n },\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n) {\n return {\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n","import { addHighlightedAttribute } from './addHighlightedAttribute';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type SearchParams<TItem extends RecentSearchesItem> = {\n query: string;\n items: TItem[];\n limit: number;\n};\n\nexport function search<TItem extends RecentSearchesItem>({\n query,\n items,\n limit,\n}: SearchParams<TItem>): Array<Highlighted<TItem>> {\n if (!query) {\n return items\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n }\n\n return items\n .filter((item) => item.label.toLowerCase().includes(query.toLowerCase()))\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n}\n","import { AutocompletePlugin } from '@algolia/autocomplete-js';\n\nimport { LOCAL_STORAGE_KEY } from './constants';\nimport { createLocalStorage } from './createLocalStorage';\nimport {\n createRecentSearchesPlugin,\n CreateRecentSearchesPluginParams,\n RecentSearchesPluginData,\n} from './createRecentSearchesPlugin';\nimport { search as defaultSearch, SearchParams } from './search';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type CreateRecentSearchesLocalStorageOptions<\n TItem extends RecentSearchesItem\n> = {\n /**\n * A local storage key to identify where to save and retrieve the recent searches.\n *\n * For example:\n * - \"navbar\"\n * - \"search\"\n * - \"main\"\n *\n * The plugin namespaces all keys to avoid collisions.\n *\n * @example \"top_searchbar\"\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-key\n */\n key: string;\n\n /**\n * The number of recent searches to display.\n *\n * @default 5\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-limit\n */\n limit?: number;\n\n /**\n * A search function to retrieve recent searches from.\n *\n * This function is called in [`storage.getAll`](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage) to retrieve recent searches and is useful to filter and highlight recent searches when typing a query.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-search\n */\n search?(params: SearchParams<TItem>): Array<Highlighted<TItem>>;\n};\n\ntype LocalStorageRecentSearchesPluginOptions<\n TItem extends RecentSearchesItem\n> = Pick<\n CreateRecentSearchesPluginParams<TItem>,\n 'transformSource' | 'subscribe'\n> &\n CreateRecentSearchesLocalStorageOptions<TItem>;\n\nexport function createLocalStorageRecentSearchesPlugin<\n TItem extends RecentSearchesItem\n>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { key, limit, transformSource, search, subscribe } = getOptions(\n options\n );\n const storage = createLocalStorage<TItem>({\n key: [LOCAL_STORAGE_KEY, key].join(':'),\n limit,\n search,\n });\n\n const recentSearchesPlugin = createRecentSearchesPlugin<TItem>({\n transformSource,\n storage,\n subscribe,\n });\n\n return {\n ...recentSearchesPlugin,\n name: 'aa.localStorageRecentSearchesPlugin',\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n) {\n return {\n limit: 5,\n search: defaultSearch,\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n"],"names":["addHighlightedAttribute","item","query","_highlightResult","label","value","replace","RegExp","match","LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEY_TEST","isLocalStorageSupported","localStorage","setItem","removeItem","error","getLocalStorage","key","getItem","items","window","JSON","stringify","parse","createLocalStorage","limit","search","storage","onAdd","onRemove","id","filter","x","getAll","slice","createRef","initialValue","current","warnCache","warn","condition","message","sanitizedMessage","trim","hasAlreadyPrinted","console","concat","createStorageApi","addItem","getTemplates","onTapAhead","createElement","components","category","event","preventDefault","stopPropagation","getDefaultSubcribe","store","subscribe","onSelect","state","source","inputValue","getItemInputValue","sourceId","recentItem","__autocomplete_qsCategory","createRecentSearchesPlugin","options","getOptions","transformSource","lastItemsRef","name","onSubmit","getSources","setQuery","refresh","Promise","resolve","then","length","getItems","templates","data","getAlgoliaSearchParams","params","Array","isArray","process","facetFilters","map","hitsPerPage","Math","max","__autocomplete_pluginOptions","toLowerCase","includes","createLocalStorageRecentSearchesPlugin","join","recentSearchesPlugin","defaultSearch"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- /*! @algolia/autocomplete-plugin-recent-searches 1.4.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-plugin-recent-searches"]={})}(this,(function(e){"use strict";function t(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function r(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?r(Object(o),!0).forEach((function(r){t(e,r,o[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):r(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e))return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function i(e){var t=e.item,r=e.query;return n(n({},t),{},{_highlightResult:{label:{value:r?t.label.replace(new RegExp(r.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"gi"),(function(e){return"__aa-highlight__".concat(e,"__/aa-highlight__")})):t.label}}})}var c="AUTOCOMPLETE_RECENT_SEARCHES",u="__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__";function l(e){var t=e.key;return function(){try{return localStorage.setItem(u,""),localStorage.removeItem(u),!0}catch(e){return!1}}()?{setItem:function(e){return window.localStorage.setItem(t,JSON.stringify(e))},getItem:function(){var e=window.localStorage.getItem(t);return e?JSON.parse(e):[]}}:{setItem:function(){},getItem:function(){return[]}}}function s(e){var t=e.onRemove,r=e.onTapAhead;return{item:function(e){var n=e.item,o=e.createElement,a=e.components;return o("div",{className:"aa-ItemWrapper"},o("div",{className:"aa-ItemContent"},o("div",{className:"aa-ItemIcon aa-ItemIcon--noBorder"},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z"}))),o("div",{className:"aa-ItemContentBody"},o("div",{className:"aa-ItemContentTitle"},o(a.ReverseHighlight,{hit:n,attribute:"label"}),n.category&&o("span",{className:"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline"},o("span",{className:"aa-ItemContentSubtitleIcon"})," in"," ",o("span",{className:"aa-ItemContentSubtitleCategory"},n.category))))),o("div",{className:"aa-ItemActions"},o("button",{className:"aa-ItemActionButton",title:"Remove this search",onClick:function(e){e.preventDefault(),e.stopPropagation(),t(n.id)}},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z"}))),o("button",{className:"aa-ItemActionButton",title:'Fill query with "'.concat(n.label,'"'),onClick:function(e){e.preventDefault(),e.stopPropagation(),r(n)}},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z"})))))}}}function f(e){return function(t){(0,t.onSelect)((function(t){var r=t.item,n=t.state,o=t.source,a=o.getItemInputValue({item:r,state:n});if("querySuggestionsPlugin"===o.sourceId&&a){var i={id:a,label:a,category:r.__autocomplete_qsCategory};e.addItem(i)}}))}}function m(e){var t=e.storage,r=e.transformSource,a=void 0===r?function(e){return e.source}:r,i=e.subscribe,c=function(e){return{addItem:function(t){e.onRemove(t.id),e.onAdd(t)},removeItem:function(t){e.onRemove(t)},getAll:function(t){return e.getAll(t)}}}(t),u={current:[]};return{subscribe:null!=i?i:f(c),onSubmit:function(e){var t=e.state.query;if(t){var r={id:t,label:t};c.addItem(r)}},getSources:function(e){var t=e.query,r=e.setQuery,n=e.refresh,o=e.state;function i(e){c.removeItem(e),n()}function l(e){r(e.label),n()}return u.current=c.getAll(t),Promise.resolve(u.current).then((function(e){return 0===e.length?[]:[a({source:{sourceId:"recentSearchesPlugin",getItemInputValue:function(e){return e.item.label},getItems:function(){return e},templates:s({onRemove:i,onTapAhead:l})},onRemove:i,onTapAhead:l,state:o})]}))},data:n(n({},c),{},{getAlgoliaSearchParams:function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Array.isArray(u.current)?n(n({},r),{},{facetFilters:[].concat(o(null!==(e=r.facetFilters)&&void 0!==e?e:[]),o(u.current.map((function(e){return["objectID:-".concat(e.label)]})))),hitsPerPage:Math.max(1,(null!==(t=r.hitsPerPage)&&void 0!==t?t:10)-u.current.length)}):r}})}}function g(e){var t=e.query,r=e.items,n=e.limit;return t?r.filter((function(e){return e.label.toLowerCase().includes(t.toLowerCase())})).slice(0,n).map((function(e){return i({item:e,query:t})})):r.slice(0,n).map((function(e){return i({item:e,query:t})}))}e.addHighlightedAttribute=i,e.createLocalStorageRecentSearchesPlugin=function(e){var t=e.key,r=e.limit,n=void 0===r?5:r,a=e.transformSource,i=e.search,u=void 0===i?g:i,s=e.subscribe;return m({transformSource:a,storage:function(e){var t=e.key,r=e.limit,n=e.search,a=l({key:t});return{onAdd:function(e){a.setItem([e].concat(o(a.getItem())))},onRemove:function(e){a.setItem(a.getItem().filter((function(t){return t.id!==e})))},getAll:function(){return n({query:arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",items:a.getItem(),limit:r}).slice(0,r)}}}({key:[c,t].join(":"),limit:n,search:u}),subscribe:s})},e.createRecentSearchesPlugin=m,e.getTemplates=s,e.search=g,Object.defineProperty(e,"__esModule",{value:!0})}));
1
+ /*! @algolia/autocomplete-plugin-recent-searches 1.5.2 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["@algolia/autocomplete-plugin-recent-searches"]={})}(this,(function(e){"use strict";function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e){return function(e){if(Array.isArray(e))return a(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return a(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function i(e){var t=e.item,r=e.query;return n(n({},t),{},{_highlightResult:{label:{value:r?t.label.replace(new RegExp(r.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"gi"),(function(e){return"__aa-highlight__".concat(e,"__/aa-highlight__")})):t.label}}})}var c="AUTOCOMPLETE_RECENT_SEARCHES",u="__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__";function l(e){var t=e.key;return function(){try{return localStorage.setItem(u,""),localStorage.removeItem(u),!0}catch(e){return!1}}()?{setItem:function(e){return window.localStorage.setItem(t,JSON.stringify(e))},getItem:function(){var e=window.localStorage.getItem(t);return e?JSON.parse(e):[]}}:{setItem:function(){},getItem:function(){return[]}}}function s(e){var t=e.onRemove,n=e.onTapAhead;return{item:function(e){var r=e.item,o=e.createElement,a=e.components;return o("div",{className:"aa-ItemWrapper"},o("div",{className:"aa-ItemContent"},o("div",{className:"aa-ItemIcon aa-ItemIcon--noBorder"},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z"}))),o("div",{className:"aa-ItemContentBody"},o("div",{className:"aa-ItemContentTitle"},o(a.ReverseHighlight,{hit:r,attribute:"label"}),r.category&&o("span",{className:"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline"},o("span",{className:"aa-ItemContentSubtitleIcon"})," in"," ",o("span",{className:"aa-ItemContentSubtitleCategory"},r.category))))),o("div",{className:"aa-ItemActions"},o("button",{className:"aa-ItemActionButton",title:"Remove this search",onClick:function(e){e.preventDefault(),e.stopPropagation(),t(r.id)}},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z"}))),o("button",{className:"aa-ItemActionButton",title:'Fill query with "'.concat(r.label,'"'),onClick:function(e){e.preventDefault(),e.stopPropagation(),n(r)}},o("svg",{viewBox:"0 0 24 24",fill:"currentColor"},o("path",{d:"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z"})))))}}}function m(e){return function(t){(0,t.onSelect)((function(t){var n=t.item,r=t.state,o=t.source,a=o.getItemInputValue({item:n,state:r});if("querySuggestionsPlugin"===o.sourceId&&a){var i={id:a,label:a,category:n.__autocomplete_qsCategory};e.addItem(i)}}))}}function f(e){var t=function(e){return n({transformSource:function(e){return e.source}},e)}(e),r=t.storage,a=t.transformSource,i=t.subscribe,c=function(e){return{addItem:function(t){e.onRemove(t.id),e.onAdd(t)},removeItem:function(t){e.onRemove(t)},getAll:function(t){return e.getAll(t)}}}(r),u={current:[]};return{name:"aa.recentSearchesPlugin",subscribe:null!=i?i:m(c),onSubmit:function(e){var t=e.state.query;if(t){var n={id:t,label:t};c.addItem(n)}},getSources:function(e){var t=e.query,n=e.setQuery,r=e.refresh,o=e.state;function i(e){c.removeItem(e),r()}function l(e){n(e.label),r()}return u.current=c.getAll(t),Promise.resolve(u.current).then((function(e){return 0===e.length?[]:[a({source:{sourceId:"recentSearchesPlugin",getItemInputValue:function(e){return e.item.label},getItems:function(){return e},templates:s({onRemove:i,onTapAhead:l})},onRemove:i,onTapAhead:l,state:o})]}))},data:n(n({},c),{},{getAlgoliaSearchParams:function(){var e,t,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Array.isArray(u.current)?n(n({},r),{},{facetFilters:[].concat(o(null!==(e=r.facetFilters)&&void 0!==e?e:[]),o(u.current.map((function(e){return["objectID:-".concat(e.label)]})))),hitsPerPage:Math.max(1,(null!==(t=r.hitsPerPage)&&void 0!==t?t:10)-u.current.length)}):r}}),__autocomplete_pluginOptions:e}}function g(e){var t=e.query,n=e.items,r=e.limit;return t?n.filter((function(e){return e.label.toLowerCase().includes(t.toLowerCase())})).slice(0,r).map((function(e){return i({item:e,query:t})})):n.slice(0,r).map((function(e){return i({item:e,query:t})}))}function v(e){return n({limit:5,search:g,transformSource:function(e){return e.source}},e)}e.addHighlightedAttribute=i,e.createLocalStorageRecentSearchesPlugin=function(e){var t=v(e),r=t.key,a=t.limit,i=t.transformSource,u=t.search,s=t.subscribe,m=function(e){var t=e.key,n=e.limit,r=e.search,a=l({key:t});return{onAdd:function(e){a.setItem([e].concat(o(a.getItem())))},onRemove:function(e){a.setItem(a.getItem().filter((function(t){return t.id!==e})))},getAll:function(){return r({query:arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",items:a.getItem(),limit:n}).slice(0,n)}}}({key:[c,r].join(":"),limit:a,search:u});return n(n({},f({transformSource:i,storage:m,subscribe:s})),{},{name:"aa.localStorageRecentSearchesPlugin",__autocomplete_pluginOptions:e})},e.createRecentSearchesPlugin=f,e.getTemplates=s,e.search=g,Object.defineProperty(e,"__esModule",{value:!0})}));
3
3
  //# sourceMappingURL=index.production.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.production.js","sources":["../../src/addHighlightedAttribute.ts","../../src/constants.ts","../../src/getLocalStorage.ts","../../src/getTemplates.tsx","../../src/createRecentSearchesPlugin.ts","../../src/createStorageApi.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../src/search.ts","../../src/createLocalStorageRecentSearchesPlugin.ts","../../src/createLocalStorage.ts"],"sourcesContent":["import { Highlighted, HistoryItem } from './types';\n\ntype HighlightParams<TItem> = {\n item: TItem;\n query: string;\n};\n\nexport function addHighlightedAttribute<TItem extends HistoryItem>({\n item,\n query,\n}: HighlightParams<TItem>): Highlighted<TItem> {\n return {\n ...item,\n _highlightResult: {\n label: {\n value: query\n ? item.label.replace(\n new RegExp(query.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'gi'),\n (match) => {\n return `__aa-highlight__${match}__/aa-highlight__`;\n }\n )\n : item.label,\n },\n },\n };\n}\n","export const LOCAL_STORAGE_KEY = 'AUTOCOMPLETE_RECENT_SEARCHES';\nexport const LOCAL_STORAGE_KEY_TEST =\n '__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__';\n","import { LOCAL_STORAGE_KEY_TEST } from './constants';\n\nfunction isLocalStorageSupported() {\n try {\n localStorage.setItem(LOCAL_STORAGE_KEY_TEST, '');\n localStorage.removeItem(LOCAL_STORAGE_KEY_TEST);\n\n return true;\n } catch (error) {\n return false;\n }\n}\n\ntype LocalStorageProps = {\n key: string;\n};\n\nexport function getLocalStorage<TItem>({ key }: LocalStorageProps) {\n if (!isLocalStorageSupported()) {\n return {\n setItem() {},\n getItem() {\n return [];\n },\n };\n }\n\n return {\n setItem(items: TItem[]) {\n return window.localStorage.setItem(key, JSON.stringify(items));\n },\n getItem(): TItem[] {\n const items = window.localStorage.getItem(key);\n\n return items ? (JSON.parse(items) as TItem[]) : [];\n },\n };\n}\n","/** @jsx createElement */\nimport { SourceTemplates } from '@algolia/autocomplete-js';\n\nimport { RecentSearchesItem } from './types';\n\nexport type GetTemplatesParams<TItem extends RecentSearchesItem> = {\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n};\n\nexport function getTemplates<TItem extends RecentSearchesItem>({\n onRemove,\n onTapAhead,\n}: GetTemplatesParams<TItem>): SourceTemplates<TItem> {\n return {\n item({ item, createElement, components }) {\n return (\n <div className=\"aa-ItemWrapper\">\n <div className=\"aa-ItemContent\">\n <div className=\"aa-ItemIcon aa-ItemIcon--noBorder\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z\" />\n </svg>\n </div>\n <div className=\"aa-ItemContentBody\">\n <div className=\"aa-ItemContentTitle\">\n <components.ReverseHighlight hit={item} attribute=\"label\" />\n {item.category && (\n <span className=\"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline\">\n <span className=\"aa-ItemContentSubtitleIcon\" /> in{' '}\n <span className=\"aa-ItemContentSubtitleCategory\">\n {item.category}\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"aa-ItemActions\">\n <button\n className=\"aa-ItemActionButton\"\n title=\"Remove this search\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(item.id);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z\" />\n </svg>\n </button>\n <button\n className=\"aa-ItemActionButton\"\n title={`Fill query with \"${item.label}\"`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onTapAhead(item);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n },\n };\n}\n","import { PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompleteSource,\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, MaybePromise, warn } from '@algolia/autocomplete-shared';\nimport { SearchOptions } from '@algolia/client-search';\n\nimport { createStorageApi } from './createStorageApi';\nimport { getTemplates } from './getTemplates';\nimport { RecentSearchesItem, Storage, StorageApi } from './types';\n\nexport interface RecentSearchesPluginData<TItem extends RecentSearchesItem>\n extends StorageApi<TItem> {\n /**\n * Optimized [Algolia search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/). This is useful when using the plugin along with the [Query Suggestions](createQuerySuggestionsPlugin) plugin.\n *\n * This function enhances the provided search parameters by:\n * - Excluding Query Suggestions that are already displayed in recent searches.\n * - Using a shared `hitsPerPage` value to get a group limit of Query Suggestions and recent searches.\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-getalgoliasearchparams\n */\n getAlgoliaSearchParams(params?: SearchOptions): SearchOptions;\n}\n\nexport type CreateRecentSearchesPluginParams<\n TItem extends RecentSearchesItem\n> = {\n /**\n * The storage to fetch from and save recent searches into.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage\n */\n storage: Storage<TItem>;\n /**\n * A function to transform the provided source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<TItem>;\n state: AutocompleteState<TItem>;\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n }): AutocompleteSource<TItem>;\n subscribe?(params: PluginSubscribeParams<TItem>): void;\n};\n\nfunction getDefaultSubcribe<TItem extends RecentSearchesItem>(\n store: StorageApi<TItem>\n) {\n return function subscribe({ onSelect }: PluginSubscribeParams<TItem>) {\n onSelect(({ item, state, source }) => {\n const inputValue = source.getItemInputValue({ item, state });\n\n if (source.sourceId === 'querySuggestionsPlugin' && inputValue) {\n const recentItem: RecentSearchesItem = {\n id: inputValue,\n label: inputValue,\n category: (item as any).__autocomplete_qsCategory,\n };\n store.addItem(recentItem as TItem);\n }\n });\n };\n}\n\nexport function createRecentSearchesPlugin<TItem extends RecentSearchesItem>({\n storage,\n transformSource = ({ source }) => source,\n subscribe,\n}: CreateRecentSearchesPluginParams<TItem>): AutocompletePlugin<\n TItem,\n RecentSearchesPluginData<TItem>\n> {\n const store = createStorageApi<TItem>(storage);\n const lastItemsRef = createRef<MaybePromise<TItem[]>>([]);\n\n return {\n subscribe: subscribe ?? getDefaultSubcribe(store),\n onSubmit({ state }) {\n const { query } = state;\n\n if (query) {\n const recentItem: RecentSearchesItem = {\n id: query,\n label: query,\n };\n store.addItem(recentItem as TItem);\n }\n },\n getSources({ query, setQuery, refresh, state }) {\n lastItemsRef.current = store.getAll(query);\n\n function onRemove(id: string) {\n store.removeItem(id);\n refresh();\n }\n\n function onTapAhead(item: TItem) {\n setQuery(item.label);\n refresh();\n }\n\n return Promise.resolve(lastItemsRef.current).then((items) => {\n if (items.length === 0) {\n return [];\n }\n\n return [\n transformSource({\n source: {\n sourceId: 'recentSearchesPlugin',\n getItemInputValue({ item }) {\n return item.label;\n },\n getItems() {\n return items;\n },\n templates: getTemplates({ onRemove, onTapAhead }),\n },\n onRemove,\n onTapAhead,\n state: state as AutocompleteState<TItem>,\n }),\n ];\n });\n },\n data: {\n ...store,\n // @ts-ignore SearchOptions `facetFilters` is ReadonlyArray\n getAlgoliaSearchParams(params = {}) {\n // If the items returned by `store.getAll` are contained in a Promise,\n // we cannot provide the search params in time when this function is called\n // because we need to resolve the promise before getting the value.\n if (!Array.isArray(lastItemsRef.current)) {\n warn(\n false,\n 'The `getAlgoliaSearchParams` function is not supported with storages that return promises in `getAll`.'\n );\n return params;\n }\n\n return {\n ...params,\n facetFilters: [\n ...(params.facetFilters ?? []),\n // @TODO: we need to base the filter on the `query` attribute, not\n // `objectID`, because the Query Suggestions index cannot ensure\n // that the `objectID` will always be equal to the query.\n ...lastItemsRef.current.map((item) => [`objectID:-${item.label}`]),\n ],\n hitsPerPage: Math.max(\n 1,\n (params.hitsPerPage ?? 10) - lastItemsRef.current.length\n ),\n };\n },\n },\n };\n}\n","import { HistoryItem, Storage, StorageApi } from './types';\n\nexport function createStorageApi<TItem extends HistoryItem>(\n storage: Storage<TItem>\n): StorageApi<TItem> {\n return {\n addItem(item) {\n storage.onRemove(item.id);\n storage.onAdd(item);\n },\n removeItem(id) {\n storage.onRemove(id);\n },\n getAll(query) {\n return storage.getAll(query);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","import { addHighlightedAttribute } from './addHighlightedAttribute';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type SearchParams<TItem extends RecentSearchesItem> = {\n query: string;\n items: TItem[];\n limit: number;\n};\n\nexport function search<TItem extends RecentSearchesItem>({\n query,\n items,\n limit,\n}: SearchParams<TItem>): Array<Highlighted<TItem>> {\n if (!query) {\n return items\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n }\n\n return items\n .filter((item) => item.label.toLowerCase().includes(query.toLowerCase()))\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n}\n","import { AutocompletePlugin } from '@algolia/autocomplete-js';\n\nimport { LOCAL_STORAGE_KEY } from './constants';\nimport { createLocalStorage } from './createLocalStorage';\nimport {\n createRecentSearchesPlugin,\n CreateRecentSearchesPluginParams,\n RecentSearchesPluginData,\n} from './createRecentSearchesPlugin';\nimport { search as defaultSearch, SearchParams } from './search';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type CreateRecentSearchesLocalStorageOptions<\n TItem extends RecentSearchesItem\n> = {\n /**\n * A local storage key to identify where to save and retrieve the recent searches.\n *\n * For example:\n * - \"navbar\"\n * - \"search\"\n * - \"main\"\n *\n * The plugin namespaces all keys to avoid collisions.\n *\n * @example \"top_searchbar\"\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-key\n */\n key: string;\n\n /**\n * The number of recent searches to display.\n *\n * @default 5\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-limit\n */\n limit?: number;\n\n /**\n * A search function to retrieve recent searches from.\n *\n * This function is called in [`storage.getAll`](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage) to retrieve recent searches and is useful to filter and highlight recent searches when typing a query.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-search\n */\n search?(params: SearchParams<TItem>): Array<Highlighted<TItem>>;\n};\n\ntype LocalStorageRecentSearchesPluginOptions<\n TItem extends RecentSearchesItem\n> = Pick<\n CreateRecentSearchesPluginParams<TItem>,\n 'transformSource' | 'subscribe'\n> &\n CreateRecentSearchesLocalStorageOptions<TItem>;\n\nexport function createLocalStorageRecentSearchesPlugin<\n TItem extends RecentSearchesItem\n>({\n key,\n limit = 5,\n transformSource,\n search = defaultSearch,\n subscribe,\n}: LocalStorageRecentSearchesPluginOptions<TItem>): AutocompletePlugin<\n TItem,\n RecentSearchesPluginData<TItem>\n> {\n const storage = createLocalStorage({\n key: [LOCAL_STORAGE_KEY, key].join(':'),\n limit,\n search,\n });\n\n return createRecentSearchesPlugin({\n transformSource,\n storage,\n subscribe,\n });\n}\n","import { CreateRecentSearchesLocalStorageOptions } from './createLocalStorageRecentSearchesPlugin';\nimport { getLocalStorage } from './getLocalStorage';\nimport { HistoryItem, Storage } from './types';\n\nexport type CreateLocalStorageProps<TItem extends HistoryItem> = Required<\n CreateRecentSearchesLocalStorageOptions<TItem>\n>;\n\nexport function createLocalStorage<TItem extends HistoryItem>({\n key,\n limit,\n search,\n}: CreateLocalStorageProps<TItem>): Storage<TItem> {\n const storage = getLocalStorage<TItem>({ key });\n\n return {\n onAdd(item) {\n storage.setItem([item, ...storage.getItem()]);\n },\n onRemove(id) {\n storage.setItem(storage.getItem().filter((x) => x.id !== id));\n },\n getAll(query = '') {\n return search({ query, items: storage.getItem(), limit }).slice(0, limit);\n },\n };\n}\n"],"names":["addHighlightedAttribute","item","query","_highlightResult","label","value","replace","RegExp","match","LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEY_TEST","getLocalStorage","key","localStorage","setItem","removeItem","error","isLocalStorageSupported","items","window","JSON","stringify","getItem","parse","getTemplates","onRemove","onTapAhead","createElement","components","className","viewBox","fill","d","ReverseHighlight","hit","attribute","category","title","onClick","event","preventDefault","stopPropagation","id","getDefaultSubcribe","store","onSelect","state","source","inputValue","getItemInputValue","sourceId","recentItem","__autocomplete_qsCategory","addItem","createRecentSearchesPlugin","storage","transformSource","subscribe","onAdd","getAll","createStorageApi","lastItemsRef","current","onSubmit","getSources","setQuery","refresh","Promise","resolve","then","length","getItems","templates","data","getAlgoliaSearchParams","params","Array","isArray","facetFilters","map","hitsPerPage","Math","max","search","limit","filter","toLowerCase","includes","slice","defaultSearch","x","createLocalStorage","join"],"mappings":"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"}
1
+ {"version":3,"file":"index.production.js","sources":["../../src/addHighlightedAttribute.ts","../../src/constants.ts","../../src/getLocalStorage.ts","../../src/getTemplates.tsx","../../src/createRecentSearchesPlugin.ts","../../src/createStorageApi.ts","../../../autocomplete-shared/dist/esm/createRef.js","../../src/search.ts","../../src/createLocalStorageRecentSearchesPlugin.ts","../../src/createLocalStorage.ts"],"sourcesContent":["import { Highlighted, HistoryItem } from './types';\n\ntype HighlightParams<TItem> = {\n item: TItem;\n query: string;\n};\n\nexport function addHighlightedAttribute<TItem extends HistoryItem>({\n item,\n query,\n}: HighlightParams<TItem>): Highlighted<TItem> {\n return {\n ...item,\n _highlightResult: {\n label: {\n value: query\n ? item.label.replace(\n new RegExp(query.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&'), 'gi'),\n (match) => {\n return `__aa-highlight__${match}__/aa-highlight__`;\n }\n )\n : item.label,\n },\n },\n };\n}\n","export const LOCAL_STORAGE_KEY = 'AUTOCOMPLETE_RECENT_SEARCHES';\nexport const LOCAL_STORAGE_KEY_TEST =\n '__AUTOCOMPLETE_RECENT_SEARCHES_PLUGIN_TEST_KEY__';\n","import { LOCAL_STORAGE_KEY_TEST } from './constants';\n\nfunction isLocalStorageSupported() {\n try {\n localStorage.setItem(LOCAL_STORAGE_KEY_TEST, '');\n localStorage.removeItem(LOCAL_STORAGE_KEY_TEST);\n\n return true;\n } catch (error) {\n return false;\n }\n}\n\ntype LocalStorageProps = {\n key: string;\n};\n\nexport function getLocalStorage<TItem>({ key }: LocalStorageProps) {\n if (!isLocalStorageSupported()) {\n return {\n setItem() {},\n getItem() {\n return [];\n },\n };\n }\n\n return {\n setItem(items: TItem[]) {\n return window.localStorage.setItem(key, JSON.stringify(items));\n },\n getItem(): TItem[] {\n const items = window.localStorage.getItem(key);\n\n return items ? (JSON.parse(items) as TItem[]) : [];\n },\n };\n}\n","/** @jsx createElement */\nimport { SourceTemplates } from '@algolia/autocomplete-js';\n\nimport { RecentSearchesItem } from './types';\n\nexport type GetTemplatesParams<TItem extends RecentSearchesItem> = {\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n};\n\nexport function getTemplates<TItem extends RecentSearchesItem>({\n onRemove,\n onTapAhead,\n}: GetTemplatesParams<TItem>): SourceTemplates<TItem> {\n return {\n item({ item, createElement, components }) {\n return (\n <div className=\"aa-ItemWrapper\">\n <div className=\"aa-ItemContent\">\n <div className=\"aa-ItemIcon aa-ItemIcon--noBorder\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M12.516 6.984v5.25l4.5 2.672-0.75 1.266-5.25-3.188v-6h1.5zM12 20.016q3.281 0 5.648-2.367t2.367-5.648-2.367-5.648-5.648-2.367-5.648 2.367-2.367 5.648 2.367 5.648 5.648 2.367zM12 2.016q4.125 0 7.055 2.93t2.93 7.055-2.93 7.055-7.055 2.93-7.055-2.93-2.93-7.055 2.93-7.055 7.055-2.93z\" />\n </svg>\n </div>\n <div className=\"aa-ItemContentBody\">\n <div className=\"aa-ItemContentTitle\">\n <components.ReverseHighlight hit={item} attribute=\"label\" />\n {item.category && (\n <span className=\"aa-ItemContentSubtitle aa-ItemContentSubtitle--inline\">\n <span className=\"aa-ItemContentSubtitleIcon\" /> in{' '}\n <span className=\"aa-ItemContentSubtitleCategory\">\n {item.category}\n </span>\n </span>\n )}\n </div>\n </div>\n </div>\n <div className=\"aa-ItemActions\">\n <button\n className=\"aa-ItemActionButton\"\n title=\"Remove this search\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onRemove(item.id);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M18 7v13c0 0.276-0.111 0.525-0.293 0.707s-0.431 0.293-0.707 0.293h-10c-0.276 0-0.525-0.111-0.707-0.293s-0.293-0.431-0.293-0.707v-13zM17 5v-1c0-0.828-0.337-1.58-0.879-2.121s-1.293-0.879-2.121-0.879h-4c-0.828 0-1.58 0.337-2.121 0.879s-0.879 1.293-0.879 2.121v1h-4c-0.552 0-1 0.448-1 1s0.448 1 1 1h1v13c0 0.828 0.337 1.58 0.879 2.121s1.293 0.879 2.121 0.879h10c0.828 0 1.58-0.337 2.121-0.879s0.879-1.293 0.879-2.121v-13h1c0.552 0 1-0.448 1-1s-0.448-1-1-1zM9 5v-1c0-0.276 0.111-0.525 0.293-0.707s0.431-0.293 0.707-0.293h4c0.276 0 0.525 0.111 0.707 0.293s0.293 0.431 0.293 0.707v1zM9 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1zM13 11v6c0 0.552 0.448 1 1 1s1-0.448 1-1v-6c0-0.552-0.448-1-1-1s-1 0.448-1 1z\" />\n </svg>\n </button>\n <button\n className=\"aa-ItemActionButton\"\n title={`Fill query with \"${item.label}\"`}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n onTapAhead(item);\n }}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M8 17v-7.586l8.293 8.293c0.391 0.391 1.024 0.391 1.414 0s0.391-1.024 0-1.414l-8.293-8.293h7.586c0.552 0 1-0.448 1-1s-0.448-1-1-1h-10c-0.552 0-1 0.448-1 1v10c0 0.552 0.448 1 1 1s1-0.448 1-1z\" />\n </svg>\n </button>\n </div>\n </div>\n );\n },\n };\n}\n","import { PluginSubscribeParams } from '@algolia/autocomplete-core';\nimport {\n AutocompleteSource,\n AutocompleteState,\n AutocompletePlugin,\n} from '@algolia/autocomplete-js';\nimport { createRef, MaybePromise, warn } from '@algolia/autocomplete-shared';\nimport { SearchOptions } from '@algolia/client-search';\n\nimport { createStorageApi } from './createStorageApi';\nimport { getTemplates } from './getTemplates';\nimport { RecentSearchesItem, Storage, StorageApi } from './types';\n\nexport interface RecentSearchesPluginData<TItem extends RecentSearchesItem>\n extends StorageApi<TItem> {\n /**\n * Optimized [Algolia search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/). This is useful when using the plugin along with the [Query Suggestions](createQuerySuggestionsPlugin) plugin.\n *\n * This function enhances the provided search parameters by:\n * - Excluding Query Suggestions that are already displayed in recent searches.\n * - Using a shared `hitsPerPage` value to get a group limit of Query Suggestions and recent searches.\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-getalgoliasearchparams\n */\n getAlgoliaSearchParams(params?: SearchOptions): SearchOptions;\n}\n\nexport type CreateRecentSearchesPluginParams<\n TItem extends RecentSearchesItem\n> = {\n /**\n * The storage to fetch from and save recent searches into.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage\n */\n storage: Storage<TItem>;\n /**\n * A function to transform the provided source.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-transformsource\n */\n transformSource?(params: {\n source: AutocompleteSource<TItem>;\n state: AutocompleteState<TItem>;\n onRemove(id: string): void;\n onTapAhead(item: TItem): void;\n }): AutocompleteSource<TItem>;\n subscribe?(params: PluginSubscribeParams<TItem>): void;\n};\n\nfunction getDefaultSubcribe<TItem extends RecentSearchesItem>(\n store: StorageApi<TItem>\n) {\n return function subscribe({ onSelect }: PluginSubscribeParams<TItem>) {\n onSelect(({ item, state, source }) => {\n const inputValue = source.getItemInputValue({ item, state });\n\n if (source.sourceId === 'querySuggestionsPlugin' && inputValue) {\n const recentItem: RecentSearchesItem = {\n id: inputValue,\n label: inputValue,\n category: (item as any).__autocomplete_qsCategory,\n };\n store.addItem(recentItem as TItem);\n }\n });\n };\n}\n\nexport function createRecentSearchesPlugin<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { storage, transformSource, subscribe } = getOptions(options);\n const store = createStorageApi<TItem>(storage);\n const lastItemsRef = createRef<MaybePromise<TItem[]>>([]);\n\n return {\n name: 'aa.recentSearchesPlugin',\n subscribe: subscribe ?? getDefaultSubcribe(store),\n onSubmit({ state }) {\n const { query } = state;\n\n if (query) {\n const recentItem: RecentSearchesItem = {\n id: query,\n label: query,\n };\n store.addItem(recentItem as TItem);\n }\n },\n getSources({ query, setQuery, refresh, state }) {\n lastItemsRef.current = store.getAll(query);\n\n function onRemove(id: string) {\n store.removeItem(id);\n refresh();\n }\n\n function onTapAhead(item: TItem) {\n setQuery(item.label);\n refresh();\n }\n\n return Promise.resolve(lastItemsRef.current).then((items) => {\n if (items.length === 0) {\n return [];\n }\n\n return [\n transformSource({\n source: {\n sourceId: 'recentSearchesPlugin',\n getItemInputValue({ item }) {\n return item.label;\n },\n getItems() {\n return items;\n },\n templates: getTemplates({ onRemove, onTapAhead }),\n },\n onRemove,\n onTapAhead,\n state: state as AutocompleteState<TItem>,\n }),\n ];\n });\n },\n data: {\n ...store,\n // @ts-ignore SearchOptions `facetFilters` is ReadonlyArray\n getAlgoliaSearchParams(params = {}) {\n // If the items returned by `store.getAll` are contained in a Promise,\n // we cannot provide the search params in time when this function is called\n // because we need to resolve the promise before getting the value.\n if (!Array.isArray(lastItemsRef.current)) {\n warn(\n false,\n 'The `getAlgoliaSearchParams` function is not supported with storages that return promises in `getAll`.'\n );\n return params;\n }\n\n return {\n ...params,\n facetFilters: [\n ...(params.facetFilters ?? []),\n // @TODO: we need to base the filter on the `query` attribute, not\n // `objectID`, because the Query Suggestions index cannot ensure\n // that the `objectID` will always be equal to the query.\n ...lastItemsRef.current.map((item) => [`objectID:-${item.label}`]),\n ],\n hitsPerPage: Math.max(\n 1,\n (params.hitsPerPage ?? 10) - lastItemsRef.current.length\n ),\n };\n },\n },\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: CreateRecentSearchesPluginParams<TItem>\n) {\n return {\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n","import { HistoryItem, Storage, StorageApi } from './types';\n\nexport function createStorageApi<TItem extends HistoryItem>(\n storage: Storage<TItem>\n): StorageApi<TItem> {\n return {\n addItem(item) {\n storage.onRemove(item.id);\n storage.onAdd(item);\n },\n removeItem(id) {\n storage.onRemove(id);\n },\n getAll(query) {\n return storage.getAll(query);\n },\n };\n}\n","export function createRef(initialValue) {\n return {\n current: initialValue\n };\n}","import { addHighlightedAttribute } from './addHighlightedAttribute';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type SearchParams<TItem extends RecentSearchesItem> = {\n query: string;\n items: TItem[];\n limit: number;\n};\n\nexport function search<TItem extends RecentSearchesItem>({\n query,\n items,\n limit,\n}: SearchParams<TItem>): Array<Highlighted<TItem>> {\n if (!query) {\n return items\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n }\n\n return items\n .filter((item) => item.label.toLowerCase().includes(query.toLowerCase()))\n .slice(0, limit)\n .map((item) => addHighlightedAttribute({ item, query }));\n}\n","import { AutocompletePlugin } from '@algolia/autocomplete-js';\n\nimport { LOCAL_STORAGE_KEY } from './constants';\nimport { createLocalStorage } from './createLocalStorage';\nimport {\n createRecentSearchesPlugin,\n CreateRecentSearchesPluginParams,\n RecentSearchesPluginData,\n} from './createRecentSearchesPlugin';\nimport { search as defaultSearch, SearchParams } from './search';\nimport { Highlighted, RecentSearchesItem } from './types';\n\nexport type CreateRecentSearchesLocalStorageOptions<\n TItem extends RecentSearchesItem\n> = {\n /**\n * A local storage key to identify where to save and retrieve the recent searches.\n *\n * For example:\n * - \"navbar\"\n * - \"search\"\n * - \"main\"\n *\n * The plugin namespaces all keys to avoid collisions.\n *\n * @example \"top_searchbar\"\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-key\n */\n key: string;\n\n /**\n * The number of recent searches to display.\n *\n * @default 5\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-limit\n */\n limit?: number;\n\n /**\n * A search function to retrieve recent searches from.\n *\n * This function is called in [`storage.getAll`](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createRecentSearchesPlugin/#param-storage) to retrieve recent searches and is useful to filter and highlight recent searches when typing a query.\n *\n * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-recent-searches/createLocalStorageRecentSearchesPlugin/#param-search\n */\n search?(params: SearchParams<TItem>): Array<Highlighted<TItem>>;\n};\n\ntype LocalStorageRecentSearchesPluginOptions<\n TItem extends RecentSearchesItem\n> = Pick<\n CreateRecentSearchesPluginParams<TItem>,\n 'transformSource' | 'subscribe'\n> &\n CreateRecentSearchesLocalStorageOptions<TItem>;\n\nexport function createLocalStorageRecentSearchesPlugin<\n TItem extends RecentSearchesItem\n>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n): AutocompletePlugin<TItem, RecentSearchesPluginData<TItem>> {\n const { key, limit, transformSource, search, subscribe } = getOptions(\n options\n );\n const storage = createLocalStorage<TItem>({\n key: [LOCAL_STORAGE_KEY, key].join(':'),\n limit,\n search,\n });\n\n const recentSearchesPlugin = createRecentSearchesPlugin<TItem>({\n transformSource,\n storage,\n subscribe,\n });\n\n return {\n ...recentSearchesPlugin,\n name: 'aa.localStorageRecentSearchesPlugin',\n __autocomplete_pluginOptions: options,\n };\n}\n\nfunction getOptions<TItem extends RecentSearchesItem>(\n options: LocalStorageRecentSearchesPluginOptions<TItem>\n) {\n return {\n limit: 5,\n search: defaultSearch,\n transformSource: ({ source }) => source,\n ...options,\n };\n}\n","import { CreateRecentSearchesLocalStorageOptions } from './createLocalStorageRecentSearchesPlugin';\nimport { getLocalStorage } from './getLocalStorage';\nimport { HistoryItem, Storage } from './types';\n\nexport type CreateLocalStorageProps<TItem extends HistoryItem> = Required<\n CreateRecentSearchesLocalStorageOptions<TItem>\n>;\n\nexport function createLocalStorage<TItem extends HistoryItem>({\n key,\n limit,\n search,\n}: CreateLocalStorageProps<TItem>): Storage<TItem> {\n const storage = getLocalStorage<TItem>({ key });\n\n return {\n onAdd(item) {\n storage.setItem([item, ...storage.getItem()]);\n },\n onRemove(id) {\n storage.setItem(storage.getItem().filter((x) => x.id !== id));\n },\n getAll(query = '') {\n return search({ query, items: storage.getItem(), limit }).slice(0, limit);\n },\n };\n}\n"],"names":["addHighlightedAttribute","item","query","_highlightResult","label","value","replace","RegExp","match","LOCAL_STORAGE_KEY","LOCAL_STORAGE_KEY_TEST","getLocalStorage","key","localStorage","setItem","removeItem","error","isLocalStorageSupported","items","window","JSON","stringify","getItem","parse","getTemplates","onRemove","onTapAhead","createElement","components","className","viewBox","fill","d","ReverseHighlight","hit","attribute","category","title","onClick","event","preventDefault","stopPropagation","id","getDefaultSubcribe","store","onSelect","state","source","inputValue","getItemInputValue","sourceId","recentItem","__autocomplete_qsCategory","addItem","createRecentSearchesPlugin","options","transformSource","getOptions","storage","subscribe","onAdd","getAll","createStorageApi","lastItemsRef","current","name","onSubmit","getSources","setQuery","refresh","Promise","resolve","then","length","getItems","templates","data","getAlgoliaSearchParams","params","Array","isArray","facetFilters","map","hitsPerPage","Math","max","__autocomplete_pluginOptions","search","limit","filter","toLowerCase","includes","slice","defaultSearch","x","createLocalStorage","join"],"mappings":";2sDAOO,SAASA,SACdC,IAAAA,KACAC,IAAAA,oBAGKD,OACHE,iBAAkB,CAChBC,MAAO,CACLC,MAAOH,EACHD,EAAKG,MAAME,QACT,IAAIC,OAAOL,EAAMI,QAAQ,wBAAyB,QAAS,OAC3D,SAACE,mCAC2BA,0BAG9BP,EAAKG,UCtBV,IAAMK,EAAoB,+BACpBC,EACX,mDCeK,SAASC,SAAyBC,IAAAA,WAfzC,sBAEIC,aAAaC,QAAQJ,EAAwB,IAC7CG,aAAaE,WAAWL,IAEjB,EACP,MAAOM,UACA,GASJC,GASE,CACLH,iBAAQI,UACCC,OAAON,aAAaC,QAAQF,EAAKQ,KAAKC,UAAUH,KAEzDI,uBACQJ,EAAQC,OAAON,aAAaS,QAAQV,UAEnCM,EAASE,KAAKG,MAAML,GAAqB,KAf3C,CACLJ,qBACAQ,yBACS,KCZR,SAASE,SACdC,IAAAA,SACAC,IAAAA,iBAEO,CACLzB,qBAAOA,IAAAA,KAAM0B,IAAAA,cAAeC,IAAAA,kBAExBD,SAAKE,UAAU,kBACbF,SAAKE,UAAU,kBACbF,SAAKE,UAAU,qCACbF,SAAKG,QAAQ,YAAYC,KAAK,gBAC5BJ,UAAMK,EAAE,8RAGZL,SAAKE,UAAU,sBACbF,SAAKE,UAAU,uBACbF,EAACC,EAAWK,kBAAiBC,IAAKjC,EAAMkC,UAAU,UACjDlC,EAAKmC,UACJT,UAAME,UAAU,yDACdF,UAAME,UAAU,qCAAmC,IACnDF,UAAME,UAAU,kCACb5B,EAAKmC,cAOlBT,SAAKE,UAAU,kBACbF,YACEE,UAAU,sBACVQ,MAAM,qBACNC,QAAS,SAACC,GACRA,EAAMC,iBACND,EAAME,kBACNhB,EAASxB,EAAKyC,MAGhBf,SAAKG,QAAQ,YAAYC,KAAK,gBAC5BJ,UAAMK,EAAE,guBAGZL,YACEE,UAAU,sBACVQ,iCAA2BpC,EAAKG,WAChCkC,QAAS,SAACC,GACRA,EAAMC,iBACND,EAAME,kBACNf,EAAWzB,KAGb0B,SAAKG,QAAQ,YAAYC,KAAK,gBAC5BJ,UAAMK,EAAE,wMCbxB,SAASW,EACPC,UAEO,aACLC,IAD0BA,WACjB,gBAAG5C,IAAAA,KAAM6C,IAAAA,MAAOC,IAAAA,OACjBC,EAAaD,EAAOE,kBAAkB,CAAEhD,KAAAA,EAAM6C,MAAAA,OAE5B,2BAApBC,EAAOG,UAAyCF,EAAY,KACxDG,EAAiC,CACrCT,GAAIM,EACJ5C,MAAO4C,EACPZ,SAAWnC,EAAamD,2BAE1BR,EAAMS,QAAQF,QAMf,SAASG,EACdC,SA4FF,SACEA,aAGEC,gBAAiB,qBAAGT,SACjBQ,GA/F2CE,CAAWF,GAAnDG,IAAAA,QAASF,IAAAA,gBAAiBG,IAAAA,UAC5Bf,ECtED,SACLc,SAEO,CACLL,iBAAQpD,GACNyD,EAAQjC,SAASxB,EAAKyC,IACtBgB,EAAQE,MAAM3D,IAEhBc,oBAAW2B,GACTgB,EAAQjC,SAASiB,IAEnBmB,gBAAO3D,UACEwD,EAAQG,OAAO3D,KD0DZ4D,CAAwBJ,GAChCK,EExEC,CACLC,QFuEoD,UAE/C,CACLC,KAAM,0BACNN,UAAWA,MAAAA,EAAAA,EAAahB,EAAmBC,GAC3CsB,yBACUhE,IADC4C,MACD5C,SAEJA,EAAO,KACHiD,EAAiC,CACrCT,GAAIxC,EACJE,MAAOF,GAET0C,EAAMS,QAAQF,KAGlBgB,2BAAajE,IAAAA,MAAOkE,IAAAA,SAAUC,IAAAA,QAASvB,IAAAA,eAG5BrB,EAASiB,GAChBE,EAAM7B,WAAW2B,GACjB2B,aAGO3C,EAAWzB,GAClBmE,EAASnE,EAAKG,OACdiE,WATFN,EAAaC,QAAUpB,EAAMiB,OAAO3D,GAY7BoE,QAAQC,QAAQR,EAAaC,SAASQ,MAAK,SAACtD,UAC5B,IAAjBA,EAAMuD,OACD,GAGF,CACLjB,EAAgB,CACdT,OAAQ,CACNG,SAAU,uBACVD,uCAAoBhD,KACNG,OAEdsE,2BACSxD,GAETyD,UAAWnD,EAAa,CAAEC,SAAAA,EAAUC,WAAAA,KAEtCD,SAAAA,EACAC,WAAAA,EACAoB,MAAOA,SAKf8B,YACKhC,OAEHiC,0CAAuBC,yDAAS,UAIzBC,MAAMC,QAAQjB,EAAaC,gBAS3Bc,OACHG,mCACMH,EAAOG,4BAAgB,MAIxBlB,EAAaC,QAAQkB,KAAI,SAACjF,SAAS,qBAAcA,EAAKG,aAE3D+E,YAAaC,KAAKC,IAChB,aACCP,EAAOK,2BAAe,IAAMpB,EAAaC,QAAQS,UAd7CK,KAmBbQ,6BAA8B/B,GGpJ3B,SAASgC,SACdrF,IAAAA,MACAgB,IAAAA,MACAsE,IAAAA,aAEKtF,EAMEgB,EACJuE,QAAO,SAACxF,UAASA,EAAKG,MAAMsF,cAAcC,SAASzF,EAAMwF,kBACzDE,MAAM,EAAGJ,GACTN,KAAI,SAACjF,UAASD,EAAwB,CAAEC,KAAAA,EAAMC,MAAAA,OARxCgB,EACJ0E,MAAM,EAAGJ,GACTN,KAAI,SAACjF,UAASD,EAAwB,CAAEC,KAAAA,EAAMC,MAAAA,OCkErD,SAASuD,EACPF,aAGEiC,MAAO,EACPD,OAAQM,EACRrC,gBAAiB,qBAAGT,SACjBQ,wEAlCA,SAGLA,SAE2DE,EACzDF,GADM3C,IAAAA,IAAK4E,IAAAA,MAAOhC,IAAAA,gBAAiB+B,IAAAA,OAAQ5B,IAAAA,UAGvCD,ECxDD,gBACL9C,IAAAA,IACA4E,IAAAA,MACAD,IAAAA,OAEM7B,EAAU/C,EAAuB,CAAEC,IAAAA,UAElC,CACLgD,eAAM3D,GACJyD,EAAQ5C,SAASb,YAASyD,EAAQpC,cAEpCG,kBAASiB,GACPgB,EAAQ5C,QAAQ4C,EAAQpC,UAAUmE,QAAO,SAACK,UAAMA,EAAEpD,KAAOA,OAE3DmB,yBACS0B,EAAO,CAAErF,6DADH,GACUgB,MAAOwC,EAAQpC,UAAWkE,MAAAA,IAASI,MAAM,EAAGJ,KDyCvDO,CAA0B,CACxCnF,IAAK,CAACH,EAAmBG,GAAKoF,KAAK,KACnCR,MAAAA,EACAD,OAAAA,kBAG2BjC,EAAkC,CAC7DE,gBAAAA,EACAE,QAAAA,EACAC,UAAAA,SAKAM,KAAM,sCACNqB,6BAA8B/B"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@algolia/autocomplete-plugin-recent-searches",
3
3
  "description": "A plugin to add recent searches to Algolia Autocomplete.",
4
- "version": "1.4.0",
4
+ "version": "1.5.2",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/algolia/autocomplete",
7
7
  "repository": "algolia/autocomplete",
@@ -31,10 +31,10 @@
31
31
  "watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
32
32
  },
33
33
  "dependencies": {
34
- "@algolia/autocomplete-core": "1.4.0",
35
- "@algolia/autocomplete-js": "1.4.0",
36
- "@algolia/autocomplete-preset-algolia": "1.4.0",
37
- "@algolia/autocomplete-shared": "1.4.0"
34
+ "@algolia/autocomplete-core": "1.5.2",
35
+ "@algolia/autocomplete-js": "1.5.2",
36
+ "@algolia/autocomplete-preset-algolia": "1.5.2",
37
+ "@algolia/autocomplete-shared": "1.5.2"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@algolia/client-search": "4.9.1"