instantsearch.js 4.75.5 → 4.75.6

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 (43) hide show
  1. package/cjs/components/Slider/Rheostat.js +4 -4
  2. package/cjs/connectors/autocomplete/connectAutocomplete.js +9 -5
  3. package/cjs/connectors/current-refinements/connectCurrentRefinements.js +1 -1
  4. package/cjs/connectors/hits/connectHitsWithInsights.js +3 -1
  5. package/cjs/connectors/infinite-hits/connectInfiniteHits.js +1 -1
  6. package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +3 -1
  7. package/cjs/lib/InstantSearch.js +2 -0
  8. package/cjs/lib/server.js +5 -2
  9. package/cjs/lib/utils/getRefinements.js +2 -1
  10. package/cjs/lib/version.js +1 -1
  11. package/cjs/middlewares/createInsightsMiddleware.js +37 -78
  12. package/cjs/widgets/analytics/analytics.js +3 -0
  13. package/cjs/widgets/hits/defaultTemplates.js +1 -0
  14. package/cjs/widgets/index/index.js +0 -1
  15. package/cjs/widgets/places/places.js +2 -0
  16. package/dist/instantsearch.development.d.ts +4 -4
  17. package/dist/instantsearch.development.js +83 -109
  18. package/dist/instantsearch.development.js.map +1 -1
  19. package/dist/instantsearch.production.d.ts +4 -4
  20. package/dist/instantsearch.production.min.d.ts +4 -4
  21. package/dist/instantsearch.production.min.js +2 -2
  22. package/dist/instantsearch.production.min.js.map +1 -1
  23. package/es/connectors/autocomplete/connectAutocomplete.js +9 -5
  24. package/es/connectors/current-refinements/connectCurrentRefinements.js +1 -1
  25. package/es/connectors/hits/connectHitsWithInsights.js +3 -1
  26. package/es/connectors/infinite-hits/connectInfiniteHits.d.ts +1 -1
  27. package/es/connectors/infinite-hits/connectInfiniteHits.js +1 -1
  28. package/es/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +3 -1
  29. package/es/lib/InstantSearch.js +2 -0
  30. package/es/lib/server.js +5 -2
  31. package/es/lib/utils/getRefinements.d.ts +1 -1
  32. package/es/lib/utils/getRefinements.js +2 -1
  33. package/es/lib/utils/render-args.d.ts +1 -1
  34. package/es/lib/version.d.ts +1 -1
  35. package/es/lib/version.js +1 -1
  36. package/es/middlewares/createInsightsMiddleware.js +37 -78
  37. package/es/types/widget.d.ts +3 -3
  38. package/es/widgets/analytics/analytics.js +3 -0
  39. package/es/widgets/hits/defaultTemplates.js +1 -0
  40. package/es/widgets/index/index.js +0 -1
  41. package/es/widgets/places/places.js +2 -0
  42. package/es/widgets/search-box/defaultTemplates.js +0 -1
  43. package/package.json +6 -6
