@algolia/autocomplete-core 1.2.2 → 1.5.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.d.ts +8 -2
- package/dist/esm/createAutocomplete.js +9 -1
- package/dist/esm/createStore.js +1 -1
- package/dist/esm/getAutocompleteSetters.js +2 -2
- package/dist/esm/getDefaultProps.js +14 -10
- package/dist/esm/getPropGetters.js +16 -10
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/metadata.d.ts +33 -0
- package/dist/esm/metadata.js +44 -0
- package/dist/esm/onInput.js +59 -37
- package/dist/esm/onKeyDown.js +4 -2
- package/dist/esm/reshape.d.ts +11 -0
- package/dist/esm/reshape.js +34 -0
- package/dist/esm/resolve.js +7 -5
- package/dist/esm/stateReducer.js +1 -1
- package/dist/esm/types/AutocompleteApi.js +1 -0
- package/dist/esm/types/AutocompleteCollection.js +1 -0
- package/dist/esm/types/AutocompleteContext.js +1 -0
- package/dist/esm/types/AutocompleteEnvironment.d.ts +1 -0
- package/dist/esm/types/AutocompleteEnvironment.js +1 -0
- package/dist/esm/types/AutocompleteNavigator.js +1 -0
- package/dist/esm/types/AutocompleteOptions.d.ts +12 -0
- package/dist/esm/types/AutocompleteOptions.js +1 -0
- package/dist/esm/types/AutocompletePlugin.d.ts +10 -0
- package/dist/esm/types/AutocompletePlugin.js +1 -0
- package/dist/esm/types/AutocompletePropGetters.js +1 -0
- package/dist/esm/types/AutocompleteReshape.d.ts +23 -0
- package/dist/esm/types/AutocompleteReshape.js +1 -0
- package/dist/esm/types/AutocompleteSetters.js +1 -0
- package/dist/esm/types/AutocompleteSource.js +1 -0
- package/dist/esm/types/AutocompleteState.js +1 -0
- package/dist/esm/types/AutocompleteStore.js +1 -0
- package/dist/esm/types/AutocompleteSubscribers.js +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/utils/createConcurrentSafePromise.d.ts +1 -1
- package/dist/esm/utils/getNormalizedSources.js +5 -4
- package/dist/esm/utils/index.d.ts +0 -2
- package/dist/esm/utils/index.js +1 -3
- package/dist/esm/utils/mapToAlgoliaResponse.js +1 -1
- package/dist/umd/index.development.js +411 -148
- 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
- package/dist/esm/utils/flatten.d.ts +0 -1
- package/dist/esm/utils/flatten.js +0 -5
- package/dist/esm/utils/noop.d.ts +0 -1
- package/dist/esm/utils/noop.js +0 -1
- package/dist/esm/version.d.ts +0 -1
- package/dist/esm/version.js +0 -1
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
import { AutocompleteApi, AutocompleteOptions, BaseItem } from './types';
|
|
2
|
-
export
|
|
1
|
+
import { AutocompleteApi, AutocompleteOptions as AutocompleteCoreOptions, BaseItem } from './types';
|
|
2
|
+
export interface AutocompleteOptionsWithMetadata<TItem extends BaseItem> extends AutocompleteCoreOptions<TItem> {
|
|
3
|
+
/**
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
__autocomplete_metadata?: Record<string, unknown>;
|
|
7
|
+
}
|
|
8
|
+
export declare function createAutocomplete<TItem extends BaseItem, TEvent = Event, TMouseEvent = MouseEvent, TKeyboardEvent = KeyboardEvent>(options: AutocompleteOptionsWithMetadata<TItem>): AutocompleteApi<TItem, TEvent, TMouseEvent, TKeyboardEvent>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -9,6 +9,7 @@ import { createStore } from './createStore';
|
|
|
9
9
|
import { getAutocompleteSetters } from './getAutocompleteSetters';
|
|
10
10
|
import { getDefaultProps } from './getDefaultProps';
|
|
11
11
|
import { getPropGetters } from './getPropGetters';
|
|
12
|
+
import { getMetadata, injectMetadata } from './metadata';
|
|
12
13
|
import { onInput } from './onInput';
|
|
13
14
|
import { stateReducer } from './stateReducer';
|
|
14
15
|
export function createAutocomplete(options) {
|
|
@@ -65,6 +66,13 @@ export function createAutocomplete(options) {
|
|
|
65
66
|
}
|
|
66
67
|
}));
|
|
67
68
|
});
|
|
69
|
+
injectMetadata({
|
|
70
|
+
metadata: getMetadata({
|
|
71
|
+
plugins: props.plugins,
|
|
72
|
+
options: options
|
|
73
|
+
}),
|
|
74
|
+
environment: props.environment
|
|
75
|
+
});
|
|
68
76
|
return _objectSpread(_objectSpread({
|
|
69
77
|
refresh: refresh
|
|
70
78
|
}, propGetters), setters);
|
package/dist/esm/createStore.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { 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 { flatten } from '
|
|
7
|
+
import { flatten } from '@algolia/autocomplete-shared';
|
|
8
8
|
export function getAutocompleteSetters(_ref) {
|
|
9
9
|
var store = _ref.store;
|
|
10
10
|
|
|
@@ -4,20 +4,20 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
|
4
4
|
|
|
5
5
|
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); }
|
|
6
6
|
|
|
7
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator
|
|
7
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
8
8
|
|
|
9
9
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
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); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
14
14
|
|
|
15
15
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { 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
|
|
|
19
|
-
import { getItemsCount, generateAutocompleteId } from '@algolia/autocomplete-shared';
|
|
20
|
-
import { getNormalizedSources
|
|
19
|
+
import { getItemsCount, generateAutocompleteId, flatten } from '@algolia/autocomplete-shared';
|
|
20
|
+
import { getNormalizedSources } from './utils';
|
|
21
21
|
export function getDefaultProps(props, pluginSubscribers) {
|
|
22
22
|
var _props$id;
|
|
23
23
|
|
|
@@ -37,6 +37,10 @@ export function getDefaultProps(props, pluginSubscribers) {
|
|
|
37
37
|
shouldPanelOpen: function shouldPanelOpen(_ref) {
|
|
38
38
|
var state = _ref.state;
|
|
39
39
|
return getItemsCount(state) > 0;
|
|
40
|
+
},
|
|
41
|
+
reshape: function reshape(_ref2) {
|
|
42
|
+
var sources = _ref2.sources;
|
|
43
|
+
return sources;
|
|
40
44
|
}
|
|
41
45
|
}, props), {}, {
|
|
42
46
|
// Since `generateAutocompleteId` triggers a side effect (it increments
|
|
@@ -114,17 +118,17 @@ export function getDefaultProps(props, pluginSubscribers) {
|
|
|
114
118
|
});
|
|
115
119
|
},
|
|
116
120
|
navigator: _objectSpread({
|
|
117
|
-
navigate: function navigate(
|
|
118
|
-
var itemUrl =
|
|
121
|
+
navigate: function navigate(_ref3) {
|
|
122
|
+
var itemUrl = _ref3.itemUrl;
|
|
119
123
|
environment.location.assign(itemUrl);
|
|
120
124
|
},
|
|
121
|
-
navigateNewTab: function navigateNewTab(
|
|
122
|
-
var itemUrl =
|
|
125
|
+
navigateNewTab: function navigateNewTab(_ref4) {
|
|
126
|
+
var itemUrl = _ref4.itemUrl;
|
|
123
127
|
var windowReference = environment.open(itemUrl, '_blank', 'noopener');
|
|
124
128
|
windowReference === null || windowReference === void 0 ? void 0 : windowReference.focus();
|
|
125
129
|
},
|
|
126
|
-
navigateNewWindow: function navigateNewWindow(
|
|
127
|
-
var itemUrl =
|
|
130
|
+
navigateNewWindow: function navigateNewWindow(_ref5) {
|
|
131
|
+
var itemUrl = _ref5.itemUrl;
|
|
128
132
|
environment.open(itemUrl, '_blank', 'noopener');
|
|
129
133
|
}
|
|
130
134
|
}, props.navigator)
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
var _excluded = ["props", "refresh", "store"],
|
|
2
|
+
_excluded2 = ["inputElement", "formElement", "panelElement"],
|
|
3
|
+
_excluded3 = ["inputElement"],
|
|
4
|
+
_excluded4 = ["inputElement", "maxLength"],
|
|
5
|
+
_excluded5 = ["item", "source"];
|
|
6
|
+
|
|
7
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
8
|
|
|
3
9
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
10
|
|
|
@@ -15,13 +21,13 @@ export function getPropGetters(_ref) {
|
|
|
15
21
|
var props = _ref.props,
|
|
16
22
|
refresh = _ref.refresh,
|
|
17
23
|
store = _ref.store,
|
|
18
|
-
setters = _objectWithoutProperties(_ref,
|
|
24
|
+
setters = _objectWithoutProperties(_ref, _excluded);
|
|
19
25
|
|
|
20
26
|
var getEnvironmentProps = function getEnvironmentProps(providedProps) {
|
|
21
27
|
var inputElement = providedProps.inputElement,
|
|
22
28
|
formElement = providedProps.formElement,
|
|
23
29
|
panelElement = providedProps.panelElement,
|
|
24
|
-
rest = _objectWithoutProperties(providedProps,
|
|
30
|
+
rest = _objectWithoutProperties(providedProps, _excluded2);
|
|
25
31
|
|
|
26
32
|
return _objectSpread({
|
|
27
33
|
// On touch devices, we do not rely on the native `blur` event of the
|
|
@@ -29,15 +35,15 @@ export function getPropGetters(_ref) {
|
|
|
29
35
|
// outside of the autocomplete elements.
|
|
30
36
|
// This ensures a working experience on mobile because we blur the input
|
|
31
37
|
// on touch devices when the user starts scrolling (`touchmove`).
|
|
38
|
+
// @TODO: support cases where there are multiple Autocomplete instances.
|
|
39
|
+
// Right now, a second instance makes this computation return false.
|
|
32
40
|
onTouchStart: function onTouchStart(event) {
|
|
33
41
|
if (store.getState().isOpen === false || event.target === inputElement) {
|
|
34
42
|
return;
|
|
35
|
-
}
|
|
36
|
-
// Right now, a second instance makes this computation return false.
|
|
37
|
-
|
|
43
|
+
}
|
|
38
44
|
|
|
39
45
|
var isTargetWithinAutocomplete = [formElement, panelElement].some(function (contextNode) {
|
|
40
|
-
return isOrContainsNode(contextNode, event.target)
|
|
46
|
+
return isOrContainsNode(contextNode, event.target);
|
|
41
47
|
});
|
|
42
48
|
|
|
43
49
|
if (isTargetWithinAutocomplete === false) {
|
|
@@ -70,7 +76,7 @@ export function getPropGetters(_ref) {
|
|
|
70
76
|
|
|
71
77
|
var getFormProps = function getFormProps(providedProps) {
|
|
72
78
|
var inputElement = providedProps.inputElement,
|
|
73
|
-
rest = _objectWithoutProperties(providedProps,
|
|
79
|
+
rest = _objectWithoutProperties(providedProps, _excluded3);
|
|
74
80
|
|
|
75
81
|
return _objectSpread({
|
|
76
82
|
action: '',
|
|
@@ -126,7 +132,7 @@ export function getPropGetters(_ref) {
|
|
|
126
132
|
inputElement = _ref2.inputElement,
|
|
127
133
|
_ref2$maxLength = _ref2.maxLength,
|
|
128
134
|
maxLength = _ref2$maxLength === void 0 ? 512 : _ref2$maxLength,
|
|
129
|
-
rest = _objectWithoutProperties(_ref2,
|
|
135
|
+
rest = _objectWithoutProperties(_ref2, _excluded4);
|
|
130
136
|
|
|
131
137
|
var activeItem = getActiveItem(store.getState());
|
|
132
138
|
return _objectSpread({
|
|
@@ -217,7 +223,7 @@ export function getPropGetters(_ref) {
|
|
|
217
223
|
var getItemProps = function getItemProps(providedProps) {
|
|
218
224
|
var item = providedProps.item,
|
|
219
225
|
source = providedProps.source,
|
|
220
|
-
rest = _objectWithoutProperties(providedProps,
|
|
226
|
+
rest = _objectWithoutProperties(providedProps, _excluded5);
|
|
221
227
|
|
|
222
228
|
return _objectSpread({
|
|
223
229
|
id: "".concat(props.id, "-item-").concat(item.__autocomplete_id),
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { UserAgent } from '@algolia/autocomplete-shared';
|
|
2
|
+
import { AutocompleteEnvironment, AutocompleteOptionsWithMetadata, AutocompletePlugin, BaseItem } from '.';
|
|
3
|
+
declare type AutocompleteMetadata = {
|
|
4
|
+
plugins: Array<{
|
|
5
|
+
name: string | undefined;
|
|
6
|
+
options: string[];
|
|
7
|
+
}>;
|
|
8
|
+
options: Record<string, string[]>;
|
|
9
|
+
ua: UserAgent[];
|
|
10
|
+
};
|
|
11
|
+
declare type GetMetadataParams<TItem extends BaseItem, TData = unknown> = {
|
|
12
|
+
plugins: Array<AutocompletePlugin<TItem, TData>>;
|
|
13
|
+
options: AutocompleteOptionsWithMetadata<TItem>;
|
|
14
|
+
};
|
|
15
|
+
export declare function getMetadata<TItem extends BaseItem, TData = unknown>({ plugins, options, }: GetMetadataParams<TItem, TData>): {
|
|
16
|
+
plugins: {
|
|
17
|
+
name: string | undefined;
|
|
18
|
+
options: string[];
|
|
19
|
+
}[];
|
|
20
|
+
options: {
|
|
21
|
+
'autocomplete-core': string[];
|
|
22
|
+
};
|
|
23
|
+
ua: {
|
|
24
|
+
segment: string;
|
|
25
|
+
version: string;
|
|
26
|
+
}[];
|
|
27
|
+
};
|
|
28
|
+
declare type InlineMetadataParams = {
|
|
29
|
+
metadata: AutocompleteMetadata;
|
|
30
|
+
environment: AutocompleteEnvironment;
|
|
31
|
+
};
|
|
32
|
+
export declare function injectMetadata({ metadata, environment, }: InlineMetadataParams): void;
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
import { userAgents } from '@algolia/autocomplete-shared';
|
|
8
|
+
export function getMetadata(_ref) {
|
|
9
|
+
var _, _options$__autocomple, _options$__autocomple2, _options$__autocomple3;
|
|
10
|
+
|
|
11
|
+
var plugins = _ref.plugins,
|
|
12
|
+
options = _ref.options;
|
|
13
|
+
var optionsKey = (_ = (((_options$__autocomple = options.__autocomplete_metadata) === null || _options$__autocomple === void 0 ? void 0 : _options$__autocomple.userAgents) || [])[0]) === null || _ === void 0 ? void 0 : _.segment;
|
|
14
|
+
var extraOptions = optionsKey ? _defineProperty({}, optionsKey, Object.keys(((_options$__autocomple2 = options.__autocomplete_metadata) === null || _options$__autocomple2 === void 0 ? void 0 : _options$__autocomple2.options) || {})) : {};
|
|
15
|
+
return {
|
|
16
|
+
plugins: plugins.map(function (plugin) {
|
|
17
|
+
return {
|
|
18
|
+
name: plugin.name,
|
|
19
|
+
options: Object.keys(plugin.__autocomplete_pluginOptions || [])
|
|
20
|
+
};
|
|
21
|
+
}),
|
|
22
|
+
options: _objectSpread({
|
|
23
|
+
'autocomplete-core': Object.keys(options)
|
|
24
|
+
}, extraOptions),
|
|
25
|
+
ua: userAgents.concat(((_options$__autocomple3 = options.__autocomplete_metadata) === null || _options$__autocomple3 === void 0 ? void 0 : _options$__autocomple3.userAgents) || [])
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function injectMetadata(_ref3) {
|
|
29
|
+
var _environment$navigato;
|
|
30
|
+
|
|
31
|
+
var metadata = _ref3.metadata,
|
|
32
|
+
environment = _ref3.environment;
|
|
33
|
+
var isMetadataEnabled = (_environment$navigato = environment.navigator) === null || _environment$navigato === void 0 ? void 0 : _environment$navigato.userAgent.includes('Algolia Crawler');
|
|
34
|
+
|
|
35
|
+
if (isMetadataEnabled) {
|
|
36
|
+
var metadataContainer = environment.document.createElement('meta');
|
|
37
|
+
var headRef = environment.document.querySelector('head');
|
|
38
|
+
metadataContainer.name = 'algolia:metadata';
|
|
39
|
+
setTimeout(function () {
|
|
40
|
+
metadataContainer.content = JSON.stringify(metadata);
|
|
41
|
+
headRef.appendChild(metadataContainer);
|
|
42
|
+
}, 0);
|
|
43
|
+
}
|
|
44
|
+
}
|
package/dist/esm/onInput.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
var _excluded = ["event", "nextState", "props", "query", "refresh", "store"];
|
|
2
|
+
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
4
|
|
|
3
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
6
|
|
|
@@ -8,9 +10,11 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
8
10
|
|
|
9
11
|
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; }
|
|
10
12
|
|
|
13
|
+
import { reshape } from './reshape';
|
|
11
14
|
import { preResolve, resolve, postResolve } from './resolve';
|
|
12
|
-
import { getActiveItem } from './utils';
|
|
15
|
+
import { createConcurrentSafePromise, getActiveItem } from './utils';
|
|
13
16
|
var lastStalledId = null;
|
|
17
|
+
var runConcurrentSafePromise = createConcurrentSafePromise();
|
|
14
18
|
export function onInput(_ref) {
|
|
15
19
|
var event = _ref.event,
|
|
16
20
|
_ref$nextState = _ref.nextState,
|
|
@@ -19,7 +23,7 @@ export function onInput(_ref) {
|
|
|
19
23
|
query = _ref.query,
|
|
20
24
|
refresh = _ref.refresh,
|
|
21
25
|
store = _ref.store,
|
|
22
|
-
setters = _objectWithoutProperties(_ref,
|
|
26
|
+
setters = _objectWithoutProperties(_ref, _excluded);
|
|
23
27
|
|
|
24
28
|
if (lastStalledId) {
|
|
25
29
|
props.environment.clearTimeout(lastStalledId);
|
|
@@ -36,28 +40,40 @@ export function onInput(_ref) {
|
|
|
36
40
|
if (!query && props.openOnFocus === false) {
|
|
37
41
|
var _nextState$isOpen;
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
setCollections(store.getState().collections.map(function (collection) {
|
|
43
|
+
var collections = store.getState().collections.map(function (collection) {
|
|
41
44
|
return _objectSpread(_objectSpread({}, collection), {}, {
|
|
42
45
|
items: []
|
|
43
46
|
});
|
|
44
|
-
})
|
|
47
|
+
});
|
|
48
|
+
setStatus('idle');
|
|
49
|
+
setCollections(collections);
|
|
45
50
|
setIsOpen((_nextState$isOpen = nextState.isOpen) !== null && _nextState$isOpen !== void 0 ? _nextState$isOpen : props.shouldPanelOpen({
|
|
46
51
|
state: store.getState()
|
|
47
|
-
}));
|
|
48
|
-
|
|
52
|
+
})); // We make sure to update the latest resolved value of the tracked
|
|
53
|
+
// promises to keep late resolving promises from "cancelling" the state
|
|
54
|
+
// updates performed in this code path.
|
|
55
|
+
// We chain with a void promise to respect `onInput`'s expected return type.
|
|
56
|
+
|
|
57
|
+
return runConcurrentSafePromise(collections).then(function () {
|
|
58
|
+
return Promise.resolve();
|
|
59
|
+
});
|
|
49
60
|
}
|
|
50
61
|
|
|
51
62
|
setStatus('loading');
|
|
52
63
|
lastStalledId = props.environment.setTimeout(function () {
|
|
53
64
|
setStatus('stalled');
|
|
54
|
-
}, props.stallThreshold);
|
|
55
|
-
|
|
65
|
+
}, props.stallThreshold); // We track the entire promise chain triggered by `onInput` before mutating
|
|
66
|
+
// the Autocomplete state to make sure that any state manipulation is based on
|
|
67
|
+
// fresh data regardless of when promises individually resolve.
|
|
68
|
+
// We don't track nested promises and only rely on the full chain resolution,
|
|
69
|
+
// meaning we should only ever manipulate the state once this concurrent-safe
|
|
70
|
+
// promise is resolved.
|
|
71
|
+
|
|
72
|
+
return runConcurrentSafePromise(props.getSources(_objectSpread({
|
|
56
73
|
query: query,
|
|
57
74
|
refresh: refresh,
|
|
58
75
|
state: store.getState()
|
|
59
76
|
}, setters)).then(function (sources) {
|
|
60
|
-
setStatus('loading');
|
|
61
77
|
return Promise.all(sources.map(function (source) {
|
|
62
78
|
return Promise.resolve(source.getItems(_objectSpread({
|
|
63
79
|
query: query,
|
|
@@ -69,35 +85,41 @@ export function onInput(_ref) {
|
|
|
69
85
|
})).then(resolve).then(function (responses) {
|
|
70
86
|
return postResolve(responses, sources);
|
|
71
87
|
}).then(function (collections) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
setCollections(collections);
|
|
76
|
-
var isPanelOpen = props.shouldPanelOpen({
|
|
88
|
+
return reshape({
|
|
89
|
+
collections: collections,
|
|
90
|
+
props: props,
|
|
77
91
|
state: store.getState()
|
|
78
92
|
});
|
|
79
|
-
|
|
80
|
-
|
|
93
|
+
});
|
|
94
|
+
})).then(function (collections) {
|
|
95
|
+
var _nextState$isOpen2;
|
|
81
96
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
source = highlightedItem.source;
|
|
87
|
-
source.onActive(_objectSpread({
|
|
88
|
-
event: event,
|
|
89
|
-
item: item,
|
|
90
|
-
itemInputValue: itemInputValue,
|
|
91
|
-
itemUrl: itemUrl,
|
|
92
|
-
refresh: refresh,
|
|
93
|
-
source: source,
|
|
94
|
-
state: store.getState()
|
|
95
|
-
}, setters));
|
|
96
|
-
}
|
|
97
|
-
}).finally(function () {
|
|
98
|
-
if (lastStalledId) {
|
|
99
|
-
props.environment.clearTimeout(lastStalledId);
|
|
100
|
-
}
|
|
97
|
+
setStatus('idle');
|
|
98
|
+
setCollections(collections);
|
|
99
|
+
var isPanelOpen = props.shouldPanelOpen({
|
|
100
|
+
state: store.getState()
|
|
101
101
|
});
|
|
102
|
+
setIsOpen((_nextState$isOpen2 = nextState.isOpen) !== null && _nextState$isOpen2 !== void 0 ? _nextState$isOpen2 : props.openOnFocus && !query && isPanelOpen || isPanelOpen);
|
|
103
|
+
var highlightedItem = getActiveItem(store.getState());
|
|
104
|
+
|
|
105
|
+
if (store.getState().activeItemId !== null && highlightedItem) {
|
|
106
|
+
var item = highlightedItem.item,
|
|
107
|
+
itemInputValue = highlightedItem.itemInputValue,
|
|
108
|
+
itemUrl = highlightedItem.itemUrl,
|
|
109
|
+
source = highlightedItem.source;
|
|
110
|
+
source.onActive(_objectSpread({
|
|
111
|
+
event: event,
|
|
112
|
+
item: item,
|
|
113
|
+
itemInputValue: itemInputValue,
|
|
114
|
+
itemUrl: itemUrl,
|
|
115
|
+
refresh: refresh,
|
|
116
|
+
source: source,
|
|
117
|
+
state: store.getState()
|
|
118
|
+
}, setters));
|
|
119
|
+
}
|
|
120
|
+
}).finally(function () {
|
|
121
|
+
if (lastStalledId) {
|
|
122
|
+
props.environment.clearTimeout(lastStalledId);
|
|
123
|
+
}
|
|
102
124
|
});
|
|
103
125
|
}
|
package/dist/esm/onKeyDown.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
var _excluded = ["event", "props", "refresh", "store"];
|
|
2
|
+
|
|
3
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
4
|
|
|
3
5
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
6
|
|
|
@@ -15,7 +17,7 @@ export function onKeyDown(_ref) {
|
|
|
15
17
|
props = _ref.props,
|
|
16
18
|
refresh = _ref.refresh,
|
|
17
19
|
store = _ref.store,
|
|
18
|
-
setters = _objectWithoutProperties(_ref,
|
|
20
|
+
setters = _objectWithoutProperties(_ref, _excluded);
|
|
19
21
|
|
|
20
22
|
if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
|
|
21
23
|
// eslint-disable-next-line no-inner-declarations
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AutocompleteCollection, AutocompleteState, BaseItem, InternalAutocompleteOptions } from './types';
|
|
2
|
+
declare type ReshapeParams<TItem extends BaseItem> = {
|
|
3
|
+
collections: Array<AutocompleteCollection<any>>;
|
|
4
|
+
props: InternalAutocompleteOptions<TItem>;
|
|
5
|
+
state: AutocompleteState<TItem>;
|
|
6
|
+
};
|
|
7
|
+
export declare function reshape<TItem extends BaseItem>({ collections, props, state, }: ReshapeParams<TItem>): {
|
|
8
|
+
source: import("./types").AutocompleteReshapeSource<TItem>;
|
|
9
|
+
items: TItem[];
|
|
10
|
+
}[];
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
|
+
|
|
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
|
+
|
|
7
|
+
import { flatten } from '@algolia/autocomplete-shared';
|
|
8
|
+
export function reshape(_ref) {
|
|
9
|
+
var collections = _ref.collections,
|
|
10
|
+
props = _ref.props,
|
|
11
|
+
state = _ref.state;
|
|
12
|
+
// Sources are grouped by `sourceId` to conveniently pick them via destructuring.
|
|
13
|
+
// Example: `const { recentSearchesPlugin } = sourcesBySourceId`
|
|
14
|
+
var sourcesBySourceId = collections.reduce(function (acc, collection) {
|
|
15
|
+
return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, collection.source.sourceId, _objectSpread(_objectSpread({}, collection.source), {}, {
|
|
16
|
+
getItems: function getItems() {
|
|
17
|
+
// We provide the resolved items from the collection to the `reshape` prop.
|
|
18
|
+
return flatten(collection.items);
|
|
19
|
+
}
|
|
20
|
+
})));
|
|
21
|
+
}, {});
|
|
22
|
+
var reshapeSources = props.reshape({
|
|
23
|
+
sources: Object.values(sourcesBySourceId),
|
|
24
|
+
sourcesBySourceId: sourcesBySourceId,
|
|
25
|
+
state: state
|
|
26
|
+
}); // We reconstruct the collections with the items modified by the `reshape` prop.
|
|
27
|
+
|
|
28
|
+
return flatten(reshapeSources).filter(Boolean).map(function (source) {
|
|
29
|
+
return {
|
|
30
|
+
source: source,
|
|
31
|
+
items: source.getItems()
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
}
|
package/dist/esm/resolve.js
CHANGED
|
@@ -6,20 +6,20 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
|
6
6
|
|
|
7
7
|
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); }
|
|
8
8
|
|
|
9
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator
|
|
9
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
10
10
|
|
|
11
11
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
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); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
16
16
|
|
|
17
17
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { 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
|
|
|
21
|
-
import { invariant } from '@algolia/autocomplete-shared';
|
|
22
|
-
import {
|
|
21
|
+
import { decycle, flatten, invariant } from '@algolia/autocomplete-shared';
|
|
22
|
+
import { mapToAlgoliaResponse } from './utils';
|
|
23
23
|
|
|
24
24
|
function isDescription(item) {
|
|
25
25
|
return Boolean(item.execute);
|
|
@@ -105,7 +105,9 @@ export function postResolve(responses, sources) {
|
|
|
105
105
|
});
|
|
106
106
|
var transform = matches[0].transformResponse;
|
|
107
107
|
var items = transform ? transform(mapToAlgoliaResponse(results)) : results;
|
|
108
|
-
invariant(Array.isArray(items),
|
|
108
|
+
invariant(Array.isArray(items), function () {
|
|
109
|
+
return "The `getItems` function from source \"".concat(source.sourceId, "\" must return an array of items but returned type ").concat(JSON.stringify(_typeof(items)), ":\n\n").concat(JSON.stringify(decycle(items), null, 2), ".\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems");
|
|
110
|
+
});
|
|
109
111
|
invariant(items.every(Boolean), "The `getItems` function from source \"".concat(source.sourceId, "\" must return an array of items but returned ").concat(JSON.stringify(undefined), ".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"));
|
|
110
112
|
return {
|
|
111
113
|
source: source,
|
package/dist/esm/stateReducer.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2
2
|
|
|
3
3
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
4
4
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -3,6 +3,7 @@ import { AutocompleteScopeApi, BaseItem } from './AutocompleteApi';
|
|
|
3
3
|
import { AutocompleteEnvironment } from './AutocompleteEnvironment';
|
|
4
4
|
import { AutocompleteNavigator } from './AutocompleteNavigator';
|
|
5
5
|
import { AutocompletePlugin } from './AutocompletePlugin';
|
|
6
|
+
import { Reshape } from './AutocompleteReshape';
|
|
6
7
|
import { AutocompleteSource, InternalAutocompleteSource } from './AutocompleteSource';
|
|
7
8
|
import { AutocompleteState } from './AutocompleteState';
|
|
8
9
|
export interface OnSubmitParams<TItem extends BaseItem> extends AutocompleteScopeApi<TItem> {
|
|
@@ -149,6 +150,16 @@ export interface AutocompleteOptions<TItem extends BaseItem> {
|
|
|
149
150
|
* @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-plugins
|
|
150
151
|
*/
|
|
151
152
|
plugins?: Array<AutocompletePlugin<any, any>>;
|
|
153
|
+
/**
|
|
154
|
+
* The function called to reshape the sources after they're resolved.
|
|
155
|
+
*
|
|
156
|
+
* This is useful to transform sources before rendering them. You can group sources by attribute, remove duplicates, create shared limits between sources, etc.
|
|
157
|
+
*
|
|
158
|
+
* See [**Reshaping sources**](https://www.algolia.com/doc/ui-libraries/autocomplete/guides/reshaping-sources/) for more information.
|
|
159
|
+
*
|
|
160
|
+
* @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-reshape
|
|
161
|
+
*/
|
|
162
|
+
reshape?: Reshape<TItem>;
|
|
152
163
|
}
|
|
153
164
|
export interface InternalAutocompleteOptions<TItem extends BaseItem> extends AutocompleteOptions<TItem> {
|
|
154
165
|
debug: boolean;
|
|
@@ -169,5 +180,6 @@ export interface InternalAutocompleteOptions<TItem extends BaseItem> extends Aut
|
|
|
169
180
|
}): boolean;
|
|
170
181
|
onSubmit(params: OnSubmitParams<TItem>): void;
|
|
171
182
|
onReset(params: OnResetParams<TItem>): void;
|
|
183
|
+
reshape: Reshape<TItem>;
|
|
172
184
|
}
|
|
173
185
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -21,5 +21,15 @@ export declare type AutocompletePlugin<TItem extends BaseItem, TData = unknown>
|
|
|
21
21
|
* @link https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/plugins/#param-data
|
|
22
22
|
*/
|
|
23
23
|
data?: TData;
|
|
24
|
+
/**
|
|
25
|
+
* A name to identify the plugin.
|
|
26
|
+
*
|
|
27
|
+
* @link https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/plugins/#param-name
|
|
28
|
+
*/
|
|
29
|
+
name?: string;
|
|
30
|
+
/**
|
|
31
|
+
* @internal
|
|
32
|
+
*/
|
|
33
|
+
__autocomplete_pluginOptions?: Record<string, any>;
|
|
24
34
|
};
|
|
25
35
|
export {};
|