@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
|
+
/*! @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.
|
|
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
|
|
374
|
-
var
|
|
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
|
-
|
|
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
|
-
|
|
433
|
-
|
|
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
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
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
|
-
|
|
400
|
+
isCanceled: function isCanceled() {
|
|
401
|
+
return state.isCanceled === true;
|
|
402
|
+
}
|
|
446
403
|
};
|
|
447
404
|
}
|
|
448
405
|
|
|
449
|
-
function
|
|
450
|
-
|
|
406
|
+
function cancelable(promise) {
|
|
407
|
+
return createInternalCancelablePromise(promise, {
|
|
408
|
+
isCanceled: false,
|
|
409
|
+
onCancelList: []
|
|
410
|
+
});
|
|
411
|
+
}
|
|
451
412
|
|
|
452
|
-
|
|
453
|
-
|
|
413
|
+
function createCallback(onResult, state, fallback) {
|
|
414
|
+
if (!onResult) {
|
|
415
|
+
return fallback;
|
|
416
|
+
}
|
|
454
417
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
});
|
|
418
|
+
return function callback(arg) {
|
|
419
|
+
if (state.isCanceled) {
|
|
420
|
+
return arg;
|
|
459
421
|
}
|
|
460
422
|
|
|
461
|
-
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
return keys;
|
|
423
|
+
return onResult(arg);
|
|
424
|
+
};
|
|
465
425
|
}
|
|
466
426
|
|
|
467
|
-
function
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
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
|
-
}
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
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
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
657
|
-
_defineProperty$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
855
|
-
_defineProperty$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
//
|
|
1846
|
+
// pending and could reopen the panel once they resolve, because that would
|
|
1788
1847
|
// result in an unsolicited UI behavior.
|
|
1789
1848
|
|
|
1790
|
-
|
|
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
|
|
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
|
|
2067
|
+
var isAutocompleteInteraction = store.getState().isOpen || !store.pendingRequests.isEmpty();
|
|
2011
2068
|
|
|
2012
|
-
if (
|
|
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
|
|
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
|
|
2027
|
-
store.
|
|
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
|
|
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
|
|
2160
|
-
store.
|
|
2216
|
+
if (!props.debug) {
|
|
2217
|
+
store.pendingRequests.cancelAll();
|
|
2161
2218
|
}
|
|
2162
2219
|
}
|
|
2163
2220
|
},
|