@@ -1,4 +1,4 @@
1
- /*! InstantSearch.js 4.75.5 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch */
1
+ /*! InstantSearch.js 4.75.6 | © 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) :
@@ -1299,8 +1299,9 @@
1299
1299
  }
1300
1300
  return res;
1301
1301
  }
1302
- function getRefinements(results, state) {
1302
+ function getRefinements(_results, state) {
1303
1303
  var includesQuery = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1304
+ var results = _results || {};
1304
1305
  var refinements = [];
1305
1306
  var _state$facetsRefineme = state.facetsRefinements,
1306
1307
  facetsRefinements = _state$facetsRefineme === void 0 ? {} : _state$facetsRefineme,
@@ -3129,7 +3130,7 @@
3129
3130
 
3130
3131
  mod[attribute] = facetRefinement;
3131
3132
 
3132
- return defaultsPure({}, mod, refinementList);
3133
+ return defaultsPure(mod, refinementList);
3133
3134
  },
3134
3135
  /**
3135
3136
  * Removes refinement(s) for an attribute:
@@ -4463,7 +4464,6 @@
4463
4464
 
4464
4465
  return this.setQueryParameters({
4465
4466
  hierarchicalFacetsRefinements: defaultsPure(
4466
- {},
4467
4467
  mod,
4468
4468
  this.hierarchicalFacetsRefinements
4469
4469
  ),
@@ -4491,7 +4491,6 @@
4491
4491
  mod[facet] = [path];
4492
4492
  return this.setQueryParameters({
4493
4493
  hierarchicalFacetsRefinements: defaultsPure(
4494
- {},
4495
4494
  mod,
4496
4495
  this.hierarchicalFacetsRefinements
4497
4496
  ),
@@ -4512,7 +4511,6 @@
4512
4511
  mod[facet] = [];
4513
4512
  return this.setQueryParameters({
4514
4513
  hierarchicalFacetsRefinements: defaultsPure(
4515
- {},
4516
4514
  mod,
4517
4515
  this.hierarchicalFacetsRefinements
4518
4516
  ),
@@ -5510,12 +5508,9 @@
5510
5508
  });
5511
5509
 
5512
5510
  // Make every key of the result options reachable from the instance
5513
- var opts = merge_1(
5514
- {
5515
- persistHierarchicalRootCount: false,
5516
- },
5517
- options
5518
- );
5511
+ var opts = defaultsPure(options, {
5512
+ persistHierarchicalRootCount: false,
5513
+ });
5519
5514
  Object.keys(opts).forEach(function (key) {
5520
5515
  self[key] = opts[key];
5521
5516
  });
@@ -5782,11 +5777,16 @@
5782
5777
  return;
5783
5778
  }
5784
5779
 
5785
- self.hierarchicalFacets[position][attributeIndex].data = merge_1(
5786
- {},
5787
- self.hierarchicalFacets[position][attributeIndex].data,
5788
- facetResults
5789
- );
5780
+ self.hierarchicalFacets[position][attributeIndex].data =
5781
+ self.persistHierarchicalRootCount
5782
+ ? defaultsPure(
5783
+ self.hierarchicalFacets[position][attributeIndex].data,
5784
+ facetResults
5785
+ )
5786
+ : defaultsPure(
5787
+ facetResults,
5788
+ self.hierarchicalFacets[position][attributeIndex].data
5789
+ );
5790
5790
  } else {
5791
5791
  position = disjunctiveFacetsIndices[dfacet];
5792
5792
 
@@ -5795,7 +5795,7 @@
5795
5795
 
5796
5796
  self.disjunctiveFacets[position] = {
5797
5797
  name: dfacet,
5798
- data: defaultsPure({}, facetResults, dataFromMainRequest),
5798
+ data: defaultsPure(dataFromMainRequest, facetResults),
5799
5799
  exhaustive: result.exhaustiveFacetsCount,
5800
5800
  };
5801
5801
  assignFacetStats(
@@ -6193,7 +6193,7 @@
6193
6193
  return undefined;
6194
6194
  }
6195
6195
 
6196
- var options = defaultsPure({}, opts, {
6196
+ var options = defaultsPure(opts, {
6197
6197
  sortBy: SearchResults.DEFAULT_SORT,
6198
6198
  // if no sortBy is given, attempt to sort based on facetOrdering
6199
6199
  // if it is given, we still allow to sort via facet ordering first
@@ -6484,7 +6484,7 @@
6484
6484
 
6485
6485
  var sortAndMergeRecommendations_1 = sortAndMergeRecommendations;
6486
6486
 
6487
- var version = '3.22.5';
6487
+ var version = '3.22.6';
6488
6488
 
6489
6489
  var escapeFacetValue$4 = escapeFacetValue_1.escapeFacetValue;
6490
6490
 
@@ -9048,7 +9048,7 @@
9048
9048
  function getItems() {
9049
9049
  if (!results) {
9050
9050
  return transformItems(getRefinementsItems({
9051
- results: {},
9051
+ results: null,
9052
9052
  helper: helper,
9053
9053
  indexId: helper.state.index,
9054
9054
  includedAttributes: includedAttributes,
@@ -9736,7 +9736,9 @@
9736
9736
  * Due to https://github.com/microsoft/web-build-tools/issues/1050, we need
9737
9737
  * Connector<...> imported in this file, even though it is only used implicitly.
9738
9738
  * This _uses_ Connector<...> so it is not accidentally removed by someone.
9739
- */ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9739
+ */
9740
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
9741
+
9740
9742
  var connectHitsWithInsights = withInsights(connectHits);
