instantsearch.js 4.40.1 → 4.40.4

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 (41) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/cjs/connectors/breadcrumb/connectBreadcrumb.js +1 -1
  3. package/cjs/connectors/current-refinements/connectCurrentRefinements.js +13 -1
  4. package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +4 -3
  5. package/cjs/connectors/menu/connectMenu.js +3 -2
  6. package/cjs/connectors/refinement-list/connectRefinementList.js +7 -5
  7. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +6 -6
  8. package/cjs/lib/utils/escapeFacetValue.js +23 -0
  9. package/cjs/lib/utils/getRefinements.js +10 -14
  10. package/cjs/lib/utils/index.js +7 -9
  11. package/cjs/lib/version.js +1 -1
  12. package/dist/instantsearch.development.d.ts +1 -3
  13. package/dist/instantsearch.development.js +112 -48
  14. package/dist/instantsearch.development.js.map +1 -1
  15. package/dist/instantsearch.production.d.ts +1 -3
  16. package/dist/instantsearch.production.min.d.ts +1 -3
  17. package/dist/instantsearch.production.min.js +2 -2
  18. package/dist/instantsearch.production.min.js.map +1 -1
  19. package/es/connectors/breadcrumb/connectBreadcrumb.js +1 -1
  20. package/es/connectors/current-refinements/connectCurrentRefinements.d.ts +1 -3
  21. package/es/connectors/current-refinements/connectCurrentRefinements.js +13 -1
  22. package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +4 -3
  23. package/es/connectors/menu/connectMenu.js +3 -2
  24. package/es/connectors/refinement-list/connectRefinementList.js +7 -5
  25. package/es/connectors/toggle-refinement/connectToggleRefinement.js +7 -7
  26. package/es/lib/utils/escapeFacetValue.d.ts +4 -0
  27. package/es/lib/utils/escapeFacetValue.js +14 -0
  28. package/es/lib/utils/getRefinements.d.ts +22 -7
  29. package/es/lib/utils/getRefinements.js +10 -13
  30. package/es/lib/utils/index.d.ts +1 -2
  31. package/es/lib/utils/index.js +1 -2
  32. package/es/lib/version.d.ts +1 -1
  33. package/es/lib/version.js +1 -1
  34. package/es/types/results.d.ts +2 -7
  35. package/package.json +3 -3
  36. package/cjs/lib/utils/escapeRefinement.js +0 -17
  37. package/cjs/lib/utils/unescapeRefinement.js +0 -13
  38. package/es/lib/utils/escapeRefinement.d.ts +0 -3
  39. package/es/lib/utils/escapeRefinement.js +0 -9
  40. package/es/lib/utils/unescapeRefinement.d.ts +0 -2
  41. package/es/lib/utils/unescapeRefinement.js +0 -5
@@ -1,4 +1,4 @@
1
- /*! InstantSearch.js 4.40.1 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch.js */
1
+ /*! InstantSearch.js 4.40.4 | © Algolia, Inc. and contributors; MIT License | https://github.com/algolia/instantsearch.js */
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) :
@@ -2244,12 +2244,44 @@
2244
2244
  );
2245
2245
  };
2246
2246
 
2247
+ /**
2248
+ * Replaces a leading - with \-
2249
+ * @private
2250
+ * @param {any} value the facet value to replace
2251
+ * @returns any
2252
+ */
2253
+ function escapeFacetValue(value) {
2254
+ if (typeof value !== 'string') return value;
2255
+
2256
+ return String(value).replace(/^-/, '\\-');
2257
+ }
2258
+
2259
+ /**
2260
+ * Replaces a leading \- with -
2261
+ * @private
2262
+ * @param {any} value the escaped facet value
2263
+ * @returns any
2264
+ */
2265
+ function unescapeFacetValue(value) {
2266
+ if (typeof value !== 'string') return value;
2267
+
2268
+ return value.replace(/^\\-/, '-');
2269
+ }
2270
+
2271
+ var escapeFacetValue_1 = {
2272
+ escapeFacetValue: escapeFacetValue,
2273
+ unescapeFacetValue: unescapeFacetValue
2274
+ };
2275
+
2247
2276
  var generateHierarchicalTree_1 = generateTrees;
