@algolia/autocomplete-core 1.8.3 → 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.
Files changed (55) hide show
  1. package/dist/esm/createAutocomplete.js +12 -9
  2. package/dist/esm/createStore.js +4 -5
  3. package/dist/esm/getAutocompleteSetters.d.ts +6 -6
  4. package/dist/esm/getAutocompleteSetters.js +4 -11
  5. package/dist/esm/getCompletion.js +0 -3
  6. package/dist/esm/getDefaultProps.js +6 -22
  7. package/dist/esm/getPropGetters.js +40 -69
  8. package/dist/esm/metadata.js +6 -9
  9. package/dist/esm/onInput.js +25 -34
  10. package/dist/esm/onKeyDown.js +30 -40
  11. package/dist/esm/reshape.d.ts +1 -1
  12. package/dist/esm/reshape.js +17 -19
  13. package/dist/esm/resolve.js +10 -28
  14. package/dist/esm/stateReducer.js +7 -24
  15. package/dist/esm/types/AutocompleteStore.d.ts +1 -3
  16. package/dist/esm/types/AutocompleteSubscribers.d.ts +1 -2
  17. package/dist/esm/types/index.d.ts +16 -11
  18. package/dist/esm/types/index.js +3 -12
  19. package/dist/esm/utils/createCancelablePromise.js +0 -8
  20. package/dist/esm/utils/createConcurrentSafePromise.js +0 -1
  21. package/dist/esm/utils/getActiveItem.d.ts +1 -1
  22. package/dist/esm/utils/getActiveItem.js +4 -12
  23. package/dist/esm/utils/getNextActiveItemId.js +0 -4
  24. package/dist/esm/utils/getNormalizedSources.js +5 -10
  25. package/dist/esm/utils/mapToAlgoliaResponse.d.ts +1 -1
  26. package/dist/esm/utils/mapToAlgoliaResponse.js +4 -6
  27. package/dist/umd/index.development.js +961 -387
  28. package/dist/umd/index.development.js.map +1 -1
  29. package/dist/umd/index.production.js +2 -2
  30. package/dist/umd/index.production.js.map +1 -1
  31. package/package.json +6 -5
  32. package/dist/esm/types/AutocompleteApi.d.ts +0 -15
  33. package/dist/esm/types/AutocompleteApi.js +0 -1
  34. package/dist/esm/types/AutocompleteCollection.d.ts +0 -10
  35. package/dist/esm/types/AutocompleteCollection.js +0 -1
  36. package/dist/esm/types/AutocompleteContext.d.ts +0 -3
  37. package/dist/esm/types/AutocompleteContext.js +0 -1
  38. package/dist/esm/types/AutocompleteEnvironment.d.ts +0 -13
  39. package/dist/esm/types/AutocompleteEnvironment.js +0 -1
  40. package/dist/esm/types/AutocompleteNavigator.d.ts +0 -28
  41. package/dist/esm/types/AutocompleteNavigator.js +0 -1
  42. package/dist/esm/types/AutocompleteOptions.d.ts +0 -185
  43. package/dist/esm/types/AutocompleteOptions.js +0 -1
  44. package/dist/esm/types/AutocompletePlugin.d.ts +0 -43
  45. package/dist/esm/types/AutocompletePlugin.js +0 -1
  46. package/dist/esm/types/AutocompletePropGetters.d.ts +0 -100
  47. package/dist/esm/types/AutocompletePropGetters.js +0 -1
  48. package/dist/esm/types/AutocompleteReshape.d.ts +0 -25
  49. package/dist/esm/types/AutocompleteReshape.js +0 -1
  50. package/dist/esm/types/AutocompleteSetters.d.ts +0 -46
  51. package/dist/esm/types/AutocompleteSetters.js +0 -1
  52. package/dist/esm/types/AutocompleteSource.d.ts +0 -75
  53. package/dist/esm/types/AutocompleteSource.js +0 -1
  54. package/dist/esm/types/AutocompleteState.d.ts +0 -12
  55. package/dist/esm/types/AutocompleteState.js +0 -1
