@algolia/autocomplete-core 1.4.1 → 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.
Files changed (40) hide show
  1. package/dist/esm/createAutocomplete.d.ts +8 -2
  2. package/dist/esm/createAutocomplete.js +9 -1
  3. package/dist/esm/createStore.js +1 -1
  4. package/dist/esm/getAutocompleteSetters.js +1 -1
  5. package/dist/esm/getDefaultProps.js +2 -2
  6. package/dist/esm/getPropGetters.js +16 -10
  7. package/dist/esm/index.d.ts +0 -1
  8. package/dist/esm/index.js +1 -2
  9. package/dist/esm/metadata.d.ts +33 -0
  10. package/dist/esm/metadata.js +44 -0
  11. package/dist/esm/onInput.js +4 -2
  12. package/dist/esm/onKeyDown.js +4 -2
  13. package/dist/esm/reshape.js +1 -1
  14. package/dist/esm/resolve.js +2 -2
  15. package/dist/esm/stateReducer.js +1 -1
  16. package/dist/esm/types/AutocompleteApi.js +1 -0
  17. package/dist/esm/types/AutocompleteCollection.js +1 -0
  18. package/dist/esm/types/AutocompleteContext.js +1 -0
  19. package/dist/esm/types/AutocompleteEnvironment.d.ts +1 -0
  20. package/dist/esm/types/AutocompleteEnvironment.js +1 -0
  21. package/dist/esm/types/AutocompleteNavigator.js +1 -0
  22. package/dist/esm/types/AutocompleteOptions.js +1 -0
  23. package/dist/esm/types/AutocompletePlugin.d.ts +10 -0
  24. package/dist/esm/types/AutocompletePlugin.js +1 -0
  25. package/dist/esm/types/AutocompletePropGetters.js +1 -0
  26. package/dist/esm/types/AutocompleteReshape.js +1 -0
  27. package/dist/esm/types/AutocompleteSetters.js +1 -0
  28. package/dist/esm/types/AutocompleteSource.js +1 -0
  29. package/dist/esm/types/AutocompleteState.js +1 -0
  30. package/dist/esm/types/AutocompleteStore.js +1 -0
  31. package/dist/esm/types/AutocompleteSubscribers.js +1 -0
  32. package/dist/esm/utils/getNormalizedSources.js +1 -1
  33. package/dist/esm/utils/mapToAlgoliaResponse.js +1 -1
  34. package/dist/umd/index.development.js +116 -53
  35. package/dist/umd/index.development.js.map +1 -1
  36. package/dist/umd/index.production.js +2 -2
  37. package/dist/umd/index.production.js.map +1 -1
  38. package/package.json +3 -3
  39. package/dist/esm/version.d.ts +0 -1
  40. package/dist/esm/version.js +0 -1