2248
2277
 
2249
2278
 
2250
2279
 
2251
2280
 
2252
2281
 
2282
+ var escapeFacetValue$1 = escapeFacetValue_1.escapeFacetValue;
2283
+ var unescapeFacetValue$1 = escapeFacetValue_1.unescapeFacetValue;
2284
+
2253
2285
  function generateTrees(state) {
2254
2286
  return function generate(hierarchicalFacetResult, hierarchicalFacetIndex) {
2255
2287
  var hierarchicalFacet = state.hierarchicalFacets[hierarchicalFacetIndex];
@@ -2295,6 +2327,7 @@
2295
2327
  count: null, // root level, no count
2296
2328
  isRefined: true, // root level, always refined
2297
2329
  path: null, // root level, no path
2330
+ escapedValue: null,
2298
2331
  exhaustive: rootExhaustive,
2299
2332
  data: null
2300
2333
  });
@@ -2370,7 +2403,7 @@
2370
2403
  facetCount,
2371
2404
  facetValue,
2372
2405
  hierarchicalSeparator,
2373
- currentRefinement,
2406
+ unescapeFacetValue$1(currentRefinement),
2374
2407
  hierarchicalFacetResult.exhaustive
2375
2408
  );
2376
2409
  }),
@@ -2433,6 +2466,7 @@
2433
2466
  return {
2434
2467
  name: parts[parts.length - 1].trim(),
2435
2468
  path: facetValue,
2469
+ escapedValue: escapeFacetValue$1(facetValue),
2436
2470
  count: facetCount,
2437
2471
  isRefined:
2438
2472
  currentRefinement === facetValue ||
@@ -2442,6 +2476,11 @@
2442
2476
  };
2443
2477
  }
2444
2478
 
