@algolia/autocomplete-core 1.5.0 → 1.5.3
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.
- package/dist/esm/createAutocomplete.js +2 -2
- package/dist/esm/createStore.js +5 -3
- package/dist/esm/getAutocompleteSetters.js +2 -2
- package/dist/esm/getDefaultProps.js +2 -2
- package/dist/esm/getPropGetters.js +27 -5
- package/dist/esm/metadata.js +2 -2
- package/dist/esm/onInput.d.ts +2 -1
- package/dist/esm/onInput.js +16 -7
- package/dist/esm/onKeyDown.js +8 -3
- package/dist/esm/reshape.js +2 -2
- package/dist/esm/resolve.d.ts +1 -1
- package/dist/esm/resolve.js +6 -4
- package/dist/esm/stateReducer.js +2 -2
- package/dist/esm/types/AutocompleteStore.d.ts +2 -0
- package/dist/esm/utils/createCancelablePromise.d.ts +15 -0
- package/dist/esm/utils/createCancelablePromise.js +70 -0
- package/dist/esm/utils/createCancelablePromiseList.d.ts +7 -0
- package/dist/esm/utils/createCancelablePromiseList.js +21 -0
- package/dist/esm/utils/getNormalizedSources.js +3 -3
- package/dist/esm/utils/index.d.ts +2 -0
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/mapToAlgoliaResponse.js +2 -2
- package/dist/umd/index.development.js +227 -136
- package/dist/umd/index.development.js.map +1 -1
- package/dist/umd/index.production.js +2 -2
- package/dist/umd/index.production.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|
package/dist/esm/createStore.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|
|
7
|
+
import { createCancelablePromiseList } from './utils';
|
|
7
8
|
export function createStore(reducer, props, onStoreStateChange) {
|
|
8
9
|
var state = props.initialState;
|
|
9
10
|
return {
|
|
@@ -22,6 +23,7 @@ export function createStore(reducer, props, onStoreStateChange) {
|
|
|
22
23
|
state: state,
|
|
23
24
|
prevState: prevState
|
|
24
25
|
});
|
|
25
|
-
}
|
|
26
|
+
},
|
|
27
|
+
pendingRequests: createCancelablePromiseList()
|
|
26
28
|
};
|
|
27
29
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|
|
@@ -10,9 +10,9 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
|
|
|
10
10
|
|
|
11
11
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
12
12
|
|
|
13
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
14
14
|
|
|
15
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
16
|
|
|
17
17
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
18
18
|
|
|
@@ -4,9 +4,9 @@ var _excluded = ["props", "refresh", "store"],
|
|
|
4
4
|
_excluded4 = ["inputElement", "maxLength"],
|
|
5
5
|
_excluded5 = ["item", "source"];
|
|
6
6
|
|
|
7
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
8
8
|
|
|
9
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
9
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
10
10
|
|
|
11
11
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
12
12
|
|
|
@@ -38,7 +38,15 @@ export function getPropGetters(_ref) {
|
|
|
38
38
|
// @TODO: support cases where there are multiple Autocomplete instances.
|
|
39
39
|
// Right now, a second instance makes this computation return false.
|
|
40
40
|
onTouchStart: function onTouchStart(event) {
|
|
41
|
-
|
|
41
|
+
// The `onTouchStart` event shouldn't trigger the `blur` handler when
|
|
42
|
+
// it's not an interaction with Autocomplete. We detect it with the
|
|
43
|
+
// following heuristics:
|
|
44
|
+
// - the panel is closed AND there are no pending requests
|
|
45
|
+
// (no interaction with the autocomplete, no future state updates)
|
|
46
|
+
// - OR the touched target is the input element (should open the panel)
|
|
47
|
+
var isAutocompleteInteraction = store.getState().isOpen || !store.pendingRequests.isEmpty();
|
|
48
|
+
|
|
49
|
+
if (!isAutocompleteInteraction || event.target === inputElement) {
|
|
42
50
|
return;
|
|
43
51
|
}
|
|
44
52
|
|
|
@@ -47,7 +55,14 @@ export function getPropGetters(_ref) {
|
|
|
47
55
|
});
|
|
48
56
|
|
|
49
57
|
if (isTargetWithinAutocomplete === false) {
|
|
50
|
-
store.dispatch('blur', null);
|
|
58
|
+
store.dispatch('blur', null); // If requests are still pending when the user closes the panel, they
|
|
59
|
+
// could reopen the panel once they resolve.
|
|
60
|
+
// We want to prevent any subsequent query from reopening the panel
|
|
61
|
+
// because it would result in an unsolicited UI behavior.
|
|
62
|
+
|
|
63
|
+
if (!props.debug) {
|
|
64
|
+
store.pendingRequests.cancelAll();
|
|
65
|
+
}
|
|
51
66
|
}
|
|
52
67
|
},
|
|
53
68
|
// When scrolling on touch devices (mobiles, tablets, etc.), we want to
|
|
@@ -173,7 +188,14 @@ export function getPropGetters(_ref) {
|
|
|
173
188
|
// We do rely on the `blur` event on touch devices.
|
|
174
189
|
// See explanation in `onTouchStart`.
|
|
175
190
|
if (!isTouchDevice) {
|
|
176
|
-
store.dispatch('blur', null);
|
|
191
|
+
store.dispatch('blur', null); // If requests are still pending when the user closes the panel, they
|
|
192
|
+
// could reopen the panel once they resolve.
|
|
193
|
+
// We want to prevent any subsequent query from reopening the panel
|
|
194
|
+
// because it would result in an unsolicited UI behavior.
|
|
195
|
+
|
|
196
|
+
if (!props.debug) {
|
|
197
|
+
store.pendingRequests.cancelAll();
|
|
198
|
+
}
|
|
177
199
|
}
|
|
178
200
|
},
|
|
179
201
|
onClick: function onClick(event) {
|
package/dist/esm/metadata.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|
package/dist/esm/onInput.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AutocompleteScopeApi, AutocompleteState, AutocompleteStore, BaseItem, InternalAutocompleteOptions } from './types';
|
|
2
|
+
import { CancelablePromise } from './utils';
|
|
2
3
|
interface OnInputParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
|
|
3
4
|
event: any;
|
|
4
5
|
/**
|
|
@@ -13,5 +14,5 @@ interface OnInputParams<TItem extends BaseItem> extends AutocompleteScopeApi<TIt
|
|
|
13
14
|
query: string;
|
|
14
15
|
store: AutocompleteStore<TItem>;
|
|
15
16
|
}
|
|
16
|
-
export declare function onInput<TItem extends BaseItem>({ event, nextState, props, query, refresh, store, ...setters }: OnInputParams<TItem>):
|
|
17
|
+
export declare function onInput<TItem extends BaseItem>({ event, nextState, props, query, refresh, store, ...setters }: OnInputParams<TItem>): CancelablePromise<void>;
|
|
17
18
|
export {};
|
package/dist/esm/onInput.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var _excluded = ["event", "nextState", "props", "query", "refresh", "store"];
|
|
2
2
|
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
4
|
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
6
|
|
|
7
7
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
8
|
|
|
@@ -12,7 +12,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
12
12
|
|
|
13
13
|
import { reshape } from './reshape';
|
|
14
14
|
import { preResolve, resolve, postResolve } from './resolve';
|
|
15
|
-
import { createConcurrentSafePromise, getActiveItem } from './utils';
|
|
15
|
+
import { cancelable, createConcurrentSafePromise, getActiveItem } from './utils';
|
|
16
16
|
var lastStalledId = null;
|
|
17
17
|
var runConcurrentSafePromise = createConcurrentSafePromise();
|
|
18
18
|
export function onInput(_ref) {
|
|
@@ -54,9 +54,11 @@ export function onInput(_ref) {
|
|
|
54
54
|
// updates performed in this code path.
|
|
55
55
|
// We chain with a void promise to respect `onInput`'s expected return type.
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
var _request = cancelable(runConcurrentSafePromise(collections).then(function () {
|
|
58
58
|
return Promise.resolve();
|
|
59
|
-
});
|
|
59
|
+
}));
|
|
60
|
+
|
|
61
|
+
return store.pendingRequests.add(_request);
|
|
60
62
|
}
|
|
61
63
|
|
|
62
64
|
setStatus('loading');
|
|
@@ -69,7 +71,7 @@ export function onInput(_ref) {
|
|
|
69
71
|
// meaning we should only ever manipulate the state once this concurrent-safe
|
|
70
72
|
// promise is resolved.
|
|
71
73
|
|
|
72
|
-
|
|
74
|
+
var request = cancelable(runConcurrentSafePromise(props.getSources(_objectSpread({
|
|
73
75
|
query: query,
|
|
74
76
|
refresh: refresh,
|
|
75
77
|
state: store.getState()
|
|
@@ -91,9 +93,13 @@ export function onInput(_ref) {
|
|
|
91
93
|
state: store.getState()
|
|
92
94
|
});
|
|
93
95
|
});
|
|
94
|
-
})).then(function (collections) {
|
|
96
|
+
}))).then(function (collections) {
|
|
95
97
|
var _nextState$isOpen2;
|
|
96
98
|
|
|
99
|
+
// Parameters passed to `onInput` could be stale when the following code
|
|
100
|
+
// executes, because `onInput` calls may not resolve in order.
|
|
101
|
+
// If it becomes a problem we'll need to save the last passed parameters.
|
|
102
|
+
// See: https://codesandbox.io/s/agitated-cookies-y290z
|
|
97
103
|
setStatus('idle');
|
|
98
104
|
setCollections(collections);
|
|
99
105
|
var isPanelOpen = props.shouldPanelOpen({
|
|
@@ -118,8 +124,11 @@ export function onInput(_ref) {
|
|
|
118
124
|
}, setters));
|
|
119
125
|
}
|
|
120
126
|
}).finally(function () {
|
|
127
|
+
setStatus('idle');
|
|
128
|
+
|
|
121
129
|
if (lastStalledId) {
|
|
122
130
|
props.environment.clearTimeout(lastStalledId);
|
|
123
131
|
}
|
|
124
132
|
});
|
|
133
|
+
return store.pendingRequests.add(request);
|
|
125
134
|
}
|
package/dist/esm/onKeyDown.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var _excluded = ["event", "props", "refresh", "store"];
|
|
2
2
|
|
|
3
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
4
4
|
|
|
5
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
5
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
6
6
|
|
|
7
7
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
8
8
|
|
|
@@ -86,7 +86,12 @@ export function onKeyDown(_ref) {
|
|
|
86
86
|
// from removing the query right away because we first want to close the
|
|
87
87
|
// panel.
|
|
88
88
|
event.preventDefault();
|
|
89
|
-
store.dispatch(event.key, null);
|
|
89
|
+
store.dispatch(event.key, null); // Hitting the `Escape` key signals the end of a user interaction with the
|
|
90
|
+
// autocomplete. At this point, we should ignore any requests that are still
|
|
91
|
+
// pending and could reopen the panel once they resolve, because that would
|
|
92
|
+
// result in an unsolicited UI behavior.
|
|
93
|
+
|
|
94
|
+
store.pendingRequests.cancelAll();
|
|
90
95
|
} else if (event.key === 'Enter') {
|
|
91
96
|
// No active item, so we let the browser handle the native `onSubmit` form
|
|
92
97
|
// event.
|
package/dist/esm/reshape.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|
package/dist/esm/resolve.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ExecuteResponse, RequesterDescription, TransformResponse } from '@algolia/autocomplete-preset-algolia';
|
|
2
2
|
import { MultipleQueriesQuery, SearchForFacetValuesResponse, SearchResponse } from '@algolia/client-search';
|
|
3
3
|
import { BaseItem, InternalAutocompleteSource } from './types';
|
|
4
|
-
declare type RequestDescriptionPreResolved<TItem extends BaseItem> = Pick<RequesterDescription<TItem>, 'execute' | 'searchClient' | 'transformResponse'> & {
|
|
4
|
+
declare type RequestDescriptionPreResolved<TItem extends BaseItem> = Pick<RequesterDescription<TItem>, 'execute' | 'requesterId' | 'searchClient' | 'transformResponse'> & {
|
|
5
5
|
requests: Array<{
|
|
6
6
|
query: MultipleQueriesQuery;
|
|
7
7
|
sourceId: string;
|
package/dist/esm/resolve.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
1
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
2
2
|
|
|
3
3
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
4
4
|
|
|
@@ -12,9 +12,9 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
|
|
|
12
12
|
|
|
13
13
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
14
14
|
|
|
15
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
15
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
16
|
|
|
17
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
17
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
18
18
|
|
|
19
19
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
20
20
|
|
|
@@ -56,9 +56,10 @@ export function resolve(items) {
|
|
|
56
56
|
|
|
57
57
|
var searchClient = current.searchClient,
|
|
58
58
|
execute = current.execute,
|
|
59
|
+
requesterId = current.requesterId,
|
|
59
60
|
requests = current.requests;
|
|
60
61
|
var container = acc.find(function (item) {
|
|
61
|
-
return isDescription(current) && isDescription(item) && item.searchClient === searchClient && item.
|
|
62
|
+
return isDescription(current) && isDescription(item) && item.searchClient === searchClient && Boolean(requesterId) && item.requesterId === requesterId;
|
|
62
63
|
});
|
|
63
64
|
|
|
64
65
|
if (container) {
|
|
@@ -68,6 +69,7 @@ export function resolve(items) {
|
|
|
68
69
|
} else {
|
|
69
70
|
var request = {
|
|
70
71
|
execute: execute,
|
|
72
|
+
requesterId: requesterId,
|
|
71
73
|
items: requests,
|
|
72
74
|
searchClient: searchClient
|
|
73
75
|
};
|
package/dist/esm/stateReducer.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { CancelablePromiseList } from '../utils';
|
|
1
2
|
import { BaseItem } from './AutocompleteApi';
|
|
2
3
|
import { InternalAutocompleteOptions } from './AutocompleteOptions';
|
|
3
4
|
import { AutocompleteState } from './AutocompleteState';
|
|
4
5
|
export interface AutocompleteStore<TItem extends BaseItem> {
|
|
5
6
|
getState(): AutocompleteState<TItem>;
|
|
6
7
|
dispatch(action: ActionType, payload: any): void;
|
|
8
|
+
pendingRequests: CancelablePromiseList<void>;
|
|
7
9
|
}
|
|
8
10
|
export declare type Reducer = <TItem extends BaseItem>(state: AutocompleteState<TItem>, action: Action<TItem, any>) => AutocompleteState<TItem>;
|
|
9
11
|
declare type Action<TItem extends BaseItem, TPayload> = {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare type PromiseExecutor<TValue> = (resolve: (value: TValue | PromiseLike<TValue>) => void, reject: (reason?: any) => void) => void;
|
|
2
|
+
export declare type CancelablePromise<TValue> = {
|
|
3
|
+
then<TResultFulfilled = TValue, TResultRejected = never>(onfulfilled?: ((value: TValue) => TResultFulfilled | PromiseLike<TResultFulfilled> | CancelablePromise<TResultFulfilled>) | undefined | null, onrejected?: ((reason: any) => TResultRejected | PromiseLike<TResultRejected> | CancelablePromise<TResultRejected>) | undefined | null): CancelablePromise<TResultFulfilled | TResultRejected>;
|
|
4
|
+
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult> | CancelablePromise<TResult>) | undefined | null): CancelablePromise<TValue | TResult>;
|
|
5
|
+
finally(onfinally?: (() => void) | undefined | null): CancelablePromise<TValue>;
|
|
6
|
+
cancel(): void;
|
|
7
|
+
isCanceled(): boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function createCancelablePromise<TValue>(executor: PromiseExecutor<TValue>): CancelablePromise<TValue>;
|
|
10
|
+
export declare namespace createCancelablePromise {
|
|
11
|
+
var resolve: <TValue>(value?: TValue | PromiseLike<TValue> | CancelablePromise<TValue> | undefined) => CancelablePromise<TValue | CancelablePromise<TValue> | undefined>;
|
|
12
|
+
var reject: (reason?: any) => CancelablePromise<never>;
|
|
13
|
+
}
|
|
14
|
+
export declare function cancelable<TValue>(promise: Promise<TValue>): CancelablePromise<TValue>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
function createInternalCancelablePromise(promise, initialState) {
|
|
2
|
+
var state = initialState;
|
|
3
|
+
return {
|
|
4
|
+
then: function then(onfulfilled, onrejected) {
|
|
5
|
+
return createInternalCancelablePromise(promise.then(createCallback(onfulfilled, state, promise), createCallback(onrejected, state, promise)), state);
|
|
6
|
+
},
|
|
7
|
+
catch: function _catch(onrejected) {
|
|
8
|
+
return createInternalCancelablePromise(promise.catch(createCallback(onrejected, state, promise)), state);
|
|
9
|
+
},
|
|
10
|
+
finally: function _finally(onfinally) {
|
|
11
|
+
if (onfinally) {
|
|
12
|
+
state.onCancelList.push(onfinally);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return createInternalCancelablePromise(promise.finally(createCallback(onfinally && function () {
|
|
16
|
+
state.onCancelList = [];
|
|
17
|
+
return onfinally();
|
|
18
|
+
}, state, promise)), state);
|
|
19
|
+
},
|
|
20
|
+
cancel: function cancel() {
|
|
21
|
+
state.isCanceled = true;
|
|
22
|
+
var callbacks = state.onCancelList;
|
|
23
|
+
state.onCancelList = [];
|
|
24
|
+
callbacks.forEach(function (callback) {
|
|
25
|
+
callback();
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
isCanceled: function isCanceled() {
|
|
29
|
+
return state.isCanceled === true;
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function createCancelablePromise(executor) {
|
|
35
|
+
return createInternalCancelablePromise(new Promise(function (resolve, reject) {
|
|
36
|
+
return executor(resolve, reject);
|
|
37
|
+
}), {
|
|
38
|
+
isCanceled: false,
|
|
39
|
+
onCancelList: []
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
createCancelablePromise.resolve = function (value) {
|
|
44
|
+
return cancelable(Promise.resolve(value));
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
createCancelablePromise.reject = function (reason) {
|
|
48
|
+
return cancelable(Promise.reject(reason));
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export function cancelable(promise) {
|
|
52
|
+
return createInternalCancelablePromise(promise, {
|
|
53
|
+
isCanceled: false,
|
|
54
|
+
onCancelList: []
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function createCallback(onResult, state, fallback) {
|
|
59
|
+
if (!onResult) {
|
|
60
|
+
return fallback;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return function callback(arg) {
|
|
64
|
+
if (state.isCanceled) {
|
|
65
|
+
return arg;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return onResult(arg);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CancelablePromise } from '.';
|
|
2
|
+
export declare type CancelablePromiseList<TValue> = {
|
|
3
|
+
add(cancelablePromise: CancelablePromise<TValue>): CancelablePromise<TValue>;
|
|
4
|
+
cancelAll(): void;
|
|
5
|
+
isEmpty(): boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare function createCancelablePromiseList<TValue>(): CancelablePromiseList<TValue>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function createCancelablePromiseList() {
|
|
2
|
+
var list = [];
|
|
3
|
+
return {
|
|
4
|
+
add: function add(cancelablePromise) {
|
|
5
|
+
list.push(cancelablePromise);
|
|
6
|
+
return cancelablePromise.finally(function () {
|
|
7
|
+
list = list.filter(function (item) {
|
|
8
|
+
return item !== cancelablePromise;
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
},
|
|
12
|
+
cancelAll: function cancelAll() {
|
|
13
|
+
list.forEach(function (promise) {
|
|
14
|
+
return promise.cancel();
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
isEmpty: function isEmpty() {
|
|
18
|
+
return list.length === 0;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|
|
7
|
-
function _typeof(obj) { "@babel/helpers - typeof";
|
|
7
|
+
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
|
|
8
8
|
|
|
9
9
|
import { invariant, decycle, noop } from '@algolia/autocomplete-shared';
|
|
10
10
|
export function getNormalizedSources(getSources, params) {
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
4
|
|
|
5
5
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
6
|
|