9741
9743
 
9742
9744
  var withUsage$8 = createDocumentationMessageGenerator({
@@ -10079,7 +10081,7 @@
10079
10081
  sendEvent: sendEvent,
10080
10082
  bindEvent: bindEvent,
10081
10083
  banner: banner,
10082
- results: results,
10084
+ results: results || undefined,
10083
10085
  showPrevious: showPrevious,
10084
10086
  showMore: showMore,
10085
10087
  isFirstPage: isFirstPage,
@@ -10133,7 +10135,9 @@
10133
10135
  * Due to https://github.com/microsoft/web-build-tools/issues/1050, we need
10134
10136
  * Connector<...> imported in this file, even though it is only used implicitly.
10135
10137
  * This _uses_ Connector<...> so it is not accidentally removed by someone.
10136
- */ // eslint-disable-next-line @typescript-eslint/no-unused-vars
10138
+ */
10139
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
10140
+
10137
10141
  var connectInfiniteHitsWithInsights = withInsights(connectInfiniteHits);
10138
10142
 
10139
10143
  var _excluded$3 = ["name", "escapedValue", "path"];
@@ -12789,21 +12793,25 @@
12789
12793
  };
12790
12794
  }
12791
12795
  var indices = scopedResults.map(function (scopedResult) {
12796
+ var _scopedResult$results2, _scopedResult$results3;
12792
12797
  // We need to escape the hits because highlighting
12793
12798
  // exposes HTML tags to the end-user.
12794
- scopedResult.results.hits = escapeHTML ? escapeHits(scopedResult.results.hits) : scopedResult.results.hits;
12799
+ if (scopedResult.results) {
12800
+ scopedResult.results.hits = escapeHTML ? escapeHits(scopedResult.results.hits) : scopedResult.results.hits;
12801
+ }
12795
12802
  var sendEvent = createSendEventForHits({
12796
12803
  instantSearchInstance: instantSearchInstance,
12797
12804
  getIndex: function getIndex() {
12798
- return scopedResult.results.index;
12805
+ var _scopedResult$results;
12806
+ return ((_scopedResult$results = scopedResult.results) === null || _scopedResult$results === void 0 ? void 0 : _scopedResult$results.index) || '';
12799
12807
  },
12800
12808
  widgetType: _this.$$type
12801
12809
  });
12802
12810
  return {
12803
12811
  indexId: scopedResult.indexId,
12804
- indexName: scopedResult.results.index,
12805
- hits: scopedResult.results.hits,
12806
- results: scopedResult.results,
12812
+ indexName: ((_scopedResult$results2 = scopedResult.results) === null || _scopedResult$results2 === void 0 ? void 0 : _scopedResult$results2.index) || '',
12813
+ hits: ((_scopedResult$results3 = scopedResult.results) === null || _scopedResult$results3 === void 0 ? void 0 : _scopedResult$results3.hits) || [],
12814
+ results: scopedResult.results || {},
12807
12815
  sendEvent: sendEvent
12808
12816
  };
12809
12817
  });
@@ -13754,7 +13762,6 @@
13754
13762
  $$internal = _props$$$internal === void 0 ? false : _props$$$internal,
13755
13763
  _props$$$automatic = props.$$automatic,
13756
13764
  $$automatic = _props$$$automatic === void 0 ? false : _props$$$automatic;
13757
- var currentTokenType;
13758
13765
  var potentialInsightsClient = _insightsClient;