2479
+ var escapeFacetValue$2 = escapeFacetValue_1.escapeFacetValue;
2480
+ var unescapeFacetValue$2 = escapeFacetValue_1.unescapeFacetValue;
2481
+
2482
+
2483
+
2445
2484
  /**
2446
2485
  * @typedef SearchResults.Facet
2447
2486
  * @type {object}
@@ -2940,7 +2979,7 @@
2940
2979
  state.disjunctiveFacetsRefinements[dfacet].forEach(function(refinementValue) {
2941
2980
  // add the disjunctive refinements if it is no more retrieved
2942
2981
  if (!self.disjunctiveFacets[position].data[refinementValue] &&
2943
- state.disjunctiveFacetsRefinements[dfacet].indexOf(refinementValue) > -1) {
2982
+ state.disjunctiveFacetsRefinements[dfacet].indexOf(unescapeFacetValue$2(refinementValue)) > -1) {
2944
2983
  self.disjunctiveFacets[position].data[refinementValue] = 0;
2945
2984
  }
2946
2985
  });
@@ -3072,10 +3111,12 @@
3072
3111
  if (!facet) return [];
3073
3112
 
3074
3113
  return Object.keys(facet.data).map(function(name) {
3114
+ var value = escapeFacetValue$2(name);
3075
3115
  return {
3076
3116
  name: name,
3117
+ escapedValue: value,
3077
3118
  count: facet.data[name],
3078
- isRefined: results._state.isFacetRefined(attribute, name),
3119
+ isRefined: results._state.isFacetRefined(attribute, value),
3079
3120
  isExcluded: results._state.isExcludeRefined(attribute, name)
3080
3121
  };
3081
3122
  });
@@ -3084,10 +3125,12 @@
3084
3125
  if (!disjunctiveFacet) return [];
3085
3126
 
3086
3127
  return Object.keys(disjunctiveFacet.data).map(function(name) {
3128
+ var value = escapeFacetValue$2(name);
3087
3129
  return {
3088
3130
  name: name,
3131
+ escapedValue: value,
3089
3132
  count: disjunctiveFacet.data[name],
3090
- isRefined: results._state.isDisjunctiveFacetRefined(attribute, name)
3133
+ isRefined: results._state.isDisjunctiveFacetRefined(attribute, value)
3091
3134
  };
3092
3135
  });
3093
3136
  } else if (results._state.isHierarchicalFacet(attribute)) {
@@ -4120,7 +4163,9 @@
4120
4163
 
4121
4164
  var requestBuilder_1 = requestBuilder;
4122
4165
 
4123
- var version = '3.7.4';
4166
+ var version = '3.8.2';
4167
+
4168
+ var escapeFacetValue$3 = escapeFacetValue_1.escapeFacetValue;
4124
4169
 
4125
4170
  /**
4126
4171
  * Event triggered when a parameter is set or updated
@@ -4470,9 +4515,10 @@
4470
4515
  content = Array.isArray(content) ? content[0] : content;
4471
4516
 
4472
4517
  content.facetHits.forEach(function(f) {
4518
+ f.escapedValue = escapeFacetValue$3(f.value);
4473
4519
  f.isRefined = isDisjunctive
4474
- ? state.isDisjunctiveFacetRefined(facet, f.value)
4475
- : state.isFacetRefined(facet, f.value);
4520
+ ? state.isDisjunctiveFacetRefined(facet, f.escapedValue)
4521
+ : state.isFacetRefined(facet, f.escapedValue);
4476
4522
  });
4477
4523
 
4478
4524
  return content;
@@ -6612,8 +6658,19 @@
6612
6658
  return undefined;
6613
6659
  }
6614
6660
 
6615
- function unescapeRefinement(value) {
6616
- return String(value).replace(/^\\-/, '-');
6661
+ function unescapeFacetValue$3(value) {
6662
+ if (typeof value === 'string') {
6663
+ return value.replace(/^\\-/, '-');
6664
+ }
6665
+
6666
+ return value;
6667
+ }
6668
+ function escapeFacetValue$4(value) {
6669
+ if (typeof value === 'number' && value < 0 || typeof value === 'string') {
6670
+ return String(value).replace(/^-/, '\\-');
6671
+ }
6672
+
6673
+ return value;
6617
6674
  }
6618
6675
 
6619
6676
  function getRefinement$1(state, type, attribute, name) {
@@ -6621,7 +6678,8 @@
6621
6678
  var res = {
6622
6679
  type: type,
6623
6680
  attribute: attribute,
6624
- name: name
6681
+ name: name,
6682
+ escapedValue: escapeFacetValue$4(name)
6625
6683
  };
6626
6684
  var facet = find$1(resultsFacets, function (resultsFacet) {
6627
6685
  return resultsFacet.name === attribute;
@@ -6655,14 +6713,12 @@
6655
6713
  count = facet && facet.data && facet.data[res.name];
6656
6714
  }
6657
6715
 
6658
- var exhaustive = facet && facet.exhaustive;
6659
-
6660
6716
  if (count !== undefined) {
6661
6717
  res.count = count;
6662
6718
  }
6663
6719
 
6664
- if (exhaustive !== undefined) {
6665
- res.exhaustive = exhaustive;
6720
+ if (facet && facet.exhaustive !== undefined) {
6721
+ res.exhaustive = facet.exhaustive;
6666
6722
  }
6667
6723
 
6668
6724
  return res;
@@ -6703,9 +6759,9 @@
6703
6759
  Object.keys(disjunctiveFacetsRefinements).forEach(function (attribute) {
6704
6760
  var refinementNames = disjunctiveFacetsRefinements[attribute];
6705
6761
  refinementNames.forEach(function (refinementName) {
6706
- refinements.push(getRefinement$1(state, 'disjunctive', attribute, // We unescape any disjunctive refined values with `unescapeRefinement` because
6707
- // they can be escaped on negative numeric values with `escapeRefinement`.
6708
- unescapeRefinement(refinementName), results.disjunctiveFacets));
6762
+ refinements.push(getRefinement$1(state, 'disjunctive', attribute, // We unescape any disjunctive refined values with `unescapeFacetValue` because
6763
+ // they can be escaped on negative numeric values with `escapeFacetValue`.
6764
+ unescapeFacetValue$3(refinementName), results.disjunctiveFacets));
6709
6765
  });
6710
6766
  });
6711
6767
  Object.keys(hierarchicalFacetsRefinements).forEach(function (attribute) {
@@ -6792,14 +6848,6 @@
6792
6848
  return finalState;
6793
6849
  }
6794
6850
 
6795
- function escapeRefinement(value) {
6796
- if (typeof value === 'number' && value < 0) {
6797
- value = String(value).replace(/^-/, '\\-');
6798
- }
6799
-
6800
- return value;
6801
- }
6802
-
6803
6851
  function getObjectType(object) {
6804
6852
  return Object.prototype.toString.call(object).slice(8, -1);
6805
6853
  }
@@ -8488,7 +8536,7 @@
8488
8536
  instantSearchInstance.renderState = _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState), {}, _defineProperty({}, parentIndexName, _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState[parentIndexName]), renderState)));
8489
8537
  }
8490
8538
 
8491
- var version$1 = '4.40.1';
8539
+ var version$1 = '4.40.4';
8492
8540
 
8493
8541
  var NAMESPACE = 'ais';
8494
8542
  var component = function component(componentName) {
@@ -10813,7 +10861,7 @@
10813
10861
  }
10814
10862
 
10815
10863
  function normalizeRefinement(refinement) {
10816
- var value = refinement.type === 'numeric' ? Number(refinement.name) : refinement.name;
10864
+ var value = getValue(refinement);
10817
10865
  var label = refinement.operator ? "".concat(getOperatorSymbol(refinement.operator), " ").concat(refinement.name) : refinement.name;
10818
10866
  var normalizedRefinement = {
10819
10867
  attribute: refinement.attribute,
@@ -10837,6 +10885,18 @@
10837
10885
  return normalizedRefinement;
10838
10886
  }
10839
10887
 
10888
+ function getValue(refinement) {
10889
+ if (refinement.type === 'numeric') {
10890
+ return Number(refinement.name);
10891
+ }
10892
+
10893
+ if ('escapedValue' in refinement) {
10894
+ return refinement.escapedValue;
10895
+ }
10896
+
10897
+ return refinement.name;
10898
+ }
10899
+
10840
10900
  var withUsage$4 = createDocumentationMessageGenerator({
10841
10901
  name: 'hierarchical-menu',
10842
10902
  connector: true
@@ -10922,13 +10982,14 @@
10922
10982
  function _prepareFacetValues(facetValues) {
10923
10983
  return facetValues.slice(0, getLimit()).map(function (_ref2) {
10924
10984
  var label = _ref2.name,
10925
- value = _ref2.path,
10985
+ value = _ref2.escapedValue,
10926
10986
  data = _ref2.data,
10927
- subValue = _objectWithoutProperties(_ref2, ["name", "path", "data"]);
10987
+ path = _ref2.path,
10988
+ subValue = _objectWithoutProperties(_ref2, ["name", "escapedValue", "data", "path"]);
10928
10989
 
10929
10990
  var item = _objectSpread2(_objectSpread2({}, subValue), {}, {
10930
- label: label,
10931
10991
  value: value,
10992
+ label: label,
10932
10993
  data: null
10933
10994
  });
10934
10995
 
@@ -11887,8 +11948,9 @@
11887
11948
  canToggleShowMore = showMore && (isShowingMore || facetItems.length > getLimit());
11888
11949
  items = transformItems(facetItems.slice(0, getLimit()).map(function (_ref3) {
11889
11950
  var label = _ref3.name,
11890
- value = _ref3.path,
11891
- item = _objectWithoutProperties(_ref3, ["name", "path"]);
11951
+ value = _ref3.escapedValue,
11952
+ path = _ref3.path,
11953
+ item = _objectWithoutProperties(_ref3, ["name", "escapedValue", "path"]);
11892
11954
 
11893
11955
  return _objectSpread2(_objectSpread2({}, item), {}, {
11894
11956
  label: label,
@@ -12851,11 +12913,12 @@
12851
12913
 
12852
12914
  var formatItems = function formatItems(_ref2) {
12853
12915
  var label = _ref2.name,
12854
- item = _objectWithoutProperties(_ref2, ["name"]);
12916
+ value = _ref2.escapedValue,
12917
+ item = _objectWithoutProperties(_ref2, ["name", "escapedValue"]);
12855
12918
 
12856
12919
  return _objectSpread2(_objectSpread2({}, item), {}, {
12920
+ value: value,
12857
12921
  label: label,
12858
- value: label,
12859
12922
  highlighted: label
12860
12923
  });
12861
12924
  };
@@ -12913,11 +12976,12 @@
12913
12976
  Math.min(getLimit(), 100), tags).then(function (results) {
12914
12977
  var facetValues = escapeFacetValues ? escapeFacets(results.facetHits) : results.facetHits;
12915
12978
  var normalizedFacetValues = transformItems(facetValues.map(function (_ref3) {
12916
- var value = _ref3.value,
12917
- item = _objectWithoutProperties(_ref3, ["value"]);
12979
+ var escapedValue = _ref3.escapedValue,
12980
+ value = _ref3.value,
12981
+ item = _objectWithoutProperties(_ref3, ["escapedValue", "value"]);
12918
12982
 
12919
12983
  return _objectSpread2(_objectSpread2({}, item), {}, {
12920
- value: value,
12984
+ value: escapedValue,
12921
12985
  label: value
12922
12986
  });
12923
12987
  }), {
@@ -13699,8 +13763,8 @@
13699
13763
  }
13700
13764
 
13701
13765
  var hasAnOffValue = userOff !== undefined;
13702
- var on = toArray(userOn).map(escapeRefinement);
13703
- var off = hasAnOffValue ? toArray(userOff).map(escapeRefinement) : undefined;
13766
+ var on = toArray(userOn).map(escapeFacetValue$4);
13767
+ var off = hasAnOffValue ? toArray(userOff).map(escapeFacetValue$4) : undefined;
13704
13768
  var sendEvent;
13705
13769
 
13706
13770
  var toggleRefinementFactory = function toggleRefinementFactory(helper) {
@@ -13813,16 +13877,16 @@
13813
13877
  var allFacetValues = results.getFacetValues(attribute, {}) || [];
13814
13878
  var onData = on.map(function (v) {
13815
13879
  return find$1(allFacetValues, function (_ref7) {
13816
- var name = _ref7.name;
13817
- return name === unescapeRefinement(v);
13880
+ var escapedValue = _ref7.escapedValue;
13881
+ return escapedValue === escapeFacetValue$4(String(v));
13818
13882
  });
13819
13883
  }).filter(function (v) {
13820
13884
  return v !== undefined;
13821
13885
  });
13822
13886
  var offData = hasAnOffValue ? offValue.map(function (v) {
13823
13887
  return find$1(allFacetValues, function (_ref8) {
13824
- var name = _ref8.name;
13825
- return name === unescapeRefinement(v);
13888
+ var escapedValue = _ref8.escapedValue;
13889
+ return escapedValue === escapeFacetValue$4(String(v));
13826
13890
  });
13827
13891
  }).filter(function (v) {
13828
13892
  return v !== undefined;
@@ -14057,7 +14121,7 @@
14057
14121
  if (currentItem.isRefined) {
14058
14122
  result.push({
14059
14123
  label: currentItem.name,
14060
- value: currentItem.path
14124
+ value: currentItem.escapedValue
14061
14125
  });
14062
14126
 
14063
14127
  if (Array.isArray(currentItem.data)) {
@@ -19406,7 +19470,7 @@
19406
19470
  return (value - min) / (max - min) * 100;
19407
19471
  }
19408
19472
 
19409
- function getValue(pos, min, max) {
19473
+ function getValue$1(pos, min, max) {
19410
19474
  var decimal = pos / 100;
19411
19475
 
19412
19476
  if (pos === 0) {
@@ -19617,7 +19681,7 @@
19617
19681
  var _ref = this.props,
19618
19682
  max = _ref.max,
19619
19683
  min = _ref.min;
19620
- var value = getValue(positionPercent, min, max);
19684
+ var value = getValue$1(positionPercent, min, max);
19621
19685
  var snapValue = this.getClosestSnapPoint(value);
19622
19686
  return getPosition(snapValue, min, max);
19623
19687
  }
@@ -19711,7 +19775,7 @@
19711
19775
  return {
19712
19776
  handlePos: nextHandlePos,
19713
19777
  values: nextHandlePos.map(function (pos) {
19714
- return getValue(pos, min, max);
19778
+ return getValue$1(pos, min, max);
19715
19779
  })
19716
19780
  };
19717
19781
  }