@algolia/autocomplete-js 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.
Files changed (35) hide show
  1. package/dist/esm/autocomplete.js +6 -1
  2. package/dist/esm/createAutocompleteDom.js +1 -1
  3. package/dist/esm/elements/Input.js +4 -2
  4. package/dist/esm/getCreateDomElement.js +4 -2
  5. package/dist/esm/getDefaultOptions.d.ts +10 -10
  6. package/dist/esm/getDefaultOptions.js +4 -2
  7. package/dist/esm/render.js +1 -1
  8. package/dist/esm/requesters/createAlgoliaRequester.js +3 -6
  9. package/dist/esm/requesters/getAlgoliaFacets.js +1 -1
  10. package/dist/esm/types/AutocompleteApi.js +1 -0
  11. package/dist/esm/types/AutocompleteClassNames.js +1 -0
  12. package/dist/esm/types/AutocompleteCollection.js +1 -0
  13. package/dist/esm/types/AutocompleteComponents.js +1 -0
  14. package/dist/esm/types/AutocompleteDom.js +1 -0
  15. package/dist/esm/types/AutocompleteElement.js +1 -0
  16. package/dist/esm/types/AutocompleteOptions.js +1 -0
  17. package/dist/esm/types/AutocompletePlugin.js +1 -0
  18. package/dist/esm/types/AutocompletePropGetters.js +1 -0
  19. package/dist/esm/types/AutocompleteRender.js +1 -0
  20. package/dist/esm/types/AutocompleteRenderer.js +1 -0
  21. package/dist/esm/types/AutocompleteSource.js +1 -0
  22. package/dist/esm/types/AutocompleteState.js +1 -0
  23. package/dist/esm/types/AutocompleteTranslations.js +1 -0
  24. package/dist/esm/types/HighlightHitParams.js +1 -0
  25. package/dist/esm/userAgents.d.ts +4 -0
  26. package/dist/esm/userAgents.js +5 -0
  27. package/dist/esm/utils/mergeDeep.js +4 -4
  28. package/dist/esm/utils/setProperties.js +27 -27
  29. package/dist/umd/index.development.js +956 -608
  30. package/dist/umd/index.development.js.map +1 -1
  31. package/dist/umd/index.production.js +2 -2
  32. package/dist/umd/index.production.js.map +1 -1
  33. package/package.json +4 -4
  34. package/dist/esm/version.d.ts +0 -1
  35. package/dist/esm/version.js +0 -1
