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.
- package/cjs/components/RefinementList/RefinementList.js +4 -4
- package/cjs/connectors/search-box/connectSearchBox.js +2 -2
- package/cjs/lib/version.js +1 -1
- package/cjs/middlewares/createInsightsMiddleware.js +57 -21
- package/dist/instantsearch.development.d.ts +1 -3
- package/dist/instantsearch.development.js +65 -29
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +1 -3
- package/dist/instantsearch.production.min.d.ts +1 -3
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/components/RefinementList/RefinementList.js +4 -4
- package/es/connectors/search-box/connectSearchBox.js +2 -2
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/middlewares/createInsightsMiddleware.js +57 -21
- package/es/widgets/toggle-refinement/toggle-refinement.d.ts +2 -4
- package/package.json +5 -5
|
@@ -112,18 +112,18 @@ var RefinementList = /*#__PURE__*/function (_Component) {
|
|
|
112
112
|
// if one special key is down
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
|
-
|
|
115
|
+
var parent = originalEvent.target;
|
|
116
|
+
if (parent === null || parent.parentNode === null) {
|
|
116
117
|
return;
|
|
117
118
|
}
|
|
118
|
-
if (isRefined &&
|
|
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 (
|
|
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
|
-
|
|
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:
|
|
84
|
+
isSearchStalled: instantSearchInstance.status === 'stalled'
|
|
85
85
|
};
|
|
86
86
|
},
|
|
87
87
|
getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
|
package/es/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "4.
|
|
1
|
+
declare const _default: "4.64.0";
|
|
2
2
|
export default _default;
|
package/es/lib/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default '4.
|
|
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
|
-
|
|
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
|
|
90
|
-
var
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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`
|
|
188
|
-
// importance than
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
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,
|
|
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<
|
|
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.
|
|
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.
|
|
59
|
-
"@instantsearch/tests": "1.
|
|
60
|
-
"@instantsearch/testutils": "1.
|
|
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": "
|
|
68
|
+
"gitHead": "d1e415e522b9d43162a6ca3a16c6c450dfa8b457"
|
|
69
69
|
}
|