@@ -1,13 +1,18 @@
1
- export * from './AutocompleteApi';
2
- export * from './AutocompleteCollection';
3
- export * from './AutocompleteContext';
4
- export * from './AutocompleteEnvironment';
5
- export * from './AutocompleteOptions';
6
- export * from './AutocompleteSource';
7
- export * from './AutocompletePropGetters';
8
- export * from './AutocompletePlugin';
9
- export * from './AutocompleteReshape';
10
- export * from './AutocompleteSetters';
11
- export * from './AutocompleteState';
1
+ export * from '@algolia/autocomplete-shared/dist/esm/core';
12
2
  export * from './AutocompleteStore';
13
3
  export * from './AutocompleteSubscribers';
4
+ import { CreateAlgoliaInsightsPluginParams, AutocompleteInsightsApi as _AutocompleteInsightsApi, AlgoliaInsightsHit as _AlgoliaInsightsHit } from '@algolia/autocomplete-plugin-algolia-insights';
5
+ import { AutocompleteOptions as _AutocompleteOptions, BaseItem } from '@algolia/autocomplete-shared/dist/esm/core';
6
+ export declare type AutocompleteInsightsApi = _AutocompleteInsightsApi;
7
+ export declare type AlgoliaInsightsHit = _AlgoliaInsightsHit;
8
+ export interface AutocompleteOptions<TItem extends BaseItem> extends _AutocompleteOptions<TItem> {
9
+ /**
10
+ * Whether to enable the Insights plugin and load the Insights library if it has not been loaded yet.
11
+ *
12
+ * See [**autocomplete-plugin-algolia-insights**](https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-plugin-algolia-insights/) for more information.
13
+ *
14
+ * @default false
15
+ * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-insights
16
+ */
17
+ insights?: CreateAlgoliaInsightsPluginParams | boolean;
18
+ }
@@ -1,13 +1,4 @@
1
- export * from './AutocompleteApi';
2
- export * from './AutocompleteCollection';
3
- export * from './AutocompleteContext';
4
- export * from './AutocompleteEnvironment';
5
- export * from './AutocompleteOptions';
6
- export * from './AutocompleteSource';
7
- export * from './AutocompletePropGetters';
8
- export * from './AutocompletePlugin';
9
- export * from './AutocompleteReshape';
10
- export * from './AutocompleteSetters';
11
- export * from './AutocompleteState';
1
+ export * from '@algolia/autocomplete-shared/dist/esm/core';
12
2
  export * from './AutocompleteStore';
