instantsearch.js 4.63.0 → 4.64.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.
@@ -112,18 +112,18 @@ var RefinementList = /*#__PURE__*/function (_Component) {
112
112
  // if one special key is down
113
113
  return;
114
114
  }
115
- if (!(originalEvent.target instanceof HTMLElement) || !(originalEvent.target.parentNode instanceof HTMLElement)) {
115
+ var parent = originalEvent.target;
116
+ if (parent === null || parent.parentNode === null) {
116
117
  return;
117
118
  }
118
- if (isRefined && originalEvent.target.parentNode.querySelector('input[type="radio"]:checked')) {
119
+ if (isRefined && parent.parentNode.querySelector('input[type="radio"]:checked')) {
119
120
  // Prevent refinement for being reset if the user clicks on an already checked radio button
120
121
  return;
121
122
  }
122
- if (originalEvent.target.tagName === 'INPUT') {
123
+ if (parent.tagName === 'INPUT') {
123
124
  _this.refine(facetValueToRefine);
124
125
  return;
125
126
  }
126
- var parent = originalEvent.target;
127
127
  while (parent !== originalEvent.currentTarget) {
128
128
  if (parent.tagName === 'LABEL' && (parent.querySelector('input[type="checkbox"]') || parent.querySelector('input[type="radio"]'))) {
129
129
  return;
@@ -64,7 +64,7 @@ var connectSearchBox = function connectSearchBox(renderFn) {
64
64
  },
65
65
  getWidgetRenderState: function getWidgetRenderState(_ref3) {
66
66
  var helper = _ref3.helper,
67
- searchMetadata = _ref3.searchMetadata,
67
+ instantSearchInstance = _ref3.instantSearchInstance,
68
68
  state = _ref3.state;
69
69
  if (!_refine) {
70
70
  _refine = function _refine(query) {
@@ -81,7 +81,7 @@ var connectSearchBox = function connectSearchBox(renderFn) {
81
81
  refine: _refine,
82
82
  clear: _clear,
83
83
  widgetParams: widgetParams,
84
- isSearchStalled: searchMetadata.isSearchStalled
84
+ isSearchStalled: instantSearchInstance.status === 'stalled'
85
85
  };
86
86
  },
87
87
  getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
@@ -1,2 +1,2 @@
1
- declare const _default: "4.63.0";
1
+ declare const _default: "4.64.0";
2
2
  export default _default;
package/es/lib/version.js CHANGED
@@ -1 +1 @@
1
- export default '4.63.0';
1
+ export default '4.64.0';
@@ -74,8 +74,11 @@ export function createInsightsMiddleware() {
74
74
  // search-insights.js also throws an error so dev-only clarification is sufficient
75
75
  process.env.NODE_ENV === 'development' ? warning(Boolean(appId && apiKey), 'could not extract Algolia credentials from searchClient in insights middleware.') : void 0;
76
76
  var queuedUserToken = undefined;
77
+ var queuedAuthenticatedUserToken = undefined;
77
78
  var userTokenBeforeInit = undefined;
78
- if (Array.isArray(insightsClient.queue)) {
79
+ var authenticatedUserTokenBeforeInit = undefined;
80
+ var queue = insightsClient.queue;
81
+ if (Array.isArray(queue)) {
79
82
  // Context: The umd build of search-insights is asynchronously loaded by the snippet.
80
83
  //
81
84
  // When user calls `aa('setUserToken', 'my-user-token')` before `search-insights` is loaded,
@@ -86,22 +89,32 @@ export function createInsightsMiddleware() {
86
89
  // At this point, even though `search-insights` is not loaded yet,
87
90
  // we still want to read the token from the queue.
88
91
  // Otherwise, the first search call will be fired without the token.
89
- var _ref3 = find(insightsClient.queue.slice().reverse(), function (_ref5) {
90
- var _ref6 = _slicedToArray(_ref5, 1),
91
- method = _ref6[0];
92
- return method === 'setUserToken';
93
- }) || [];
94
- var _ref4 = _slicedToArray(_ref3, 2);
95
- queuedUserToken = _ref4[1];
92
+ var _map = ['setUserToken', 'setAuthenticatedUserToken'].map(function (key) {
93
+ var _ref3 = find(queue.slice().reverse(), function (_ref5) {
94
+ var _ref6 = _slicedToArray(_ref5, 1),
95
+ method = _ref6[0];
96
+ return method === key;
97
+ }) || [],
98
+ _ref4 = _slicedToArray(_ref3, 2),
99
+ value = _ref4[1];
100
+ return value;
101
+ });
102
+ var _map2 = _slicedToArray(_map, 2);
103
+ queuedUserToken = _map2[0];
104
+ queuedAuthenticatedUserToken = _map2[1];
96
105
  }
106
+
107
+ // If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
108
+ // before creating the Insights middleware, we temporarily store the token
109
+ // and set it later on.
110
+ //
111
+ // Otherwise, the `init` call might override them with anonymous user token.
97
112
  insightsClient('getUserToken', null, function (_error, userToken) {
98
- // If user has called `aa('setUserToken', 'my-user-token')` before creating
99
- // the `insights` middleware, we store them temporarily and
100
- // set it later on.
101
- //
102
- // Otherwise, the `init` call might override it with anonymous user token.
103
113
  userTokenBeforeInit = normalizeUserToken(userToken);
104
114
  });
115
+ insightsClient('getAuthenticatedUserToken', null, function (_error, userToken) {
116
+ authenticatedUserTokenBeforeInit = normalizeUserToken(userToken);
117
+ });
105
118
 
106
119
  // Only `init` if the `insightsInitParams` option is passed or
107
120
  // if the `insightsClient` version doesn't supports optional `init` calling.
@@ -183,21 +196,43 @@ export function createInsightsMiddleware() {
183
196
  // We can set it as userToken.
184
197
  setUserTokenToSearch(anonymousUserToken, true);
185
198
  }
199
+ function setUserToken(token, userToken, authenticatedUserToken) {
200
+ setUserTokenToSearch(token, true);
201
+ if (userToken) {
202
+ insightsClient('setUserToken', userToken);
203
+ }
204
+ if (authenticatedUserToken) {
205
+ insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
206
+ }
207
+ }
186
208
 
187
- // We consider the `userToken` coming from a `init` call to have a higher
188
- // importance than the one coming from the queue.
189
- if (userTokenBeforeInit) {
190
- setUserTokenToSearch(userTokenBeforeInit, true);
191
- insightsClient('setUserToken', userTokenBeforeInit);
192
- } else if (queuedUserToken) {
193
- setUserTokenToSearch(queuedUserToken, true);
194
- insightsClient('setUserToken', queuedUserToken);
209
+ // We consider the `userToken` or `authenticatedUserToken` before an
210
+ // `init` call of higher importance than one from the queue.
211
+ var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
212
+ var queuedToken = queuedAuthenticatedUserToken || queuedUserToken;
213
+ if (tokenBeforeInit) {
214
+ setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
215
+ } else if (queuedToken) {
216
+ setUserToken(queuedToken, queuedUserToken, queuedAuthenticatedUserToken);
195
217
  }
196
218
 
197
219
  // This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
198
220
  insightsClient('onUserTokenChange', setUserTokenToSearch, {
199
221
  immediate: true
200
222
  });
223
+
224
+ // This updates userToken which is set explicitly by `aa('setAuthenticatedtUserToken', authenticatedUserToken)`
225
+ insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
226
+ // If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
227
+ if (!authenticatedUserToken) {
228
+ insightsClient('getUserToken', null, function (_, userToken) {
229
+ setUserTokenToSearch(userToken);
230
+ });
231
+ }
232
+ setUserTokenToSearch(authenticatedUserToken);
233
+ }, {
234
+ immediate: true
235
+ });
201
236
  var insightsClientWithLocalCredentials = insightsClient;
202
237
  if (isModernInsightsClient(insightsClient)) {
203
238
  insightsClientWithLocalCredentials = function insightsClientWithLocalCredentials(method, payload) {
@@ -233,6 +268,7 @@ export function createInsightsMiddleware() {
233
268
  },
234
269
  unsubscribe: function unsubscribe() {
235
270
  insightsClient('onUserTokenChange', undefined);
271
+ insightsClient('onAuthenticatedUserTokenChange', undefined);
236
272
  instantSearchInstance.sendEventToInsights = noop;
237
273
  if (helper && initialParameters) {
238
274
  helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, helper.state), initialParameters));
@@ -1,5 +1,5 @@
1
1
 
2
- import type { ToggleRefinementConnectorParams, ToggleRefinementWidgetDescription, ToggleRefinementValue } from '../../connectors/toggle-refinement/connectToggleRefinement';
2
+ import type { ToggleRefinementConnectorParams, ToggleRefinementWidgetDescription, ToggleRefinementRenderState } from '../../connectors/toggle-refinement/connectToggleRefinement';
3
3
  import type { Template, WidgetFactory } from '../../types';
4
4
  export type ToggleRefinementCSSClasses = Partial<{
5
5
  /**
@@ -23,9 +23,7 @@ export type ToggleRefinementTemplates = Partial<{
23
23
  /**
24
24
  * the text that describes the toggle action
25
25
  */
26
- labelText: Template<ToggleRefinementValue & {
27
- name: string;
28
- }>;
26
+ labelText: Template<ToggleRefinementRenderState['value']>;
29
27
  }>;
30
28
  export type ToggleRefinementWidgetParams = {
31
29
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instantsearch.js",
3
- "version": "4.63.0",
3
+ "version": "4.64.0",
4
4
  "description": "InstantSearch.js is a JavaScript library for building performant and instant search experiences with Algolia.",
5
5
  "homepage": "https://www.algolia.com/doc/guides/building-search-ui/what-is-instantsearch/js/",
6
6
  "types": "es/index.d.ts",
@@ -55,9 +55,9 @@
55
55
  "version": "./scripts/version/update-version.js"
56
56
  },
57
57
  "devDependencies": {
58
- "@instantsearch/mocks": "1.32.0",
59
- "@instantsearch/tests": "1.32.0",
60
- "@instantsearch/testutils": "1.21.0",
58
+ "@instantsearch/mocks": "1.34.0",
59
+ "@instantsearch/tests": "1.34.0",
60
+ "@instantsearch/testutils": "1.23.0",
61
61
  "@storybook/html": "5.3.9",
62
62
  "@types/scriptjs": "0.0.2",
63
63
  "algoliasearch": "4.14.3",
@@ -65,5 +65,5 @@
65
65
  "scriptjs": "2.5.9",
66
66
  "webpack": "4.47.0"
67
67
  },
68
- "gitHead": "b90c55a93cd6fe56128d9d6c746c153dbb3c3649"
68
+ "gitHead": "d1e415e522b9d43162a6ca3a16c6c450dfa8b457"
69
69
  }