13759
13766
  if (!_insightsClient && _insightsClient !== null) {
13760
13767
  safelyRunOnBrowser(function (_ref) {
@@ -13803,9 +13810,7 @@
13803
13810
  _warning(Boolean(appId && apiKey), 'could not extract Algolia credentials from searchClient in insights middleware.') ;
13804
13811
  var queuedInitParams = undefined;
13805
13812
  var queuedUserToken = undefined;
13806
- var queuedAuthenticatedUserToken = undefined;
13807
13813
  var userTokenBeforeInit = undefined;
13808
- var authenticatedUserTokenBeforeInit = undefined;
13809
13814
  var queue = insightsClient.queue;
13810
13815
  if (Array.isArray(queue)) {
13811
13816
  // Context: The umd build of search-insights is asynchronously loaded by the snippet.
@@ -13818,7 +13823,7 @@
13818
13823
  // At this point, even though `search-insights` is not loaded yet,
13819
13824
  // we still want to read the token from the queue.
13820
13825
  // Otherwise, the first search call will be fired without the token.
13821
- var _map = ['setUserToken', 'setAuthenticatedUserToken', 'init'].map(function (key) {
13826
+ var _map = ['setUserToken', 'init'].map(function (key) {
13822
13827
  var _ref3 = find(queue.slice().reverse(), function (_ref5) {
13823
13828
  var _ref6 = _slicedToArray(_ref5, 1),
13824
13829
  method = _ref6[0];
@@ -13828,23 +13833,18 @@
13828
13833
  value = _ref4[1];
13829
13834
  return value;
13830
13835
  });
13831
- var _map2 = _slicedToArray(_map, 3);
13836
+ var _map2 = _slicedToArray(_map, 2);
13832
13837
  queuedUserToken = _map2[0];
13833
- queuedAuthenticatedUserToken = _map2[1];
13834
- queuedInitParams = _map2[2];
13838
+ queuedInitParams = _map2[1];
13835
13839
  }
13836
13840
 
13837
- // If user called `aa('setUserToken')` or `aa('setAuthenticatedUserToken')`
13838
- // before creating the Insights middleware, we temporarily store the token
13839
- // and set it later on.
13841
+ // If user called `aa('setUserToken')` before creating the Insights middleware,
13842
+ // we temporarily store the token and set it later on.
13840
13843
  //
13841
13844
  // Otherwise, the `init` call might override them with anonymous user token.
13842
13845
  insightsClient('getUserToken', null, function (_error, userToken) {
13843
13846
  userTokenBeforeInit = normalizeUserToken(userToken);
13844
13847
  });
13845
- insightsClient('getAuthenticatedUserToken', null, function (_error, userToken) {
13846
- authenticatedUserTokenBeforeInit = normalizeUserToken(userToken);
13847
- });
13848
13848
 
13849
13849
  // Only `init` if the `insightsInitParams` option is passed or
13850
13850
  // if the `insightsClient` version doesn't supports optional `init` calling.
@@ -13884,7 +13884,7 @@
13884
13884
  helper = instantSearchInstance.mainHelper;
13885
13885
  var queueAtStart = insightsClient.queue;
13886
13886
  if (Array.isArray(queueAtStart)) {
13887
- var _map3 = ['setUserToken', 'setAuthenticatedUserToken', 'init'].map(function (key) {
13887
+ var _map3 = ['setUserToken', 'init'].map(function (key) {
13888
13888
  var _ref7 = find(queueAtStart.slice().reverse(), function (_ref9) {
13889
13889
  var _ref10 = _slicedToArray(_ref9, 1),
13890
13890
  method = _ref10[0];
@@ -13894,15 +13894,11 @@
13894
13894
  value = _ref8[1];
13895
13895
  return value;
13896
13896
  });
13897
- var _map4 = _slicedToArray(_map3, 3);
13897
+ var _map4 = _slicedToArray(_map3, 2);
13898
13898
  queuedUserToken = _map4[0];
13899
- queuedAuthenticatedUserToken = _map4[1];
13900
- queuedInitParams = _map4[2];
13899
+ queuedInitParams = _map4[1];
13901
13900
  }
13902
- initialParameters = {
13903
- userToken: helper.state.userToken,
13904
- clickAnalytics: helper.state.clickAnalytics
13905
- };
13901
+ initialParameters = getInitialParameters(instantSearchInstance);
13906
13902
 
13907
13903
  // We don't want to force clickAnalytics when the insights is enabled from the search response.
13908
13904
  // This means we don't enable insights for indices that don't opt in
@@ -13914,9 +13910,8 @@
13914
13910
  if (!$$internal) {
13915
13911
  instantSearchInstance.scheduleSearch();
13916
13912
  }
13917
- var setUserTokenToSearch = function setUserTokenToSearch(userToken, tokenType) {
13918
- var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
13919
- var unsetAuthenticatedUserToken = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
13913
+ var setUserTokenToSearch = function setUserTokenToSearch(userToken) {
13914
+ var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
13920
13915
  var normalizedUserToken = normalizeUserToken(userToken);
13921
13916
  if (!normalizedUserToken) {
13922
13917
  return;
@@ -13929,13 +13924,6 @@
13929
13924
  if (existingToken && existingToken !== userToken) {
13930
13925
  instantSearchInstance.scheduleSearch();
13931
13926
  }
13932
- currentTokenType = tokenType;
13933
- }
13934
-
13935
- // the authenticated user token cannot be overridden by a user or anonymous token
13936
- // for instant search query requests
13937
- if (currentTokenType && currentTokenType === 'authenticated' && tokenType === 'default' && !unsetAuthenticatedUserToken) {
13938
- return;
13939
13927
  }
13940
13928
 
13941
13929
  // Delay the token application to the next render cycle
@@ -13945,14 +13933,9 @@
13945
13933
  applyToken();
13946
13934
  }
13947
13935
  };
13948
- function setUserToken(token, userToken, authenticatedUserToken) {
13949
- setUserTokenToSearch(token, authenticatedUserToken ? 'authenticated' : 'default', true);
13950
- if (userToken) {
13951
- insightsClient('setUserToken', userToken);
13952
- }
13953
- if (authenticatedUserToken) {
13954
- insightsClient('setAuthenticatedUserToken', authenticatedUserToken);
13955
- }
13936
+ function setUserToken(token) {
13937
+ setUserTokenToSearch(token, true);
13938
+ insightsClient('setUserToken', token);
13956
13939
  }
13957
13940
  var anonymousUserToken = undefined;
13958
13941
  var anonymousTokenFromInsights = getInsightsAnonymousUserTokenInternal();
@@ -13966,7 +13949,6 @@
13966
13949
  var token = "anonymous-".concat(createUUID());
13967
13950
  anonymousUserToken = token;
13968
13951
  }
13969
- var authenticatedUserTokenFromInit;
13970
13952
  var userTokenFromInit;
13971
13953
 
13972
13954
  // With SSR, the token could be be set on the state. We make sure
@@ -13974,36 +13956,25 @@
13974
13956
  // insights lib on the server.
13975
13957
  var tokenFromSearchParameters = initialParameters.userToken;
13976
13958
 
13977
- // When the first query is sent, the token is possibly not yet be set by
13959
+ // When the first query is sent, the token is possibly not yet set by
13978
13960
  // the insights onChange callbacks (if insights isn't yet loaded).
13979
13961
  // It is explicitly being set here so that the first query has the
13980
13962
  // initial tokens set and ensure a second query isn't automatically
13981
13963
  // made when the onChange callback actually changes the state.
13982
- if (insightsInitParams) {
13983
- if (insightsInitParams.authenticatedUserToken) {
13984
- authenticatedUserTokenFromInit = insightsInitParams.authenticatedUserToken;
13985
- } else if (insightsInitParams.userToken) {
13986
- userTokenFromInit = insightsInitParams.userToken;
13987
- }
13964
+ if (insightsInitParams !== null && insightsInitParams !== void 0 && insightsInitParams.userToken) {
13965
+ userTokenFromInit = insightsInitParams.userToken;
13988
13966
  }
13989
-
13990
- // We consider the `userToken` or `authenticatedUserToken` before an
13991
- // `init` call of higher importance than one from the queue and ones set
13992
- // from the init props to be higher than that.
13993
- var tokenFromInit = authenticatedUserTokenFromInit || userTokenFromInit;
13994
- var tokenBeforeInit = authenticatedUserTokenBeforeInit || userTokenBeforeInit;
13995
- var tokenFromQueue = queuedAuthenticatedUserToken || queuedUserToken;
13996
- if (tokenFromInit) {
13997
- setUserToken(tokenFromInit, userTokenFromInit, authenticatedUserTokenFromInit);
13967
+ if (userTokenFromInit) {
13968
+ setUserToken(userTokenFromInit);
13998
13969
  } else if (tokenFromSearchParameters) {
13999
- setUserToken(tokenFromSearchParameters, tokenFromSearchParameters, undefined);
14000
- } else if (tokenBeforeInit) {
14001
- setUserToken(tokenBeforeInit, userTokenBeforeInit, authenticatedUserTokenBeforeInit);
14002
- } else if (tokenFromQueue) {
14003
- setUserToken(tokenFromQueue, queuedUserToken, queuedAuthenticatedUserToken);
13970
+ setUserToken(tokenFromSearchParameters);
13971
+ } else if (userTokenBeforeInit) {
13972
+ setUserToken(userTokenBeforeInit);
13973
+ } else if (queuedUserToken) {
13974
+ setUserToken(queuedUserToken);
14004
13975
  } else if (anonymousUserToken) {
14005
13976
  var _queuedInitParams;
14006
- setUserToken(anonymousUserToken, anonymousUserToken, undefined);
13977
+ setUserToken(anonymousUserToken);
14007
13978
  if (insightsInitParams !== null && insightsInitParams !== void 0 && insightsInitParams.useCookie || (_queuedInitParams = queuedInitParams) !== null && _queuedInitParams !== void 0 && _queuedInitParams.useCookie) {
14008
13979
  var _queuedInitParams2;
14009
13980
  saveTokenAsCookie(anonymousUserToken, (insightsInitParams === null || insightsInitParams === void 0 ? void 0 : insightsInitParams.cookieDuration) || ((_queuedInitParams2 = queuedInitParams) === null || _queuedInitParams2 === void 0 ? void 0 : _queuedInitParams2.cookieDuration));
@@ -14012,20 +13983,7 @@
14012
13983
 
14013
13984
  // This updates userToken which is set explicitly by `aa('setUserToken', userToken)`
14014
13985
  insightsClient('onUserTokenChange', function (token) {
14015
- return setUserTokenToSearch(token, 'default', true);
14016
- }, {
14017
- immediate: true
14018
- });
14019
-
14020
- // This updates userToken which is set explicitly by `aa('setAuthenticatedtUserToken', authenticatedUserToken)`
14021
- insightsClient('onAuthenticatedUserTokenChange', function (authenticatedUserToken) {
14022
- // If we're unsetting the `authenticatedUserToken`, we revert to the `userToken`
14023
- if (!authenticatedUserToken) {
14024
- insightsClient('getUserToken', null, function (_, userToken) {
14025
- setUserTokenToSearch(userToken, 'default', true, true);
14026
- });
14027
- }
14028
- setUserTokenToSearch(authenticatedUserToken, 'authenticated', true);
13986
+ return setUserTokenToSearch(token, true);
14029
13987
  }, {
14030
13988
  immediate: true
14031
13989
  });
@@ -14047,7 +14005,7 @@
14047
14005
  var lastQueryId;
14048
14006
  instantSearchInstance.mainHelper.derivedHelpers[0].on('result', function (_ref11) {
14049
14007
  var results = _ref11.results;
14050
- if (!results.queryID || results.queryID !== lastQueryId) {
14008
+ if (results && (!results.queryID || results.queryID !== lastQueryId)) {
14051
14009
  lastQueryId = results.queryID;
14052
14010
  viewedObjectIDs.clear();
14053
14011
  }
@@ -14087,7 +14045,6 @@
14087
14045
  },
14088
14046
  unsubscribe: function unsubscribe() {
14089
14047
  insightsClient('onUserTokenChange', undefined);
14090
- insightsClient('onAuthenticatedUserTokenChange', undefined);
14091
14048
  instantSearchInstance.sendEventToInsights = noop;
14092
14049
  if (helper && initialParameters) {
14093
14050
  helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread2(_objectSpread2({}, helper.state), initialParameters));
@@ -14097,6 +14054,16 @@
14097
14054
  };
14098
14055
  };
14099
14056
  }
14057
+ function getInitialParameters(instantSearchInstance) {
14058
+ var _instantSearchInstanc, _instantSearchInstanc2;
14059
+ // in SSR, the initial state we use in this domain is set on the main index
14060
+ var stateFromInitialResults = ((_instantSearchInstanc = instantSearchInstance._initialResults) === null || _instantSearchInstanc === void 0 ? void 0 : (_instantSearchInstanc2 = _instantSearchInstanc[instantSearchInstance.indexName]) === null || _instantSearchInstanc2 === void 0 ? void 0 : _instantSearchInstanc2.state) || {};
14061
+ var stateFromHelper = instantSearchInstance.mainHelper.state;
14062
+ return {
14063
+ userToken: stateFromInitialResults.userToken || stateFromHelper.userToken,
14064
+ clickAnalytics: stateFromInitialResults.clickAnalytics || stateFromHelper.clickAnalytics
14065
+ };
14066
+ }
14100
14067
  function saveTokenAsCookie(token, cookieDuration) {
14101
14068
  var MONTH = 30 * 24 * 60 * 60 * 1000;
14102
14069
  var d = new Date();
@@ -15484,7 +15451,6 @@
15484
15451
  // TODO: emit "change" event when events for Recommend are implemented
15485
15452
  }
15486
15453
  }
15487
-
15488
15454
  function getLocalWidgetsUiState(widgets, widgetStateOptions) {
15489
15455
  var initialUiState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
15490
15456
  return widgets.reduce(function (uiState, widget) {
@@ -16132,7 +16098,7 @@
16132
16098
  };
16133
16099
  }
16134
16100
 
16135
- var version$1 = '4.75.5';
16101
+ var version$1 = '4.75.6';
16136
16102
 
16137
16103
  var withUsage$v = createDocumentationMessageGenerator({
16138
16104
  name: 'instantsearch'
@@ -16144,9 +16110,11 @@
16144
16110
  // this purposely breaks typescript's type inference to ensure it's not used
16145
16111
  // as it's used for a default parameter for example
16146
16112
  // source: https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-504042546
16113
+
16147
16114
  /**
16148
16115
  * Global options for an InstantSearch instance.
16149
16116
  */
16117
+
16150
16118
  var INSTANTSEARCH_FUTURE_DEFAULTS = {
16151
16119
  preserveSharedStateOnUnmount: false,
16152
16120
  persistHierarchicalRootCount: false
@@ -19153,6 +19121,9 @@
19153
19121
  render: function render(_ref2) {
19154
19122
  var results = _ref2.results,
19155
19123
  state = _ref2.state;
19124
+ if (!results) {
19125
+ return;
19126
+ }
19156
19127
  if (isInitialSearch === true) {
19157
19128
  isInitialSearch = false;
19158
19129
  return;
@@ -20765,6 +20736,7 @@
20765
20736
 
20766
20737
  // false positive lint error
20767
20738
  // eslint-disable-next-line @typescript-eslint/consistent-type-imports
20739
+
20768
20740
  var defaultTemplates$5 = {
20769
20741
  empty: function empty() {
20770
20742
  return 'No results';
@@ -22088,7 +22060,9 @@
22088
22060
 
22089
22061
  /* Places.js is an optional dependency, no error should be reported if the package is missing */
22090
22062
  /** @ts-ignore */
22063
+
22091
22064
  // using the type like this requires only one ts-ignore
22065
+
22092
22066
  /**
22093
22067
  * This widget sets the geolocation value for the search based on the selected
22094
22068
  * result in the Algolia Places autocomplete.