@algolia/autocomplete-js 1.5.1 → 1.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /*! @algolia/autocomplete-js 1.5.1 | 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) :
@@ -335,7 +335,7 @@
335
335
 
336
336
  var noop = function noop() {};
337
337
 
338
- var version = '1.5.1';
338
+ var version = '1.5.2';
339
339
 
340
340
  var userAgents$1 = [{
341
341
  segment: 'autocomplete-core',
@@ -370,180 +370,79 @@
370
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 ownKeys$f(object, enumerableOnly) {
374
- var keys = Object.keys(object);
375
-
376
- if (Object.getOwnPropertySymbols) {
377
- var symbols = Object.getOwnPropertySymbols(object);
378
-
379
- if (enumerableOnly) {
380
- symbols = symbols.filter(function (sym) {
381
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
382
- });
383
- }
384
-
385
- keys.push.apply(keys, symbols);
386
- }
387
-
388
- return keys;
389
- }
390
-
391
- function _objectSpread$f(target) {
392
- for (var i = 1; i < arguments.length; i++) {
393
- var source = arguments[i] != null ? arguments[i] : {};
394
-
395
- if (i % 2) {
396
- ownKeys$f(Object(source), true).forEach(function (key) {
397
- _defineProperty$f(target, key, source[key]);
398
- });
399
- } else if (Object.getOwnPropertyDescriptors) {
400
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
401
- } else {
402
- ownKeys$f(Object(source)).forEach(function (key) {
403
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
404
- });
405
- }
406
- }
407
-
408
- return target;
409
- }
410
-
411
- function _defineProperty$f(obj, key, value) {
412
- if (key in obj) {
413
- Object.defineProperty(obj, key, {
414
- value: value,
415
- enumerable: true,
416
- configurable: true,
417
- writable: true
418
- });
419
- } else {
420
- obj[key] = value;
421
- }
422
-
423
- return obj;
424
- }
425
-
426
- function createStore(reducer, props, onStoreStateChange) {
427
- var state = props.initialState;
373
+ function createInternalCancelablePromise(promise, initialState) {
374
+ var state = initialState;
428
375
  return {
429
- getState: function getState() {
430
- return state;
376
+ then: function then(onfulfilled, onrejected) {
377
+ return createInternalCancelablePromise(promise.then(createCallback(onfulfilled, state, promise), createCallback(onrejected, state, promise)), state);
431
378
  },
432
- dispatch: function dispatch(action, payload) {
433
- var prevState = _objectSpread$f({}, 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
+ }
434
386
 
435
- state = reducer(state, {
436
- type: action,
437
- props: props,
438
- payload: payload
439
- });
440
- onStoreStateChange({
441
- state: state,
442
- 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();
443
398
  });
444
399
  },
445
- shouldSkipPendingUpdate: false
400
+ isCanceled: function isCanceled() {
401
+ return state.isCanceled === true;
402
+ }
446
403
  };
447
404
  }
448
405
 
449
- function ownKeys$e(object, enumerableOnly) {
450
- var keys = Object.keys(object);
406
+ function cancelable(promise) {
407
+ return createInternalCancelablePromise(promise, {
408
+ isCanceled: false,
409
+ onCancelList: []
410
+ });
411
+ }
451
412
 
452
- if (Object.getOwnPropertySymbols) {
453
- var symbols = Object.getOwnPropertySymbols(object);
413
+ function createCallback(onResult, state, fallback) {
414
+ if (!onResult) {
415
+ return fallback;
416
+ }
454
417
 
455
- if (enumerableOnly) {
456
- symbols = symbols.filter(function (sym) {
457
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
458
- });
418
+ return function callback(arg) {
419
+ if (state.isCanceled) {
420
+ return arg;
459
421
  }
460
422
 
461
- keys.push.apply(keys, symbols);
462
- }
463
-
464
- return keys;
423
+ return onResult(arg);
424
+ };
465
425
  }
466
426
 
467
- function _objectSpread$e(target) {
468
- for (var i = 1; i < arguments.length; i++) {
469
- var source = arguments[i] != null ? arguments[i] : {};
470
-
471
- if (i % 2) {
472
- ownKeys$e(Object(source), true).forEach(function (key) {
473
- _defineProperty$e(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
+ });
474
436
  });
475
- } else if (Object.getOwnPropertyDescriptors) {
476
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
477
- } else {
478
- ownKeys$e(Object(source)).forEach(function (key) {
479
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
437
+ },
438
+ cancelAll: function cancelAll() {
439
+ list.forEach(function (promise) {
440
+ return promise.cancel();
480
441
  });
442
+ },
443
+ isEmpty: function isEmpty() {
444
+ return list.length === 0;
481
445
  }
482
- }
483
-
484
- return target;
485
- }
486
-
487
- function _defineProperty$e(obj, key, value) {
488
- if (key in obj) {
489
- Object.defineProperty(obj, key, {
490
- value: value,
491
- enumerable: true,
492
- configurable: true,
493
- writable: true
494
- });
495
- } else {
496
- obj[key] = value;
497
- }
498
-
499
- return obj;
500
- }
501
- function getAutocompleteSetters(_ref) {
502
- var store = _ref.store;
503
-
504
- var setActiveItemId = function setActiveItemId(value) {
505
- store.dispatch('setActiveItemId', value);
506
- };
507
-
508
- var setQuery = function setQuery(value) {
509
- store.dispatch('setQuery', value);
510
- };
511
-
512
- var setCollections = function setCollections(rawValue) {
513
- var baseItemId = 0;
514
- var value = rawValue.map(function (collection) {
515
- return _objectSpread$e(_objectSpread$e({}, collection), {}, {
516
- // We flatten the stored items to support calling `getAlgoliaResults`
517
- // from the source itself.
518
- items: flatten(collection.items).map(function (item) {
519
- return _objectSpread$e(_objectSpread$e({}, item), {}, {
520
- __autocomplete_id: baseItemId++
521
- });
522
- })
523
- });
524
- });
525
- store.dispatch('setCollections', value);
526
- };
527
-
528
- var setIsOpen = function setIsOpen(value) {
529
- store.dispatch('setIsOpen', value);
530
- };
531
-
532
- var setStatus = function setStatus(value) {
533
- store.dispatch('setStatus', value);
534
- };
535
-
536
- var setContext = function setContext(value) {
537
- store.dispatch('setContext', value);
538
- };
539
-
540
- return {
541
- setActiveItemId: setActiveItemId,
542
- setQuery: setQuery,
543
- setCollections: setCollections,
544
- setIsOpen: setIsOpen,
545
- setStatus: setStatus,
546
- setContext: setContext
547
446
  };
548
447
  }
549
448
 
@@ -557,11 +456,8 @@
557
456
  var basePromiseId = -1;
558
457
  var latestResolvedId = -1;
559
458
  var latestResolvedValue = undefined;
560
- var runningPromisesCount = 0;
561
-
562
- function runConcurrentSafePromise(promise) {
459
+ return function runConcurrentSafePromise(promise) {
563
460
  basePromiseId++;
564
- runningPromisesCount++;
565
461
  var currentPromiseId = basePromiseId;
566
462
  return Promise.resolve(promise).then(function (x) {
567
463
  // The promise might take too long to resolve and get outdated. This would
@@ -584,16 +480,8 @@
584
480
  latestResolvedId = currentPromiseId;
585
481
  latestResolvedValue = x;
586
482
  return x;
587
- }).finally(function () {
588
- return runningPromisesCount--;
589
483
  });
590
- }
591
-
592
- runConcurrentSafePromise.isRunning = function () {
593
- return runningPromisesCount > 0;
594
484
  };
595
-
596
- return runConcurrentSafePromise;
597
485
  }
598
486
 
599
487
  /**
@@ -630,7 +518,7 @@
630
518
  return numericIndex;
631
519
  }
632
520
 
633
- function ownKeys$d(object, enumerableOnly) {
521
+ function ownKeys$f(object, enumerableOnly) {
634
522
  var keys = Object.keys(object);
635
523
 
636
524
  if (Object.getOwnPropertySymbols) {
@@ -648,18 +536,18 @@
648
536
  return keys;
649
537
  }
650
538
 
651
- function _objectSpread$d(target) {
539
+ function _objectSpread$f(target) {
652
540
  for (var i = 1; i < arguments.length; i++) {
653
541
  var source = arguments[i] != null ? arguments[i] : {};
654
542
 
655
543
  if (i % 2) {
656
- ownKeys$d(Object(source), true).forEach(function (key) {
657
- _defineProperty$d(target, key, source[key]);
544
+ ownKeys$f(Object(source), true).forEach(function (key) {
545
+ _defineProperty$f(target, key, source[key]);
658
546
  });
659
547
  } else if (Object.getOwnPropertyDescriptors) {
660
548
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
661
549
  } else {
662
- ownKeys$d(Object(source)).forEach(function (key) {
550
+ ownKeys$f(Object(source)).forEach(function (key) {
663
551
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
664
552
  });
665
553
  }
@@ -668,7 +556,7 @@
668
556
  return target;
669
557
  }
670
558
 
671
- function _defineProperty$d(obj, key, value) {
559
+ function _defineProperty$f(obj, key, value) {
672
560
  if (key in obj) {
673
561
  Object.defineProperty(obj, key, {
674
562
  value: value,
@@ -718,7 +606,7 @@
718
606
 
719
607
  seenSourceIds.push(source.sourceId);
720
608
 
721
- var normalizedSource = _objectSpread$d({
609
+ var normalizedSource = _objectSpread$f({
722
610
  getItemInputValue: function getItemInputValue(_ref) {
723
611
  var state = _ref.state;
724
612
  return state.query;
@@ -828,7 +716,7 @@
828
716
  return parent === child || parent.contains(child);
829
717
  }
830
718
 
831
- function ownKeys$c(object, enumerableOnly) {
719
+ function ownKeys$e(object, enumerableOnly) {
832
720
  var keys = Object.keys(object);
833
721
 
834
722
  if (Object.getOwnPropertySymbols) {
@@ -846,18 +734,18 @@
846
734
  return keys;
847
735
  }
848
736
 
849
- function _objectSpread$c(target) {
737
+ function _objectSpread$e(target) {
850
738
  for (var i = 1; i < arguments.length; i++) {
851
739
  var source = arguments[i] != null ? arguments[i] : {};
852
740
 
853
741
  if (i % 2) {
854
- ownKeys$c(Object(source), true).forEach(function (key) {
855
- _defineProperty$c(target, key, source[key]);
742
+ ownKeys$e(Object(source), true).forEach(function (key) {
743
+ _defineProperty$e(target, key, source[key]);
856
744
  });
857
745
  } else if (Object.getOwnPropertyDescriptors) {
858
746
  Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
859
747
  } else {
860
- ownKeys$c(Object(source)).forEach(function (key) {
748
+ ownKeys$e(Object(source)).forEach(function (key) {
861
749
  Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
862
750
  });
863
751
  }
@@ -866,7 +754,7 @@
866
754
  return target;
867
755
  }
868
756
 
869
- function _defineProperty$c(obj, key, value) {
757
+ function _defineProperty$e(obj, key, value) {
870
758
  if (key in obj) {
871
759
  Object.defineProperty(obj, key, {
872
760
  value: value,
@@ -885,10 +773,10 @@
885
773
  var results = rawResults.map(function (result) {
886
774
  var _hits;
887
775
 
888
- return _objectSpread$c(_objectSpread$c({}, result), {}, {
776
+ return _objectSpread$e(_objectSpread$e({}, result), {}, {
889
777
  hits: (_hits = result.hits) === null || _hits === void 0 ? void 0 : _hits.map(function (hit) {
890
778
  // Bring support for the Insights plugin.
891
- return _objectSpread$c(_objectSpread$c({}, hit), {}, {
779
+ return _objectSpread$e(_objectSpread$e({}, hit), {}, {
892
780
  __autocomplete_indexName: result.index,
893
781
  __autocomplete_queryID: result.queryID
894
782
  });
@@ -919,6 +807,182 @@
919
807
  };
920
808
  }
921
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
+ };
883
+ }
884
+
885
+ function ownKeys$c(object, enumerableOnly) {
886
+ var keys = Object.keys(object);
887
+
888
+ if (Object.getOwnPropertySymbols) {
889
+ var symbols = Object.getOwnPropertySymbols(object);
890
+
891
+ if (enumerableOnly) {
892
+ symbols = symbols.filter(function (sym) {
893
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
894
+ });
895
+ }
896
+
897
+ keys.push.apply(keys, symbols);
898
+ }
899
+
900
+ return keys;
901
+ }
902
+
903
+ function _objectSpread$c(target) {
904
+ for (var i = 1; i < arguments.length; i++) {
905
+ var source = arguments[i] != null ? arguments[i] : {};
906
+
907
+ if (i % 2) {
908
+ ownKeys$c(Object(source), true).forEach(function (key) {
909
+ _defineProperty$c(target, key, source[key]);
910
+ });
911
+ } else if (Object.getOwnPropertyDescriptors) {
912
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
913
+ } else {
914
+ ownKeys$c(Object(source)).forEach(function (key) {
915
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
916
+ });
917
+ }
918
+ }
919
+
920
+ return target;
921
+ }
922
+
923
+ function _defineProperty$c(obj, key, value) {
924
+ if (key in obj) {
925
+ Object.defineProperty(obj, key, {
926
+ value: value,
927
+ enumerable: true,
928
+ configurable: true,
929
+ writable: true
930
+ });
931
+ } else {
932
+ obj[key] = value;
933
+ }
934
+
935
+ return obj;
936
+ }
937
+ function getAutocompleteSetters(_ref) {
938
+ var store = _ref.store;
939
+
940
+ var setActiveItemId = function setActiveItemId(value) {
941
+ store.dispatch('setActiveItemId', value);
942
+ };
943
+
944
+ var setQuery = function setQuery(value) {
945
+ store.dispatch('setQuery', value);
946
+ };
947
+
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
+ })
959
+ });
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
983
+ };
984
+ }
985
+
922
986
  function _toConsumableArray$4(arr) {
923
987
  return _arrayWithoutHoles$4(arr) || _iterableToArray$4(arr) || _unsupportedIterableToArray$4(arr) || _nonIterableSpread$4();
924
988
  }
@@ -1534,9 +1598,11 @@
1534
1598
  // updates performed in this code path.
1535
1599
  // We chain with a void promise to respect `onInput`'s expected return type.
1536
1600
 
1537
- return runConcurrentSafePromise(collections).then(function () {
1601
+ var _request = cancelable(runConcurrentSafePromise(collections).then(function () {
1538
1602
  return Promise.resolve();
1539
- });
1603
+ }));
1604
+
1605
+ return store.pendingRequests.add(_request);
1540
1606
  }
1541
1607
 
1542
1608
  setStatus('loading');
@@ -1549,7 +1615,7 @@
1549
1615
  // meaning we should only ever manipulate the state once this concurrent-safe
1550
1616
  // promise is resolved.
1551
1617
 
1552
- return runConcurrentSafePromise(props.getSources(_objectSpread$8({
1618
+ var request = cancelable(runConcurrentSafePromise(props.getSources(_objectSpread$8({
1553
1619
  query: query,
1554
1620
  refresh: refresh,
1555
1621
  state: store.getState()
@@ -1571,7 +1637,7 @@
1571
1637
  state: store.getState()
1572
1638
  });
1573
1639
  });
1574
- })).then(function (collections) {
1640
+ }))).then(function (collections) {
1575
1641
  var _nextState$isOpen2; // Parameters passed to `onInput` could be stale when the following code
1576
1642
  // executes, because `onInput` calls may not resolve in order.
1577
1643
  // If it becomes a problem we'll need to save the last passed parameters.
@@ -1579,15 +1645,6 @@
1579
1645
 
1580
1646
 
1581
1647
  setStatus('idle');
1582
-
1583
- if (store.shouldSkipPendingUpdate) {
1584
- if (!runConcurrentSafePromise.isRunning()) {
1585
- store.shouldSkipPendingUpdate = false;
1586
- }
1587
-
1588
- return;
1589
- }
1590
-
1591
1648
  setCollections(collections);
1592
1649
  var isPanelOpen = props.shouldPanelOpen({
1593
1650
  state: store.getState()
@@ -1611,12 +1668,14 @@
1611
1668
  }, setters));
1612
1669
  }
1613
1670
  }).finally(function () {
1671
+ setStatus('idle');
1672
+
1614
1673
  if (lastStalledId) {
1615
1674
  props.environment.clearTimeout(lastStalledId);
1616
1675
  }
1617
1676
  });
1677
+ return store.pendingRequests.add(request);
1618
1678
  }
1619
- onInput.isRunning = runConcurrentSafePromise.isRunning;
1620
1679
 
1621
1680
  var _excluded$5 = ["event", "props", "refresh", "store"];
1622
1681
 
@@ -1784,12 +1843,10 @@
1784
1843
  event.preventDefault();
1785
1844
  store.dispatch(event.key, null); // Hitting the `Escape` key signals the end of a user interaction with the
1786
1845
  // autocomplete. At this point, we should ignore any requests that are still
1787
- // running and could reopen the panel once they resolve, because that would
1846
+ // pending and could reopen the panel once they resolve, because that would
1788
1847
  // result in an unsolicited UI behavior.
1789
1848
 
1790
- if (onInput.isRunning()) {
1791
- store.shouldSkipPendingUpdate = true;
1792
- }
1849
+ store.pendingRequests.cancelAll();
1793
1850
  } else if (event.key === 'Enter') {
1794
1851
  // No active item, so we let the browser handle the native `onSubmit` form
1795
1852
  // event.
@@ -2004,12 +2061,12 @@
2004
2061
  // The `onTouchStart` event shouldn't trigger the `blur` handler when
2005
2062
  // it's not an interaction with Autocomplete. We detect it with the
2006
2063
  // following heuristics:
2007
- // - the panel is closed AND there are no running requests
2064
+ // - the panel is closed AND there are no pending requests
2008
2065
  // (no interaction with the autocomplete, no future state updates)
2009
2066
  // - OR the touched target is the input element (should open the panel)
2010
- var isNotAutocompleteInteraction = store.getState().isOpen === false && !onInput.isRunning();
2067
+ var isAutocompleteInteraction = store.getState().isOpen || !store.pendingRequests.isEmpty();
2011
2068
 
2012
- if (isNotAutocompleteInteraction || event.target === inputElement) {
2069
+ if (!isAutocompleteInteraction || event.target === inputElement) {
2013
2070
  return;
2014
2071
  }
2015
2072
 
@@ -2018,13 +2075,13 @@
2018
2075
  });
2019
2076
 
2020
2077
  if (isTargetWithinAutocomplete === false) {
2021
- store.dispatch('blur', null); // If requests are still running when the user closes the panel, they
2078
+ store.dispatch('blur', null); // If requests are still pending when the user closes the panel, they
2022
2079
  // could reopen the panel once they resolve.
2023
2080
  // We want to prevent any subsequent query from reopening the panel
2024
2081
  // because it would result in an unsolicited UI behavior.
2025
2082
 
2026
- if (!props.debug && onInput.isRunning()) {
2027
- store.shouldSkipPendingUpdate = true;
2083
+ if (!props.debug) {
2084
+ store.pendingRequests.cancelAll();
2028
2085
  }
2029
2086
  }
2030
2087
  },
@@ -2151,13 +2208,13 @@
2151
2208
  // We do rely on the `blur` event on touch devices.
2152
2209
  // See explanation in `onTouchStart`.
2153
2210
  if (!isTouchDevice) {
2154
- store.dispatch('blur', null); // If requests are still running when the user closes the panel, they
2211
+ store.dispatch('blur', null); // If requests are still pending when the user closes the panel, they
2155
2212
  // could reopen the panel once they resolve.
2156
2213
  // We want to prevent any subsequent query from reopening the panel
2157
2214
  // because it would result in an unsolicited UI behavior.
2158
2215
 
2159
- if (!props.debug && onInput.isRunning()) {
2160
- store.shouldSkipPendingUpdate = true;
2216
+ if (!props.debug) {
2217
+ store.pendingRequests.cancelAll();
2161
2218
  }
2162
2219
  }
2163
2220
  },