@@ -1,49 +1,22 @@
1
- /*! @algolia/autocomplete-core 1.4.1 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-core 1.5.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
4
4
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
5
5
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global['@algolia/autocomplete-core'] = {}));
6
6
  }(this, (function (exports) { 'use strict';
7
7
 
8
- function _typeof(obj) {
9
- "@babel/helpers - typeof";
10
-
11
- if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
12
- _typeof = function (obj) {
13
- return typeof obj;
14
- };
15
- } else {
16
- _typeof = function (obj) {
17
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
18
- };
19
- }
20
-
21
- return _typeof(obj);
22
- }
23
-
24
- function _defineProperty(obj, key, value) {
25
- if (key in obj) {
26
- Object.defineProperty(obj, key, {
27
- value: value,
28
- enumerable: true,
29
- configurable: true,
30
- writable: true
31
- });
32
- } else {
33
- obj[key] = value;
34
- }
35
-
36
- return obj;
37
- }
38
-
39
8
  function ownKeys(object, enumerableOnly) {
40
9
  var keys = Object.keys(object);
41
10
 
42
11
  if (Object.getOwnPropertySymbols) {
43
12
  var symbols = Object.getOwnPropertySymbols(object);
44
- if (enumerableOnly) symbols = symbols.filter(function (sym) {
45
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
46
- });
13
+
14
+ if (enumerableOnly) {
15
+ symbols = symbols.filter(function (sym) {
16
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
17
+ });
18
+ }
19
+
47
20
  keys.push.apply(keys, symbols);
48
21
  }
49
22
 
@@ -70,6 +43,37 @@
70
43
  return target;
71
44
  }
72
45
 
46
+ function _typeof(obj) {
47
+ "@babel/helpers - typeof";
48
+
49
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
50
+ _typeof = function (obj) {
51
+ return typeof obj;
52
+ };
53
+ } else {
54
+ _typeof = function (obj) {
55
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
56
+ };
57
+ }
58
+
59
+ return _typeof(obj);
60
+ }
61
+
62
+ function _defineProperty(obj, key, value) {
63
+ if (key in obj) {
64
+ Object.defineProperty(obj, key, {
65
+ value: value,
66
+ enumerable: true,
67
+ configurable: true,
68
+ writable: true
69
+ });
70
+ } else {
71
+ obj[key] = value;
72
+ }
73
+
74
+ return obj;
75
+ }
76
+
73
77
  function _objectWithoutPropertiesLoose(source, excluded) {
74
78
  if (source == null) return {};
75
79
  var target = {};
@@ -115,7 +119,7 @@
115
119
  }
116
120
 
117
121
  function _iterableToArray(iter) {
118
- if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
122
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
119
123
  }
120
124
 
121
125
  function _unsupportedIterableToArray(o, minLen) {
@@ -167,14 +171,17 @@
167
171
  }
168
172
 
169
173
  function _iterableToArrayLimit(arr, i) {
170
- if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
174
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
175
+
176
+ if (_i == null) return;
171
177
  var _arr = [];
172
178
  var _n = true;
173
179
  var _d = false;
174
- var _e = undefined;
180
+
181
+ var _s, _e;
175
182
 
176
183
  try {
177
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
184
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
178
185
  _arr.push(_s.value);
179
186
 
180
187
  if (i && _arr.length === i) break;
@@ -281,6 +288,13 @@
281
288
 
282
289
  var noop = function noop() {};
283
290
 
291
+ var version = '1.5.0';
292
+
293
+ var userAgents = [{
294
+ segment: 'autocomplete-core',
295
+ version: version
296
+ }];
297
+
284
298
  var warnCache = {
285
299
  current: {}
286
300
  };
@@ -860,6 +874,7 @@
860
874
  });
861
875
  }
862
876
 
877
+ var _excluded = ["event", "nextState", "props", "query", "refresh", "store"];
863
878
  var lastStalledId = null;
864
879
  var runConcurrentSafePromise = createConcurrentSafePromise();
865
880
  function onInput(_ref) {
@@ -870,7 +885,7 @@
870
885
  query = _ref.query,
871
886
  refresh = _ref.refresh,
872
887
  store = _ref.store,
873
- setters = _objectWithoutProperties(_ref, ["event", "nextState", "props", "query", "refresh", "store"]);
888
+ setters = _objectWithoutProperties(_ref, _excluded);
874
889
 
875
890
  if (lastStalledId) {
876
891
  props.environment.clearTimeout(lastStalledId);
@@ -971,12 +986,13 @@
971
986
  });
972
987
  }
973
988
 
989
+ var _excluded$1 = ["event", "props", "refresh", "store"];
974
990
  function onKeyDown(_ref) {
975
991
  var event = _ref.event,
976
992
  props = _ref.props,
977
993
  refresh = _ref.refresh,
978
994
  store = _ref.store,
979
- setters = _objectWithoutProperties(_ref, ["event", "props", "refresh", "store"]);
995
+ setters = _objectWithoutProperties(_ref, _excluded$1);
980
996
 
981
997
  if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
982
998
  // eslint-disable-next-line no-inner-declarations
@@ -1142,17 +1158,22 @@
1142
1158
  }
1143
1159
  }
1144
1160
 
1161
+ var _excluded$2 = ["props", "refresh", "store"],
1162
+ _excluded2 = ["inputElement", "formElement", "panelElement"],
1163
+ _excluded3 = ["inputElement"],
1164
+ _excluded4 = ["inputElement", "maxLength"],
1165
+ _excluded5 = ["item", "source"];
1145
1166
  function getPropGetters(_ref) {
1146
1167
  var props = _ref.props,
1147
1168
  refresh = _ref.refresh,
1148
1169
  store = _ref.store,
1149
- setters = _objectWithoutProperties(_ref, ["props", "refresh", "store"]);
1170
+ setters = _objectWithoutProperties(_ref, _excluded$2);
1150
1171
 
1151
1172
  var getEnvironmentProps = function getEnvironmentProps(providedProps) {
1152
1173
  var inputElement = providedProps.inputElement,
1153
1174
  formElement = providedProps.formElement,
1154
1175
  panelElement = providedProps.panelElement,
1155
- rest = _objectWithoutProperties(providedProps, ["inputElement", "formElement", "panelElement"]);
1176
+ rest = _objectWithoutProperties(providedProps, _excluded2);
1156
1177
 
1157
1178
  return _objectSpread2({
1158
1179
  // On touch devices, we do not rely on the native `blur` event of the
@@ -1160,15 +1181,15 @@
1160
1181
  // outside of the autocomplete elements.
1161
1182
  // This ensures a working experience on mobile because we blur the input
1162
1183
  // on touch devices when the user starts scrolling (`touchmove`).
1184
+ // @TODO: support cases where there are multiple Autocomplete instances.
1185
+ // Right now, a second instance makes this computation return false.
1163
1186
  onTouchStart: function onTouchStart(event) {
1164
1187
  if (store.getState().isOpen === false || event.target === inputElement) {
1165
1188
  return;
1166
- } // @TODO: support cases where there are multiple Autocomplete instances.
1167
- // Right now, a second instance makes this computation return false.
1168
-
1189
+ }
1169
1190
 
1170
1191
  var isTargetWithinAutocomplete = [formElement, panelElement].some(function (contextNode) {
1171
- return isOrContainsNode(contextNode, event.target) || isOrContainsNode(contextNode, props.environment.document.activeElement);
1192
+ return isOrContainsNode(contextNode, event.target);
1172
1193
  });
1173
1194
 
1174
1195
  if (isTargetWithinAutocomplete === false) {
@@ -1201,7 +1222,7 @@
1201
1222
 
1202
1223
  var getFormProps = function getFormProps(providedProps) {
1203
1224
  var inputElement = providedProps.inputElement,
1204
- rest = _objectWithoutProperties(providedProps, ["inputElement"]);
1225
+ rest = _objectWithoutProperties(providedProps, _excluded3);
1205
1226
 
1206
1227
  return _objectSpread2({
1207
1228
  action: '',
@@ -1257,7 +1278,7 @@
1257
1278
  inputElement = _ref2.inputElement,
1258
1279
  _ref2$maxLength = _ref2.maxLength,
1259
1280
  maxLength = _ref2$maxLength === void 0 ? 512 : _ref2$maxLength,
1260
- rest = _objectWithoutProperties(_ref2, ["inputElement", "maxLength"]);
1281
+ rest = _objectWithoutProperties(_ref2, _excluded4);
1261
1282
 
1262
1283
  var activeItem = getActiveItem(store.getState());
1263
1284
  return _objectSpread2({
@@ -1348,7 +1369,7 @@
1348
1369
  var getItemProps = function getItemProps(providedProps) {
1349
1370
  var item = providedProps.item,
1350
1371
  source = providedProps.source,
1351
- rest = _objectWithoutProperties(providedProps, ["item", "source"]);
1372
+ rest = _objectWithoutProperties(providedProps, _excluded5);
1352
1373
 
1353
1374
  return _objectSpread2({
1354
1375
  id: "".concat(props.id, "-item-").concat(item.__autocomplete_id),
@@ -1435,6 +1456,44 @@
1435
1456
  };
1436
1457
  }
1437
1458
 
1459
+ function getMetadata(_ref) {
1460
+ var _, _options$__autocomple, _options$__autocomple2, _options$__autocomple3;
1461
+
1462
+ var plugins = _ref.plugins,
1463
+ options = _ref.options;
1464
+ var optionsKey = (_ = (((_options$__autocomple = options.__autocomplete_metadata) === null || _options$__autocomple === void 0 ? void 0 : _options$__autocomple.userAgents) || [])[0]) === null || _ === void 0 ? void 0 : _.segment;
1465
+ var extraOptions = optionsKey ? _defineProperty({}, optionsKey, Object.keys(((_options$__autocomple2 = options.__autocomplete_metadata) === null || _options$__autocomple2 === void 0 ? void 0 : _options$__autocomple2.options) || {})) : {};
1466
+ return {
1467
+ plugins: plugins.map(function (plugin) {
1468
+ return {
1469
+ name: plugin.name,
1470
+ options: Object.keys(plugin.__autocomplete_pluginOptions || [])
1471
+ };
1472
+ }),
1473
+ options: _objectSpread2({
1474
+ 'autocomplete-core': Object.keys(options)
1475
+ }, extraOptions),
1476
+ ua: userAgents.concat(((_options$__autocomple3 = options.__autocomplete_metadata) === null || _options$__autocomple3 === void 0 ? void 0 : _options$__autocomple3.userAgents) || [])
1477
+ };
1478
+ }
1479
+ function injectMetadata(_ref3) {
1480
+ var _environment$navigato;
1481
+
1482
+ var metadata = _ref3.metadata,
1483
+ environment = _ref3.environment;
1484
+ var isMetadataEnabled = (_environment$navigato = environment.navigator) === null || _environment$navigato === void 0 ? void 0 : _environment$navigato.userAgent.includes('Algolia Crawler');
1485
+
1486
+ if (isMetadataEnabled) {
1487
+ var metadataContainer = environment.document.createElement('meta');
1488
+ var headRef = environment.document.querySelector('head');
1489
+ metadataContainer.name = 'algolia:metadata';
1490
+ setTimeout(function () {
1491
+ metadataContainer.content = JSON.stringify(metadata);
1492
+ headRef.appendChild(metadataContainer);
1493
+ }, 0);
1494
+ }
1495
+ }
1496
+
1438
1497
  function getCompletion(_ref) {
1439
1498
  var _getActiveItem;
1440
1499
 
@@ -1654,16 +1713,20 @@
1654
1713
  }
1655
1714
  }));
1656
1715
  });
1716
+ injectMetadata({
1717
+ metadata: getMetadata({
1718
+ plugins: props.plugins,
1719
+ options: options
1720
+ }),
1721
+ environment: props.environment
1722
+ });
1657
1723
  return _objectSpread2(_objectSpread2({
1658
1724
  refresh: refresh
1659
1725
  }, propGetters), setters);
1660
1726
  }
1661
1727
 
1662
- var version = '1.4.1';
1663
-
1664
1728
  exports.createAutocomplete = createAutocomplete;
1665
1729
  exports.getDefaultProps = getDefaultProps;
1666
- exports.version = version;
1667
1730
 
1668
1731
  Object.defineProperty(exports, '__esModule', { value: true });
1669
1732