@@ -1,27 +1,65 @@
1
- /*! @algolia/autocomplete-js 1.4.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-js 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-js'] = {}));
6
- }(this, (function (exports) { 'use strict';
5
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@algolia/autocomplete-js"] = {}));
6
+ })(this, (function (exports) { 'use strict';
7
7
 
8
- function _typeof(obj) {
8
+ function ownKeys$g(object, enumerableOnly) {
9
+ var keys = Object.keys(object);
10
+
11
+ if (Object.getOwnPropertySymbols) {
12
+ var symbols = Object.getOwnPropertySymbols(object);
13
+
14
+ if (enumerableOnly) {
15
+ symbols = symbols.filter(function (sym) {
16
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
17
+ });
18
+ }
19
+
20
+ keys.push.apply(keys, symbols);
21
+ }
22
+
23
+ return keys;
24
+ }
25
+
26
+ function _objectSpread2(target) {
27
+ for (var i = 1; i < arguments.length; i++) {
28
+ var source = arguments[i] != null ? arguments[i] : {};
29
+
30
+ if (i % 2) {
31
+ ownKeys$g(Object(source), true).forEach(function (key) {
32
+ _defineProperty$g(target, key, source[key]);
33
+ });
34
+ } else if (Object.getOwnPropertyDescriptors) {
35
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
36
+ } else {
37
+ ownKeys$g(Object(source)).forEach(function (key) {
38
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
39
+ });
40
+ }
41
+ }
42
+
43
+ return target;
44
+ }
45
+
46
+ function _typeof$3(obj) {
9
47
  "@babel/helpers - typeof";
10
48
 
11
49
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
12
- _typeof = function (obj) {
50
+ _typeof$3 = function (obj) {
13
51
  return typeof obj;
14
52
  };
15
53
  } else {
16
- _typeof = function (obj) {
54
+ _typeof$3 = function (obj) {
17
55
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
18
56
  };
19
57
  }
20
58
 
21
- return _typeof(obj);
59
+ return _typeof$3(obj);
22
60
  }
23
61
 
24
- function _defineProperty(obj, key, value) {
62
+ function _defineProperty$g(obj, key, value) {
25
63
  if (key in obj) {
26
64
  Object.defineProperty(obj, key, {
27
65
  value: value,
@@ -54,41 +92,7 @@
54
92
  return _extends.apply(this, arguments);
55
93
  }
56
94
 
57
- function ownKeys(object, enumerableOnly) {
58
- var keys = Object.keys(object);
59
-
60
- if (Object.getOwnPropertySymbols) {
61
- var symbols = Object.getOwnPropertySymbols(object);
62
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
63
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
64
- });
65
- keys.push.apply(keys, symbols);
66
- }
67
-
68
- return keys;
69
- }
70
-
71
- function _objectSpread2(target) {
72
- for (var i = 1; i < arguments.length; i++) {
73
- var source = arguments[i] != null ? arguments[i] : {};
74
-
75
- if (i % 2) {
76
- ownKeys(Object(source), true).forEach(function (key) {
77
- _defineProperty(target, key, source[key]);
78
- });
79
- } else if (Object.getOwnPropertyDescriptors) {
80
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
81
- } else {
82
- ownKeys(Object(source)).forEach(function (key) {
83
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
84
- });
85
- }
86
- }
87
-
88
- return target;
89
- }
90
-
91
- function _objectWithoutPropertiesLoose(source, excluded) {
95
+ function _objectWithoutPropertiesLoose$4(source, excluded) {
92
96
  if (source == null) return {};
93
97
  var target = {};
94
98
  var sourceKeys = Object.keys(source);
@@ -103,10 +107,10 @@
103
107
  return target;
104
108
  }
105
109
 
106
- function _objectWithoutProperties(source, excluded) {
110
+ function _objectWithoutProperties$4(source, excluded) {
107
111
  if (source == null) return {};
108
112
 
109
- var target = _objectWithoutPropertiesLoose(source, excluded);
113
+ var target = _objectWithoutPropertiesLoose$4(source, excluded);
110
114
 
111
115
  var key, i;
112
116
 
@@ -124,28 +128,28 @@
124
128
  return target;
125
129
  }
126
130
 
127
- function _toConsumableArray(arr) {
128
- return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
131
+ function _toConsumableArray$5(arr) {
132
+ return _arrayWithoutHoles$5(arr) || _iterableToArray$5(arr) || _unsupportedIterableToArray$6(arr) || _nonIterableSpread$5();
129
133
  }
130
134
 
131
- function _arrayWithoutHoles(arr) {
132
- if (Array.isArray(arr)) return _arrayLikeToArray(arr);
135
+ function _arrayWithoutHoles$5(arr) {
136
+ if (Array.isArray(arr)) return _arrayLikeToArray$6(arr);
133
137
  }
134
138
 
135
- function _iterableToArray(iter) {
136
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
139
+ function _iterableToArray$5(iter) {
140
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
137
141
  }
138
142
 
139
- function _unsupportedIterableToArray(o, minLen) {
143
+ function _unsupportedIterableToArray$6(o, minLen) {
140
144
  if (!o) return;
141
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
145
+ if (typeof o === "string") return _arrayLikeToArray$6(o, minLen);
142
146
  var n = Object.prototype.toString.call(o).slice(8, -1);
143
147
  if (n === "Object" && o.constructor) n = o.constructor.name;
144
148
  if (n === "Map" || n === "Set") return Array.from(o);
145
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
149
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$6(o, minLen);
146
150
  }
147
151
 
148
- function _arrayLikeToArray(arr, len) {
152
+ function _arrayLikeToArray$6(arr, len) {
149
153
  if (len == null || len > arr.length) len = arr.length;
150
154
 
151
155
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
@@ -153,7 +157,7 @@
153
157
  return arr2;
154
158
  }
155
159
 
156
- function _nonIterableSpread() {
160
+ function _nonIterableSpread$5() {
157
161
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
158
162
  }
159
163
 
@@ -181,23 +185,23 @@
181
185
  }
182
186
 
183
187
  function _slicedToArray(arr, i) {
184
- return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$1(arr, i) || _nonIterableRest();
188
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray$5(arr, i) || _nonIterableRest();
185
189
  }
186
190
 
187
191
  function _nonIterableRest() {
188
192
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
189
193
  }
190
194
 
191
- function _unsupportedIterableToArray$1(o, minLen) {
195
+ function _unsupportedIterableToArray$5(o, minLen) {
192
196
  if (!o) return;
193
- if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
197
+ if (typeof o === "string") return _arrayLikeToArray$5(o, minLen);
194
198
  var n = Object.prototype.toString.call(o).slice(8, -1);
195
199
  if (n === "Object" && o.constructor) n = o.constructor.name;
196
200
  if (n === "Map" || n === "Set") return Array.from(o);
197
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
201
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$5(o, minLen);
198
202
  }
199
203
 
200
- function _arrayLikeToArray$1(arr, len) {
204
+ function _arrayLikeToArray$5(arr, len) {
201
205
  if (len == null || len > arr.length) len = arr.length;
202
206
 
203
207
  for (var i = 0, arr2 = new Array(len); i < len; i++) {
@@ -208,14 +212,17 @@
208
212
  }
209
213
 
210
214
  function _iterableToArrayLimit(arr, i) {
211
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
215
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
216
+
217
+ if (_i == null) return;
212
218
  var _arr = [];
213
219
  var _n = true;
214
220
  var _d = false;
215
- var _e = undefined;
221
+
222
+ var _s, _e;
216
223
 
217
224
  try {
218
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
225
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
219
226
  _arr.push(_s.value);
220
227
 
221
228
  if (i && _arr.length === i) break;
@@ -238,20 +245,20 @@
238
245
  if (Array.isArray(arr)) return arr;
239
246
  }
240
247
 
241
- function _typeof$1(obj) {
248
+ function _typeof$2(obj) {
242
249
  "@babel/helpers - typeof";
243
250
 
244
251
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
245
- _typeof$1 = function _typeof(obj) {
252
+ _typeof$2 = function _typeof(obj) {
246
253
  return typeof obj;
247
254
  };
248
255
  } else {
249
- _typeof$1 = function _typeof(obj) {
256
+ _typeof$2 = function _typeof(obj) {
250
257
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
251
258
  };
252
259
  }
253
260
 
254
- return _typeof$1(obj);
261
+ return _typeof$2(obj);
255
262
  }
256
263
  /**
257
264
  * Decycles objects with circular references.
@@ -262,7 +269,7 @@
262
269
  function decycle(obj) {
263
270
  var seen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Set();
264
271
 
265
- if ( !obj || _typeof$1(obj) !== 'object') {
272
+ if (!obj || _typeof$2(obj) !== 'object') {
266
273
  return obj;
267
274
  }
268
275
 
@@ -328,6 +335,13 @@
328
335
 
329
336
  var noop = function noop() {};
330
337
 
338
+ var version = '1.5.2';
339
+
340
+ var userAgents$1 = [{
341
+ segment: 'autocomplete-core',
342
+ version: version
343
+ }];
344
+
331
345
  var warnCache = {
332
346
  current: {}
333
347
  };
@@ -353,174 +367,120 @@
353
367
  }
354
368
 
355
369
  function checkOptions(options) {
356
- "development" !== 'production' ? warn(!options.debug, 'The `debug` option is meant for development debugging and should not be used in production.') : void 0 ;
357
- }
358
-
359
- function ownKeys$1(object, enumerableOnly) {
360
- var keys = Object.keys(object);
361
-
362
- if (Object.getOwnPropertySymbols) {
363
- var symbols = Object.getOwnPropertySymbols(object);
364
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
365
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
366
- });
367
- keys.push.apply(keys, symbols);
368
- }
369
-
370
- return keys;
370
+ "development" !== 'production' ? warn(!options.debug, 'The `debug` option is meant for development debugging and should not be used in production.') : void 0 ;
371
371
  }
372
372
 
373
- function _objectSpread(target) {
374
- for (var i = 1; i < arguments.length; i++) {
375
- var source = arguments[i] != null ? arguments[i] : {};
376
-
377
- if (i % 2) {
378
- ownKeys$1(Object(source), true).forEach(function (key) {
379
- _defineProperty$1(target, key, source[key]);
380
- });
381
- } else if (Object.getOwnPropertyDescriptors) {
382
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
383
- } else {
384
- ownKeys$1(Object(source)).forEach(function (key) {
385
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
386
- });
387
- }
388
- }
389
-
390
- return target;
391
- }
392
-
393
- function _defineProperty$1(obj, key, value) {
394
- if (key in obj) {
395
- Object.defineProperty(obj, key, {
396
- value: value,
397
- enumerable: true,
398
- configurable: true,
399
- writable: true
400
- });
401
- } else {
402
- obj[key] = value;
403
- }
404
-
405
- return obj;
406
- }
407
-
408
- function createStore(reducer, props, onStoreStateChange) {
409
- var state = props.initialState;
373
+ function createInternalCancelablePromise(promise, initialState) {
374
+ var state = initialState;
410
375
  return {
411
- getState: function getState() {
412
- return state;
376
+ then: function then(onfulfilled, onrejected) {
377
+ return createInternalCancelablePromise(promise.then(createCallback(onfulfilled, state, promise), createCallback(onrejected, state, promise)), state);
413
378
  },
414
- dispatch: function dispatch(action, payload) {
415
- var prevState = _objectSpread({}, state);
379
+ catch: function _catch(onrejected) {
380
+ return createInternalCancelablePromise(promise.catch(createCallback(onrejected, state, promise)), state);
381
+ },
382
+ finally: function _finally(onfinally) {
383
+ if (onfinally) {
384
+ state.onCancelList.push(onfinally);
385
+ }
416
386
 
417
- state = reducer(state, {
418
- type: action,
419
- props: props,
420
- payload: payload
421
- });
422
- onStoreStateChange({
423
- state: state,
424
- prevState: prevState
387
+ return createInternalCancelablePromise(promise.finally(createCallback(onfinally && function () {
388
+ state.onCancelList = [];
389
+ return onfinally();
390
+ }, state, promise)), state);
391
+ },
392
+ cancel: function cancel() {
393
+ state.isCanceled = true;
394
+ var callbacks = state.onCancelList;
395
+ state.onCancelList = [];
396
+ callbacks.forEach(function (callback) {
397
+ callback();
425
398
  });
399
+ },
400
+ isCanceled: function isCanceled() {
401
+ return state.isCanceled === true;
426
402
  }
427
403
  };
428
404
  }
429
405
 
430
- function ownKeys$2(object, enumerableOnly) {
431
- var keys = Object.keys(object);
406
+ function cancelable(promise) {
407
+ return createInternalCancelablePromise(promise, {
408
+ isCanceled: false,
409
+ onCancelList: []
410
+ });
411
+ }
432
412
 
433
- if (Object.getOwnPropertySymbols) {
434
- var symbols = Object.getOwnPropertySymbols(object);
435
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
436
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
437
- });
438
- keys.push.apply(keys, symbols);
413
+ function createCallback(onResult, state, fallback) {
414
+ if (!onResult) {
415
+ return fallback;
439
416
  }
440
417
 
441
- return keys;
442
- }
418
+ return function callback(arg) {
419
+ if (state.isCanceled) {
420
+ return arg;
421
+ }
443
422
 
444
- function _objectSpread$1(target) {
445
- for (var i = 1; i < arguments.length; i++) {
446
- var source = arguments[i] != null ? arguments[i] : {};
423
+ return onResult(arg);
424
+ };
425
+ }
447
426
 
448
- if (i % 2) {
449
- ownKeys$2(Object(source), true).forEach(function (key) {
450
- _defineProperty$2(target, key, source[key]);
427
+ function createCancelablePromiseList() {
428
+ var list = [];
429
+ return {
430
+ add: function add(cancelablePromise) {
431
+ list.push(cancelablePromise);
432
+ return cancelablePromise.finally(function () {
433
+ list = list.filter(function (item) {
434
+ return item !== cancelablePromise;
435
+ });
451
436
  });
452
- } else if (Object.getOwnPropertyDescriptors) {
453
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
454
- } else {
455
- ownKeys$2(Object(source)).forEach(function (key) {
456
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
437
+ },
438
+ cancelAll: function cancelAll() {
439
+ list.forEach(function (promise) {
440
+ return promise.cancel();
457
441
  });
442
+ },
443
+ isEmpty: function isEmpty() {
444
+ return list.length === 0;
458
445
  }
459
- }
460
-
461
- return target;
462
- }
463
-
464
- function _defineProperty$2(obj, key, value) {
465
- if (key in obj) {
466
- Object.defineProperty(obj, key, {
467
- value: value,
468
- enumerable: true,
469
- configurable: true,
470
- writable: true
471
- });
472
- } else {
473
- obj[key] = value;
474
- }
475
-
476
- return obj;
477
- }
478
- function getAutocompleteSetters(_ref) {
479
- var store = _ref.store;
480
-
481
- var setActiveItemId = function setActiveItemId(value) {
482
- store.dispatch('setActiveItemId', value);
483
446
  };
447
+ }
484
448
 
485
- var setQuery = function setQuery(value) {
486
- store.dispatch('setQuery', value);
487
- };
449
+ /**
450
+ * Creates a runner that executes promises in a concurrent-safe way.
451
+ *
452
+ * This is useful to prevent older promises to resolve after a newer promise,
453
+ * otherwise resulting in stale resolved values.
454
+ */
455
+ function createConcurrentSafePromise() {
456
+ var basePromiseId = -1;
457
+ var latestResolvedId = -1;
458
+ var latestResolvedValue = undefined;
459
+ return function runConcurrentSafePromise(promise) {
460
+ basePromiseId++;
461
+ var currentPromiseId = basePromiseId;
462
+ return Promise.resolve(promise).then(function (x) {
463
+ // The promise might take too long to resolve and get outdated. This would
464
+ // result in resolving stale values.
465
+ // When this happens, we ignore the promise value and return the one
466
+ // coming from the latest resolved value.
467
+ //
468
+ // +----------------------------------+
469
+ // | 100ms |
470
+ // | run(1) +---> R1 |
471
+ // | 300ms |
472
+ // | run(2) +-------------> R2 (SKIP) |
473
+ // | 200ms |
474
+ // | run(3) +--------> R3 |
475
+ // +----------------------------------+
476
+ if (latestResolvedValue && currentPromiseId < latestResolvedId) {
477
+ return latestResolvedValue;
478
+ }
488
479
 
489
- var setCollections = function setCollections(rawValue) {
490
- var baseItemId = 0;
491
- var value = rawValue.map(function (collection) {
492
- return _objectSpread$1(_objectSpread$1({}, collection), {}, {
493
- // We flatten the stored items to support calling `getAlgoliaResults`
494
- // from the source itself.
495
- items: flatten(collection.items).map(function (item) {
496
- return _objectSpread$1(_objectSpread$1({}, item), {}, {
497
- __autocomplete_id: baseItemId++
498
- });
499
- })
500
- });
480
+ latestResolvedId = currentPromiseId;
481
+ latestResolvedValue = x;
482
+ return x;
501
483
  });
502
- store.dispatch('setCollections', value);
503
- };
504
-
505
- var setIsOpen = function setIsOpen(value) {
506
- store.dispatch('setIsOpen', value);
507
- };
508
-
509
- var setStatus = function setStatus(value) {
510
- store.dispatch('setStatus', value);
511
- };
512
-
513
- var setContext = function setContext(value) {
514
- store.dispatch('setContext', value);
515
- };
516
-
517
- return {
518
- setActiveItemId: setActiveItemId,
519
- setQuery: setQuery,
520
- setCollections: setCollections,
521
- setIsOpen: setIsOpen,
522
- setStatus: setStatus,
523
- setContext: setContext
524
484
  };
525
485
  }
526
486
 
@@ -558,32 +518,36 @@
558
518
  return numericIndex;
559
519
  }
560
520
 
561
- function ownKeys$3(object, enumerableOnly) {
521
+ function ownKeys$f(object, enumerableOnly) {
562
522
  var keys = Object.keys(object);
563
523
 
564
524
  if (Object.getOwnPropertySymbols) {
565
525
  var symbols = Object.getOwnPropertySymbols(object);
566
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
567
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
568
- });
526
+
527
+ if (enumerableOnly) {
528
+ symbols = symbols.filter(function (sym) {
529
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
530
+ });
531
+ }
532
+
569
533
  keys.push.apply(keys, symbols);
570
534
  }
571
535
 
572
536
  return keys;
573
537
  }
574
538
 
575
- function _objectSpread$2(target) {
539
+ function _objectSpread$f(target) {
576
540
  for (var i = 1; i < arguments.length; i++) {
577
541
  var source = arguments[i] != null ? arguments[i] : {};
578
542
 
579
543
  if (i % 2) {
580
- ownKeys$3(Object(source), true).forEach(function (key) {
581
- _defineProperty$3(target, key, source[key]);
544
+ ownKeys$f(Object(source), true).forEach(function (key) {
545
+ _defineProperty$f(target, key, source[key]);
582
546
  });
583
547
  } else if (Object.getOwnPropertyDescriptors) {
584
548
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
585
549
  } else {
586
- ownKeys$3(Object(source)).forEach(function (key) {
550
+ ownKeys$f(Object(source)).forEach(function (key) {
587
551
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
588
552
  });
589
553
  }
@@ -592,7 +556,7 @@
592
556
  return target;
593
557
  }
594
558
 
595
- function _defineProperty$3(obj, key, value) {
559
+ function _defineProperty$f(obj, key, value) {
596
560
  if (key in obj) {
597
561
  Object.defineProperty(obj, key, {
598
562
  value: value,
@@ -607,26 +571,26 @@
607
571
  return obj;
608
572
  }
609
573
 
610
- function _typeof$2(obj) {
574
+ function _typeof$1(obj) {
611
575
  "@babel/helpers - typeof";
612
576
 
613
577
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
614
- _typeof$2 = function _typeof(obj) {
578
+ _typeof$1 = function _typeof(obj) {
615
579
  return typeof obj;
616
580
  };
617
581
  } else {
618
- _typeof$2 = function _typeof(obj) {
582
+ _typeof$1 = function _typeof(obj) {
619
583
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
620
584
  };
621
585
  }
622
586
 
623
- return _typeof$2(obj);
587
+ return _typeof$1(obj);
624
588
  }
625
589
  function getNormalizedSources(getSources, params) {
626
590
  var seenSourceIds = [];
627
591
  return Promise.resolve(getSources(params)).then(function (sources) {
628
592
  invariant(Array.isArray(sources), function () {
629
- return "The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(_typeof$2(sources)), ":\n\n").concat(JSON.stringify(decycle(sources), null, 2));
593
+ return "The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(_typeof$1(sources)), ":\n\n").concat(JSON.stringify(decycle(sources), null, 2));
630
594
  });
631
595
  return Promise.all(sources // We allow `undefined` and `false` sources to allow users to use
632
596
  // `Boolean(query) && source` (=> `false`).
@@ -642,7 +606,7 @@
642
606
 
643
607
  seenSourceIds.push(source.sourceId);
644
608
 
645
- var normalizedSource = _objectSpread$2({
609
+ var normalizedSource = _objectSpread$f({
646
610
  getItemInputValue: function getItemInputValue(_ref) {
647
611
  var state = _ref.state;
648
612
  return state.query;
@@ -748,36 +712,206 @@
748
712
  };
749
713
  }
750
714
 
751
- function isOrContainsNode(parent, child) {
752
- return parent === child || parent.contains(child);
715
+ function isOrContainsNode(parent, child) {
716
+ return parent === child || parent.contains(child);
717
+ }
718
+
719
+ function ownKeys$e(object, enumerableOnly) {
720
+ var keys = Object.keys(object);
721
+
722
+ if (Object.getOwnPropertySymbols) {
723
+ var symbols = Object.getOwnPropertySymbols(object);
724
+
725
+ if (enumerableOnly) {
726
+ symbols = symbols.filter(function (sym) {
727
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
728
+ });
729
+ }
730
+
731
+ keys.push.apply(keys, symbols);
732
+ }
733
+
734
+ return keys;
735
+ }
736
+
737
+ function _objectSpread$e(target) {
738
+ for (var i = 1; i < arguments.length; i++) {
739
+ var source = arguments[i] != null ? arguments[i] : {};
740
+
741
+ if (i % 2) {
742
+ ownKeys$e(Object(source), true).forEach(function (key) {
743
+ _defineProperty$e(target, key, source[key]);
744
+ });
745
+ } else if (Object.getOwnPropertyDescriptors) {
746
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
747
+ } else {
748
+ ownKeys$e(Object(source)).forEach(function (key) {
749
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
750
+ });
751
+ }
752
+ }
753
+
754
+ return target;
755
+ }
756
+
757
+ function _defineProperty$e(obj, key, value) {
758
+ if (key in obj) {
759
+ Object.defineProperty(obj, key, {
760
+ value: value,
761
+ enumerable: true,
762
+ configurable: true,
763
+ writable: true
764
+ });
765
+ } else {
766
+ obj[key] = value;
767
+ }
768
+
769
+ return obj;
770
+ }
771
+
772
+ function mapToAlgoliaResponse(rawResults) {
773
+ var results = rawResults.map(function (result) {
774
+ var _hits;
775
+
776
+ return _objectSpread$e(_objectSpread$e({}, result), {}, {
777
+ hits: (_hits = result.hits) === null || _hits === void 0 ? void 0 : _hits.map(function (hit) {
778
+ // Bring support for the Insights plugin.
779
+ return _objectSpread$e(_objectSpread$e({}, hit), {}, {
780
+ __autocomplete_indexName: result.index,
781
+ __autocomplete_queryID: result.queryID
782
+ });
783
+ })
784
+ });
785
+ });
786
+ return {
787
+ results: results,
788
+ hits: results.map(function (result) {
789
+ return result.hits;
790
+ }).filter(Boolean),
791
+ facetHits: results.map(function (result) {
792
+ var _facetHits;
793
+
794
+ return (_facetHits = result.facetHits) === null || _facetHits === void 0 ? void 0 : _facetHits.map(function (facetHit) {
795
+ // Bring support for the highlighting components.
796
+ return {
797
+ label: facetHit.value,
798
+ count: facetHit.count,
799
+ _highlightResult: {
800
+ label: {
801
+ value: facetHit.highlighted
802
+ }
803
+ }
804
+ };
805
+ });
806
+ }).filter(Boolean)
807
+ };
808
+ }
809
+
810
+ function ownKeys$d(object, enumerableOnly) {
811
+ var keys = Object.keys(object);
812
+
813
+ if (Object.getOwnPropertySymbols) {
814
+ var symbols = Object.getOwnPropertySymbols(object);
815
+
816
+ if (enumerableOnly) {
817
+ symbols = symbols.filter(function (sym) {
818
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
819
+ });
820
+ }
821
+
822
+ keys.push.apply(keys, symbols);
823
+ }
824
+
825
+ return keys;
826
+ }
827
+
828
+ function _objectSpread$d(target) {
829
+ for (var i = 1; i < arguments.length; i++) {
830
+ var source = arguments[i] != null ? arguments[i] : {};
831
+
832
+ if (i % 2) {
833
+ ownKeys$d(Object(source), true).forEach(function (key) {
834
+ _defineProperty$d(target, key, source[key]);
835
+ });
836
+ } else if (Object.getOwnPropertyDescriptors) {
837
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
838
+ } else {
839
+ ownKeys$d(Object(source)).forEach(function (key) {
840
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
841
+ });
842
+ }
843
+ }
844
+
845
+ return target;
846
+ }
847
+
848
+ function _defineProperty$d(obj, key, value) {
849
+ if (key in obj) {
850
+ Object.defineProperty(obj, key, {
851
+ value: value,
852
+ enumerable: true,
853
+ configurable: true,
854
+ writable: true
855
+ });
856
+ } else {
857
+ obj[key] = value;
858
+ }
859
+
860
+ return obj;
861
+ }
862
+ function createStore(reducer, props, onStoreStateChange) {
863
+ var state = props.initialState;
864
+ return {
865
+ getState: function getState() {
866
+ return state;
867
+ },
868
+ dispatch: function dispatch(action, payload) {
869
+ var prevState = _objectSpread$d({}, state);
870
+
871
+ state = reducer(state, {
872
+ type: action,
873
+ props: props,
874
+ payload: payload
875
+ });
876
+ onStoreStateChange({
877
+ state: state,
878
+ prevState: prevState
879
+ });
880
+ },
881
+ pendingRequests: createCancelablePromiseList()
882
+ };
753
883
  }
754
884
 
755
- function ownKeys$4(object, enumerableOnly) {
885
+ function ownKeys$c(object, enumerableOnly) {
756
886
  var keys = Object.keys(object);
757
887
 
758
888
  if (Object.getOwnPropertySymbols) {
759
889
  var symbols = Object.getOwnPropertySymbols(object);
760
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
761
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
762
- });
890
+
891
+ if (enumerableOnly) {
892
+ symbols = symbols.filter(function (sym) {
893
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
894
+ });
895
+ }
896
+
763
897
  keys.push.apply(keys, symbols);
764
898
  }
765
899
 
766
900
  return keys;
767
901
  }
768
902
 
769
- function _objectSpread$3(target) {
903
+ function _objectSpread$c(target) {
770
904
  for (var i = 1; i < arguments.length; i++) {
771
905
  var source = arguments[i] != null ? arguments[i] : {};
772
906
 
773
907
  if (i % 2) {
774
- ownKeys$4(Object(source), true).forEach(function (key) {
775
- _defineProperty$4(target, key, source[key]);
908
+ ownKeys$c(Object(source), true).forEach(function (key) {
909
+ _defineProperty$c(target, key, source[key]);
776
910
  });
777
911
  } else if (Object.getOwnPropertyDescriptors) {
778
912
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
779
913
  } else {
780
- ownKeys$4(Object(source)).forEach(function (key) {
914
+ ownKeys$c(Object(source)).forEach(function (key) {
781
915
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
782
916
  });
783
917
  }
@@ -786,7 +920,7 @@
786
920
  return target;
787
921
  }
788
922
 
789
- function _defineProperty$4(obj, key, value) {
923
+ function _defineProperty$c(obj, key, value) {
790
924
  if (key in obj) {
791
925
  Object.defineProperty(obj, key, {
792
926
  value: value,
@@ -800,71 +934,81 @@
800
934
 
801
935
  return obj;
802
936
  }
937
+ function getAutocompleteSetters(_ref) {
938
+ var store = _ref.store;
803
939
 
804
- function mapToAlgoliaResponse(rawResults) {
805
- var results = rawResults.map(function (result) {
806
- var _hits;
940
+ var setActiveItemId = function setActiveItemId(value) {
941
+ store.dispatch('setActiveItemId', value);
942
+ };
807
943
 
808
- return _objectSpread$3(_objectSpread$3({}, result), {}, {
809
- hits: (_hits = result.hits) === null || _hits === void 0 ? void 0 : _hits.map(function (hit) {
810
- // Bring support for the Insights plugin.
811
- return _objectSpread$3(_objectSpread$3({}, hit), {}, {
812
- __autocomplete_indexName: result.index,
813
- __autocomplete_queryID: result.queryID
814
- });
815
- })
816
- });
817
- });
818
- return {
819
- results: results,
820
- hits: results.map(function (result) {
821
- return result.hits;
822
- }).filter(Boolean),
823
- facetHits: results.map(function (result) {
824
- var _facetHits;
944
+ var setQuery = function setQuery(value) {
945
+ store.dispatch('setQuery', value);
946
+ };
825
947
 
826
- return (_facetHits = result.facetHits) === null || _facetHits === void 0 ? void 0 : _facetHits.map(function (facetHit) {
827
- // Bring support for the highlighting components.
828
- return {
829
- label: facetHit.value,
830
- count: facetHit.count,
831
- _highlightResult: {
832
- label: {
833
- value: facetHit.highlighted
834
- }
835
- }
836
- };
948
+ var setCollections = function setCollections(rawValue) {
949
+ var baseItemId = 0;
950
+ var value = rawValue.map(function (collection) {
951
+ return _objectSpread$c(_objectSpread$c({}, collection), {}, {
952
+ // We flatten the stored items to support calling `getAlgoliaResults`
953
+ // from the source itself.
954
+ items: flatten(collection.items).map(function (item) {
955
+ return _objectSpread$c(_objectSpread$c({}, item), {}, {
956
+ __autocomplete_id: baseItemId++
957
+ });
958
+ })
837
959
  });
838
- }).filter(Boolean)
960
+ });
961
+ store.dispatch('setCollections', value);
962
+ };
963
+
964
+ var setIsOpen = function setIsOpen(value) {
965
+ store.dispatch('setIsOpen', value);
966
+ };
967
+
968
+ var setStatus = function setStatus(value) {
969
+ store.dispatch('setStatus', value);
970
+ };
971
+
972
+ var setContext = function setContext(value) {
973
+ store.dispatch('setContext', value);
974
+ };
975
+
976
+ return {
977
+ setActiveItemId: setActiveItemId,
978
+ setQuery: setQuery,
979
+ setCollections: setCollections,
980
+ setIsOpen: setIsOpen,
981
+ setStatus: setStatus,
982
+ setContext: setContext
839
983
  };
840
984
  }
841
985
 
842
- function _toConsumableArray$1(arr) {
843
- return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray$2(arr) || _nonIterableSpread$1();
986
+ function _toConsumableArray$4(arr) {
987
+ return _arrayWithoutHoles$4(arr) || _iterableToArray$4(arr) || _unsupportedIterableToArray$4(arr) || _nonIterableSpread$4();
844
988
  }
845
989
 
846
- function _nonIterableSpread$1() {
990
+ function _nonIterableSpread$4() {
847
991
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
848
992
  }
849
993
 
850
- function _unsupportedIterableToArray$2(o, minLen) {
994
+ function _unsupportedIterableToArray$4(o, minLen) {
851
995
  if (!o) return;
852
- if (typeof o === "string") return _arrayLikeToArray$2(o, minLen);
996
+ if (typeof o === "string") return _arrayLikeToArray$4(o, minLen);
853
997
  var n = Object.prototype.toString.call(o).slice(8, -1);
854
998
  if (n === "Object" && o.constructor) n = o.constructor.name;
855
999
  if (n === "Map" || n === "Set") return Array.from(o);
856
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen);
1000
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen);
857
1001
  }
858
1002
 
859
- function _iterableToArray$1(iter) {
860
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
1003
+ function _iterableToArray$4(iter) {
1004
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
861
1005
  }
862
1006
 
863
- function _arrayWithoutHoles$1(arr) {
864
- if (Array.isArray(arr)) return _arrayLikeToArray$2(arr);
1007
+ function _arrayWithoutHoles$4(arr) {
1008
+ if (Array.isArray(arr)) return _arrayLikeToArray$4(arr);
865
1009
  }
866
1010
 
867
- function _arrayLikeToArray$2(arr, len) {
1011
+ function _arrayLikeToArray$4(arr, len) {
868
1012
  if (len == null || len > arr.length) len = arr.length;
869
1013
 
870
1014
  for (var i = 0, arr2 = new Array(len); i < len; i++) {
@@ -874,32 +1018,36 @@
874
1018
  return arr2;
875
1019
  }
876
1020
 
877
- function ownKeys$5(object, enumerableOnly) {
1021
+ function ownKeys$b(object, enumerableOnly) {
878
1022
  var keys = Object.keys(object);
879
1023
 
880
1024
  if (Object.getOwnPropertySymbols) {
881
1025
  var symbols = Object.getOwnPropertySymbols(object);
882
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
883
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
884
- });
1026
+
1027
+ if (enumerableOnly) {
1028
+ symbols = symbols.filter(function (sym) {
1029
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1030
+ });
1031
+ }
1032
+
885
1033
  keys.push.apply(keys, symbols);
886
1034
  }
887
1035
 
888
1036
  return keys;
889
1037
  }
890
1038
 
891
- function _objectSpread$4(target) {
1039
+ function _objectSpread$b(target) {
892
1040
  for (var i = 1; i < arguments.length; i++) {
893
1041
  var source = arguments[i] != null ? arguments[i] : {};
894
1042
 
895
1043
  if (i % 2) {
896
- ownKeys$5(Object(source), true).forEach(function (key) {
897
- _defineProperty$5(target, key, source[key]);
1044
+ ownKeys$b(Object(source), true).forEach(function (key) {
1045
+ _defineProperty$b(target, key, source[key]);
898
1046
  });
899
1047
  } else if (Object.getOwnPropertyDescriptors) {
900
1048
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
901
1049
  } else {
902
- ownKeys$5(Object(source)).forEach(function (key) {
1050
+ ownKeys$b(Object(source)).forEach(function (key) {
903
1051
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
904
1052
  });
905
1053
  }
@@ -908,7 +1056,7 @@
908
1056
  return target;
909
1057
  }
910
1058
 
911
- function _defineProperty$5(obj, key, value) {
1059
+ function _defineProperty$b(obj, key, value) {
912
1060
  if (key in obj) {
913
1061
  Object.defineProperty(obj, key, {
914
1062
  value: value,
@@ -931,7 +1079,7 @@
931
1079
  /* eslint-enable no-restricted-globals */
932
1080
 
933
1081
  var plugins = props.plugins || [];
934
- return _objectSpread$4(_objectSpread$4({
1082
+ return _objectSpread$b(_objectSpread$b({
935
1083
  debug: false,
936
1084
  openOnFocus: false,
937
1085
  placeholder: '',
@@ -953,7 +1101,7 @@
953
1101
  id: (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : generateAutocompleteId(),
954
1102
  plugins: plugins,
955
1103
  // The following props need to be deeply defaulted.
956
- initialState: _objectSpread$4({
1104
+ initialState: _objectSpread$b({
957
1105
  activeItemId: null,
958
1106
  query: '',
959
1107
  completion: null,
@@ -993,7 +1141,7 @@
993
1141
  });
994
1142
  },
995
1143
  getSources: function getSources(params) {
996
- return Promise.all([].concat(_toConsumableArray$1(plugins.map(function (plugin) {
1144
+ return Promise.all([].concat(_toConsumableArray$4(plugins.map(function (plugin) {
997
1145
  return plugin.getSources;
998
1146
  })), [props.getSources]).filter(Boolean).map(function (getSources) {
999
1147
  return getNormalizedSources(getSources, params);
@@ -1001,7 +1149,7 @@
1001
1149
  return flatten(nested);
1002
1150
  }).then(function (sources) {
1003
1151
  return sources.map(function (source) {
1004
- return _objectSpread$4(_objectSpread$4({}, source), {}, {
1152
+ return _objectSpread$b(_objectSpread$b({}, source), {}, {
1005
1153
  onSelect: function onSelect(params) {
1006
1154
  source.onSelect(params);
1007
1155
  pluginSubscribers.forEach(function (x) {
@@ -1022,7 +1170,7 @@
1022
1170
  });
1023
1171
  });
1024
1172
  },
1025
- navigator: _objectSpread$4({
1173
+ navigator: _objectSpread$b({
1026
1174
  navigate: function navigate(_ref3) {
1027
1175
  var itemUrl = _ref3.itemUrl;
1028
1176
  environment.location.assign(itemUrl);
@@ -1040,32 +1188,36 @@
1040
1188
  });
1041
1189
  }
1042
1190
 
1043
- function ownKeys$6(object, enumerableOnly) {
1191
+ function ownKeys$a(object, enumerableOnly) {
1044
1192
  var keys = Object.keys(object);
1045
1193
 
1046
1194
  if (Object.getOwnPropertySymbols) {
1047
1195
  var symbols = Object.getOwnPropertySymbols(object);
1048
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
1049
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1050
- });
1196
+
1197
+ if (enumerableOnly) {
1198
+ symbols = symbols.filter(function (sym) {
1199
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1200
+ });
1201
+ }
1202
+
1051
1203
  keys.push.apply(keys, symbols);
1052
1204
  }
1053
1205
 
1054
1206
  return keys;
1055
1207
  }
1056
1208
 
1057
- function _objectSpread$5(target) {
1209
+ function _objectSpread$a(target) {
1058
1210
  for (var i = 1; i < arguments.length; i++) {
1059
1211
  var source = arguments[i] != null ? arguments[i] : {};
1060
1212
 
1061
1213
  if (i % 2) {
1062
- ownKeys$6(Object(source), true).forEach(function (key) {
1063
- _defineProperty$6(target, key, source[key]);
1214
+ ownKeys$a(Object(source), true).forEach(function (key) {
1215
+ _defineProperty$a(target, key, source[key]);
1064
1216
  });
1065
1217
  } else if (Object.getOwnPropertyDescriptors) {
1066
1218
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1067
1219
  } else {
1068
- ownKeys$6(Object(source)).forEach(function (key) {
1220
+ ownKeys$a(Object(source)).forEach(function (key) {
1069
1221
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1070
1222
  });
1071
1223
  }
@@ -1074,7 +1226,7 @@
1074
1226
  return target;
1075
1227
  }
1076
1228
 
1077
- function _defineProperty$6(obj, key, value) {
1229
+ function _defineProperty$a(obj, key, value) {
1078
1230
  if (key in obj) {
1079
1231
  Object.defineProperty(obj, key, {
1080
1232
  value: value,
@@ -1095,7 +1247,7 @@
1095
1247
  // Example: `const { recentSearchesPlugin } = sourcesBySourceId`
1096
1248
 
1097
1249
  var sourcesBySourceId = collections.reduce(function (acc, collection) {
1098
- return _objectSpread$5(_objectSpread$5({}, acc), {}, _defineProperty$6({}, collection.source.sourceId, _objectSpread$5(_objectSpread$5({}, collection.source), {}, {
1250
+ return _objectSpread$a(_objectSpread$a({}, acc), {}, _defineProperty$a({}, collection.source.sourceId, _objectSpread$a(_objectSpread$a({}, collection.source), {}, {
1099
1251
  getItems: function getItems() {
1100
1252
  // We provide the resolved items from the collection to the `reshape` prop.
1101
1253
  return flatten(collection.items);
@@ -1116,27 +1268,27 @@
1116
1268
  });
1117
1269
  }
1118
1270
 
1119
- function _typeof$3(obj) {
1271
+ function _typeof(obj) {
1120
1272
  "@babel/helpers - typeof";
1121
1273
 
1122
1274
  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
1123
- _typeof$3 = function _typeof(obj) {
1275
+ _typeof = function _typeof(obj) {
1124
1276
  return typeof obj;
1125
1277
  };
1126
1278
  } else {
1127
- _typeof$3 = function _typeof(obj) {
1279
+ _typeof = function _typeof(obj) {
1128
1280
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
1129
1281
  };
1130
1282
  }
1131
1283
 
1132
- return _typeof$3(obj);
1284
+ return _typeof(obj);
1133
1285
  }
1134
1286
 
1135
- function _toConsumableArray$2(arr) {
1136
- return _arrayWithoutHoles$2(arr) || _iterableToArray$2(arr) || _unsupportedIterableToArray$3(arr) || _nonIterableSpread$2();
1287
+ function _toConsumableArray$3(arr) {
1288
+ return _arrayWithoutHoles$3(arr) || _iterableToArray$3(arr) || _unsupportedIterableToArray$3(arr) || _nonIterableSpread$3();
1137
1289
  }
1138
1290
 
1139
- function _nonIterableSpread$2() {
1291
+ function _nonIterableSpread$3() {
1140
1292
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1141
1293
  }
1142
1294
 
@@ -1149,11 +1301,11 @@
1149
1301
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$3(o, minLen);
1150
1302
  }
1151
1303
 
1152
- function _iterableToArray$2(iter) {
1153
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
1304
+ function _iterableToArray$3(iter) {
1305
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
1154
1306
  }
1155
1307
 
1156
- function _arrayWithoutHoles$2(arr) {
1308
+ function _arrayWithoutHoles$3(arr) {
1157
1309
  if (Array.isArray(arr)) return _arrayLikeToArray$3(arr);
1158
1310
  }
1159
1311
 
@@ -1167,32 +1319,36 @@
1167
1319
  return arr2;
1168
1320
  }
1169
1321
 
1170
- function ownKeys$7(object, enumerableOnly) {
1322
+ function ownKeys$9(object, enumerableOnly) {
1171
1323
  var keys = Object.keys(object);
1172
1324
 
1173
1325
  if (Object.getOwnPropertySymbols) {
1174
1326
  var symbols = Object.getOwnPropertySymbols(object);
1175
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
1176
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1177
- });
1327
+
1328
+ if (enumerableOnly) {
1329
+ symbols = symbols.filter(function (sym) {
1330
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1331
+ });
1332
+ }
1333
+
1178
1334
  keys.push.apply(keys, symbols);
1179
1335
  }
1180
1336
 
1181
1337
  return keys;
1182
1338
  }
1183
1339
 
1184
- function _objectSpread$6(target) {
1340
+ function _objectSpread$9(target) {
1185
1341
  for (var i = 1; i < arguments.length; i++) {
1186
1342
  var source = arguments[i] != null ? arguments[i] : {};
1187
1343
 
1188
1344
  if (i % 2) {
1189
- ownKeys$7(Object(source), true).forEach(function (key) {
1190
- _defineProperty$7(target, key, source[key]);
1345
+ ownKeys$9(Object(source), true).forEach(function (key) {
1346
+ _defineProperty$9(target, key, source[key]);
1191
1347
  });
1192
1348
  } else if (Object.getOwnPropertyDescriptors) {
1193
1349
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1194
1350
  } else {
1195
- ownKeys$7(Object(source)).forEach(function (key) {
1351
+ ownKeys$9(Object(source)).forEach(function (key) {
1196
1352
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1197
1353
  });
1198
1354
  }
@@ -1201,7 +1357,7 @@
1201
1357
  return target;
1202
1358
  }
1203
1359
 
1204
- function _defineProperty$7(obj, key, value) {
1360
+ function _defineProperty$9(obj, key, value) {
1205
1361
  if (key in obj) {
1206
1362
  Object.defineProperty(obj, key, {
1207
1363
  value: value,
@@ -1226,7 +1382,7 @@
1226
1382
 
1227
1383
  function preResolve(itemsOrDescription, sourceId) {
1228
1384
  if (isRequesterDescription(itemsOrDescription)) {
1229
- return _objectSpread$6(_objectSpread$6({}, itemsOrDescription), {}, {
1385
+ return _objectSpread$9(_objectSpread$9({}, itemsOrDescription), {}, {
1230
1386
  requests: itemsOrDescription.queries.map(function (query) {
1231
1387
  return {
1232
1388
  query: query,
@@ -1259,7 +1415,7 @@
1259
1415
  if (container) {
1260
1416
  var _container$items;
1261
1417
 
1262
- (_container$items = container.items).push.apply(_container$items, _toConsumableArray$2(requests));
1418
+ (_container$items = container.items).push.apply(_container$items, _toConsumableArray$3(requests));
1263
1419
  } else {
1264
1420
  var request = {
1265
1421
  execute: execute,
@@ -1301,7 +1457,7 @@
1301
1457
  var transform = matches[0].transformResponse;
1302
1458
  var items = transform ? transform(mapToAlgoliaResponse(results)) : results;
1303
1459
  invariant(Array.isArray(items), function () {
1304
- return "The `getItems` function from source \"".concat(source.sourceId, "\" must return an array of items but returned type ").concat(JSON.stringify(_typeof$3(items)), ":\n\n").concat(JSON.stringify(decycle(items), null, 2), ".\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems");
1460
+ return "The `getItems` function from source \"".concat(source.sourceId, "\" must return an array of items but returned type ").concat(JSON.stringify(_typeof(items)), ":\n\n").concat(JSON.stringify(decycle(items), null, 2), ".\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems");
1305
1461
  });
1306
1462
  invariant(items.every(Boolean), "The `getItems` function from source \"".concat(source.sourceId, "\" must return an array of items but returned ").concat(JSON.stringify(undefined), ".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"));
1307
1463
  return {
@@ -1311,21 +1467,27 @@
1311
1467
  });
1312
1468
  }
1313
1469
 
1470
+ var _excluded$6 = ["event", "nextState", "props", "query", "refresh", "store"];
1471
+
1314
1472
  function ownKeys$8(object, enumerableOnly) {
1315
1473
  var keys = Object.keys(object);
1316
1474
 
1317
1475
  if (Object.getOwnPropertySymbols) {
1318
1476
  var symbols = Object.getOwnPropertySymbols(object);
1319
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
1320
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1321
- });
1477
+
1478
+ if (enumerableOnly) {
1479
+ symbols = symbols.filter(function (sym) {
1480
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1481
+ });
1482
+ }
1483
+
1322
1484
  keys.push.apply(keys, symbols);
1323
1485
  }
1324
1486
 
1325
1487
  return keys;
1326
1488
  }
1327
1489
 
1328
- function _objectSpread$7(target) {
1490
+ function _objectSpread$8(target) {
1329
1491
  for (var i = 1; i < arguments.length; i++) {
1330
1492
  var source = arguments[i] != null ? arguments[i] : {};
1331
1493
 
@@ -1360,10 +1522,10 @@
1360
1522
  return obj;
1361
1523
  }
1362
1524
 
1363
- function _objectWithoutProperties$1(source, excluded) {
1525
+ function _objectWithoutProperties$3(source, excluded) {
1364
1526
  if (source == null) return {};
1365
1527
 
1366
- var target = _objectWithoutPropertiesLoose$1(source, excluded);
1528
+ var target = _objectWithoutPropertiesLoose$3(source, excluded);
1367
1529
 
1368
1530
  var key, i;
1369
1531
 
@@ -1381,7 +1543,7 @@
1381
1543
  return target;
1382
1544
  }
1383
1545
 
1384
- function _objectWithoutPropertiesLoose$1(source, excluded) {
1546
+ function _objectWithoutPropertiesLoose$3(source, excluded) {
1385
1547
  if (source == null) return {};
1386
1548
  var target = {};
1387
1549
  var sourceKeys = Object.keys(source);
@@ -1396,6 +1558,7 @@
1396
1558
  return target;
1397
1559
  }
1398
1560
  var lastStalledId = null;
1561
+ var runConcurrentSafePromise = createConcurrentSafePromise();
1399
1562
  function onInput(_ref) {
1400
1563
  var event = _ref.event,
1401
1564
  _ref$nextState = _ref.nextState,
@@ -1404,7 +1567,7 @@
1404
1567
  query = _ref.query,
1405
1568
  refresh = _ref.refresh,
1406
1569
  store = _ref.store,
1407
- setters = _objectWithoutProperties$1(_ref, ["event", "nextState", "props", "query", "refresh", "store"]);
1570
+ setters = _objectWithoutProperties$3(_ref, _excluded$6);
1408
1571
 
1409
1572
  if (lastStalledId) {
1410
1573
  props.environment.clearTimeout(lastStalledId);
@@ -1421,30 +1584,44 @@
1421
1584
  if (!query && props.openOnFocus === false) {
1422
1585
  var _nextState$isOpen;
1423
1586
 
1424
- setStatus('idle');
1425
- setCollections(store.getState().collections.map(function (collection) {
1426
- return _objectSpread$7(_objectSpread$7({}, collection), {}, {
1587
+ var collections = store.getState().collections.map(function (collection) {
1588
+ return _objectSpread$8(_objectSpread$8({}, collection), {}, {
1427
1589
  items: []
1428
1590
  });
1429
- }));
1591
+ });
1592
+ setStatus('idle');
1593
+ setCollections(collections);
1430
1594
  setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.shouldPanelOpen({
1431
1595
  state: store.getState()
1596
+ })); // We make sure to update the latest resolved value of the tracked
1597
+ // promises to keep late resolving promises from "cancelling" the state
1598
+ // updates performed in this code path.
1599
+ // We chain with a void promise to respect `onInput`'s expected return type.
1600
+
1601
+ var _request = cancelable(runConcurrentSafePromise(collections).then(function () {
1602
+ return Promise.resolve();
1432
1603
  }));
1433
- return Promise.resolve();
1604
+
1605
+ return store.pendingRequests.add(_request);
1434
1606
  }
1435
1607
 
1436
1608
  setStatus('loading');
1437
1609
  lastStalledId = props.environment.setTimeout(function () {
1438
1610
  setStatus('stalled');
1439
- }, props.stallThreshold);
1440
- return props.getSources(_objectSpread$7({
1611
+ }, props.stallThreshold); // We track the entire promise chain triggered by `onInput` before mutating
1612
+ // the Autocomplete state to make sure that any state manipulation is based on
1613
+ // fresh data regardless of when promises individually resolve.
1614
+ // We don't track nested promises and only rely on the full chain resolution,
1615
+ // meaning we should only ever manipulate the state once this concurrent-safe
1616
+ // promise is resolved.
1617
+
1618
+ var request = cancelable(runConcurrentSafePromise(props.getSources(_objectSpread$8({
1441
1619
  query: query,
1442
1620
  refresh: refresh,
1443
1621
  state: store.getState()
1444
1622
  }, setters)).then(function (sources) {
1445
- setStatus('loading');
1446
1623
  return Promise.all(sources.map(function (source) {
1447
- return Promise.resolve(source.getItems(_objectSpread$7({
1624
+ return Promise.resolve(source.getItems(_objectSpread$8({
1448
1625
  query: query,
1449
1626
  refresh: refresh,
1450
1627
  state: store.getState()
@@ -1459,66 +1636,79 @@
1459
1636
  props: props,
1460
1637
  state: store.getState()
1461
1638
  });
1462
- }).then(function (collections) {
1463
- var _nextState$isOpen2;
1639
+ });
1640
+ }))).then(function (collections) {
1641
+ var _nextState$isOpen2; // Parameters passed to `onInput` could be stale when the following code
1642
+ // executes, because `onInput` calls may not resolve in order.
1643
+ // If it becomes a problem we'll need to save the last passed parameters.
1644
+ // See: https://codesandbox.io/s/agitated-cookies-y290z
1464
1645
 
1465
- setStatus('idle');
1466
- setCollections(collections);
1467
- var isPanelOpen = props.shouldPanelOpen({
1468
- state: store.getState()
1469
- });
1470
- setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);
1471
- var highlightedItem = getActiveItem(store.getState());
1472
1646
 
1473
- if (store.getState().activeItemId !== null && highlightedItem) {
1474
- var item = highlightedItem.item,
1475
- itemInputValue = highlightedItem.itemInputValue,
1476
- itemUrl = highlightedItem.itemUrl,
1477
- source = highlightedItem.source;
1478
- source.onActive(_objectSpread$7({
1479
- event: event,
1480
- item: item,
1481
- itemInputValue: itemInputValue,
1482
- itemUrl: itemUrl,
1483
- refresh: refresh,
1484
- source: source,
1485
- state: store.getState()
1486
- }, setters));
1487
- }
1488
- }).finally(function () {
1489
- if (lastStalledId) {
1490
- props.environment.clearTimeout(lastStalledId);
1491
- }
1647
+ setStatus('idle');
1648
+ setCollections(collections);
1649
+ var isPanelOpen = props.shouldPanelOpen({
1650
+ state: store.getState()
1492
1651
  });
1652
+ setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);
1653
+ var highlightedItem = getActiveItem(store.getState());
1654
+
1655
+ if (store.getState().activeItemId !== null && highlightedItem) {
1656
+ var item = highlightedItem.item,
1657
+ itemInputValue = highlightedItem.itemInputValue,
1658
+ itemUrl = highlightedItem.itemUrl,
1659
+ source = highlightedItem.source;
1660
+ source.onActive(_objectSpread$8({
1661
+ event: event,
1662
+ item: item,
1663
+ itemInputValue: itemInputValue,
1664
+ itemUrl: itemUrl,
1665
+ refresh: refresh,
1666
+ source: source,
1667
+ state: store.getState()
1668
+ }, setters));
1669
+ }
1670
+ }).finally(function () {
1671
+ setStatus('idle');
1672
+
1673
+ if (lastStalledId) {
1674
+ props.environment.clearTimeout(lastStalledId);
1675
+ }
1493
1676
  });
1677
+ return store.pendingRequests.add(request);
1494
1678
  }
1495
1679
 
1496
- function ownKeys$9(object, enumerableOnly) {
1680
+ var _excluded$5 = ["event", "props", "refresh", "store"];
1681
+
1682
+ function ownKeys$7(object, enumerableOnly) {
1497
1683
  var keys = Object.keys(object);
1498
1684
 
1499
1685
  if (Object.getOwnPropertySymbols) {
1500
1686
  var symbols = Object.getOwnPropertySymbols(object);
1501
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
1502
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1503
- });
1687
+
1688
+ if (enumerableOnly) {
1689
+ symbols = symbols.filter(function (sym) {
1690
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1691
+ });
1692
+ }
1693
+
1504
1694
  keys.push.apply(keys, symbols);
1505
1695
  }
1506
1696
 
1507
1697
  return keys;
1508
1698
  }
1509
1699
 
1510
- function _objectSpread$8(target) {
1700
+ function _objectSpread$7(target) {
1511
1701
  for (var i = 1; i < arguments.length; i++) {
1512
1702
  var source = arguments[i] != null ? arguments[i] : {};
1513
1703
 
1514
1704
  if (i % 2) {
1515
- ownKeys$9(Object(source), true).forEach(function (key) {
1516
- _defineProperty$9(target, key, source[key]);
1705
+ ownKeys$7(Object(source), true).forEach(function (key) {
1706
+ _defineProperty$7(target, key, source[key]);
1517
1707
  });
1518
1708
  } else if (Object.getOwnPropertyDescriptors) {
1519
1709
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1520
1710
  } else {
1521
- ownKeys$9(Object(source)).forEach(function (key) {
1711
+ ownKeys$7(Object(source)).forEach(function (key) {
1522
1712
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1523
1713
  });
1524
1714
  }
@@ -1527,7 +1717,7 @@
1527
1717
  return target;
1528
1718
  }
1529
1719
 
1530
- function _defineProperty$9(obj, key, value) {
1720
+ function _defineProperty$7(obj, key, value) {
1531
1721
  if (key in obj) {
1532
1722
  Object.defineProperty(obj, key, {
1533
1723
  value: value,
@@ -1582,7 +1772,7 @@
1582
1772
  props = _ref.props,
1583
1773
  refresh = _ref.refresh,
1584
1774
  store = _ref.store,
1585
- setters = _objectWithoutProperties$2(_ref, ["event", "props", "refresh", "store"]);
1775
+ setters = _objectWithoutProperties$2(_ref, _excluded$5);
1586
1776
 
1587
1777
  if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
1588
1778
  // eslint-disable-next-line no-inner-declarations
@@ -1607,7 +1797,7 @@
1607
1797
  itemInputValue = highlightedItem.itemInputValue,
1608
1798
  itemUrl = highlightedItem.itemUrl,
1609
1799
  source = highlightedItem.source;
1610
- source.onActive(_objectSpread$8({
1800
+ source.onActive(_objectSpread$7({
1611
1801
  event: event,
1612
1802
  item: item,
1613
1803
  itemInputValue: itemInputValue,
@@ -1625,7 +1815,7 @@
1625
1815
  // synchronized as `onInput` returns a promise.
1626
1816
 
1627
1817
  if (store.getState().isOpen === false && (props.openOnFocus || Boolean(store.getState().query))) {
1628
- onInput(_objectSpread$8({
1818
+ onInput(_objectSpread$7({
1629
1819
  event: event,
1630
1820
  props: props,
1631
1821
  query: store.getState().query,
@@ -1651,7 +1841,12 @@
1651
1841
  // from removing the query right away because we first want to close the
1652
1842
  // panel.
1653
1843
  event.preventDefault();
1654
- store.dispatch(event.key, null);
1844
+ store.dispatch(event.key, null); // Hitting the `Escape` key signals the end of a user interaction with the
1845
+ // autocomplete. At this point, we should ignore any requests that are still
1846
+ // pending and could reopen the panel once they resolve, because that would
1847
+ // result in an unsolicited UI behavior.
1848
+
1849
+ store.pendingRequests.cancelAll();
1655
1850
  } else if (event.key === 'Enter') {
1656
1851
  // No active item, so we let the browser handle the native `onSubmit` form
1657
1852
  // event.
@@ -1673,7 +1868,7 @@
1673
1868
 
1674
1869
  if (event.metaKey || event.ctrlKey) {
1675
1870
  if (itemUrl !== undefined) {
1676
- source.onSelect(_objectSpread$8({
1871
+ source.onSelect(_objectSpread$7({
1677
1872
  event: event,
1678
1873
  item: item,
1679
1874
  itemInputValue: itemInputValue,
@@ -1690,7 +1885,7 @@
1690
1885
  }
1691
1886
  } else if (event.shiftKey) {
1692
1887
  if (itemUrl !== undefined) {
1693
- source.onSelect(_objectSpread$8({
1888
+ source.onSelect(_objectSpread$7({
1694
1889
  event: event,
1695
1890
  item: item,
1696
1891
  itemInputValue: itemInputValue,
@@ -1707,7 +1902,7 @@
1707
1902
  }
1708
1903
  } else if (event.altKey) ; else {
1709
1904
  if (itemUrl !== undefined) {
1710
- source.onSelect(_objectSpread$8({
1905
+ source.onSelect(_objectSpread$7({
1711
1906
  event: event,
1712
1907
  item: item,
1713
1908
  itemInputValue: itemInputValue,
@@ -1724,7 +1919,7 @@
1724
1919
  return;
1725
1920
  }
1726
1921
 
1727
- onInput(_objectSpread$8({
1922
+ onInput(_objectSpread$7({
1728
1923
  event: event,
1729
1924
  nextState: {
1730
1925
  isOpen: false
@@ -1734,7 +1929,7 @@
1734
1929
  refresh: refresh,
1735
1930
  store: store
1736
1931
  }, setters)).then(function () {
1737
- source.onSelect(_objectSpread$8({
1932
+ source.onSelect(_objectSpread$7({
1738
1933
  event: event,
1739
1934
  item: item,
1740
1935
  itemInputValue: itemInputValue,
@@ -1748,32 +1943,42 @@
1748
1943
  }
1749
1944
  }
1750
1945
 
1751
- function ownKeys$a(object, enumerableOnly) {
1946
+ var _excluded$4 = ["props", "refresh", "store"],
1947
+ _excluded2 = ["inputElement", "formElement", "panelElement"],
1948
+ _excluded3 = ["inputElement"],
1949
+ _excluded4 = ["inputElement", "maxLength"],
1950
+ _excluded5 = ["item", "source"];
1951
+
1952
+ function ownKeys$6(object, enumerableOnly) {
1752
1953
  var keys = Object.keys(object);
1753
1954
 
1754
1955
  if (Object.getOwnPropertySymbols) {
1755
1956
  var symbols = Object.getOwnPropertySymbols(object);
1756
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
1757
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1758
- });
1957
+
1958
+ if (enumerableOnly) {
1959
+ symbols = symbols.filter(function (sym) {
1960
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
1961
+ });
1962
+ }
1963
+
1759
1964
  keys.push.apply(keys, symbols);
1760
1965
  }
1761
1966
 
1762
1967
  return keys;
1763
1968
  }
1764
1969
 
1765
- function _objectSpread$9(target) {
1970
+ function _objectSpread$6(target) {
1766
1971
  for (var i = 1; i < arguments.length; i++) {
1767
1972
  var source = arguments[i] != null ? arguments[i] : {};
1768
1973
 
1769
1974
  if (i % 2) {
1770
- ownKeys$a(Object(source), true).forEach(function (key) {
1771
- _defineProperty$a(target, key, source[key]);
1975
+ ownKeys$6(Object(source), true).forEach(function (key) {
1976
+ _defineProperty$6(target, key, source[key]);
1772
1977
  });
1773
1978
  } else if (Object.getOwnPropertyDescriptors) {
1774
1979
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
1775
1980
  } else {
1776
- ownKeys$a(Object(source)).forEach(function (key) {
1981
+ ownKeys$6(Object(source)).forEach(function (key) {
1777
1982
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
1778
1983
  });
1779
1984
  }
@@ -1782,7 +1987,7 @@
1782
1987
  return target;
1783
1988
  }
1784
1989
 
1785
- function _defineProperty$a(obj, key, value) {
1990
+ function _defineProperty$6(obj, key, value) {
1786
1991
  if (key in obj) {
1787
1992
  Object.defineProperty(obj, key, {
1788
1993
  value: value,
@@ -1797,10 +2002,10 @@
1797
2002
  return obj;
1798
2003
  }
1799
2004
 
1800
- function _objectWithoutProperties$3(source, excluded) {
2005
+ function _objectWithoutProperties$1(source, excluded) {
1801
2006
  if (source == null) return {};
1802
2007
 
1803
- var target = _objectWithoutPropertiesLoose$3(source, excluded);
2008
+ var target = _objectWithoutPropertiesLoose$1(source, excluded);
1804
2009
 
1805
2010
  var key, i;
1806
2011
 
@@ -1818,7 +2023,7 @@
1818
2023
  return target;
1819
2024
  }
1820
2025
 
1821
- function _objectWithoutPropertiesLoose$3(source, excluded) {
2026
+ function _objectWithoutPropertiesLoose$1(source, excluded) {
1822
2027
  if (source == null) return {};
1823
2028
  var target = {};
1824
2029
  var sourceKeys = Object.keys(source);
@@ -1836,33 +2041,48 @@
1836
2041
  var props = _ref.props,
1837
2042
  refresh = _ref.refresh,
1838
2043
  store = _ref.store,
1839
- setters = _objectWithoutProperties$3(_ref, ["props", "refresh", "store"]);
2044
+ setters = _objectWithoutProperties$1(_ref, _excluded$4);
1840
2045
 
1841
2046
  var getEnvironmentProps = function getEnvironmentProps(providedProps) {
1842
2047
  var inputElement = providedProps.inputElement,
1843
2048
  formElement = providedProps.formElement,
1844
2049
  panelElement = providedProps.panelElement,
1845
- rest = _objectWithoutProperties$3(providedProps, ["inputElement", "formElement", "panelElement"]);
2050
+ rest = _objectWithoutProperties$1(providedProps, _excluded2);
1846
2051
 
1847
- return _objectSpread$9({
2052
+ return _objectSpread$6({
1848
2053
  // On touch devices, we do not rely on the native `blur` event of the
1849
2054
  // input to close the panel, but rather on a custom `touchstart` event
1850
2055
  // outside of the autocomplete elements.
1851
2056
  // This ensures a working experience on mobile because we blur the input
1852
2057
  // on touch devices when the user starts scrolling (`touchmove`).
2058
+ // @TODO: support cases where there are multiple Autocomplete instances.
2059
+ // Right now, a second instance makes this computation return false.
1853
2060
  onTouchStart: function onTouchStart(event) {
1854
- if (store.getState().isOpen === false || event.target === inputElement) {
2061
+ // The `onTouchStart` event shouldn't trigger the `blur` handler when
2062
+ // it's not an interaction with Autocomplete. We detect it with the
2063
+ // following heuristics:
2064
+ // - the panel is closed AND there are no pending requests
2065
+ // (no interaction with the autocomplete, no future state updates)
2066
+ // - OR the touched target is the input element (should open the panel)
2067
+ var isAutocompleteInteraction = store.getState().isOpen || !store.pendingRequests.isEmpty();
2068
+
2069
+ if (!isAutocompleteInteraction || event.target === inputElement) {
1855
2070
  return;
1856
- } // @TODO: support cases where there are multiple Autocomplete instances.
1857
- // Right now, a second instance makes this computation return false.
1858
-
2071
+ }
1859
2072
 
1860
2073
  var isTargetWithinAutocomplete = [formElement, panelElement].some(function (contextNode) {
1861
- return isOrContainsNode(contextNode, event.target) || isOrContainsNode(contextNode, props.environment.document.activeElement);
2074
+ return isOrContainsNode(contextNode, event.target);
1862
2075
  });
1863
2076
 
1864
2077
  if (isTargetWithinAutocomplete === false) {
1865
- store.dispatch('blur', null);
2078
+ store.dispatch('blur', null); // If requests are still pending when the user closes the panel, they
2079
+ // could reopen the panel once they resolve.
2080
+ // We want to prevent any subsequent query from reopening the panel
2081
+ // because it would result in an unsolicited UI behavior.
2082
+
2083
+ if (!props.debug) {
2084
+ store.pendingRequests.cancelAll();
2085
+ }
1866
2086
  }
1867
2087
  },
1868
2088
  // When scrolling on touch devices (mobiles, tablets, etc.), we want to
@@ -1880,7 +2100,7 @@
1880
2100
  };
1881
2101
 
1882
2102
  var getRootProps = function getRootProps(rest) {
1883
- return _objectSpread$9({
2103
+ return _objectSpread$6({
1884
2104
  role: 'combobox',
1885
2105
  'aria-expanded': store.getState().isOpen,
1886
2106
  'aria-haspopup': 'listbox',
@@ -1890,10 +2110,10 @@
1890
2110
  };
1891
2111
 
1892
2112
  var getFormProps = function getFormProps(providedProps) {
1893
- var inputElement = providedProps.inputElement,
1894
- rest = _objectWithoutProperties$3(providedProps, ["inputElement"]);
2113
+ providedProps.inputElement;
2114
+ var rest = _objectWithoutProperties$1(providedProps, _excluded3);
1895
2115
 
1896
- return _objectSpread$9({
2116
+ return _objectSpread$6({
1897
2117
  action: '',
1898
2118
  noValidate: true,
1899
2119
  role: 'search',
@@ -1901,7 +2121,7 @@
1901
2121
  var _providedProps$inputE;
1902
2122
 
1903
2123
  event.preventDefault();
1904
- props.onSubmit(_objectSpread$9({
2124
+ props.onSubmit(_objectSpread$6({
1905
2125
  event: event,
1906
2126
  refresh: refresh,
1907
2127
  state: store.getState()
@@ -1913,7 +2133,7 @@
1913
2133
  var _providedProps$inputE2;
1914
2134
 
1915
2135
  event.preventDefault();
1916
- props.onReset(_objectSpread$9({
2136
+ props.onReset(_objectSpread$6({
1917
2137
  event: event,
1918
2138
  refresh: refresh,
1919
2139
  state: store.getState()
@@ -1929,7 +2149,7 @@
1929
2149
  // We want to trigger a query when `openOnFocus` is true
1930
2150
  // because the panel should open with the current query.
1931
2151
  if (props.openOnFocus || Boolean(store.getState().query)) {
1932
- onInput(_objectSpread$9({
2152
+ onInput(_objectSpread$6({
1933
2153
  event: event,
1934
2154
  props: props,
1935
2155
  query: store.getState().completion || store.getState().query,
@@ -1943,14 +2163,14 @@
1943
2163
 
1944
2164
  var isTouchDevice = ('ontouchstart' in props.environment);
1945
2165
 
1946
- var _ref2 = providedProps || {},
1947
- inputElement = _ref2.inputElement,
1948
- _ref2$maxLength = _ref2.maxLength,
2166
+ var _ref2 = providedProps || {};
2167
+ _ref2.inputElement;
2168
+ var _ref2$maxLength = _ref2.maxLength,
1949
2169
  maxLength = _ref2$maxLength === void 0 ? 512 : _ref2$maxLength,
1950
- rest = _objectWithoutProperties$3(_ref2, ["inputElement", "maxLength"]);
2170
+ rest = _objectWithoutProperties$1(_ref2, _excluded4);
1951
2171
 
1952
2172
  var activeItem = getActiveItem(store.getState());
1953
- return _objectSpread$9({
2173
+ return _objectSpread$6({
1954
2174
  'aria-autocomplete': 'both',
1955
2175
  'aria-activedescendant': store.getState().isOpen && store.getState().activeItemId !== null ? "".concat(props.id, "-item-").concat(store.getState().activeItemId) : undefined,
1956
2176
  'aria-controls': store.getState().isOpen ? "".concat(props.id, "-list") : undefined,
@@ -1967,7 +2187,7 @@
1967
2187
  maxLength: maxLength,
1968
2188
  type: 'search',
1969
2189
  onChange: function onChange(event) {
1970
- onInput(_objectSpread$9({
2190
+ onInput(_objectSpread$6({
1971
2191
  event: event,
1972
2192
  props: props,
1973
2193
  query: event.currentTarget.value.slice(0, maxLength),
@@ -1976,7 +2196,7 @@
1976
2196
  }, setters));
1977
2197
  },
1978
2198
  onKeyDown: function onKeyDown$1(event) {
1979
- onKeyDown(_objectSpread$9({
2199
+ onKeyDown(_objectSpread$6({
1980
2200
  event: event,
1981
2201
  props: props,
1982
2202
  refresh: refresh,
@@ -1988,7 +2208,14 @@
1988
2208
  // We do rely on the `blur` event on touch devices.
1989
2209
  // See explanation in `onTouchStart`.
1990
2210
  if (!isTouchDevice) {
1991
- store.dispatch('blur', null);
2211
+ store.dispatch('blur', null); // If requests are still pending when the user closes the panel, they
2212
+ // could reopen the panel once they resolve.
2213
+ // We want to prevent any subsequent query from reopening the panel
2214
+ // because it would result in an unsolicited UI behavior.
2215
+
2216
+ if (!props.debug) {
2217
+ store.pendingRequests.cancelAll();
2218
+ }
1992
2219
  }
1993
2220
  },
1994
2221
  onClick: function onClick(event) {
@@ -2007,14 +2234,14 @@
2007
2234
  };
2008
2235
 
2009
2236
  var getLabelProps = function getLabelProps(rest) {
2010
- return _objectSpread$9({
2237
+ return _objectSpread$6({
2011
2238
  htmlFor: "".concat(props.id, "-input"),
2012
2239
  id: "".concat(props.id, "-label")
2013
2240
  }, rest);
2014
2241
  };
2015
2242
 
2016
2243
  var getListProps = function getListProps(rest) {
2017
- return _objectSpread$9({
2244
+ return _objectSpread$6({
2018
2245
  role: 'listbox',
2019
2246
  'aria-labelledby': "".concat(props.id, "-label"),
2020
2247
  id: "".concat(props.id, "-list")
@@ -2022,7 +2249,7 @@
2022
2249
  };
2023
2250
 
2024
2251
  var getPanelProps = function getPanelProps(rest) {
2025
- return _objectSpread$9({
2252
+ return _objectSpread$6({
2026
2253
  onMouseDown: function onMouseDown(event) {
2027
2254
  // Prevents the `activeElement` from being changed to the panel so
2028
2255
  // that the blur event is not triggered, otherwise it closes the
@@ -2038,9 +2265,9 @@
2038
2265
  var getItemProps = function getItemProps(providedProps) {
2039
2266
  var item = providedProps.item,
2040
2267
  source = providedProps.source,
2041
- rest = _objectWithoutProperties$3(providedProps, ["item", "source"]);
2268
+ rest = _objectWithoutProperties$1(providedProps, _excluded5);
2042
2269
 
2043
- return _objectSpread$9({
2270
+ return _objectSpread$6({
2044
2271
  id: "".concat(props.id, "-item-").concat(item.__autocomplete_id),
2045
2272
  role: 'option',
2046
2273
  'aria-selected': store.getState().activeItemId === item.__autocomplete_id,
@@ -2058,7 +2285,7 @@
2058
2285
  itemUrl = activeItem.itemUrl,
2059
2286
  _source = activeItem.source;
2060
2287
 
2061
- _source.onActive(_objectSpread$9({
2288
+ _source.onActive(_objectSpread$6({
2062
2289
  event: event,
2063
2290
  item: _item,
2064
2291
  itemInputValue: itemInputValue,
@@ -2088,7 +2315,7 @@
2088
2315
  // the `activeItemId`, resulting in a UI flash, especially
2089
2316
  // noticeable on mobile.
2090
2317
 
2091
- var runPreCommand = itemUrl ? Promise.resolve() : onInput(_objectSpread$9({
2318
+ var runPreCommand = itemUrl ? Promise.resolve() : onInput(_objectSpread$6({
2092
2319
  event: event,
2093
2320
  nextState: {
2094
2321
  isOpen: false
@@ -2099,7 +2326,7 @@
2099
2326
  store: store
2100
2327
  }, setters));
2101
2328
  runPreCommand.then(function () {
2102
- source.onSelect(_objectSpread$9({
2329
+ source.onSelect(_objectSpread$6({
2103
2330
  event: event,
2104
2331
  item: item,
2105
2332
  itemInputValue: itemInputValue,
@@ -2125,6 +2352,96 @@
2125
2352
  };
2126
2353
  }
2127
2354
 
2355
+ function ownKeys$5(object, enumerableOnly) {
2356
+ var keys = Object.keys(object);
2357
+
2358
+ if (Object.getOwnPropertySymbols) {
2359
+ var symbols = Object.getOwnPropertySymbols(object);
2360
+
2361
+ if (enumerableOnly) {
2362
+ symbols = symbols.filter(function (sym) {
2363
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
2364
+ });
2365
+ }
2366
+
2367
+ keys.push.apply(keys, symbols);
2368
+ }
2369
+
2370
+ return keys;
2371
+ }
2372
+
2373
+ function _objectSpread$5(target) {
2374
+ for (var i = 1; i < arguments.length; i++) {
2375
+ var source = arguments[i] != null ? arguments[i] : {};
2376
+
2377
+ if (i % 2) {
2378
+ ownKeys$5(Object(source), true).forEach(function (key) {
2379
+ _defineProperty$5(target, key, source[key]);
2380
+ });
2381
+ } else if (Object.getOwnPropertyDescriptors) {
2382
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
2383
+ } else {
2384
+ ownKeys$5(Object(source)).forEach(function (key) {
2385
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
2386
+ });
2387
+ }
2388
+ }
2389
+
2390
+ return target;
2391
+ }
2392
+
2393
+ function _defineProperty$5(obj, key, value) {
2394
+ if (key in obj) {
2395
+ Object.defineProperty(obj, key, {
2396
+ value: value,
2397
+ enumerable: true,
2398
+ configurable: true,
2399
+ writable: true
2400
+ });
2401
+ } else {
2402
+ obj[key] = value;
2403
+ }
2404
+
2405
+ return obj;
2406
+ }
2407
+ function getMetadata(_ref) {
2408
+ var _, _options$__autocomple, _options$__autocomple2, _options$__autocomple3;
2409
+
2410
+ var plugins = _ref.plugins,
2411
+ options = _ref.options;
2412
+ var optionsKey = (_ = (((_options$__autocomple = options.__autocomplete_metadata) === null || _options$__autocomple === void 0 ? void 0 : _options$__autocomple.userAgents) || [])[0]) === null || _ === void 0 ? void 0 : _.segment;
2413
+ var extraOptions = optionsKey ? _defineProperty$5({}, optionsKey, Object.keys(((_options$__autocomple2 = options.__autocomplete_metadata) === null || _options$__autocomple2 === void 0 ? void 0 : _options$__autocomple2.options) || {})) : {};
2414
+ return {
2415
+ plugins: plugins.map(function (plugin) {
2416
+ return {
2417
+ name: plugin.name,
2418
+ options: Object.keys(plugin.__autocomplete_pluginOptions || [])
2419
+ };
2420
+ }),
2421
+ options: _objectSpread$5({
2422
+ 'autocomplete-core': Object.keys(options)
2423
+ }, extraOptions),
2424
+ ua: userAgents$1.concat(((_options$__autocomple3 = options.__autocomplete_metadata) === null || _options$__autocomple3 === void 0 ? void 0 : _options$__autocomple3.userAgents) || [])
2425
+ };
2426
+ }
2427
+ function injectMetadata(_ref3) {
2428
+ var _environment$navigato;
2429
+
2430
+ var metadata = _ref3.metadata,
2431
+ environment = _ref3.environment;
2432
+ var isMetadataEnabled = (_environment$navigato = environment.navigator) === null || _environment$navigato === void 0 ? void 0 : _environment$navigato.userAgent.includes('Algolia Crawler');
2433
+
2434
+ if (isMetadataEnabled) {
2435
+ var metadataContainer = environment.document.createElement('meta');
2436
+ var headRef = environment.document.querySelector('head');
2437
+ metadataContainer.name = 'algolia:metadata';
2438
+ setTimeout(function () {
2439
+ metadataContainer.content = JSON.stringify(metadata);
2440
+ headRef.appendChild(metadataContainer);
2441
+ }, 0);
2442
+ }
2443
+ }
2444
+
2128
2445
  function getCompletion(_ref) {
2129
2446
  var _getActiveItem;
2130
2447
 
@@ -2137,32 +2454,36 @@
2137
2454
  return ((_getActiveItem = getActiveItem(state)) === null || _getActiveItem === void 0 ? void 0 : _getActiveItem.itemInputValue) || null;
2138
2455
  }
2139
2456
 
2140
- function ownKeys$b(object, enumerableOnly) {
2457
+ function ownKeys$4(object, enumerableOnly) {
2141
2458
  var keys = Object.keys(object);
2142
2459
 
2143
2460
  if (Object.getOwnPropertySymbols) {
2144
2461
  var symbols = Object.getOwnPropertySymbols(object);
2145
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
2146
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
2147
- });
2462
+
2463
+ if (enumerableOnly) {
2464
+ symbols = symbols.filter(function (sym) {
2465
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
2466
+ });
2467
+ }
2468
+
2148
2469
  keys.push.apply(keys, symbols);
2149
2470
  }
2150
2471
 
2151
2472
  return keys;
2152
2473
  }
2153
2474
 
2154
- function _objectSpread$a(target) {
2475
+ function _objectSpread$4(target) {
2155
2476
  for (var i = 1; i < arguments.length; i++) {
2156
2477
  var source = arguments[i] != null ? arguments[i] : {};
2157
2478
 
2158
2479
  if (i % 2) {
2159
- ownKeys$b(Object(source), true).forEach(function (key) {
2160
- _defineProperty$b(target, key, source[key]);
2480
+ ownKeys$4(Object(source), true).forEach(function (key) {
2481
+ _defineProperty$4(target, key, source[key]);
2161
2482
  });
2162
2483
  } else if (Object.getOwnPropertyDescriptors) {
2163
2484
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
2164
2485
  } else {
2165
- ownKeys$b(Object(source)).forEach(function (key) {
2486
+ ownKeys$4(Object(source)).forEach(function (key) {
2166
2487
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
2167
2488
  });
2168
2489
  }
@@ -2171,7 +2492,7 @@
2171
2492
  return target;
2172
2493
  }
2173
2494
 
2174
- function _defineProperty$b(obj, key, value) {
2495
+ function _defineProperty$4(obj, key, value) {
2175
2496
  if (key in obj) {
2176
2497
  Object.defineProperty(obj, key, {
2177
2498
  value: value,
@@ -2189,14 +2510,14 @@
2189
2510
  switch (action.type) {
2190
2511
  case 'setActiveItemId':
2191
2512
  {
2192
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2513
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2193
2514
  activeItemId: action.payload
2194
2515
  });
2195
2516
  }
2196
2517
 
2197
2518
  case 'setQuery':
2198
2519
  {
2199
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2520
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2200
2521
  query: action.payload,
2201
2522
  completion: null
2202
2523
  });
@@ -2204,39 +2525,39 @@
2204
2525
 
2205
2526
  case 'setCollections':
2206
2527
  {
2207
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2528
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2208
2529
  collections: action.payload
2209
2530
  });
2210
2531
  }
2211
2532
 
2212
2533
  case 'setIsOpen':
2213
2534
  {
2214
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2535
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2215
2536
  isOpen: action.payload
2216
2537
  });
2217
2538
  }
2218
2539
 
2219
2540
  case 'setStatus':
2220
2541
  {
2221
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2542
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2222
2543
  status: action.payload
2223
2544
  });
2224
2545
  }
2225
2546
 
2226
2547
  case 'setContext':
2227
2548
  {
2228
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2229
- context: _objectSpread$a(_objectSpread$a({}, state.context), action.payload)
2549
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2550
+ context: _objectSpread$4(_objectSpread$4({}, state.context), action.payload)
2230
2551
  });
2231
2552
  }
2232
2553
 
2233
2554
  case 'ArrowDown':
2234
2555
  {
2235
- var nextState = _objectSpread$a(_objectSpread$a({}, state), {}, {
2556
+ var nextState = _objectSpread$4(_objectSpread$4({}, state), {}, {
2236
2557
  activeItemId: action.payload.hasOwnProperty('nextActiveItemId') ? action.payload.nextActiveItemId : getNextActiveItemId(1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)
2237
2558
  });
2238
2559
 
2239
- return _objectSpread$a(_objectSpread$a({}, nextState), {}, {
2560
+ return _objectSpread$4(_objectSpread$4({}, nextState), {}, {
2240
2561
  completion: getCompletion({
2241
2562
  state: nextState
2242
2563
  })
@@ -2245,11 +2566,11 @@
2245
2566
 
2246
2567
  case 'ArrowUp':
2247
2568
  {
2248
- var _nextState = _objectSpread$a(_objectSpread$a({}, state), {}, {
2569
+ var _nextState = _objectSpread$4(_objectSpread$4({}, state), {}, {
2249
2570
  activeItemId: getNextActiveItemId(-1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)
2250
2571
  });
2251
2572
 
2252
- return _objectSpread$a(_objectSpread$a({}, _nextState), {}, {
2573
+ return _objectSpread$4(_objectSpread$4({}, _nextState), {}, {
2253
2574
  completion: getCompletion({
2254
2575
  state: _nextState
2255
2576
  })
@@ -2259,14 +2580,14 @@
2259
2580
  case 'Escape':
2260
2581
  {
2261
2582
  if (state.isOpen) {
2262
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2583
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2263
2584
  activeItemId: null,
2264
2585
  isOpen: false,
2265
2586
  completion: null
2266
2587
  });
2267
2588
  }
2268
2589
 
2269
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2590
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2270
2591
  activeItemId: null,
2271
2592
  query: '',
2272
2593
  status: 'idle',
@@ -2276,7 +2597,7 @@
2276
2597
 
2277
2598
  case 'submit':
2278
2599
  {
2279
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2600
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2280
2601
  activeItemId: null,
2281
2602
  isOpen: false,
2282
2603
  status: 'idle'
@@ -2285,7 +2606,7 @@
2285
2606
 
2286
2607
  case 'reset':
2287
2608
  {
2288
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2609
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2289
2610
  activeItemId: // Since we open the panel on reset when openOnFocus=true
2290
2611
  // we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)
2291
2612
  // Since we close the panel when openOnFocus=false
@@ -2298,7 +2619,7 @@
2298
2619
 
2299
2620
  case 'focus':
2300
2621
  {
2301
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2622
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2302
2623
  activeItemId: action.props.defaultActiveItemId,
2303
2624
  isOpen: (action.props.openOnFocus || Boolean(state.query)) && action.props.shouldPanelOpen({
2304
2625
  state: state
@@ -2312,7 +2633,7 @@
2312
2633
  return state;
2313
2634
  }
2314
2635
 
2315
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2636
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2316
2637
  isOpen: false,
2317
2638
  activeItemId: null
2318
2639
  });
@@ -2320,14 +2641,14 @@
2320
2641
 
2321
2642
  case 'mousemove':
2322
2643
  {
2323
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2644
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2324
2645
  activeItemId: action.payload
2325
2646
  });
2326
2647
  }
2327
2648
 
2328
2649
  case 'mouseleave':
2329
2650
  {
2330
- return _objectSpread$a(_objectSpread$a({}, state), {}, {
2651
+ return _objectSpread$4(_objectSpread$4({}, state), {}, {
2331
2652
  activeItemId: action.props.defaultActiveItemId
2332
2653
  });
2333
2654
  }
@@ -2338,32 +2659,36 @@
2338
2659
  }
2339
2660
  };
2340
2661
 
2341
- function ownKeys$c(object, enumerableOnly) {
2662
+ function ownKeys$3(object, enumerableOnly) {
2342
2663
  var keys = Object.keys(object);
2343
2664
 
2344
2665
  if (Object.getOwnPropertySymbols) {
2345
2666
  var symbols = Object.getOwnPropertySymbols(object);
2346
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
2347
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
2348
- });
2667
+
2668
+ if (enumerableOnly) {
2669
+ symbols = symbols.filter(function (sym) {
2670
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
2671
+ });
2672
+ }
2673
+
2349
2674
  keys.push.apply(keys, symbols);
2350
2675
  }
2351
2676
 
2352
2677
  return keys;
2353
2678
  }
2354
2679
 
2355
- function _objectSpread$b(target) {
2680
+ function _objectSpread$3(target) {
2356
2681
  for (var i = 1; i < arguments.length; i++) {
2357
2682
  var source = arguments[i] != null ? arguments[i] : {};
2358
2683
 
2359
2684
  if (i % 2) {
2360
- ownKeys$c(Object(source), true).forEach(function (key) {
2361
- _defineProperty$c(target, key, source[key]);
2685
+ ownKeys$3(Object(source), true).forEach(function (key) {
2686
+ _defineProperty$3(target, key, source[key]);
2362
2687
  });
2363
2688
  } else if (Object.getOwnPropertyDescriptors) {
2364
2689
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
2365
2690
  } else {
2366
- ownKeys$c(Object(source)).forEach(function (key) {
2691
+ ownKeys$3(Object(source)).forEach(function (key) {
2367
2692
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
2368
2693
  });
2369
2694
  }
@@ -2372,7 +2697,7 @@
2372
2697
  return target;
2373
2698
  }
2374
2699
 
2375
- function _defineProperty$c(obj, key, value) {
2700
+ function _defineProperty$3(obj, key, value) {
2376
2701
  if (key in obj) {
2377
2702
  Object.defineProperty(obj, key, {
2378
2703
  value: value,
@@ -2394,7 +2719,7 @@
2394
2719
  var setters = getAutocompleteSetters({
2395
2720
  store: store
2396
2721
  });
2397
- var propGetters = getPropGetters(_objectSpread$b({
2722
+ var propGetters = getPropGetters(_objectSpread$3({
2398
2723
  props: props,
2399
2724
  refresh: refresh,
2400
2725
  store: store
@@ -2403,7 +2728,7 @@
2403
2728
  function onStoreStateChange(_ref) {
2404
2729
  var prevState = _ref.prevState,
2405
2730
  state = _ref.state;
2406
- props.onStateChange(_objectSpread$b({
2731
+ props.onStateChange(_objectSpread$3({
2407
2732
  prevState: prevState,
2408
2733
  state: state,
2409
2734
  refresh: refresh
@@ -2411,7 +2736,7 @@
2411
2736
  }
2412
2737
 
2413
2738
  function refresh() {
2414
- return onInput(_objectSpread$b({
2739
+ return onInput(_objectSpread$3({
2415
2740
  event: new Event('input'),
2416
2741
  nextState: {
2417
2742
  isOpen: store.getState().isOpen
@@ -2426,7 +2751,7 @@
2426
2751
  props.plugins.forEach(function (plugin) {
2427
2752
  var _plugin$subscribe;
2428
2753
 
2429
- return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, _objectSpread$b(_objectSpread$b({}, setters), {}, {
2754
+ return (_plugin$subscribe = plugin.subscribe) === null || _plugin$subscribe === void 0 ? void 0 : _plugin$subscribe.call(plugin, _objectSpread$3(_objectSpread$3({}, setters), {}, {
2430
2755
  refresh: refresh,
2431
2756
  onSelect: function onSelect(fn) {
2432
2757
  subscribers.push({
@@ -2440,7 +2765,14 @@
2440
2765
  }
2441
2766
  }));
2442
2767
  });
2443
- return _objectSpread$b(_objectSpread$b({
2768
+ injectMetadata({
2769
+ metadata: getMetadata({
2770
+ plugins: props.plugins,
2771
+ options: options
2772
+ }),
2773
+ environment: props.environment
2774
+ });
2775
+ return _objectSpread$3(_objectSpread$3({
2444
2776
  refresh: refresh
2445
2777
  }, propGetters), setters);
2446
2778
  }
@@ -2487,8 +2819,8 @@
2487
2819
  }, {});
2488
2820
  }
2489
2821
 
2490
- var isObject = function isObject(value) {
2491
- return value && _typeof(value) === 'object';
2822
+ var isPlainObject = function isPlainObject(value) {
2823
+ return value && _typeof$3(value) === 'object' && Object.prototype.toString.call(value) === '[object Object]';
2492
2824
  };
2493
2825
 
2494
2826
  function mergeDeep() {
@@ -2502,8 +2834,8 @@
2502
2834
  var currentValue = current[key];
2503
2835
 
2504
2836
  if (Array.isArray(accValue) && Array.isArray(currentValue)) {
2505
- acc[key] = accValue.concat.apply(accValue, _toConsumableArray(currentValue));
2506
- } else if (isObject(accValue) && isObject(currentValue)) {
2837
+ acc[key] = accValue.concat.apply(accValue, _toConsumableArray$5(currentValue));
2838
+ } else if (isPlainObject(accValue) && isPlainObject(currentValue)) {
2507
2839
  acc[key] = mergeDeep(accValue, currentValue);
2508
2840
  } else {
2509
2841
  acc[key] = currentValue;
@@ -2563,35 +2895,35 @@
2563
2895
  }
2564
2896
  } // Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6
2565
2897
  else if (name[0] === 'o' && name[1] === 'n') {
2566
- useCapture = name !== (name = name.replace(/Capture$/, ''));
2567
- nameLower = name.toLowerCase();
2568
- if (nameLower in dom) name = nameLower;
2569
- name = name.slice(2);
2570
- if (!dom._listeners) dom._listeners = {};
2571
- dom._listeners[name] = value;
2572
-
2573
- if (value) {
2574
- if (!oldValue) dom.addEventListener(name, eventProxy, useCapture);
2575
- } else {
2576
- dom.removeEventListener(name, eventProxy, useCapture);
2577
- }
2578
- } else if (name !== 'list' && name !== 'tagName' && // HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using
2579
- // setAttribute
2580
- name !== 'form' && name !== 'type' && name !== 'size' && name !== 'download' && name !== 'href' && name in dom) {
2581
- dom[name] = value == null ? '' : value;
2582
- } else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {
2583
- if (value == null || value === false && // ARIA-attributes have a different notion of boolean values.
2584
- // The value `false` is different from the attribute not
2585
- // existing on the DOM, so we can't remove it. For non-boolean
2586
- // ARIA-attributes we could treat false as a removal, but the
2587
- // amount of exceptions would cost us too many bytes. On top of
2588
- // that other VDOM frameworks also always stringify `false`.
2589
- !/^ar/.test(name)) {
2590
- dom.removeAttribute(name);
2591
- } else {
2592
- dom.setAttribute(name, value);
2593
- }
2898
+ useCapture = name !== (name = name.replace(/Capture$/, ''));
2899
+ nameLower = name.toLowerCase();
2900
+ if (nameLower in dom) name = nameLower;
2901
+ name = name.slice(2);
2902
+ if (!dom._listeners) dom._listeners = {};
2903
+ dom._listeners[name] = value;
2904
+
2905
+ if (value) {
2906
+ if (!oldValue) dom.addEventListener(name, eventProxy, useCapture);
2907
+ } else {
2908
+ dom.removeEventListener(name, eventProxy, useCapture);
2594
2909
  }
2910
+ } else if (name !== 'list' && name !== 'tagName' && // HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using
2911
+ // setAttribute
2912
+ name !== 'form' && name !== 'type' && name !== 'size' && name !== 'download' && name !== 'href' && name in dom) {
2913
+ dom[name] = value == null ? '' : value;
2914
+ } else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {
2915
+ if (value == null || value === false && // ARIA-attributes have a different notion of boolean values.
2916
+ // The value `false` is different from the attribute not
2917
+ // existing on the DOM, so we can't remove it. For non-boolean
2918
+ // ARIA-attributes we could treat false as a removal, but the
2919
+ // amount of exceptions would cost us too many bytes. On top of
2920
+ // that other VDOM frameworks also always stringify `false`.
2921
+ !/^ar/.test(name)) {
2922
+ dom.removeAttribute(name);
2923
+ } else {
2924
+ dom.setAttribute(name, value);
2925
+ }
2926
+ }
2595
2927
  }
2596
2928
 
2597
2929
  function getNormalizedName(name) {
@@ -2617,28 +2949,30 @@
2617
2949
  }
2618
2950
  }
2619
2951
 
2952
+ var _excluded$3 = ["children"];
2620
2953
  function getCreateDomElement(environment) {
2621
2954
  return function createDomElement(tagName, _ref) {
2622
2955
  var _ref$children = _ref.children,
2623
2956
  children = _ref$children === void 0 ? [] : _ref$children,
2624
- props = _objectWithoutProperties(_ref, ["children"]);
2957
+ props = _objectWithoutProperties$4(_ref, _excluded$3);
2625
2958
 
2626
2959
  var element = environment.document.createElement(tagName);
2627
2960
  setProperties(element, props);
2628
- element.append.apply(element, _toConsumableArray(children));
2961
+ element.append.apply(element, _toConsumableArray$5(children));
2629
2962
  return element;
2630
2963
  };
2631
2964
  }
2632
2965
 
2966
+ var _excluded$2 = ["autocompleteScopeApi", "environment", "classNames", "getInputProps", "getInputPropsCore", "onDetachedEscape", "state"];
2633
2967
  var Input = function Input(_ref) {
2634
2968
  var autocompleteScopeApi = _ref.autocompleteScopeApi,
2635
- environment = _ref.environment,
2636
- classNames = _ref.classNames,
2637
- getInputProps = _ref.getInputProps,
2969
+ environment = _ref.environment;
2970
+ _ref.classNames;
2971
+ var getInputProps = _ref.getInputProps,
2638
2972
  getInputPropsCore = _ref.getInputPropsCore,
2639
2973
  onDetachedEscape = _ref.onDetachedEscape,
2640
2974
  state = _ref.state,
2641
- props = _objectWithoutProperties(_ref, ["autocompleteScopeApi", "environment", "classNames", "getInputProps", "getInputPropsCore", "onDetachedEscape", "state"]);
2975
+ props = _objectWithoutProperties$4(_ref, _excluded$2);
2642
2976
 
2643
2977
  var createDomElement = getCreateDomElement(environment);
2644
2978
  var element = createDomElement('input', props);
@@ -2912,7 +3246,7 @@
2912
3246
  };
2913
3247
  }
2914
3248
 
2915
- var n,u,i,t,o,r={},f=[],e=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function c(n,l){for(var u in l)n[u]=l[u];return n}function s(n){var l=n.parentNode;l&&l.removeChild(n);}function a(n,l,u){var i,t,o,r=arguments,f={};for(o in l)"key"==o?i=l[o]:"ref"==o?t=l[o]:f[o]=l[o];if(arguments.length>3)for(u=[u],o=3;o<arguments.length;o++)u.push(r[o]);if(null!=u&&(f.children=u),"function"==typeof n&&null!=n.defaultProps)for(o in n.defaultProps)void 0===f[o]&&(f[o]=n.defaultProps[o]);return v(n,f,i,t,null)}function v(l,u,i,t,o){var r={type:l,props:u,key:i,ref:t,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++n.__v:o};return null!=n.vnode&&n.vnode(r),r}function y(n){return n.children}function p(n,l){this.props=n,this.context=l;}function d(n,l){if(null==l)return n.__?d(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return "function"==typeof n.type?d(n):null}function _(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return _(n)}}function k(l){(!l.__d&&(l.__d=!0)&&u.push(l)&&!b.__r++||t!==n.debounceRendering)&&((t=n.debounceRendering)||i)(b);}function b(){for(var n;b.__r=u.length;)n=u.sort(function(n,l){return n.__v.__b-l.__v.__b}),u=[],n.some(function(n){var l,u,i,t,o,r;n.__d&&(o=(t=(l=n).__v).__e,(r=l.__P)&&(u=[],(i=c({},t)).__v=t.__v+1,I(r,t,i,l.__n,void 0!==r.ownerSVGElement,null!=t.__h?[o]:null,u,null==o?d(t):o,t.__h),T(u,t),t.__e!=o&&_(t)));});}function m(n,l,u,i,t,o,e,c,s,a){var h,p,_,k,b,m,w,A=i&&i.__k||f,P=A.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(k=u.__k[h]=null==(k=l[h])||"boolean"==typeof k?null:"string"==typeof k||"number"==typeof k||"bigint"==typeof k?v(null,k,null,null,k):Array.isArray(k)?v(y,{children:k},null,null,null):k.__b>0?v(k.type,k.props,k.key,null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(_=A[h])||_&&k.key==_.key&&k.type===_.type)A[h]=void 0;else for(p=0;p<P;p++){if((_=A[p])&&k.key==_.key&&k.type===_.type){A[p]=void 0;break}_=null;}I(n,k,_=_||r,t,o,e,c,s,a),b=k.__e,(p=k.ref)&&_.ref!=p&&(w||(w=[]),_.ref&&w.push(_.ref,null,k),w.push(p,k.__c||b,k)),null!=b?(null==m&&(m=b),"function"==typeof k.type&&null!=k.__k&&k.__k===_.__k?k.__d=s=g(k,s,n):s=x(n,k,_,A,b,s),a||"option"!==u.type?"function"==typeof u.type&&(u.__d=s):n.value=""):s&&_.__e==s&&s.parentNode!=n&&(s=d(_));}for(u.__e=m,h=P;h--;)null!=A[h]&&("function"==typeof u.type&&null!=A[h].__e&&A[h].__e==u.__d&&(u.__d=d(i,h+1)),L(A[h],A[h]));if(w)for(h=0;h<w.length;h++)z(w[h],w[++h],w[++h]);}function g(n,l,u){var i,t;for(i=0;i<n.__k.length;i++)(t=n.__k[i])&&(t.__=n,l="function"==typeof t.type?g(t,l,u):x(u,t,t,n.__k,t.__e,l));return l}function x(n,l,u,i,t,o){var r,f,e;if(void 0!==l.__d)r=l.__d,l.__d=void 0;else if(null==u||t!=o||null==t.parentNode)n:if(null==o||o.parentNode!==n)n.appendChild(t),r=null;else {for(f=o,e=0;(f=f.nextSibling)&&e<i.length;e+=2)if(f==t)break n;n.insertBefore(t,o),r=o;}return void 0!==r?r:t.nextSibling}function A(n,l,u,i,t){var o;for(o in u)"children"===o||"key"===o||o in l||C(n,o,null,u[o],i);for(o in l)t&&"function"!=typeof l[o]||"children"===o||"key"===o||"value"===o||"checked"===o||u[o]===l[o]||C(n,o,l[o],u[o],i);}function P(n,l,u){"-"===l[0]?n.setProperty(l,u):n[l]=null==u?"":"number"!=typeof u||e.test(l)?u:u+"px";}function C(n,l,u,i,t){var o;n:if("style"===l)if("string"==typeof u)n.style.cssText=u;else {if("string"==typeof i&&(n.style.cssText=i=""),i)for(l in i)u&&l in u||P(n.style,l,"");if(u)for(l in u)i&&u[l]===i[l]||P(n.style,l,u[l]);}else if("o"===l[0]&&"n"===l[1])o=l!==(l=l.replace(/Capture$/,"")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?i||n.addEventListener(l,o?H:$,o):n.removeEventListener(l,o?H:$,o);else if("dangerouslySetInnerHTML"!==l){if(t)l=l.replace(/xlink[H:h]/,"h").replace(/sName$/,"s");else if("href"!==l&&"list"!==l&&"form"!==l&&"tabIndex"!==l&&"download"!==l&&l in n)try{n[l]=null==u?"":u;break n}catch(n){}"function"==typeof u||(null!=u&&(!1!==u||"a"===l[0]&&"r"===l[1])?n.setAttribute(l,u):n.removeAttribute(l));}}function $(l){this.l[l.type+!1](n.event?n.event(l):l);}function H(l){this.l[l.type+!0](n.event?n.event(l):l);}function I(l,u,i,t,o,r,f,e,s){var a,v,h,d,_,k,b,g,w,x,A,P=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(s=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(a=n.__b)&&a(u);try{n:if("function"==typeof P){if(g=u.props,w=(a=P.contextType)&&t[a.__c],x=a?w?w.props.value:a.__:t,i.__c?b=(v=u.__c=i.__c).__=v.__E:("prototype"in P&&P.prototype.render?u.__c=v=new P(g,x):(u.__c=v=new p(g,x),v.constructor=P,v.render=M),w&&w.sub(v),v.props=g,v.state||(v.state={}),v.context=x,v.__n=t,h=v.__d=!0,v.__h=[]),null==v.__s&&(v.__s=v.state),null!=P.getDerivedStateFromProps&&(v.__s==v.state&&(v.__s=c({},v.__s)),c(v.__s,P.getDerivedStateFromProps(g,v.__s))),d=v.props,_=v.state,h)null==P.getDerivedStateFromProps&&null!=v.componentWillMount&&v.componentWillMount(),null!=v.componentDidMount&&v.__h.push(v.componentDidMount);else {if(null==P.getDerivedStateFromProps&&g!==d&&null!=v.componentWillReceiveProps&&v.componentWillReceiveProps(g,x),!v.__e&&null!=v.shouldComponentUpdate&&!1===v.shouldComponentUpdate(g,v.__s,x)||u.__v===i.__v){v.props=g,v.state=v.__s,u.__v!==i.__v&&(v.__d=!1),v.__v=u,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u);}),v.__h.length&&f.push(v);break n}null!=v.componentWillUpdate&&v.componentWillUpdate(g,v.__s,x),null!=v.componentDidUpdate&&v.__h.push(function(){v.componentDidUpdate(d,_,k);});}v.context=x,v.props=g,v.state=v.__s,(a=n.__r)&&a(u),v.__d=!1,v.__v=u,v.__P=l,a=v.render(v.props,v.state,v.context),v.state=v.__s,null!=v.getChildContext&&(t=c(c({},t),v.getChildContext())),h||null==v.getSnapshotBeforeUpdate||(k=v.getSnapshotBeforeUpdate(d,_)),A=null!=a&&a.type===y&&null==a.key?a.props.children:a,m(l,Array.isArray(A)?A:[A],u,i,t,o,r,f,e,s),v.base=u.__e,u.__h=null,v.__h.length&&f.push(v),b&&(v.__E=v.__=null),v.__e=!1;}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=j(i.__e,u,i,t,o,r,f,s);(a=n.diffed)&&a(u);}catch(l){u.__v=null,(s||null!=r)&&(u.__e=e,u.__h=!!s,r[r.indexOf(e)]=null),n.__e(l,u,i);}}function T(l,u){n.__c&&n.__c(u,l),l.some(function(u){try{l=u.__h,u.__h=[],l.some(function(n){n.call(u);});}catch(l){n.__e(l,u.__v);}});}function j(n,l,u,i,t,o,e,c){var a,v,h,y,p=u.props,d=l.props,_=l.type,k=0;if("svg"===_&&(t=!0),null!=o)for(;k<o.length;k++)if((a=o[k])&&(a===n||(_?a.localName==_:3==a.nodeType))){n=a,o[k]=null;break}if(null==n){if(null===_)return document.createTextNode(d);n=t?document.createElementNS("http://www.w3.org/2000/svg",_):document.createElement(_,d.is&&d),o=null,c=!1;}if(null===_)p===d||c&&n.data===d||(n.data=d);else {if(o=o&&f.slice.call(n.childNodes),v=(p=u.props||r).dangerouslySetInnerHTML,h=d.dangerouslySetInnerHTML,!c){if(null!=o)for(p={},y=0;y<n.attributes.length;y++)p[n.attributes[y].name]=n.attributes[y].value;(h||v)&&(h&&(v&&h.__html==v.__html||h.__html===n.innerHTML)||(n.innerHTML=h&&h.__html||""));}if(A(n,d,p,t,c),h)l.__k=[];else if(k=l.props.children,m(n,Array.isArray(k)?k:[k],l,u,i,t&&"foreignObject"!==_,o,e,n.firstChild,c),null!=o)for(k=o.length;k--;)null!=o[k]&&s(o[k]);c||("value"in d&&void 0!==(k=d.value)&&(k!==n.value||"progress"===_&&!k)&&C(n,"value",k,p.value,!1),"checked"in d&&void 0!==(k=d.checked)&&k!==n.checked&&C(n,"checked",k,p.checked,!1));}return n}function z(l,u,i){try{"function"==typeof l?l(u):l.current=u;}catch(l){n.__e(l,i);}}function L(l,u,i){var t,o,r;if(n.unmount&&n.unmount(l),(t=l.ref)&&(t.current&&t.current!==l.__e||z(t,null,u)),i||"function"==typeof l.type||(i=null!=(o=l.__e)),l.__e=l.__d=void 0,null!=(t=l.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount();}catch(l){n.__e(l,u);}t.base=t.__P=null;}if(t=l.__k)for(r=0;r<t.length;r++)t[r]&&L(t[r],u,i);null!=o&&s(o);}function M(n,l,u){return this.constructor(n,u)}function N(l,u,i){var t,o,e;n.__&&n.__(l,u),o=(t="function"==typeof i)?null:i&&i.__k||u.__k,e=[],I(u,l=(!t&&i||u).__k=a(y,null,[l]),o||r,r,void 0!==u.ownerSVGElement,!t&&i?[i]:o?null:u.firstChild?f.slice.call(u.childNodes):null,e,!t&&i?i:o?o.__e:u.firstChild,t),T(e,l);}n={__e:function(n,l){for(var u,i,t;l=l.__;)if((u=l.__c)&&!u.__)try{if((i=u.constructor)&&null!=i.getDerivedStateFromError&&(u.setState(i.getDerivedStateFromError(n)),t=u.__d),null!=u.componentDidCatch&&(u.componentDidCatch(n),t=u.__d),t)return u.__E=u}catch(l){n=l;}throw n},__v:0},p.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=c({},this.state),"function"==typeof n&&(n=n(c({},u),this.props)),n&&c(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),k(this));},p.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),k(this));},p.prototype.render=y,u=[],i="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,b.__r=0,o=0;
3249
+ var n,l,u,t,r,o,e={},c=[],s=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function a(n,l){for(var u in l)n[u]=l[u];return n}function h(n){var l=n.parentNode;l&&l.removeChild(n);}function v(l,u,i){var t,r,o,f={};for(o in u)"key"==o?t=u[o]:"ref"==o?r=u[o]:f[o]=u[o];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),"function"==typeof l&&null!=l.defaultProps)for(o in l.defaultProps)void 0===f[o]&&(f[o]=l.defaultProps[o]);return y(l,f,t,r,null)}function y(n,i,t,r,o){var f={type:n,props:i,key:t,ref:r,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==o?++u:o};return null==o&&null!=l.vnode&&l.vnode(f),f}function d(n){return n.children}function _(n,l){this.props=n,this.context=l;}function k(n,l){if(null==l)return n.__?k(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return "function"==typeof n.type?k(n):null}function b(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return b(n)}}function m(n){(!n.__d&&(n.__d=!0)&&t.push(n)&&!g.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||r)(g);}function g(){for(var n;g.__r=t.length;)n=t.sort(function(n,l){return n.__v.__b-l.__v.__b}),t=[],n.some(function(n){var l,u,i,t,r,o;n.__d&&(r=(t=(l=n).__v).__e,(o=l.__P)&&(u=[],(i=a({},t)).__v=t.__v+1,j(o,t,i,l.__n,void 0!==o.ownerSVGElement,null!=t.__h?[r]:null,u,null==r?k(t):r,t.__h),z(u,t),t.__e!=r&&b(t)));});}function w(n,l,u,i,t,r,o,f,s,a){var h,v,p,_,b,m,g,w=i&&i.__k||c,A=w.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(_=u.__k[h]=null==(_=l[h])||"boolean"==typeof _?null:"string"==typeof _||"number"==typeof _||"bigint"==typeof _?y(null,_,null,null,_):Array.isArray(_)?y(d,{children:_},null,null,null):_.__b>0?y(_.type,_.props,_.key,null,_.__v):_)){if(_.__=u,_.__b=u.__b+1,null===(p=w[h])||p&&_.key==p.key&&_.type===p.type)w[h]=void 0;else for(v=0;v<A;v++){if((p=w[v])&&_.key==p.key&&_.type===p.type){w[v]=void 0;break}p=null;}j(n,_,p=p||e,t,r,o,f,s,a),b=_.__e,(v=_.ref)&&p.ref!=v&&(g||(g=[]),p.ref&&g.push(p.ref,null,_),g.push(v,_.__c||b,_)),null!=b?(null==m&&(m=b),"function"==typeof _.type&&_.__k===p.__k?_.__d=s=x(_,s,n):s=P(n,_,p,w,b,s),"function"==typeof u.type&&(u.__d=s)):s&&p.__e==s&&s.parentNode!=n&&(s=k(p));}for(u.__e=m,h=A;h--;)null!=w[h]&&("function"==typeof u.type&&null!=w[h].__e&&w[h].__e==u.__d&&(u.__d=k(i,h+1)),N(w[h],w[h]));if(g)for(h=0;h<g.length;h++)M(g[h],g[++h],g[++h]);}function x(n,l,u){for(var i,t=n.__k,r=0;t&&r<t.length;r++)(i=t[r])&&(i.__=n,l="function"==typeof i.type?x(i,l,u):P(u,i,i,t,i.__e,l));return l}function P(n,l,u,i,t,r){var o,f,e;if(void 0!==l.__d)o=l.__d,l.__d=void 0;else if(null==u||t!=r||null==t.parentNode)n:if(null==r||r.parentNode!==n)n.appendChild(t),o=null;else {for(f=r,e=0;(f=f.nextSibling)&&e<i.length;e+=2)if(f==t)break n;n.insertBefore(t,r),o=r;}return void 0!==o?o:t.nextSibling}function C(n,l,u,i,t){var r;for(r in u)"children"===r||"key"===r||r in l||H(n,r,null,u[r],i);for(r in l)t&&"function"!=typeof l[r]||"children"===r||"key"===r||"value"===r||"checked"===r||u[r]===l[r]||H(n,r,l[r],u[r],i);}function $(n,l,u){"-"===l[0]?n.setProperty(l,u):n[l]=null==u?"":"number"!=typeof u||s.test(l)?u:u+"px";}function H(n,l,u,i,t){var r;n:if("style"===l)if("string"==typeof u)n.style.cssText=u;else {if("string"==typeof i&&(n.style.cssText=i=""),i)for(l in i)u&&l in u||$(n.style,l,"");if(u)for(l in u)i&&u[l]===i[l]||$(n.style,l,u[l]);}else if("o"===l[0]&&"n"===l[1])r=l!==(l=l.replace(/Capture$/,"")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+r]=u,u?i||n.addEventListener(l,r?T:I,r):n.removeEventListener(l,r?T:I,r);else if("dangerouslySetInnerHTML"!==l){if(t)l=l.replace(/xlink[H:h]/,"h").replace(/sName$/,"s");else if("href"!==l&&"list"!==l&&"form"!==l&&"tabIndex"!==l&&"download"!==l&&l in n)try{n[l]=null==u?"":u;break n}catch(n){}"function"==typeof u||(null!=u&&(!1!==u||"a"===l[0]&&"r"===l[1])?n.setAttribute(l,u):n.removeAttribute(l));}}function I(n){this.l[n.type+!1](l.event?l.event(n):n);}function T(n){this.l[n.type+!0](l.event?l.event(n):n);}function j(n,u,i,t,r,o,f,e,c){var s,h,v,y,p,k,b,m,g,x,A,P=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,o=[e]),(s=l.__b)&&s(u);try{n:if("function"==typeof P){if(m=u.props,g=(s=P.contextType)&&t[s.__c],x=s?g?g.props.value:s.__:t,i.__c?b=(h=u.__c=i.__c).__=h.__E:("prototype"in P&&P.prototype.render?u.__c=h=new P(m,x):(u.__c=h=new _(m,x),h.constructor=P,h.render=O),g&&g.sub(h),h.props=m,h.state||(h.state={}),h.context=x,h.__n=t,v=h.__d=!0,h.__h=[]),null==h.__s&&(h.__s=h.state),null!=P.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=a({},h.__s)),a(h.__s,P.getDerivedStateFromProps(m,h.__s))),y=h.props,p=h.state,v)null==P.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else {if(null==P.getDerivedStateFromProps&&m!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(m,x),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(m,h.__s,x)||u.__v===i.__v){h.props=m,h.state=h.__s,u.__v!==i.__v&&(h.__d=!1),h.__v=u,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u);}),h.__h.length&&f.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(m,h.__s,x),null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,p,k);});}h.context=x,h.props=m,h.state=h.__s,(s=l.__r)&&s(u),h.__d=!1,h.__v=u,h.__P=n,s=h.render(h.props,h.state,h.context),h.state=h.__s,null!=h.getChildContext&&(t=a(a({},t),h.getChildContext())),v||null==h.getSnapshotBeforeUpdate||(k=h.getSnapshotBeforeUpdate(y,p)),A=null!=s&&s.type===d&&null==s.key?s.props.children:s,w(n,Array.isArray(A)?A:[A],u,i,t,r,o,f,e,c),h.base=u.__e,u.__h=null,h.__h.length&&f.push(h),b&&(h.__E=h.__=null),h.__e=!1;}else null==o&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=L(i.__e,u,i,t,r,o,f,c);(s=l.diffed)&&s(u);}catch(n){u.__v=null,(c||null!=o)&&(u.__e=e,u.__h=!!c,o[o.indexOf(e)]=null),l.__e(n,u,i);}}function z(n,u){l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u);});}catch(n){l.__e(n,u.__v);}});}function L(l,u,i,t,r,o,f,c){var s,a,v,y=i.props,p=u.props,d=u.type,_=0;if("svg"===d&&(r=!0),null!=o)for(;_<o.length;_++)if((s=o[_])&&"setAttribute"in s==!!d&&(d?s.localName===d:3===s.nodeType)){l=s,o[_]=null;break}if(null==l){if(null===d)return document.createTextNode(p);l=r?document.createElementNS("http://www.w3.org/2000/svg",d):document.createElement(d,p.is&&p),o=null,c=!1;}if(null===d)y===p||c&&l.data===p||(l.data=p);else {if(o=o&&n.call(l.childNodes),a=(y=i.props||e).dangerouslySetInnerHTML,v=p.dangerouslySetInnerHTML,!c){if(null!=o)for(y={},_=0;_<l.attributes.length;_++)y[l.attributes[_].name]=l.attributes[_].value;(v||a)&&(v&&(a&&v.__html==a.__html||v.__html===l.innerHTML)||(l.innerHTML=v&&v.__html||""));}if(C(l,p,y,r,c),v)u.__k=[];else if(_=u.props.children,w(l,Array.isArray(_)?_:[_],u,i,t,r&&"foreignObject"!==d,o,f,o?o[0]:i.__k&&k(i,0),c),null!=o)for(_=o.length;_--;)null!=o[_]&&h(o[_]);c||("value"in p&&void 0!==(_=p.value)&&(_!==y.value||_!==l.value||"progress"===d&&!_)&&H(l,"value",_,y.value,!1),"checked"in p&&void 0!==(_=p.checked)&&_!==l.checked&&H(l,"checked",_,y.checked,!1));}return l}function M(n,u,i){try{"function"==typeof n?n(u):n.current=u;}catch(n){l.__e(n,i);}}function N(n,u,i){var t,r;if(l.unmount&&l.unmount(n),(t=n.ref)&&(t.current&&t.current!==n.__e||M(t,null,u)),null!=(t=n.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount();}catch(n){l.__e(n,u);}t.base=t.__P=null;}if(t=n.__k)for(r=0;r<t.length;r++)t[r]&&N(t[r],u,"function"!=typeof n.type);i||null==n.__e||h(n.__e),n.__e=n.__d=void 0;}function O(n,l,u){return this.constructor(n,u)}function S(u,i,t){var r,o,f;l.__&&l.__(u,i),o=(r="function"==typeof t)?null:t&&t.__k||i.__k,f=[],j(i,u=(!r&&t||i).__k=v(d,null,[u]),o||e,e,void 0!==i.ownerSVGElement,!r&&t?[t]:o?null:i.firstChild?n.call(i.childNodes):null,f,!r&&t?t:o?o.__e:i.firstChild,r),z(f,u);}n=c.slice,l={__e:function(n,l){for(var u,i,t;l=l.__;)if((u=l.__c)&&!u.__)try{if((i=u.constructor)&&null!=i.getDerivedStateFromError&&(u.setState(i.getDerivedStateFromError(n)),t=u.__d),null!=u.componentDidCatch&&(u.componentDidCatch(n),t=u.__d),t)return u.__E=u}catch(l){n=l;}throw n}},u=0,_.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=a({},this.state),"function"==typeof n&&(n=n(a({},u),this.props)),n&&a(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),m(this));},_.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),m(this));},_.prototype.render=d,t=[],r="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,g.__r=0;
2916
3250
 
2917
3251
  var HIGHLIGHT_PRE_TAG = '__aa-highlight__';
2918
3252
  var HIGHLIGHT_POST_TAG = '__/aa-highlight__';
@@ -2969,32 +3303,32 @@
2969
3303
  return parts.get();
2970
3304
  }
2971
3305
 
2972
- function _toConsumableArray$3(arr) {
2973
- return _arrayWithoutHoles$3(arr) || _iterableToArray$3(arr) || _unsupportedIterableToArray$4(arr) || _nonIterableSpread$3();
3306
+ function _toConsumableArray$2(arr) {
3307
+ return _arrayWithoutHoles$2(arr) || _iterableToArray$2(arr) || _unsupportedIterableToArray$2(arr) || _nonIterableSpread$2();
2974
3308
  }
2975
3309
 
2976
- function _nonIterableSpread$3() {
3310
+ function _nonIterableSpread$2() {
2977
3311
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
2978
3312
  }
2979
3313
 
2980
- function _unsupportedIterableToArray$4(o, minLen) {
3314
+ function _unsupportedIterableToArray$2(o, minLen) {
2981
3315
  if (!o) return;
2982
- if (typeof o === "string") return _arrayLikeToArray$4(o, minLen);
3316
+ if (typeof o === "string") return _arrayLikeToArray$2(o, minLen);
2983
3317
  var n = Object.prototype.toString.call(o).slice(8, -1);
2984
3318
  if (n === "Object" && o.constructor) n = o.constructor.name;
2985
3319
  if (n === "Map" || n === "Set") return Array.from(o);
2986
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$4(o, minLen);
3320
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen);
2987
3321
  }
2988
3322
 
2989
- function _iterableToArray$3(iter) {
2990
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
3323
+ function _iterableToArray$2(iter) {
3324
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
2991
3325
  }
2992
3326
 
2993
- function _arrayWithoutHoles$3(arr) {
2994
- if (Array.isArray(arr)) return _arrayLikeToArray$4(arr);
3327
+ function _arrayWithoutHoles$2(arr) {
3328
+ if (Array.isArray(arr)) return _arrayLikeToArray$2(arr);
2995
3329
  }
2996
3330
 
2997
- function _arrayLikeToArray$4(arr, len) {
3331
+ function _arrayLikeToArray$2(arr, len) {
2998
3332
  if (len == null || len > arr.length) len = arr.length;
2999
3333
 
3000
3334
  for (var i = 0, arr2 = new Array(len); i < len; i++) {
@@ -3007,10 +3341,10 @@
3007
3341
  var hit = _ref.hit,
3008
3342
  attribute = _ref.attribute;
3009
3343
  var path = Array.isArray(attribute) ? attribute : [attribute];
3010
- var highlightedValue = getAttributeValueByPath(hit, ['_highlightResult'].concat(_toConsumableArray$3(path), ['value']));
3344
+ var highlightedValue = getAttributeValueByPath(hit, ['_highlightResult'].concat(_toConsumableArray$2(path), ['value']));
3011
3345
 
3012
3346
  if (typeof highlightedValue !== 'string') {
3013
- "development" !== 'production' ? warn(false, "The attribute \"".concat(path.join('.'), "\" described by the path ").concat(JSON.stringify(path), " does not exist on the hit. Did you set it in `attributesToHighlight`?") + '\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/') : void 0 ;
3347
+ "development" !== 'production' ? warn(false, "The attribute \"".concat(path.join('.'), "\" described by the path ").concat(JSON.stringify(path), " does not exist on the hit. Did you set it in `attributesToHighlight`?") + '\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToHighlight/') : void 0 ;
3014
3348
  highlightedValue = getAttributeValueByPath(hit, path) || '';
3015
3349
  }
3016
3350
 
@@ -3050,32 +3384,36 @@
3050
3384
  return current.isHighlighted;
3051
3385
  }
3052
3386
 
3053
- function ownKeys$d(object, enumerableOnly) {
3387
+ function ownKeys$2(object, enumerableOnly) {
3054
3388
  var keys = Object.keys(object);
3055
3389
 
3056
3390
  if (Object.getOwnPropertySymbols) {
3057
3391
  var symbols = Object.getOwnPropertySymbols(object);
3058
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
3059
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
3060
- });
3392
+
3393
+ if (enumerableOnly) {
3394
+ symbols = symbols.filter(function (sym) {
3395
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
3396
+ });
3397
+ }
3398
+
3061
3399
  keys.push.apply(keys, symbols);
3062
3400
  }
3063
3401
 
3064
3402
  return keys;
3065
3403
  }
3066
3404
 
3067
- function _objectSpread$c(target) {
3405
+ function _objectSpread$2(target) {
3068
3406
  for (var i = 1; i < arguments.length; i++) {
3069
3407
  var source = arguments[i] != null ? arguments[i] : {};
3070
3408
 
3071
3409
  if (i % 2) {
3072
- ownKeys$d(Object(source), true).forEach(function (key) {
3073
- _defineProperty$d(target, key, source[key]);
3410
+ ownKeys$2(Object(source), true).forEach(function (key) {
3411
+ _defineProperty$2(target, key, source[key]);
3074
3412
  });
3075
3413
  } else if (Object.getOwnPropertyDescriptors) {
3076
3414
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
3077
3415
  } else {
3078
- ownKeys$d(Object(source)).forEach(function (key) {
3416
+ ownKeys$2(Object(source)).forEach(function (key) {
3079
3417
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
3080
3418
  });
3081
3419
  }
@@ -3084,7 +3422,7 @@
3084
3422
  return target;
3085
3423
  }
3086
3424
 
3087
- function _defineProperty$d(obj, key, value) {
3425
+ function _defineProperty$2(obj, key, value) {
3088
3426
  if (key in obj) {
3089
3427
  Object.defineProperty(obj, key, {
3090
3428
  value: value,
@@ -3104,14 +3442,14 @@
3104
3442
  return part.isHighlighted;
3105
3443
  })) {
3106
3444
  return parts.map(function (part) {
3107
- return _objectSpread$c(_objectSpread$c({}, part), {}, {
3445
+ return _objectSpread$2(_objectSpread$2({}, part), {}, {
3108
3446
  isHighlighted: false
3109
3447
  });
3110
3448
  });
3111
3449
  }
3112
3450
 
3113
3451
  return parts.map(function (part, i) {
3114
- return _objectSpread$c(_objectSpread$c({}, part), {}, {
3452
+ return _objectSpread$2(_objectSpread$2({}, part), {}, {
3115
3453
  isHighlighted: !isPartHighlighted(parts, i)
3116
3454
  });
3117
3455
  });
@@ -3121,32 +3459,32 @@
3121
3459
  return reverseHighlightedParts(parseAlgoliaHitHighlight(props));
3122
3460
  }
3123
3461
 
3124
- function _toConsumableArray$4(arr) {
3125
- return _arrayWithoutHoles$4(arr) || _iterableToArray$4(arr) || _unsupportedIterableToArray$5(arr) || _nonIterableSpread$4();
3462
+ function _toConsumableArray$1(arr) {
3463
+ return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _unsupportedIterableToArray$1(arr) || _nonIterableSpread$1();
3126
3464
  }
3127
3465
 
3128
- function _nonIterableSpread$4() {
3466
+ function _nonIterableSpread$1() {
3129
3467
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3130
3468
  }
3131
3469
 
3132
- function _unsupportedIterableToArray$5(o, minLen) {
3470
+ function _unsupportedIterableToArray$1(o, minLen) {
3133
3471
  if (!o) return;
3134
- if (typeof o === "string") return _arrayLikeToArray$5(o, minLen);
3472
+ if (typeof o === "string") return _arrayLikeToArray$1(o, minLen);
3135
3473
  var n = Object.prototype.toString.call(o).slice(8, -1);
3136
3474
  if (n === "Object" && o.constructor) n = o.constructor.name;
3137
3475
  if (n === "Map" || n === "Set") return Array.from(o);
3138
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$5(o, minLen);
3476
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen);
3139
3477
  }
3140
3478
 
3141
- function _iterableToArray$4(iter) {
3142
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
3479
+ function _iterableToArray$1(iter) {
3480
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
3143
3481
  }
3144
3482
 
3145
- function _arrayWithoutHoles$4(arr) {
3146
- if (Array.isArray(arr)) return _arrayLikeToArray$5(arr);
3483
+ function _arrayWithoutHoles$1(arr) {
3484
+ if (Array.isArray(arr)) return _arrayLikeToArray$1(arr);
3147
3485
  }
3148
3486
 
3149
- function _arrayLikeToArray$5(arr, len) {
3487
+ function _arrayLikeToArray$1(arr, len) {
3150
3488
  if (len == null || len > arr.length) len = arr.length;
3151
3489
 
3152
3490
  for (var i = 0, arr2 = new Array(len); i < len; i++) {
@@ -3159,10 +3497,10 @@
3159
3497
  var hit = _ref.hit,
3160
3498
  attribute = _ref.attribute;
3161
3499
  var path = Array.isArray(attribute) ? attribute : [attribute];
3162
- var highlightedValue = getAttributeValueByPath(hit, ['_snippetResult'].concat(_toConsumableArray$4(path), ['value']));
3500
+ var highlightedValue = getAttributeValueByPath(hit, ['_snippetResult'].concat(_toConsumableArray$1(path), ['value']));
3163
3501
 
3164
3502
  if (typeof highlightedValue !== 'string') {
3165
- "development" !== 'production' ? warn(false, "The attribute \"".concat(path.join('.'), "\" described by the path ").concat(JSON.stringify(path), " does not exist on the hit. Did you set it in `attributesToSnippet`?") + '\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/') : void 0 ;
3503
+ "development" !== 'production' ? warn(false, "The attribute \"".concat(path.join('.'), "\" described by the path ").concat(JSON.stringify(path), " does not exist on the hit. Did you set it in `attributesToSnippet`?") + '\nSee https://www.algolia.com/doc/api-reference/api-parameters/attributesToSnippet/') : void 0 ;
3166
3504
  highlightedValue = getAttributeValueByPath(hit, path) || '';
3167
3505
  }
3168
3506
 
@@ -3175,32 +3513,36 @@
3175
3513
  return reverseHighlightedParts(parseAlgoliaHitSnippet(props));
3176
3514
  }
3177
3515
 
3178
- function ownKeys$e(object, enumerableOnly) {
3516
+ function ownKeys$1(object, enumerableOnly) {
3179
3517
  var keys = Object.keys(object);
3180
3518
 
3181
3519
  if (Object.getOwnPropertySymbols) {
3182
3520
  var symbols = Object.getOwnPropertySymbols(object);
3183
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
3184
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
3185
- });
3521
+
3522
+ if (enumerableOnly) {
3523
+ symbols = symbols.filter(function (sym) {
3524
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
3525
+ });
3526
+ }
3527
+
3186
3528
  keys.push.apply(keys, symbols);
3187
3529
  }
3188
3530
 
3189
3531
  return keys;
3190
3532
  }
3191
3533
 
3192
- function _objectSpread$d(target) {
3534
+ function _objectSpread$1(target) {
3193
3535
  for (var i = 1; i < arguments.length; i++) {
3194
3536
  var source = arguments[i] != null ? arguments[i] : {};
3195
3537
 
3196
3538
  if (i % 2) {
3197
- ownKeys$e(Object(source), true).forEach(function (key) {
3198
- _defineProperty$e(target, key, source[key]);
3539
+ ownKeys$1(Object(source), true).forEach(function (key) {
3540
+ _defineProperty$1(target, key, source[key]);
3199
3541
  });
3200
3542
  } else if (Object.getOwnPropertyDescriptors) {
3201
3543
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
3202
3544
  } else {
3203
- ownKeys$e(Object(source)).forEach(function (key) {
3545
+ ownKeys$1(Object(source)).forEach(function (key) {
3204
3546
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
3205
3547
  });
3206
3548
  }
@@ -3209,7 +3551,7 @@
3209
3551
  return target;
3210
3552
  }
3211
3553
 
3212
- function _defineProperty$e(obj, key, value) {
3554
+ function _defineProperty$1(obj, key, value) {
3213
3555
  if (key in obj) {
3214
3556
  Object.defineProperty(obj, key, {
3215
3557
  value: value,
@@ -3247,41 +3589,45 @@
3247
3589
 
3248
3590
  return function createSpecifiedRequester(requesterParams) {
3249
3591
  return function requester(requestParams) {
3250
- return _objectSpread$d(_objectSpread$d({
3592
+ return _objectSpread$1(_objectSpread$1({
3251
3593
  execute: execute
3252
3594
  }, requesterParams), requestParams);
3253
3595
  };
3254
3596
  };
3255
3597
  }
3256
3598
 
3257
- var version = '1.4.0';
3599
+ var _excluded$1 = ["params"];
3258
3600
 
3259
- function ownKeys$f(object, enumerableOnly) {
3601
+ function ownKeys(object, enumerableOnly) {
3260
3602
  var keys = Object.keys(object);
3261
3603
 
3262
3604
  if (Object.getOwnPropertySymbols) {
3263
3605
  var symbols = Object.getOwnPropertySymbols(object);
3264
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
3265
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
3266
- });
3606
+
3607
+ if (enumerableOnly) {
3608
+ symbols = symbols.filter(function (sym) {
3609
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
3610
+ });
3611
+ }
3612
+
3267
3613
  keys.push.apply(keys, symbols);
3268
3614
  }
3269
3615
 
3270
3616
  return keys;
3271
3617
  }
3272
3618
 
3273
- function _objectSpread$e(target) {
3619
+ function _objectSpread(target) {
3274
3620
  for (var i = 1; i < arguments.length; i++) {
3275
3621
  var source = arguments[i] != null ? arguments[i] : {};
3276
3622
 
3277
3623
  if (i % 2) {
3278
- ownKeys$f(Object(source), true).forEach(function (key) {
3279
- _defineProperty$f(target, key, source[key]);
3624
+ ownKeys(Object(source), true).forEach(function (key) {
3625
+ _defineProperty(target, key, source[key]);
3280
3626
  });
3281
3627
  } else if (Object.getOwnPropertyDescriptors) {
3282
3628
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
3283
3629
  } else {
3284
- ownKeys$f(Object(source)).forEach(function (key) {
3630
+ ownKeys(Object(source)).forEach(function (key) {
3285
3631
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
3286
3632
  });
3287
3633
  }
@@ -3290,7 +3636,7 @@
3290
3636
  return target;
3291
3637
  }
3292
3638
 
3293
- function _defineProperty$f(obj, key, value) {
3639
+ function _defineProperty(obj, key, value) {
3294
3640
  if (key in obj) {
3295
3641
  Object.defineProperty(obj, key, {
3296
3642
  value: value,
@@ -3305,10 +3651,10 @@
3305
3651
  return obj;
3306
3652
  }
3307
3653
 
3308
- function _objectWithoutProperties$4(source, excluded) {
3654
+ function _objectWithoutProperties(source, excluded) {
3309
3655
  if (source == null) return {};
3310
3656
 
3311
- var target = _objectWithoutPropertiesLoose$4(source, excluded);
3657
+ var target = _objectWithoutPropertiesLoose(source, excluded);
3312
3658
 
3313
3659
  var key, i;
3314
3660
 
@@ -3326,7 +3672,7 @@
3326
3672
  return target;
3327
3673
  }
3328
3674
 
3329
- function _objectWithoutPropertiesLoose$4(source, excluded) {
3675
+ function _objectWithoutPropertiesLoose(source, excluded) {
3330
3676
  if (source == null) return {};
3331
3677
  var target = {};
3332
3678
  var sourceKeys = Object.keys(source);
@@ -3341,32 +3687,32 @@
3341
3687
  return target;
3342
3688
  }
3343
3689
 
3344
- function _toConsumableArray$5(arr) {
3345
- return _arrayWithoutHoles$5(arr) || _iterableToArray$5(arr) || _unsupportedIterableToArray$6(arr) || _nonIterableSpread$5();
3690
+ function _toConsumableArray(arr) {
3691
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
3346
3692
  }
3347
3693
 
3348
- function _nonIterableSpread$5() {
3694
+ function _nonIterableSpread() {
3349
3695
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
3350
3696
  }
3351
3697
 
3352
- function _unsupportedIterableToArray$6(o, minLen) {
3698
+ function _unsupportedIterableToArray(o, minLen) {
3353
3699
  if (!o) return;
3354
- if (typeof o === "string") return _arrayLikeToArray$6(o, minLen);
3700
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
3355
3701
  var n = Object.prototype.toString.call(o).slice(8, -1);
3356
3702
  if (n === "Object" && o.constructor) n = o.constructor.name;
3357
3703
  if (n === "Map" || n === "Set") return Array.from(o);
3358
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$6(o, minLen);
3704
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
3359
3705
  }
3360
3706
 
3361
- function _iterableToArray$5(iter) {
3362
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
3707
+ function _iterableToArray(iter) {
3708
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
3363
3709
  }
3364
3710
 
3365
- function _arrayWithoutHoles$5(arr) {
3366
- if (Array.isArray(arr)) return _arrayLikeToArray$6(arr);
3711
+ function _arrayWithoutHoles(arr) {
3712
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
3367
3713
  }
3368
3714
 
3369
- function _arrayLikeToArray$6(arr, len) {
3715
+ function _arrayLikeToArray(arr, len) {
3370
3716
  if (len == null || len > arr.length) len = arr.length;
3371
3717
 
3372
3718
  for (var i = 0, arr2 = new Array(len); i < len; i++) {
@@ -3382,10 +3728,7 @@
3382
3728
  userAgents = _ref$userAgents === void 0 ? [] : _ref$userAgents;
3383
3729
 
3384
3730
  if (typeof searchClient.addAlgoliaAgent === 'function') {
3385
- var algoliaAgents = [{
3386
- segment: 'autocomplete-core',
3387
- version: version
3388
- }].concat(_toConsumableArray$5(userAgents));
3731
+ var algoliaAgents = [].concat(_toConsumableArray(userAgents$1), _toConsumableArray(userAgents));
3389
3732
  algoliaAgents.forEach(function (_ref2) {
3390
3733
  var segment = _ref2.segment,
3391
3734
  version = _ref2.version;
@@ -3395,10 +3738,10 @@
3395
3738
 
3396
3739
  return searchClient.search(queries.map(function (searchParameters) {
3397
3740
  var params = searchParameters.params,
3398
- headers = _objectWithoutProperties$4(searchParameters, ["params"]);
3741
+ headers = _objectWithoutProperties(searchParameters, _excluded$1);
3399
3742
 
3400
- return _objectSpread$e(_objectSpread$e({}, headers), {}, {
3401
- params: _objectSpread$e({
3743
+ return _objectSpread(_objectSpread({}, headers), {}, {
3744
+ params: _objectSpread({
3402
3745
  hitsPerPage: 5,
3403
3746
  highlightPreTag: HIGHLIGHT_PRE_TAG,
3404
3747
  highlightPostTag: HIGHLIGHT_POST_TAG
@@ -3485,6 +3828,7 @@
3485
3828
  };
3486
3829
  }
3487
3830
 
3831
+ var _excluded = ["classNames", "container", "getEnvironmentProps", "getFormProps", "getInputProps", "getItemProps", "getLabelProps", "getListProps", "getPanelProps", "getRootProps", "panelContainer", "panelPlacement", "render", "renderNoResults", "renderer", "detachedMediaQuery", "components", "translations"];
3488
3832
  var defaultClassNames = {
3489
3833
  clearButton: 'aa-ClearButton',
3490
3834
  detachedCancelButton: 'aa-DetachedCancelButton',
@@ -3515,12 +3859,12 @@
3515
3859
 
3516
3860
  var defaultRender = function defaultRender(_ref, root) {
3517
3861
  var children = _ref.children;
3518
- N(children, root);
3862
+ S(children, root);
3519
3863
  };
3520
3864
 
3521
3865
  var defaultRenderer = {
3522
- createElement: a,
3523
- Fragment: y
3866
+ createElement: v,
3867
+ Fragment: d
3524
3868
  };
3525
3869
  function getDefaultOptions(options) {
3526
3870
  var _core$id;
@@ -3543,7 +3887,7 @@
3543
3887
  detachedMediaQuery = options.detachedMediaQuery,
3544
3888
  components = options.components,
3545
3889
  translations = options.translations,
3546
- core = _objectWithoutProperties(options, ["classNames", "container", "getEnvironmentProps", "getFormProps", "getInputProps", "getItemProps", "getLabelProps", "getListProps", "getPanelProps", "getRootProps", "panelContainer", "panelPlacement", "render", "renderNoResults", "renderer", "detachedMediaQuery", "components", "translations"]);
3890
+ core = _objectWithoutProperties$4(options, _excluded);
3547
3891
  /* eslint-disable no-restricted-globals */
3548
3892
 
3549
3893
 
@@ -3810,6 +4154,11 @@
3810
4154
  }, autocompleteScopeApi), dom.panel);
3811
4155
  }
3812
4156
 
4157
+ var userAgents = [{
4158
+ segment: 'autocomplete-js',
4159
+ version: version
4160
+ }];
4161
+
3813
4162
  function autocomplete(options) {
3814
4163
  var _createEffectWrapper = createEffectWrapper(),
3815
4164
  runEffect = _createEffectWrapper.runEffect,
@@ -3855,6 +4204,10 @@
3855
4204
 
3856
4205
  var hasNoResultsTemplate = Boolean(hasNoResultsSourceTemplateRef.current || props.value.renderer.renderNoResults);
3857
4206
  return !hasItems && hasNoResultsTemplate || hasItems;
4207
+ },
4208
+ __autocomplete_metadata: {
4209
+ userAgents: userAgents,
4210
+ options: options
3858
4211
  }
3859
4212
  }));
3860
4213
  });
@@ -3941,7 +4294,7 @@
3941
4294
  setProperties(props.value.core.environment, environmentProps);
3942
4295
  return function () {
3943
4296
  setProperties(props.value.core.environment, Object.keys(environmentProps).reduce(function (acc, key) {
3944
- return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty({}, key, undefined));
4297
+ return _objectSpread2(_objectSpread2({}, acc), {}, _defineProperty$g({}, key, undefined));
3945
4298
  }, {}));
3946
4299
  };
3947
4300
  });
@@ -4098,14 +4451,9 @@
4098
4451
  });
4099
4452
  }
4100
4453
 
4101
- var version$1 = '1.4.0';
4102
-
4103
4454
  var createAlgoliaRequester = createRequester(function (params) {
4104
4455
  return fetchAlgoliaResults(_objectSpread2(_objectSpread2({}, params), {}, {
4105
- userAgents: [{
4106
- segment: 'autocomplete-js',
4107
- version: version$1
4108
- }]
4456
+ userAgents: userAgents
4109
4457
  }));
4110
4458
  });
4111
4459
 
@@ -4145,5 +4493,5 @@
4145
4493
 
4146
4494
  Object.defineProperty(exports, '__esModule', { value: true });
4147
4495
 
4148
- })));
4496
+ }));
4149
4497
  //# sourceMappingURL=index.development.js.map