@algolia/autocomplete-core 1.14.0 → 1.15.1

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.
@@ -22,6 +22,7 @@ export function getDefaultProps(props, pluginSubscribers) {
22
22
  debug: false,
23
23
  openOnFocus: false,
24
24
  enterKeyHint: undefined,
25
+ ignoreCompositionEvents: false,
25
26
  placeholder: '',
26
27
  autoFocus: false,
27
28
  defaultActiveItemId: null,
@@ -15,7 +15,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
15
15
  import { noop } from '@algolia/autocomplete-shared';
16
16
  import { onInput } from './onInput';
17
17
  import { onKeyDown as _onKeyDown } from './onKeyDown';
18
- import { getActiveItem, getAutocompleteElementId, isOrContainsNode, isSamsung } from './utils';
18
+ import { getActiveItem, getAutocompleteElementId, isOrContainsNode, isSamsung, getNativeEvent } from './utils';
19
19
  export function getPropGetters(_ref) {
20
20
  var props = _ref.props,
21
21
  refresh = _ref.refresh,
@@ -167,6 +167,20 @@ export function getPropGetters(_ref) {
167
167
  maxLength: maxLength,
168
168
  type: 'search',
169
169
  onChange: function onChange(event) {
170
+ var value = event.currentTarget.value;
171
+ if (props.ignoreCompositionEvents && getNativeEvent(event).isComposing) {
172
+ setters.setQuery(value);
173
+ return;
174
+ }
175
+ onInput(_objectSpread({
176
+ event: event,
177
+ props: props,
178
+ query: value.slice(0, maxLength),
179
+ refresh: refresh,
180
+ store: store
181
+ }, setters));
182
+ },
183
+ onCompositionEnd: function onCompositionEnd(event) {
170
184
  onInput(_objectSpread({
171
185
  event: event,
172
186
  props: props,
@@ -176,6 +190,9 @@ export function getPropGetters(_ref) {
176
190
  }, setters));
177
191
  },
178
192
  onKeyDown: function onKeyDown(event) {
193
+ if (getNativeEvent(event).isComposing) {
194
+ return;
195
+ }
179
196
  _onKeyDown(_objectSpread({
180
197
  event: event,
181
198
  props: props,
@@ -0,0 +1 @@
1
+ export declare function getNativeEvent<TEvent>(event: TEvent): TEvent;
@@ -0,0 +1,3 @@
1
+ export function getNativeEvent(event) {
2
+ return event.nativeEvent || event;
3
+ }
@@ -8,3 +8,4 @@ export * from './getAutocompleteElementId';
8
8
  export * from './isOrContainsNode';
9
9
  export * from './isSamsung';
10
10
  export * from './mapToAlgoliaResponse';
11
+ export * from './getNativeEvent';
@@ -7,4 +7,5 @@ export * from './getActiveItem';
7
7
  export * from './getAutocompleteElementId';
8
8
  export * from './isOrContainsNode';
9
9
  export * from './isSamsung';
10
- export * from './mapToAlgoliaResponse';
10
+ export * from './mapToAlgoliaResponse';
11
+ export * from './getNativeEvent';
@@ -1,4 +1,4 @@
1
- /*! @algolia/autocomplete-core 1.14.0 | MIT License | © Algolia, Inc. and contributors | https://github.com/algolia/autocomplete */
1
+ /*! @algolia/autocomplete-core 1.15.1 | 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) :
@@ -291,7 +291,7 @@
291
291
  return undefined;
292
292
  }
293
293
 
294
- var version = '1.14.0';
294
+ var version = '1.15.1';
295
295
 
296
296
  var userAgents = [{
297
297
  segment: 'autocomplete-core',
@@ -564,6 +564,15 @@
564
564
  apiKey: apiKey
565
565
  });
566
566
  },
567
+ /**
568
+ * Sets the authenticated user token to attach to events.
569
+ * Unsets the authenticated token by passing `undefined`.
570
+ *
571
+ * @link https://www.algolia.com/doc/api-reference/api-methods/set-authenticated-user-token/
572
+ */
573
+ setAuthenticatedUserToken: function setAuthenticatedUserToken(authenticatedUserToken) {
574
+ searchInsights('setAuthenticatedUserToken', authenticatedUserToken);
575
+ },
567
576
  /**
568
577
  * Sets the user token to attach to events.
569
578
  */
@@ -897,6 +906,7 @@
897
906
  var setContext = _ref4.setContext,
898
907
  onSelect = _ref4.onSelect,
899
908
  onActive = _ref4.onActive;
909
+ var isAuthenticatedToken = false;
900
910
  function setInsightsContext(userToken) {
901
911
  setContext({
902
912
  algoliaInsightsPlugin: {
@@ -911,9 +921,36 @@
911
921
  }
912
922
  insightsClient('addAlgoliaAgent', 'insights-plugin');
913
923
  setInsightsContext();
914
- insightsClient('onUserTokenChange', setInsightsContext);
924
+
925
+ // Handles user token changes
926
+ insightsClient('onUserTokenChange', function (userToken) {
927
+ if (!isAuthenticatedToken) {
928
+ setInsightsContext(userToken);
929
+ }
930
+ });
915
931
  insightsClient('getUserToken', null, function (_error, userToken) {
916
- setInsightsContext(userToken);
932
+ if (!isAuthenticatedToken) {
933
+ setInsightsContext(userToken);
934
+ }
935
+ });
936
+
937
+ // Handles authenticated user token changes
938
+ insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
939
+ if (authenticatedUserToken) {
940
+ isAuthenticatedToken = true;
941
+ setInsightsContext(authenticatedUserToken);
942
+ } else {
943
+ isAuthenticatedToken = false;
944
+ insightsClient('getUserToken', null, function (_error, userToken) {
945
+ return setInsightsContext(userToken);
946
+ });
947
+ }
948
+ });
949
+ insightsClient('getAuthenticatedUserToken', null, function (_error, authenticatedUserToken) {
950
+ if (authenticatedUserToken) {
951
+ isAuthenticatedToken = true;
952
+ setInsightsContext(authenticatedUserToken);
953
+ }
917
954
  });
918
955
  onSelect(function (_ref5) {
919
956
  var item = _ref5.item,
@@ -1330,6 +1367,10 @@
1330
1367
  };
1331
1368
  }
1332
1369
 
1370
+ function getNativeEvent(event) {
1371
+ return event.nativeEvent || event;
1372
+ }
1373
+
1333
1374
  function createStore(reducer, props, onStoreStateChange) {
1334
1375
  var state = props.initialState;
1335
1376
  return {
@@ -1404,6 +1445,7 @@
1404
1445
  debug: false,
1405
1446
  openOnFocus: false,
1406
1447
  enterKeyHint: undefined,
1448
+ ignoreCompositionEvents: false,
1407
1449
  placeholder: '',
1408
1450
  autoFocus: false,
1409
1451
  defaultActiveItemId: null,
@@ -2125,6 +2167,20 @@
2125
2167
  maxLength: maxLength,
2126
2168
  type: 'search',
2127
2169
  onChange: function onChange(event) {
2170
+ var value = event.currentTarget.value;
2171
+ if (props.ignoreCompositionEvents && getNativeEvent(event).isComposing) {
2172
+ setters.setQuery(value);
2173
+ return;
2174
+ }
2175
+ onInput(_objectSpread2({
2176
+ event: event,
2177
+ props: props,
2178
+ query: value.slice(0, maxLength),
2179
+ refresh: refresh,
2180
+ store: store
2181
+ }, setters));
2182
+ },
2183
+ onCompositionEnd: function onCompositionEnd(event) {
2128
2184
  onInput(_objectSpread2({
2129
2185
  event: event,
2130
2186
  props: props,
@@ -2134,6 +2190,9 @@
2134
2190
  }, setters));
2135
2191
  },
2136
2192
  onKeyDown: function onKeyDown$1(event) {
2193
+ if (getNativeEvent(event).isComposing) {
2194
+ return;
2195
+ }
2137
2196
  onKeyDown(_objectSpread2({
2138
2197
  event: event,
2139
2198
  props: props,