13
- export * from './AutocompleteSubscribers';
3
+ export * from './AutocompleteSubscribers';
4
+ export {};
@@ -11,7 +11,6 @@ function createInternalCancelablePromise(promise, initialState) {
11
11
  if (onfinally) {
12
12
  state.onCancelList.push(onfinally);
13
13
  }
14
-
15
14
  return createInternalCancelablePromise(promise.finally(createCallback(onfinally && function () {
16
15
  state.onCancelList = [];
17
16
  return onfinally();
@@ -30,7 +29,6 @@ function createInternalCancelablePromise(promise, initialState) {
30
29
  }
31
30
  };
32
31
  }
33
-
34
32
  export function createCancelablePromise(executor) {
35
33
  return createInternalCancelablePromise(new Promise(function (resolve, reject) {
36
34
  return executor(resolve, reject);
@@ -39,32 +37,26 @@ export function createCancelablePromise(executor) {
39
37
  onCancelList: []
40
38
  });
41
39
  }
42
-
43
40
  createCancelablePromise.resolve = function (value) {
44
41
  return cancelable(Promise.resolve(value));
45
42
  };
46
-
47
43
  createCancelablePromise.reject = function (reason) {
48
44
  return cancelable(Promise.reject(reason));
49
45
  };
50
-
51
46
  export function cancelable(promise) {
52
47
  return createInternalCancelablePromise(promise, {
53
48
  isCanceled: false,
54
49
  onCancelList: []
55
50
  });
56
51
  }
57
-
58
52
  function createCallback(onResult, state, fallback) {
59
53
  if (!onResult) {
60
54
  return fallback;
61
55
  }
62
-
63
56
  return function callback(arg) {
64
57
  if (state.isCanceled) {
65
58
  return arg;
66
59
  }
67
-
68
60
  return onResult(arg);
69
61
  };
70
62
  }
@@ -28,7 +28,6 @@ export function createConcurrentSafePromise() {
28
28
  if (latestResolvedValue && currentPromiseId < latestResolvedId) {
29
29
  return latestResolvedValue;
30
30
  }
31
-
32
31
  latestResolvedId = currentPromiseId;
33
32
  latestResolvedValue = x;
34
33
  return x;
@@ -3,5 +3,5 @@ export declare function getActiveItem<TItem extends BaseItem>(state: Autocomplet
3
3
  item: TItem;
4
4
  itemInputValue: string;
5
5
  itemUrl: string | undefined;
6
- source: import("../types").InternalAutocompleteSource<TItem>;
6
+ source: import("@algolia/autocomplete-shared/dist/esm/core/AutocompleteSource").InternalAutocompleteSource<TItem>;
7
7
  } | null;
@@ -12,17 +12,18 @@ function getCollectionFromActiveItemId(state) {
12
12
  var nextValue = previousValue + collectionsCount;
13
13
  acc.push(nextValue);
14
14
  return acc;
15
- }, []); // Based on the accumulated counts, we can infer the index of the suggestion.
15
+ }, []);
16
16
 
17
+ // Based on the accumulated counts, we can infer the index of the suggestion.
17
18
  var collectionIndex = accumulatedCollectionsCount.reduce(function (acc, current) {
18
19
  if (current <= state.activeItemId) {
19
20
  return acc + 1;
20
21
  }
21
-
22
22
  return acc;
23
23
  }, 0);
24
24
  return state.collections[collectionIndex];
25
25
  }
26
+
26
27
  /**
27
28
  * Gets the highlighted index relative to a suggestion object (not the absolute
28
29
  * highlighted index).
@@ -32,37 +33,28 @@ function getCollectionFromActiveItemId(state) {
32
33
  * ↑
33
34
  * (absolute: 3, relative: 1)
34
35
  */
35
-
36
-
37
36
  function getRelativeActiveItemId(_ref) {
38
37
  var state = _ref.state,
39
- collection = _ref.collection;
38
+ collection = _ref.collection;
40
39
  var isOffsetFound = false;
41
40
  var counter = 0;
42
41
  var previousItemsOffset = 0;
43
-
44
42
  while (isOffsetFound === false) {
45
43
  var currentCollection = state.collections[counter];
46
-
47
44
  if (currentCollection === collection) {
48
45
  isOffsetFound = true;
49
46
  break;
50
47
  }
51
-
52
48
  previousItemsOffset += currentCollection.items.length;
53
49
  counter++;
54
50
  }
55
-
56
51
  return state.activeItemId - previousItemsOffset;
57
52
  }
58
-
59
53
  export function getActiveItem(state) {
60
54
  var collection = getCollectionFromActiveItemId(state);
61
-
62
55
  if (!collection) {
63
56
  return null;
64
57
  }
65
-
66
58
  var item = collection.items[getRelativeActiveItemId({
67
59
  state: state,
68
60
  collection: collection
@@ -18,16 +18,12 @@ export function getNextActiveItemId(moveAmount, baseIndex, itemCount, defaultAct
18
18
  if (!itemCount) {
19
19
  return null;
20
20
  }
21
-
22
21
  if (moveAmount < 0 && (baseIndex === null || defaultActiveItemId !== null && baseIndex === 0)) {
23
22
  return itemCount + moveAmount;
24
23
  }
25
-
26
24
  var numericIndex = (baseIndex === null ? -1 : baseIndex) + moveAmount;
27
-
28
25
  if (numericIndex <= -1 || numericIndex >= itemCount) {
29
26
  return defaultActiveItemId === null ? null : 0;
30
27
  }
31
-
32
28
  return numericIndex;
33
29
  }
@@ -1,11 +1,9 @@
1
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
-
3
2
  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 _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
-
3
+ 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; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
5
+ 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
6
  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
-
9
7
  import { invariant, decycle, noop } from '@algolia/autocomplete-shared';
10
8
  export function getNormalizedSources(getSources, params) {
11
9
  var seenSourceIds = [];
@@ -13,18 +11,17 @@ export function getNormalizedSources(getSources, params) {
13
11
  invariant(Array.isArray(sources), function () {
14
12
  return "The `getSources` function must return an array of sources but returned type ".concat(JSON.stringify(_typeof(sources)), ":\n\n").concat(JSON.stringify(decycle(sources), null, 2));
15
13
  });
16
- return Promise.all(sources // We allow `undefined` and `false` sources to allow users to use
14
+ return Promise.all(sources
15
+ // We allow `undefined` and `false` sources to allow users to use
17
16
  // `Boolean(query) && source` (=> `false`).
18
17
  // We need to remove these values at this point.
19
18
  .filter(function (maybeSource) {
20
19
  return Boolean(maybeSource);
21
20
  }).map(function (source) {
22
21
  invariant(typeof source.sourceId === 'string', 'A source must provide a `sourceId` string.');
23
-
24
22
  if (seenSourceIds.includes(source.sourceId)) {
25
23
  throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(source.sourceId), " is not unique."));
26
24
  }
27
-
28
25
  seenSourceIds.push(source.sourceId);
29
26
  var defaultSource = {
30
27
  getItemInputValue: function getItemInputValue(_ref) {
@@ -44,9 +41,7 @@ export function getNormalizedSources(getSources, params) {
44
41
  Object.keys(defaultSource).forEach(function (key) {
45
42
  defaultSource[key].__default = true;
46
43
  });
47
-
48
44
  var normalizedSource = _objectSpread(_objectSpread({}, defaultSource), source);
49
-
50
45
  return Promise.resolve(normalizedSource);
51
46
  }));
52
47
  });
@@ -1,6 +1,6 @@
1
1
  import type { SearchForFacetValuesResponse, SearchResponse } from '@algolia/client-search';
2
2
  export declare function mapToAlgoliaResponse<THit>(rawResults: Array<SearchResponse<THit> | SearchForFacetValuesResponse>): {
3
- results: (SearchForFacetValuesResponse | SearchResponse<THit>)[];
3
+ results: (SearchResponse<THit> | SearchForFacetValuesResponse)[];
4
4
  hits: import("@algolia/client-search").Hit<THit>[][];
5
5
  facetHits: {
6
6
  label: string;
@@ -1,13 +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
  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 _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
-
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
  export function mapToAlgoliaResponse(rawResults) {
8
8
  var results = rawResults.map(function (result) {
9
9
  var _hits;
10
-
11
10
  return _objectSpread(_objectSpread({}, result), {}, {
12
11
  hits: (_hits = result.hits) === null || _hits === void 0 ? void 0 : _hits.map(function (hit) {
13
12
  // Bring support for the Insights plugin.
@@ -25,7 +24,6 @@ export function mapToAlgoliaResponse(rawResults) {
25
24
  }).filter(Boolean),
26
25
  facetHits: results.map(function (result) {
27
26
  var _facetHits;
28
-
29
27
  return (_facetHits = result.facetHits) === null || _facetHits === void 0 ? void 0 : _facetHits.map(function (facetHit) {
30
28
  // Bring support for the highlighting components.
31
29
  return {