instantsearch.js 4.63.1 → 4.64.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.
- package/cjs/connectors/numeric-menu/connectNumericMenu.js +5 -5
- package/cjs/connectors/rating-menu/connectRatingMenu.js +1 -2
- package/cjs/connectors/refinement-list/connectRefinementList.js +1 -2
- package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +1 -1
- package/cjs/lib/InstantSearch.js +2 -6
- package/cjs/lib/server.js +27 -4
- package/cjs/lib/utils/hydrateSearchClient.js +10 -7
- package/cjs/lib/version.js +1 -1
- package/cjs/middlewares/createInsightsMiddleware.js +57 -21
- package/dist/instantsearch.development.d.ts +4 -6
- package/dist/instantsearch.development.js +93 -54
- package/dist/instantsearch.development.js.map +1 -1
- package/dist/instantsearch.production.d.ts +4 -6
- package/dist/instantsearch.production.min.d.ts +4 -6
- package/dist/instantsearch.production.min.js +2 -2
- package/dist/instantsearch.production.min.js.map +1 -1
- package/es/connectors/numeric-menu/connectNumericMenu.js +5 -5
- package/es/connectors/rating-menu/connectRatingMenu.js +1 -2
- package/es/connectors/refinement-list/connectRefinementList.js +1 -2
- package/es/connectors/toggle-refinement/connectToggleRefinement.js +1 -1
- package/es/lib/InstantSearch.d.ts +2 -6
- package/es/lib/InstantSearch.js +2 -6
- package/es/lib/server.d.ts +8 -3
- package/es/lib/server.js +27 -4
- package/es/lib/utils/hydrateSearchClient.js +10 -7
- package/es/lib/version.d.ts +1 -1
- package/es/lib/version.js +1 -1
- package/es/middlewares/createInsightsMiddleware.js +57 -21
- package/es/types/results.d.ts +2 -0
- package/package.json +6 -6
|
@@ -88,7 +88,7 @@ var connectNumericMenu = function connectNumericMenu(renderFn) {
|
|
|
88
88
|
dispose: function dispose(_ref4) {
|
|
89
89
|
var state = _ref4.state;
|
|
90
90
|
unmountFn();
|
|
91
|
-
return state.
|
|
91
|
+
return state.removeNumericRefinement(attribute);
|
|
92
92
|
},
|
|
93
93
|
getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
|
|
94
94
|
var searchParameters = _ref5.searchParameters;
|
|
@@ -108,11 +108,11 @@ var connectNumericMenu = function connectNumericMenu(renderFn) {
|
|
|
108
108
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
109
109
|
var uiState = _ref6.uiState;
|
|
110
110
|
var value = uiState.numericMenu && uiState.numericMenu[attribute];
|
|
111
|
-
var withoutRefinements = searchParameters.
|
|
111
|
+
var withoutRefinements = searchParameters.setQueryParameters({
|
|
112
|
+
numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
113
|
+
});
|
|
112
114
|
if (!value) {
|
|
113
|
-
return withoutRefinements
|
|
114
|
-
numericRefinements: _objectSpread(_objectSpread({}, withoutRefinements.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
115
|
-
});
|
|
115
|
+
return withoutRefinements;
|
|
116
116
|
}
|
|
117
117
|
var isExact = value.indexOf(':') === -1;
|
|
118
118
|
if (isExact) {
|
|
@@ -269,8 +269,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
|
|
|
269
269
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref8) {
|
|
270
270
|
var uiState = _ref8.uiState;
|
|
271
271
|
var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
|
|
272
|
-
var
|
|
273
|
-
var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
|
|
272
|
+
var withDisjunctiveFacet = searchParameters.addDisjunctiveFacet(attribute).removeNumericRefinement(attribute).removeDisjunctiveFacetRefinement(attribute);
|
|
274
273
|
if (!value) {
|
|
275
274
|
return withDisjunctiveFacet.setQueryParameters({
|
|
276
275
|
numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
@@ -265,8 +265,7 @@ var connectRefinementList = function connectRefinementList(renderFn) {
|
|
|
265
265
|
return searchParameters;
|
|
266
266
|
}
|
|
267
267
|
var values = uiState.refinementList && uiState.refinementList[attribute];
|
|
268
|
-
var
|
|
269
|
-
var withFacetConfiguration = isDisjunctive ? withoutRefinements.addDisjunctiveFacet(attribute) : withoutRefinements.addFacet(attribute);
|
|
268
|
+
var withFacetConfiguration = isDisjunctive ? searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute) : searchParameters.addFacet(attribute).removeFacetRefinement(attribute);
|
|
270
269
|
var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
|
|
271
270
|
var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
|
|
272
271
|
var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
|
|
@@ -283,7 +283,7 @@ var connectToggleRefinement = function connectToggleRefinement(renderFn) {
|
|
|
283
283
|
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(false, "ToggleRefinement: Attribute \"".concat(attribute, "\" is already used by another widget of a different type.\nAs this is not supported, please make sure to remove this other widget or this ToggleRefinement widget will not work at all.")) : void 0;
|
|
284
284
|
return searchParameters;
|
|
285
285
|
}
|
|
286
|
-
var withFacetConfiguration = searchParameters.
|
|
286
|
+
var withFacetConfiguration = searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute);
|
|
287
287
|
var isRefined = Boolean(uiState.toggle && uiState.toggle[attribute]);
|
|
288
288
|
if (isRefined) {
|
|
289
289
|
if (on) {
|
package/cjs/lib/InstantSearch.js
CHANGED
|
@@ -365,9 +365,7 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
365
365
|
|
|
366
366
|
/**
|
|
367
367
|
* Ends the initialization of InstantSearch.js and triggers the
|
|
368
|
-
* first search.
|
|
369
|
-
* to the instance of InstantSearch.js. InstantSearch.js also supports adding and removing
|
|
370
|
-
* widgets after the start as an **EXPERIMENTAL** feature.
|
|
368
|
+
* first search.
|
|
371
369
|
*/
|
|
372
370
|
}, {
|
|
373
371
|
key: "start",
|
|
@@ -519,9 +517,7 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
|
|
|
519
517
|
}
|
|
520
518
|
|
|
521
519
|
/**
|
|
522
|
-
* Removes all widgets without triggering a search afterwards.
|
|
523
|
-
* if you find an issue with it, please
|
|
524
|
-
* [open an issue](https://github.com/algolia/instantsearch/issues/new?title=Problem%20with%20dispose).
|
|
520
|
+
* Removes all widgets without triggering a search afterwards.
|
|
525
521
|
* @return {undefined} This method does not return anything
|
|
526
522
|
*/
|
|
527
523
|
}, {
|
package/cjs/lib/server.js
CHANGED
|
@@ -18,12 +18,26 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
|
|
|
18
18
|
*/
|
|
19
19
|
function waitForResults(search) {
|
|
20
20
|
var helper = search.mainHelper;
|
|
21
|
+
|
|
22
|
+
// Extract search parameters from the search client to use them
|
|
23
|
+
// later during hydration.
|
|
24
|
+
var requestParamsList;
|
|
25
|
+
var client = helper.getClient();
|
|
26
|
+
helper.setClient({
|
|
27
|
+
search: function search(queries) {
|
|
28
|
+
requestParamsList = queries.map(function (_ref) {
|
|
29
|
+
var params = _ref.params;
|
|
30
|
+
return params;
|
|
31
|
+
});
|
|
32
|
+
return client.search(queries);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
21
35
|
helper.searchOnlyWithDerivedHelpers();
|
|
22
36
|
return new Promise(function (resolve, reject) {
|
|
23
37
|
// All derived helpers resolve in the same tick so we're safe only relying
|
|
24
38
|
// on the first one.
|
|
25
39
|
helper.derivedHelpers[0].on('result', function () {
|
|
26
|
-
resolve();
|
|
40
|
+
resolve(requestParamsList);
|
|
27
41
|
});
|
|
28
42
|
|
|
29
43
|
// However, we listen to errors that can happen on any derived helper because
|
|
@@ -45,17 +59,26 @@ function waitForResults(search) {
|
|
|
45
59
|
/**
|
|
46
60
|
* Walks the InstantSearch root index to construct the initial results.
|
|
47
61
|
*/
|
|
48
|
-
function getInitialResults(rootIndex
|
|
62
|
+
function getInitialResults(rootIndex,
|
|
63
|
+
/**
|
|
64
|
+
* Search parameters sent to the search client,
|
|
65
|
+
* returned by `waitForResults()`.
|
|
66
|
+
*/
|
|
67
|
+
requestParamsList) {
|
|
49
68
|
var initialResults = {};
|
|
69
|
+
var requestParamsIndex = 0;
|
|
50
70
|
(0, _utils.walkIndex)(rootIndex, function (widget) {
|
|
51
71
|
var searchResults = widget.getResults();
|
|
52
72
|
if (searchResults) {
|
|
53
|
-
|
|
73
|
+
var requestParams = requestParamsList === null || requestParamsList === void 0 ? void 0 : requestParamsList[requestParamsIndex++];
|
|
74
|
+
initialResults[widget.getIndexId()] = _objectSpread({
|
|
54
75
|
// We convert the Helper state to a plain object to pass parsable data
|
|
55
76
|
// structures from server to client.
|
|
56
77
|
state: _objectSpread({}, searchResults._state),
|
|
57
78
|
results: searchResults._rawResults
|
|
58
|
-
}
|
|
79
|
+
}, requestParams && {
|
|
80
|
+
requestParams: requestParams
|
|
81
|
+
});
|
|
59
82
|
}
|
|
60
83
|
});
|
|
61
84
|
if (Object.keys(initialResults).length === 0) {
|
|
@@ -29,13 +29,16 @@ function hydrateSearchClient(client, results) {
|
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
var cachedRequest = Object.keys(results).map(function (key) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
var _results$key = results[key],
|
|
33
|
+
state = _results$key.state,
|
|
34
|
+
requestParams = _results$key.requestParams,
|
|
35
|
+
serverResults = _results$key.results;
|
|
36
|
+
return serverResults.map(function (result) {
|
|
37
|
+
return _objectSpread({
|
|
38
|
+
indexName: state.index || result.index
|
|
39
|
+
}, requestParams || result.params ? {
|
|
40
|
+
params: serializeQueryParameters(requestParams || deserializeQueryParameters(result.params))
|
|
41
|
+
} : {});
|
|
39
42
|
});
|
|
40
43
|
});
|
|
41
44
|
var cachedResults = Object.keys(results).reduce(function (acc, key) {
|
package/cjs/lib/version.js
CHANGED
|
@@ -80,8 +80,11 @@ function createInsightsMiddleware() {
|
|
|
80
80
|
// search-insights.js also throws an error so dev-only clarification is sufficient
|
|
81
81
|
process.env.NODE_ENV === 'development' ? (0, _utils.warning)(Boolean(appId && apiKey), 'could not extract Algolia credentials from searchClient in insights middleware.') : void 0;
|
|
82
82
|
var queuedUserToken = undefined;
|
|
83
|
+
var queuedAuthenticatedUserToken = undefined;
|
|
83
84
|
var userTokenBeforeInit = undefined;
|
|
84
|
-
|
|
85
|
+
var authenticatedUserTokenBeforeInit = undefined;
|
|
86
|
+
var queue = insightsClient.queue;
|
|
87
|
+
if (Array.isArray(queue)) {
|
|
85
88
|
// Context: The umd build of search-insights is asynchronously loaded by the snippet.
|
|
86
89
|
//
|
|
87
90
|
// When user calls `aa('setUserToken', 'my-user-token')` before `search-insights` is loaded,
|
|
@@ -92,22 +95,32 @@ function createInsightsMiddleware() {
|
|
|
92
95
|
// At this point, even though `search-insights` is not loaded yet,
|
|
93
96
|
// we still want to read the token from the queue.
|
|
94
97
|
// Otherwise, the first search call will be fired without the token.
|
|
95
|
-
var
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
var _map = ['setUserToken', 'setAuthenticatedUserToken'].map(function (key) {
|
|
99
|
+
var _ref3 = (0, _utils.find)(queue.slice().reverse(), function (_ref5) {
|
|
100
|
+
var _ref6 = _slicedToArray(_ref5, 1),
|
|
101
|
+
method = _ref6[0];
|
|
102
|
+
return method === key;
|
|
103
|
+
}) || [],
|
|
104
|
+
_ref4 = _slicedToArray(_ref3, 2),
|
|
105
|
+
value = _ref4[1];
|
|
106
|
+
return value;
|
|
107
|
+
});
|
|
108
|
+
var _map2 = _slicedToArray(_map, 2);
|
|
109
|
+
queuedUserToken = _map2[0];
|
|
110
|
+
queuedAuthenticatedUserToken = _map2[1];
|
|
102
111
|
}
|
|
112
|
+
|
|
113
|
+
// If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
|
|
114
|
+
// before creating the Insights middleware, we temporarily store the token
|
|
115
|
+
// and set it later on.
|
|
116
|
+
//
|
|
117
|
+
// Otherwise, the `init` call might override them with anonymous user token.
|
|
103
118
|
insightsClient('getUserToken', null, function (_error, userToken) {
|
|
104
|
-
// If user has called `aa('setUserToken', 'my-user-token')` before creating
|
|
105
|
-
// the `insights` middleware, we store them temporarily and
|
|
106
|
-
// set it later on.
|
|
107
|
-
//
|
|
108
|
-
// Otherwise, the `init` call might override it with anonymous user token.
|
|
109
119
|
userTokenBeforeInit = normalizeUserToken(userToken);
|
|
110
120
|
});
|
|
121
|
+
insightsClient('getAuthenticatedUserToken', null, function (_error, userToken) {
|
|
122
|
+
authenticatedUserTokenBeforeInit = normalizeUserToken(userToken);
|
|
123
|
+
});
|
|
111
124
|
|
|
112
125
|
// Only `init` if the `insightsInitParams` option is passed or
|
|
113
126
|
// if the `insightsClient` version doesn't supports optional `init` calling.
|
|
@@ -189,21 +202,43 @@ function createInsightsMiddleware() {
|
|
|
189
202
|
// We can set it as userToken.
|
|
190
203
|
setUserTokenToSearch(anonymousUserToken, true);
|
|
191
204
|
}
|
|
205
|
+
function setUserToken(token, userToken, authenticatedUserToken) {
|
|
206
|
+
setUserTokenToSearch(token, true);
|
|
207
|
+
if (userToken) {
|
|
208
|
+
insightsClient('setUserToken', userToken);
|
|
209
|
+
}
|
|
210
|
+
if (authenticatedUserToken) {
|
|
211
|
+
insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
192
214
|
|
|
193
|
-
// We consider the `userToken`
|
|
194
|
-
// importance than
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
215
|
+
// We consider the `userToken` or `authenticatedUserToken` before an
|
|
216
|
+
// `init` call of higher importance than one from the queue.
|
|
217
|
+
var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
|
|
218
|
+
var queuedToken = queuedAuthenticatedUserToken || queuedUserToken;
|
|
219
|
+
if (tokenBeforeInit) {
|
|
220
|
+
setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
|
|
221
|
+
} else if (queuedToken) {
|
|
222
|
+
setUserToken(queuedToken, queuedUserToken, queuedAuthenticatedUserToken);
|
|
201
223
|
}
|
|
202
224
|
|
|
203
225
|
// This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
|
|
204
226
|
insightsClient('onUserTokenChange', setUserTokenToSearch, {
|
|
205
227
|
immediate: true
|
|
206
228
|
});
|
|
229
|
+
|
|
230
|
+
// This updates userToken which is set explicitly by `aa('setAuthenticatedtUserToken', authenticatedUserToken)`
|
|
231
|
+
insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
|
|
232
|
+
// If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
|
|
233
|
+
if (!authenticatedUserToken) {
|
|
234
|
+
insightsClient('getUserToken', null, function (_, userToken) {
|
|
235
|
+
setUserTokenToSearch(userToken);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
setUserTokenToSearch(authenticatedUserToken);
|
|
239
|
+
}, {
|
|
240
|
+
immediate: true
|
|
241
|
+
});
|
|
207
242
|
var insightsClientWithLocalCredentials = insightsClient;
|
|
208
243
|
if (isModernInsightsClient(insightsClient)) {
|
|
209
244
|
insightsClientWithLocalCredentials = function insightsClientWithLocalCredentials(method, payload) {
|
|
@@ -239,6 +274,7 @@ function createInsightsMiddleware() {
|
|
|
239
274
|
},
|
|
240
275
|
unsubscribe: function unsubscribe() {
|
|
241
276
|
insightsClient('onUserTokenChange', undefined);
|
|
277
|
+
insightsClient('onAuthenticatedUserTokenChange', undefined);
|
|
242
278
|
instantSearchInstance.sendEventToInsights = _utils.noop;
|
|
243
279
|
if (helper && initialParameters) {
|
|
244
280
|
helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, helper.state), initialParameters));
|
|
@@ -15,6 +15,7 @@ import type * as Places from 'places.js';
|
|
|
15
15
|
import type { PlainSearchParameters } from 'algoliasearch-helper';
|
|
16
16
|
import { default as qs_2 } from 'qs';
|
|
17
17
|
import { SearchClient } from 'algoliasearch-helper/types/algoliasearch.js';
|
|
18
|
+
import { SearchOptions } from 'algoliasearch-helper/types/algoliasearch.js';
|
|
18
19
|
import type { SearchParameters } from 'algoliasearch-helper';
|
|
19
20
|
import type { SearchResults } from 'algoliasearch-helper';
|
|
20
21
|
import { VNode } from 'preact';
|
|
@@ -2310,6 +2311,7 @@ declare type InfiniteHitsWidgetParams = {
|
|
|
2310
2311
|
declare type InitialResult = {
|
|
2311
2312
|
state: PlainSearchParameters;
|
|
2312
2313
|
results: SearchResults['_rawResults'];
|
|
2314
|
+
requestParams?: SearchOptions;
|
|
2313
2315
|
};
|
|
2314
2316
|
|
|
2315
2317
|
declare type InitialResults = Record<string, InitialResult>;
|
|
@@ -2455,15 +2457,11 @@ declare class InstantSearch<TUiState extends UiState = UiState, TRouteState = TU
|
|
|
2455
2457
|
removeWidgets(widgets: Array<Widget | IndexWidget>): this;
|
|
2456
2458
|
/**
|
|
2457
2459
|
* Ends the initialization of InstantSearch.js and triggers the
|
|
2458
|
-
* first search.
|
|
2459
|
-
* to the instance of InstantSearch.js. InstantSearch.js also supports adding and removing
|
|
2460
|
-
* widgets after the start as an **EXPERIMENTAL** feature.
|
|
2460
|
+
* first search.
|
|
2461
2461
|
*/
|
|
2462
2462
|
start(): void;
|
|
2463
2463
|
/**
|
|
2464
|
-
* Removes all widgets without triggering a search afterwards.
|
|
2465
|
-
* if you find an issue with it, please
|
|
2466
|
-
* [open an issue](https://github.com/algolia/instantsearch/issues/new?title=Problem%20with%20dispose).
|
|
2464
|
+
* Removes all widgets without triggering a search afterwards.
|
|
2467
2465
|
* @return {undefined} This method does not return anything
|
|
2468
2466
|
*/
|
|
2469
2467
|
dispose(): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! InstantSearch.js 4.
|
|
1
|
+
/*! InstantSearch.js 4.64.1 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(factory) :
|
|
@@ -1424,13 +1424,16 @@
|
|
|
1424
1424
|
return;
|
|
1425
1425
|
}
|
|
1426
1426
|
var cachedRequest = Object.keys(results).map(function (key) {
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1427
|
+
var _results$key = results[key],
|
|
1428
|
+
state = _results$key.state,
|
|
1429
|
+
requestParams = _results$key.requestParams,
|
|
1430
|
+
serverResults = _results$key.results;
|
|
1431
|
+
return serverResults.map(function (result) {
|
|
1432
|
+
return _objectSpread2({
|
|
1433
|
+
indexName: state.index || result.index
|
|
1434
|
+
}, requestParams || result.params ? {
|
|
1435
|
+
params: serializeQueryParameters(requestParams || deserializeQueryParameters(result.params))
|
|
1436
|
+
} : {});
|
|
1434
1437
|
});
|
|
1435
1438
|
});
|
|
1436
1439
|
var cachedResults = Object.keys(results).reduce(function (acc, key) {
|
|
@@ -3588,7 +3591,7 @@
|
|
|
3588
3591
|
dispose: function dispose(_ref4) {
|
|
3589
3592
|
var state = _ref4.state;
|
|
3590
3593
|
unmountFn();
|
|
3591
|
-
return state.
|
|
3594
|
+
return state.removeNumericRefinement(attribute);
|
|
3592
3595
|
},
|
|
3593
3596
|
getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
|
|
3594
3597
|
var searchParameters = _ref5.searchParameters;
|
|
@@ -3608,11 +3611,11 @@
|
|
|
3608
3611
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
|
|
3609
3612
|
var uiState = _ref6.uiState;
|
|
3610
3613
|
var value = uiState.numericMenu && uiState.numericMenu[attribute];
|
|
3611
|
-
var withoutRefinements = searchParameters.
|
|
3614
|
+
var withoutRefinements = searchParameters.setQueryParameters({
|
|
3615
|
+
numericRefinements: _objectSpread2(_objectSpread2({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
3616
|
+
});
|
|
3612
3617
|
if (!value) {
|
|
3613
|
-
return withoutRefinements
|
|
3614
|
-
numericRefinements: _objectSpread2(_objectSpread2({}, withoutRefinements.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
3615
|
-
});
|
|
3618
|
+
return withoutRefinements;
|
|
3616
3619
|
}
|
|
3617
3620
|
var isExact = value.indexOf(':') === -1;
|
|
3618
3621
|
if (isExact) {
|
|
@@ -4478,8 +4481,7 @@
|
|
|
4478
4481
|
return searchParameters;
|
|
4479
4482
|
}
|
|
4480
4483
|
var values = uiState.refinementList && uiState.refinementList[attribute];
|
|
4481
|
-
var
|
|
4482
|
-
var withFacetConfiguration = isDisjunctive ? withoutRefinements.addDisjunctiveFacet(attribute) : withoutRefinements.addFacet(attribute);
|
|
4484
|
+
var withFacetConfiguration = isDisjunctive ? searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute) : searchParameters.addFacet(attribute).removeFacetRefinement(attribute);
|
|
4483
4485
|
var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
|
|
4484
4486
|
var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
|
|
4485
4487
|
var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
|
|
@@ -4947,8 +4949,7 @@
|
|
|
4947
4949
|
getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref8) {
|
|
4948
4950
|
var uiState = _ref8.uiState;
|
|
4949
4951
|
var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
|
|
4950
|
-
var
|
|
4951
|
-
var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
|
|
4952
|
+
var withDisjunctiveFacet = searchParameters.addDisjunctiveFacet(attribute).removeNumericRefinement(attribute).removeDisjunctiveFacetRefinement(attribute);
|
|
4952
4953
|
if (!value) {
|
|
4953
4954
|
return withDisjunctiveFacet.setQueryParameters({
|
|
4954
4955
|
numericRefinements: _objectSpread2(_objectSpread2({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
|
|
@@ -5306,7 +5307,7 @@
|
|
|
5306
5307
|
_warning(false, "ToggleRefinement: Attribute \"".concat(attribute, "\" is already used by another widget of a different type.\nAs this is not supported, please make sure to remove this other widget or this ToggleRefinement widget will not work at all.")) ;
|
|
5307
5308
|
return searchParameters;
|
|
5308
5309
|
}
|
|
5309
|
-
var withFacetConfiguration = searchParameters.
|
|
5310
|
+
var withFacetConfiguration = searchParameters.addDisjunctiveFacet(attribute).removeDisjunctiveFacetRefinement(attribute);
|
|
5310
5311
|
var isRefined = Boolean(uiState.toggle && uiState.toggle[attribute]);
|
|
5311
5312
|
if (isRefined) {
|
|
5312
5313
|
if (on) {
|
|
@@ -6521,9 +6522,12 @@
|
|
|
6521
6522
|
.sort()
|
|
6522
6523
|
.forEach(function (facetName) {
|
|
6523
6524
|
var facetValues = facetsRefinements[facetName] || [];
|
|
6524
|
-
facetValues
|
|
6525
|
-
|
|
6526
|
-
|
|
6525
|
+
facetValues
|
|
6526
|
+
.slice()
|
|
6527
|
+
.sort()
|
|
6528
|
+
.forEach(function (facetValue) {
|
|
6529
|
+
facetFilters.push(facetName + ':' + facetValue);
|
|
6530
|
+
});
|
|
6527
6531
|
});
|
|
6528
6532
|
|
|
6529
6533
|
var facetsExcludes = state.facetsExcludes || {};
|
|
@@ -6546,9 +6550,12 @@
|
|
|
6546
6550
|
}
|
|
6547
6551
|
var orFilters = [];
|
|
6548
6552
|
|
|
6549
|
-
facetValues
|
|
6550
|
-
|
|
6551
|
-
|
|
6553
|
+
facetValues
|
|
6554
|
+
.slice()
|
|
6555
|
+
.sort()
|
|
6556
|
+
.forEach(function (facetValue) {
|
|
6557
|
+
orFilters.push(facetName + ':' + facetValue);
|
|
6558
|
+
});
|
|
6552
6559
|
|
|
6553
6560
|
facetFilters.push(orFilters);
|
|
6554
6561
|
});
|
|
@@ -7214,7 +7221,7 @@
|
|
|
7214
7221
|
numbers.numericRefinements = numericRefinements;
|
|
7215
7222
|
}
|
|
7216
7223
|
|
|
7217
|
-
return merge_1(
|
|
7224
|
+
return merge_1(partialState, numbers);
|
|
7218
7225
|
};
|
|
7219
7226
|
|
|
7220
7227
|
/**
|
|
@@ -10086,7 +10093,7 @@
|
|
|
10086
10093
|
|
|
10087
10094
|
var SearchResults_1 = SearchResults;
|
|
10088
10095
|
|
|
10089
|
-
var version = '3.16.
|
|
10096
|
+
var version = '3.16.2';
|
|
10090
10097
|
|
|
10091
10098
|
var escapeFacetValue$4 = escapeFacetValue_1.escapeFacetValue;
|
|
10092
10099
|
|
|
@@ -12789,8 +12796,11 @@
|
|
|
12789
12796
|
// search-insights.js also throws an error so dev-only clarification is sufficient
|
|
12790
12797
|
_warning(Boolean(appId && apiKey), 'could not extract Algolia credentials from searchClient in insights middleware.') ;
|
|
12791
12798
|
var queuedUserToken = undefined;
|
|
12799
|
+
var queuedAuthenticatedUserToken = undefined;
|
|
12792
12800
|
var userTokenBeforeInit = undefined;
|
|
12793
|
-
|
|
12801
|
+
var authenticatedUserTokenBeforeInit = undefined;
|
|
12802
|
+
var queue = insightsClient.queue;
|
|
12803
|
+
if (Array.isArray(queue)) {
|
|
12794
12804
|
// Context: The umd build of search-insights is asynchronously loaded by the snippet.
|
|
12795
12805
|
//
|
|
12796
12806
|
// When user calls `aa('setUserToken', 'my-user-token')` before `search-insights` is loaded,
|
|
@@ -12801,22 +12811,32 @@
|
|
|
12801
12811
|
// At this point, even though `search-insights` is not loaded yet,
|
|
12802
12812
|
// we still want to read the token from the queue.
|
|
12803
12813
|
// Otherwise, the first search call will be fired without the token.
|
|
12804
|
-
var
|
|
12805
|
-
var
|
|
12806
|
-
|
|
12807
|
-
|
|
12808
|
-
|
|
12809
|
-
|
|
12810
|
-
|
|
12814
|
+
var _map = ['setUserToken', 'setAuthenticatedUserToken'].map(function (key) {
|
|
12815
|
+
var _ref3 = find(queue.slice().reverse(), function (_ref5) {
|
|
12816
|
+
var _ref6 = _slicedToArray(_ref5, 1),
|
|
12817
|
+
method = _ref6[0];
|
|
12818
|
+
return method === key;
|
|
12819
|
+
}) || [],
|
|
12820
|
+
_ref4 = _slicedToArray(_ref3, 2),
|
|
12821
|
+
value = _ref4[1];
|
|
12822
|
+
return value;
|
|
12823
|
+
});
|
|
12824
|
+
var _map2 = _slicedToArray(_map, 2);
|
|
12825
|
+
queuedUserToken = _map2[0];
|
|
12826
|
+
queuedAuthenticatedUserToken = _map2[1];
|
|
12811
12827
|
}
|
|
12828
|
+
|
|
12829
|
+
// If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
|
|
12830
|
+
// before creating the Insights middleware, we temporarily store the token
|
|
12831
|
+
// and set it later on.
|
|
12832
|
+
//
|
|
12833
|
+
// Otherwise, the `init` call might override them with anonymous user token.
|
|
12812
12834
|
insightsClient('getUserToken', null, function (_error, userToken) {
|
|
12813
|
-
// If user has called `aa('setUserToken', 'my-user-token')` before creating
|
|
12814
|
-
// the `insights` middleware, we store them temporarily and
|
|
12815
|
-
// set it later on.
|
|
12816
|
-
//
|
|
12817
|
-
// Otherwise, the `init` call might override it with anonymous user token.
|
|
12818
12835
|
userTokenBeforeInit = normalizeUserToken(userToken);
|
|
12819
12836
|
});
|
|
12837
|
+
insightsClient('getAuthenticatedUserToken', null, function (_error, userToken) {
|
|
12838
|
+
authenticatedUserTokenBeforeInit = normalizeUserToken(userToken);
|
|
12839
|
+
});
|
|
12820
12840
|
|
|
12821
12841
|
// Only `init` if the `insightsInitParams` option is passed or
|
|
12822
12842
|
// if the `insightsClient` version doesn't supports optional `init` calling.
|
|
@@ -12898,21 +12918,43 @@
|
|
|
12898
12918
|
// We can set it as userToken.
|
|
12899
12919
|
setUserTokenToSearch(anonymousUserToken, true);
|
|
12900
12920
|
}
|
|
12921
|
+
function setUserToken(token, userToken, authenticatedUserToken) {
|
|
12922
|
+
setUserTokenToSearch(token, true);
|
|
12923
|
+
if (userToken) {
|
|
12924
|
+
insightsClient('setUserToken', userToken);
|
|
12925
|
+
}
|
|
12926
|
+
if (authenticatedUserToken) {
|
|
12927
|
+
insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
|
|
12928
|
+
}
|
|
12929
|
+
}
|
|
12901
12930
|
|
|
12902
|
-
// We consider the `userToken`
|
|
12903
|
-
// importance than
|
|
12904
|
-
|
|
12905
|
-
|
|
12906
|
-
|
|
12907
|
-
|
|
12908
|
-
|
|
12909
|
-
|
|
12931
|
+
// We consider the `userToken` or `authenticatedUserToken` before an
|
|
12932
|
+
// `init` call of higher importance than one from the queue.
|
|
12933
|
+
var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
|
|
12934
|
+
var queuedToken = queuedAuthenticatedUserToken || queuedUserToken;
|
|
12935
|
+
if (tokenBeforeInit) {
|
|
12936
|
+
setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
|
|
12937
|
+
} else if (queuedToken) {
|
|
12938
|
+
setUserToken(queuedToken, queuedUserToken, queuedAuthenticatedUserToken);
|
|
12910
12939
|
}
|
|
12911
12940
|
|
|
12912
12941
|
// This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
|
|
12913
12942
|
insightsClient('onUserTokenChange', setUserTokenToSearch, {
|
|
12914
12943
|
immediate: true
|
|
12915
12944
|
});
|
|
12945
|
+
|
|
12946
|
+
// This updates userToken which is set explicitly by `aa('setAuthenticatedtUserToken', authenticatedUserToken)`
|
|
12947
|
+
insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
|
|
12948
|
+
// If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
|
|
12949
|
+
if (!authenticatedUserToken) {
|
|
12950
|
+
insightsClient('getUserToken', null, function (_, userToken) {
|
|
12951
|
+
setUserTokenToSearch(userToken);
|
|
12952
|
+
});
|
|
12953
|
+
}
|
|
12954
|
+
setUserTokenToSearch(authenticatedUserToken);
|
|
12955
|
+
}, {
|
|
12956
|
+
immediate: true
|
|
12957
|
+
});
|
|
12916
12958
|
var insightsClientWithLocalCredentials = insightsClient;
|
|
12917
12959
|
if (isModernInsightsClient(insightsClient)) {
|
|
12918
12960
|
insightsClientWithLocalCredentials = function insightsClientWithLocalCredentials(method, payload) {
|
|
@@ -12948,6 +12990,7 @@
|
|
|
12948
12990
|
},
|
|
12949
12991
|
unsubscribe: function unsubscribe() {
|
|
12950
12992
|
insightsClient('onUserTokenChange', undefined);
|
|
12993
|
+
insightsClient('onAuthenticatedUserTokenChange', undefined);
|
|
12951
12994
|
instantSearchInstance.sendEventToInsights = noop;
|
|
12952
12995
|
if (helper && initialParameters) {
|
|
12953
12996
|
helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread2(_objectSpread2({}, helper.state), initialParameters));
|
|
@@ -14847,7 +14890,7 @@
|
|
|
14847
14890
|
};
|
|
14848
14891
|
}
|
|
14849
14892
|
|
|
14850
|
-
var version$1 = '4.
|
|
14893
|
+
var version$1 = '4.64.1';
|
|
14851
14894
|
|
|
14852
14895
|
var withUsage$r = createDocumentationMessageGenerator({
|
|
14853
14896
|
name: 'instantsearch'
|
|
@@ -15183,9 +15226,7 @@
|
|
|
15183
15226
|
|
|
15184
15227
|
/**
|
|
15185
15228
|
* Ends the initialization of InstantSearch.js and triggers the
|
|
15186
|
-
* first search.
|
|
15187
|
-
* to the instance of InstantSearch.js. InstantSearch.js also supports adding and removing
|
|
15188
|
-
* widgets after the start as an **EXPERIMENTAL** feature.
|
|
15229
|
+
* first search.
|
|
15189
15230
|
*/
|
|
15190
15231
|
}, {
|
|
15191
15232
|
key: "start",
|
|
@@ -15337,9 +15378,7 @@
|
|
|
15337
15378
|
}
|
|
15338
15379
|
|
|
15339
15380
|
/**
|
|
15340
|
-
* Removes all widgets without triggering a search afterwards.
|
|
15341
|
-
* if you find an issue with it, please
|
|
15342
|
-
* [open an issue](https://github.com/algolia/instantsearch/issues/new?title=Problem%20with%20dispose).
|
|
15381
|
+
* Removes all widgets without triggering a search afterwards.
|
|
15343
15382
|
* @return {undefined} This method does not return anything
|
|
15344
15383
|
*/
|
|
15345
15384
|
}, {
|