@algolia/autocomplete-core 1.8.2 → 1.9.0
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 +12 -9
- package/dist/esm/createStore.js +4 -5
- package/dist/esm/getAutocompleteSetters.d.ts +6 -6
- package/dist/esm/getAutocompleteSetters.js +4 -11
- package/dist/esm/getCompletion.js +0 -3
- package/dist/esm/getDefaultProps.js +6 -22
- package/dist/esm/getPropGetters.js +40 -69
- package/dist/esm/metadata.js +6 -9
- package/dist/esm/onInput.js +25 -34
- package/dist/esm/onKeyDown.js +30 -40
- package/dist/esm/reshape.d.ts +1 -1
- package/dist/esm/reshape.js +17 -19
- package/dist/esm/resolve.js +10 -28
- package/dist/esm/stateReducer.js +7 -24
- package/dist/esm/types/AutocompleteStore.d.ts +1 -3
- package/dist/esm/types/AutocompleteSubscribers.d.ts +1 -2
- package/dist/esm/types/index.d.ts +16 -11
- package/dist/esm/types/index.js +3 -12
- package/dist/esm/utils/createCancelablePromise.js +0 -8
- package/dist/esm/utils/createConcurrentSafePromise.js +0 -1
- package/dist/esm/utils/getActiveItem.d.ts +1 -1
- package/dist/esm/utils/getActiveItem.js +4 -12
- package/dist/esm/utils/getNextActiveItemId.js +0 -4
- package/dist/esm/utils/getNormalizedSources.js +5 -10
- package/dist/esm/utils/mapToAlgoliaResponse.d.ts +1 -1
- package/dist/esm/utils/mapToAlgoliaResponse.js +4 -6
- package/dist/umd/index.development.js +961 -387
- 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 +6 -5
- package/dist/esm/types/AutocompleteApi.d.ts +0 -15
- package/dist/esm/types/AutocompleteApi.js +0 -1
- package/dist/esm/types/AutocompleteCollection.d.ts +0 -10
- package/dist/esm/types/AutocompleteCollection.js +0 -1
- package/dist/esm/types/AutocompleteContext.d.ts +0 -3
- package/dist/esm/types/AutocompleteContext.js +0 -1
- package/dist/esm/types/AutocompleteEnvironment.d.ts +0 -13
- package/dist/esm/types/AutocompleteEnvironment.js +0 -1
- package/dist/esm/types/AutocompleteNavigator.d.ts +0 -28
- package/dist/esm/types/AutocompleteNavigator.js +0 -1
- package/dist/esm/types/AutocompleteOptions.d.ts +0 -185
- package/dist/esm/types/AutocompleteOptions.js +0 -1
- package/dist/esm/types/AutocompletePlugin.d.ts +0 -43
- package/dist/esm/types/AutocompletePlugin.js +0 -1
- package/dist/esm/types/AutocompletePropGetters.d.ts +0 -100
- package/dist/esm/types/AutocompletePropGetters.js +0 -1
- package/dist/esm/types/AutocompleteReshape.d.ts +0 -25
- package/dist/esm/types/AutocompleteReshape.js +0 -1
- package/dist/esm/types/AutocompleteSetters.d.ts +0 -46
- package/dist/esm/types/AutocompleteSetters.js +0 -1
- package/dist/esm/types/AutocompleteSource.d.ts +0 -75
- package/dist/esm/types/AutocompleteSource.js +0 -1
- package/dist/esm/types/AutocompleteState.d.ts +0 -12
- package/dist/esm/types/AutocompleteState.js +0 -1
package/dist/esm/onInput.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
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); }
|
|
1
2
|
var _excluded = ["event", "nextState", "props", "query", "refresh", "store"];
|
|
2
|
-
|
|
3
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
|
-
|
|
5
4
|
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
|
-
|
|
7
|
-
function
|
|
8
|
-
|
|
5
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
9
8
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
|
-
|
|
11
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
12
|
-
|
|
13
10
|
import { reshape } from './reshape';
|
|
14
11
|
import { preResolve, resolve, postResolve } from './resolve';
|
|
15
12
|
import { cancelable, createConcurrentSafePromise, getActiveItem } from './utils';
|
|
@@ -17,29 +14,25 @@ var lastStalledId = null;
|
|
|
17
14
|
var runConcurrentSafePromise = createConcurrentSafePromise();
|
|
18
15
|
export function onInput(_ref) {
|
|
19
16
|
var event = _ref.event,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
_ref$nextState = _ref.nextState,
|
|
18
|
+
nextState = _ref$nextState === void 0 ? {} : _ref$nextState,
|
|
19
|
+
props = _ref.props,
|
|
20
|
+
query = _ref.query,
|
|
21
|
+
refresh = _ref.refresh,
|
|
22
|
+
store = _ref.store,
|
|
23
|
+
setters = _objectWithoutProperties(_ref, _excluded);
|
|
28
24
|
if (lastStalledId) {
|
|
29
25
|
props.environment.clearTimeout(lastStalledId);
|
|
30
26
|
}
|
|
31
|
-
|
|
32
27
|
var setCollections = setters.setCollections,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
28
|
+
setIsOpen = setters.setIsOpen,
|
|
29
|
+
setQuery = setters.setQuery,
|
|
30
|
+
setActiveItemId = setters.setActiveItemId,
|
|
31
|
+
setStatus = setters.setStatus;
|
|
37
32
|
setQuery(query);
|
|
38
33
|
setActiveItemId(props.defaultActiveItemId);
|
|
39
|
-
|
|
40
34
|
if (!query && props.openOnFocus === false) {
|
|
41
35
|
var _nextState$isOpen;
|
|
42
|
-
|
|
43
36
|
var collections = store.getState().collections.map(function (collection) {
|
|
44
37
|
return _objectSpread(_objectSpread({}, collection), {}, {
|
|
45
38
|
items: []
|
|
@@ -49,28 +42,28 @@ export function onInput(_ref) {
|
|
|
49
42
|
setCollections(collections);
|
|
50
43
|
setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.shouldPanelOpen({
|
|
51
44
|
state: store.getState()
|
|
52
|
-
}));
|
|
45
|
+
}));
|
|
46
|
+
|
|
47
|
+
// We make sure to update the latest resolved value of the tracked
|
|
53
48
|
// promises to keep late resolving promises from "cancelling" the state
|
|
54
49
|
// updates performed in this code path.
|
|
55
50
|
// We chain with a void promise to respect `onInput`'s expected return type.
|
|
56
|
-
|
|
57
51
|
var _request = cancelable(runConcurrentSafePromise(collections).then(function () {
|
|
58
52
|
return Promise.resolve();
|
|
59
53
|
}));
|
|
60
|
-
|
|
61
54
|
return store.pendingRequests.add(_request);
|
|
62
55
|
}
|
|
63
|
-
|
|
64
56
|
setStatus('loading');
|
|
65
57
|
lastStalledId = props.environment.setTimeout(function () {
|
|
66
58
|
setStatus('stalled');
|
|
67
|
-
}, props.stallThreshold);
|
|
59
|
+
}, props.stallThreshold);
|
|
60
|
+
|
|
61
|
+
// We track the entire promise chain triggered by `onInput` before mutating
|
|
68
62
|
// the Autocomplete state to make sure that any state manipulation is based on
|
|
69
63
|
// fresh data regardless of when promises individually resolve.
|
|
70
64
|
// We don't track nested promises and only rely on the full chain resolution,
|
|
71
65
|
// meaning we should only ever manipulate the state once this concurrent-safe
|
|
72
66
|
// promise is resolved.
|
|
73
|
-
|
|
74
67
|
var request = cancelable(runConcurrentSafePromise(props.getSources(_objectSpread({
|
|
75
68
|
query: query,
|
|
76
69
|
refresh: refresh,
|
|
@@ -95,11 +88,11 @@ export function onInput(_ref) {
|
|
|
95
88
|
});
|
|
96
89
|
}))).then(function (collections) {
|
|
97
90
|
var _nextState$isOpen2;
|
|
98
|
-
|
|
99
91
|
// Parameters passed to `onInput` could be stale when the following code
|
|
100
92
|
// executes, because `onInput` calls may not resolve in order.
|
|
101
93
|
// If it becomes a problem we'll need to save the last passed parameters.
|
|
102
94
|
// See: https://codesandbox.io/s/agitated-cookies-y290z
|
|
95
|
+
|
|
103
96
|
setStatus('idle');
|
|
104
97
|
setCollections(collections);
|
|
105
98
|
var isPanelOpen = props.shouldPanelOpen({
|
|
@@ -107,12 +100,11 @@ export function onInput(_ref) {
|
|
|
107
100
|
});
|
|
108
101
|
setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);
|
|
109
102
|
var highlightedItem = getActiveItem(store.getState());
|
|
110
|
-
|
|
111
103
|
if (store.getState().activeItemId !== null && highlightedItem) {
|
|
112
104
|
var item = highlightedItem.item,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
105
|
+
itemInputValue = highlightedItem.itemInputValue,
|
|
106
|
+
itemUrl = highlightedItem.itemUrl,
|
|
107
|
+
source = highlightedItem.source;
|
|
116
108
|
source.onActive(_objectSpread({
|
|
117
109
|
event: event,
|
|
118
110
|
item: item,
|
|
@@ -125,7 +117,6 @@ export function onInput(_ref) {
|
|
|
125
117
|
}
|
|
126
118
|
}).finally(function () {
|
|
127
119
|
setStatus('idle');
|
|
128
|
-
|
|
129
120
|
if (lastStalledId) {
|
|
130
121
|
props.environment.clearTimeout(lastStalledId);
|
|
131
122
|
}
|
package/dist/esm/onKeyDown.js
CHANGED
|
@@ -1,29 +1,24 @@
|
|
|
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); }
|
|
1
2
|
var _excluded = ["event", "props", "refresh", "store"];
|
|
2
|
-
|
|
3
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
|
-
|
|
5
4
|
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
|
-
|
|
7
|
-
function
|
|
8
|
-
|
|
5
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
6
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
7
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
9
8
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
10
|
-
|
|
11
9
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
12
|
-
|
|
13
10
|
import { onInput } from './onInput';
|
|
14
11
|
import { getActiveItem } from './utils';
|
|
15
12
|
export function onKeyDown(_ref) {
|
|
16
13
|
var event = _ref.event,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
props = _ref.props,
|
|
15
|
+
refresh = _ref.refresh,
|
|
16
|
+
store = _ref.store,
|
|
17
|
+
setters = _objectWithoutProperties(_ref, _excluded);
|
|
22
18
|
if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
|
|
23
19
|
// eslint-disable-next-line no-inner-declarations
|
|
24
20
|
var triggerScrollIntoView = function triggerScrollIntoView() {
|
|
25
21
|
var nodeItem = props.environment.document.getElementById("".concat(props.id, "-item-").concat(store.getState().activeItemId));
|
|
26
|
-
|
|
27
22
|
if (nodeItem) {
|
|
28
23
|
if (nodeItem.scrollIntoViewIfNeeded) {
|
|
29
24
|
nodeItem.scrollIntoViewIfNeeded(false);
|
|
@@ -32,16 +27,13 @@ export function onKeyDown(_ref) {
|
|
|
32
27
|
}
|
|
33
28
|
}
|
|
34
29
|
}; // eslint-disable-next-line no-inner-declarations
|
|
35
|
-
|
|
36
|
-
|
|
37
30
|
var triggerOnActive = function triggerOnActive() {
|
|
38
31
|
var highlightedItem = getActiveItem(store.getState());
|
|
39
|
-
|
|
40
32
|
if (store.getState().activeItemId !== null && highlightedItem) {
|
|
41
33
|
var item = highlightedItem.item,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
34
|
+
itemInputValue = highlightedItem.itemInputValue,
|
|
35
|
+
itemUrl = highlightedItem.itemUrl,
|
|
36
|
+
source = highlightedItem.source;
|
|
45
37
|
source.onActive(_objectSpread({
|
|
46
38
|
event: event,
|
|
47
39
|
item: item,
|
|
@@ -54,11 +46,10 @@ export function onKeyDown(_ref) {
|
|
|
54
46
|
}
|
|
55
47
|
}; // Default browser behavior changes the caret placement on ArrowUp and
|
|
56
48
|
// ArrowDown.
|
|
49
|
+
event.preventDefault();
|
|
57
50
|
|
|
58
|
-
|
|
59
|
-
event.preventDefault(); // When re-opening the panel, we need to split the logic to keep the actions
|
|
51
|
+
// When re-opening the panel, we need to split the logic to keep the actions
|
|
60
52
|
// synchronized as `onInput` returns a promise.
|
|
61
|
-
|
|
62
53
|
if (store.getState().isOpen === false && (props.openOnFocus || Boolean(store.getState().query))) {
|
|
63
54
|
onInput(_objectSpread({
|
|
64
55
|
event: event,
|
|
@@ -70,10 +61,10 @@ export function onKeyDown(_ref) {
|
|
|
70
61
|
store.dispatch(event.key, {
|
|
71
62
|
nextActiveItemId: props.defaultActiveItemId
|
|
72
63
|
});
|
|
73
|
-
triggerOnActive();
|
|
64
|
+
triggerOnActive();
|
|
65
|
+
// Since we rely on the DOM, we need to wait for all the micro tasks to
|
|
74
66
|
// finish (which include re-opening the panel) to make sure all the
|
|
75
67
|
// elements are available.
|
|
76
|
-
|
|
77
68
|
setTimeout(triggerScrollIntoView, 0);
|
|
78
69
|
});
|
|
79
70
|
} else {
|
|
@@ -86,18 +77,20 @@ export function onKeyDown(_ref) {
|
|
|
86
77
|
// from removing the query right away because we first want to close the
|
|
87
78
|
// panel.
|
|
88
79
|
event.preventDefault();
|
|
89
|
-
store.dispatch(event.key, null);
|
|
80
|
+
store.dispatch(event.key, null);
|
|
81
|
+
|
|
82
|
+
// Hitting the `Escape` key signals the end of a user interaction with the
|
|
90
83
|
// autocomplete. At this point, we should ignore any requests that are still
|
|
91
84
|
// pending and could reopen the panel once they resolve, because that would
|
|
92
85
|
// result in an unsolicited UI behavior.
|
|
93
|
-
|
|
94
86
|
store.pendingRequests.cancelAll();
|
|
95
87
|
} else if (event.key === 'Tab') {
|
|
96
|
-
store.dispatch('blur', null);
|
|
88
|
+
store.dispatch('blur', null);
|
|
89
|
+
|
|
90
|
+
// Hitting the `Escape` key signals the end of a user interaction with the
|
|
97
91
|
// autocomplete. At this point, we should ignore any requests that are still
|
|
98
92
|
// pending and could reopen the panel once they resolve, because that would
|
|
99
93
|
// result in an unsolicited UI behavior.
|
|
100
|
-
|
|
101
94
|
store.pendingRequests.cancelAll();
|
|
102
95
|
} else if (event.key === 'Enter') {
|
|
103
96
|
// No active item, so we let the browser handle the native `onSubmit` form
|
|
@@ -112,20 +105,17 @@ export function onKeyDown(_ref) {
|
|
|
112
105
|
if (!props.debug) {
|
|
113
106
|
store.pendingRequests.cancelAll();
|
|
114
107
|
}
|
|
115
|
-
|
|
116
108
|
return;
|
|
117
|
-
}
|
|
118
|
-
// highlighted.
|
|
119
|
-
|
|
109
|
+
}
|
|
120
110
|
|
|
111
|
+
// This prevents the `onSubmit` event to be sent because an item is
|
|
112
|
+
// highlighted.
|
|
121
113
|
event.preventDefault();
|
|
122
|
-
|
|
123
114
|
var _ref2 = getActiveItem(store.getState()),
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
115
|
+
item = _ref2.item,
|
|
116
|
+
itemInputValue = _ref2.itemInputValue,
|
|
117
|
+
itemUrl = _ref2.itemUrl,
|
|
118
|
+
source = _ref2.source;
|
|
129
119
|
if (event.metaKey || event.ctrlKey) {
|
|
130
120
|
if (itemUrl !== undefined) {
|
|
131
121
|
source.onSelect(_objectSpread({
|
|
@@ -160,7 +150,8 @@ export function onKeyDown(_ref) {
|
|
|
160
150
|
state: store.getState()
|
|
161
151
|
});
|
|
162
152
|
}
|
|
163
|
-
} else if (event.altKey) {
|
|
153
|
+
} else if (event.altKey) {
|
|
154
|
+
// Keep native browser behavior
|
|
164
155
|
} else {
|
|
165
156
|
if (itemUrl !== undefined) {
|
|
166
157
|
source.onSelect(_objectSpread({
|
|
@@ -179,7 +170,6 @@ export function onKeyDown(_ref) {
|
|
|
179
170
|
});
|
|
180
171
|
return;
|
|
181
172
|
}
|
|
182
|
-
|
|
183
173
|
onInput(_objectSpread({
|
|
184
174
|
event: event,
|
|
185
175
|
nextState: {
|
package/dist/esm/reshape.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ declare type ReshapeParams<TItem extends BaseItem> = {
|
|
|
5
5
|
state: AutocompleteState<TItem>;
|
|
6
6
|
};
|
|
7
7
|
export declare function reshape<TItem extends BaseItem>({ collections, props, state, }: ReshapeParams<TItem>): {
|
|
8
|
-
source: import("
|
|
8
|
+
source: import("@algolia/autocomplete-shared/dist/esm/core/AutocompleteReshape").AutocompleteReshapeSource<TItem>;
|
|
9
9
|
items: TItem[];
|
|
10
10
|
}[];
|
|
11
11
|
export {};
|
package/dist/esm/reshape.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
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); }
|
|
1
2
|
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
|
-
|
|
3
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
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
7
|
import { flatten } from '@algolia/autocomplete-shared';
|
|
8
8
|
export function reshape(_ref) {
|
|
9
9
|
var collections = _ref.collections,
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
props = _ref.props,
|
|
11
|
+
state = _ref.state;
|
|
12
12
|
// Sources are grouped by `sourceId` to conveniently pick them via destructuring.
|
|
13
13
|
// Example: `const { recentSearchesPlugin } = sourcesBySourceId`
|
|
14
14
|
var originalSourcesBySourceId = collections.reduce(function (acc, collection) {
|
|
@@ -19,25 +19,23 @@ export function reshape(_ref) {
|
|
|
19
19
|
}
|
|
20
20
|
})));
|
|
21
21
|
}, {});
|
|
22
|
-
|
|
23
22
|
var _props$plugins$reduce = props.plugins.reduce(function (acc, plugin) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
sourcesBySourceId = _props$plugins$reduce.sourcesBySourceId;
|
|
34
|
-
|
|
23
|
+
if (plugin.reshape) {
|
|
24
|
+
return plugin.reshape(acc);
|
|
25
|
+
}
|
|
26
|
+
return acc;
|
|
27
|
+
}, {
|
|
28
|
+
sourcesBySourceId: originalSourcesBySourceId,
|
|
29
|
+
state: state
|
|
30
|
+
}),
|
|
31
|
+
sourcesBySourceId = _props$plugins$reduce.sourcesBySourceId;
|
|
35
32
|
var reshapeSources = props.reshape({
|
|
36
33
|
sourcesBySourceId: sourcesBySourceId,
|
|
37
34
|
sources: Object.values(sourcesBySourceId),
|
|
38
35
|
state: state
|
|
39
|
-
});
|
|
36
|
+
});
|
|
40
37
|
|
|
38
|
+
// We reconstruct the collections with the items modified by the `reshape` prop.
|
|
41
39
|
return flatten(reshapeSources).filter(Boolean).map(function (source) {
|
|
42
40
|
return {
|
|
43
41
|
source: source,
|
package/dist/esm/resolve.js
CHANGED
|
@@ -1,39 +1,27 @@
|
|
|
1
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
|
-
|
|
3
2
|
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
|
-
|
|
5
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; }
|
|
6
|
-
|
|
7
|
-
function
|
|
8
|
-
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
9
7
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
10
|
-
|
|
11
8
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
12
|
-
|
|
13
9
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
14
|
-
|
|
15
10
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
16
|
-
|
|
17
11
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
18
|
-
|
|
19
|
-
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; }
|
|
20
|
-
|
|
12
|
+
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; }
|
|
21
13
|
import { decycle, flatten, invariant } from '@algolia/autocomplete-shared';
|
|
22
14
|
import { mapToAlgoliaResponse } from './utils';
|
|
23
|
-
|
|
24
15
|
function isDescription(item) {
|
|
25
16
|
return Boolean(item.execute);
|
|
26
17
|
}
|
|
27
|
-
|
|
28
18
|
function isRequesterDescription(description) {
|
|
29
19
|
return Boolean(description === null || description === void 0 ? void 0 : description.execute);
|
|
30
20
|
}
|
|
31
|
-
|
|
32
21
|
export function preResolve(itemsOrDescription, sourceId, state) {
|
|
33
22
|
if (isRequesterDescription(itemsOrDescription)) {
|
|
34
23
|
var contextParameters = itemsOrDescription.requesterId === 'algolia' ? Object.assign.apply(Object, [{}].concat(_toConsumableArray(Object.keys(state.context).map(function (key) {
|
|
35
24
|
var _state$context$key;
|
|
36
|
-
|
|
37
25
|
return (_state$context$key = state.context[key]) === null || _state$context$key === void 0 ? void 0 : _state$context$key.__algoliaSearchParameters;
|
|
38
26
|
})))) : {};
|
|
39
27
|
return _objectSpread(_objectSpread({}, itemsOrDescription), {}, {
|
|
@@ -48,7 +36,6 @@ export function preResolve(itemsOrDescription, sourceId, state) {
|
|
|
48
36
|
})
|
|
49
37
|
});
|
|
50
38
|
}
|
|
51
|
-
|
|
52
39
|
return {
|
|
53
40
|
items: itemsOrDescription,
|
|
54
41
|
sourceId: sourceId
|
|
@@ -60,18 +47,15 @@ export function resolve(items) {
|
|
|
60
47
|
acc.push(current);
|
|
61
48
|
return acc;
|
|
62
49
|
}
|
|
63
|
-
|
|
64
50
|
var searchClient = current.searchClient,
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
51
|
+
execute = current.execute,
|
|
52
|
+
requesterId = current.requesterId,
|
|
53
|
+
requests = current.requests;
|
|
68
54
|
var container = acc.find(function (item) {
|
|
69
55
|
return isDescription(current) && isDescription(item) && item.searchClient === searchClient && Boolean(requesterId) && item.requesterId === requesterId;
|
|
70
56
|
});
|
|
71
|
-
|
|
72
57
|
if (container) {
|
|
73
58
|
var _container$items;
|
|
74
|
-
|
|
75
59
|
(_container$items = container.items).push.apply(_container$items, _toConsumableArray(requests));
|
|
76
60
|
} else {
|
|
77
61
|
var request = {
|
|
@@ -82,18 +66,16 @@ export function resolve(items) {
|
|
|
82
66
|
};
|
|
83
67
|
acc.push(request);
|
|
84
68
|
}
|
|
85
|
-
|
|
86
69
|
return acc;
|
|
87
70
|
}, []);
|
|
88
71
|
var values = packed.map(function (maybeDescription) {
|
|
89
72
|
if (!isDescription(maybeDescription)) {
|
|
90
73
|
return Promise.resolve(maybeDescription);
|
|
91
74
|
}
|
|
92
|
-
|
|
93
75
|
var _ref = maybeDescription,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
76
|
+
execute = _ref.execute,
|
|
77
|
+
items = _ref.items,
|
|
78
|
+
searchClient = _ref.searchClient;
|
|
97
79
|
return execute({
|
|
98
80
|
searchClient: searchClient,
|
|
99
81
|
requests: items
|
package/dist/esm/stateReducer.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
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); }
|
|
1
2
|
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
|
-
|
|
3
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
|
-
|
|
5
|
-
function
|
|
6
|
-
|
|
4
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
5
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
6
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
7
7
|
import { getItemsCount, invariant } from '@algolia/autocomplete-shared';
|
|
8
8
|
import { getCompletion } from './getCompletion';
|
|
9
9
|
import { getNextActiveItemId } from './utils';
|
|
@@ -15,7 +15,6 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
15
15
|
activeItemId: action.payload
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
|
-
|
|
19
18
|
case 'setQuery':
|
|
20
19
|
{
|
|
21
20
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
@@ -23,61 +22,52 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
23
22
|
completion: null
|
|
24
23
|
});
|
|
25
24
|
}
|
|
26
|
-
|
|
27
25
|
case 'setCollections':
|
|
28
26
|
{
|
|
29
27
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
30
28
|
collections: action.payload
|
|
31
29
|
});
|
|
32
30
|
}
|
|
33
|
-
|
|
34
31
|
case 'setIsOpen':
|
|
35
32
|
{
|
|
36
33
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
37
34
|
isOpen: action.payload
|
|
38
35
|
});
|
|
39
36
|
}
|
|
40
|
-
|
|
41
37
|
case 'setStatus':
|
|
42
38
|
{
|
|
43
39
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
44
40
|
status: action.payload
|
|
45
41
|
});
|
|
46
42
|
}
|
|
47
|
-
|
|
48
43
|
case 'setContext':
|
|
49
44
|
{
|
|
50
45
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
51
46
|
context: _objectSpread(_objectSpread({}, state.context), action.payload)
|
|
52
47
|
});
|
|
53
48
|
}
|
|
54
|
-
|
|
55
49
|
case 'ArrowDown':
|
|
56
50
|
{
|
|
57
51
|
var nextState = _objectSpread(_objectSpread({}, state), {}, {
|
|
58
52
|
activeItemId: action.payload.hasOwnProperty('nextActiveItemId') ? action.payload.nextActiveItemId : getNextActiveItemId(1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)
|
|
59
53
|
});
|
|
60
|
-
|
|
61
54
|
return _objectSpread(_objectSpread({}, nextState), {}, {
|
|
62
55
|
completion: getCompletion({
|
|
63
56
|
state: nextState
|
|
64
57
|
})
|
|
65
58
|
});
|
|
66
59
|
}
|
|
67
|
-
|
|
68
60
|
case 'ArrowUp':
|
|
69
61
|
{
|
|
70
62
|
var _nextState = _objectSpread(_objectSpread({}, state), {}, {
|
|
71
63
|
activeItemId: getNextActiveItemId(-1, state.activeItemId, getItemsCount(state), action.props.defaultActiveItemId)
|
|
72
64
|
});
|
|
73
|
-
|
|
74
65
|
return _objectSpread(_objectSpread({}, _nextState), {}, {
|
|
75
66
|
completion: getCompletion({
|
|
76
67
|
state: _nextState
|
|
77
68
|
})
|
|
78
69
|
});
|
|
79
70
|
}
|
|
80
|
-
|
|
81
71
|
case 'Escape':
|
|
82
72
|
{
|
|
83
73
|
if (state.isOpen) {
|
|
@@ -87,7 +77,6 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
87
77
|
completion: null
|
|
88
78
|
});
|
|
89
79
|
}
|
|
90
|
-
|
|
91
80
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
92
81
|
activeItemId: null,
|
|
93
82
|
query: '',
|
|
@@ -95,7 +84,6 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
95
84
|
collections: []
|
|
96
85
|
});
|
|
97
86
|
}
|
|
98
|
-
|
|
99
87
|
case 'submit':
|
|
100
88
|
{
|
|
101
89
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
@@ -104,12 +92,13 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
104
92
|
status: 'idle'
|
|
105
93
|
});
|
|
106
94
|
}
|
|
107
|
-
|
|
108
95
|
case 'reset':
|
|
109
96
|
{
|
|
110
97
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
111
|
-
activeItemId:
|
|
98
|
+
activeItemId:
|
|
99
|
+
// Since we open the panel on reset when openOnFocus=true
|
|
112
100
|
// we need to restore the highlighted index to the defaultActiveItemId. (DocSearch use-case)
|
|
101
|
+
|
|
113
102
|
// Since we close the panel when openOnFocus=false
|
|
114
103
|
// we lose track of the highlighted index. (Query-suggestions use-case)
|
|
115
104
|
action.props.openOnFocus === true ? action.props.defaultActiveItemId : null,
|
|
@@ -117,7 +106,6 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
117
106
|
query: ''
|
|
118
107
|
});
|
|
119
108
|
}
|
|
120
|
-
|
|
121
109
|
case 'focus':
|
|
122
110
|
{
|
|
123
111
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
@@ -127,33 +115,28 @@ export var stateReducer = function stateReducer(state, action) {
|
|
|
127
115
|
})
|
|
128
116
|
});
|
|
129
117
|
}
|
|
130
|
-
|
|
131
118
|
case 'blur':
|
|
132
119
|
{
|
|
133
120
|
if (action.props.debug) {
|
|
134
121
|
return state;
|
|
135
122
|
}
|
|
136
|
-
|
|
137
123
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
138
124
|
isOpen: false,
|
|
139
125
|
activeItemId: null
|
|
140
126
|
});
|
|
141
127
|
}
|
|
142
|
-
|
|
143
128
|
case 'mousemove':
|
|
144
129
|
{
|
|
145
130
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
146
131
|
activeItemId: action.payload
|
|
147
132
|
});
|
|
148
133
|
}
|
|
149
|
-
|
|
150
134
|
case 'mouseleave':
|
|
151
135
|
{
|
|
152
136
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
153
137
|
activeItemId: action.props.defaultActiveItemId
|
|
154
138
|
});
|
|
155
139
|
}
|
|
156
|
-
|
|
157
140
|
default:
|
|
158
141
|
invariant(false, "The reducer action ".concat(JSON.stringify(action.type), " is not supported."));
|
|
159
142
|
return state;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { CancelablePromiseList } from '../utils';
|
|
2
|
-
import { BaseItem } from './
|
|
3
|
-
import { InternalAutocompleteOptions } from './AutocompleteOptions';
|
|
4
|
-
import { AutocompleteState } from './AutocompleteState';
|
|
2
|
+
import { BaseItem, InternalAutocompleteOptions, AutocompleteState } from './';
|
|
5
3
|
export interface AutocompleteStore<TItem extends BaseItem> {
|
|
6
4
|
getState(): AutocompleteState<TItem>;
|
|
7
5
|
dispatch(action: ActionType, payload: any): void;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { BaseItem } from './
|
|
2
|
-
import { OnActiveParams, OnResolveParams, OnSelectParams } from './AutocompleteSource';
|
|
1
|
+
import { BaseItem, OnActiveParams, OnResolveParams, OnSelectParams } from './';
|
|
3
2
|
export declare type AutocompleteSubscriber<TItem extends BaseItem> = {
|
|
4
3
|
onSelect(params: OnSelectParams<TItem>): void;
|
|
5
4
|
onActive(params: OnActiveParams<TItem>): void;
|