instantsearch.js 4.40.3 → 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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## [4.40.4](https://github.com/algolia/instantsearch.js/compare/v4.40.3...v4.40.4) (2022-04-13)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **currentRefinements:** correctly show and allow for refining escaped values ([#5041](https://github.com/algolia/instantsearch.js/issues/5041)) ([277f4df](https://github.com/algolia/instantsearch.js/commit/277f4dff21fb7eeaeb41a8c49aaaf707f880ee58))
7
+
8
+
9
+
1
10
  ## [4.40.3](https://github.com/algolia/instantsearch.js/compare/v4.40.2...v4.40.3) (2022-04-04)
2
11
 
3
12
 
@@ -195,7 +195,7 @@ function getOperatorSymbol(operator) {
195
195
  }
196
196
 
197
197
  function normalizeRefinement(refinement) {
198
- var value = refinement.type === 'numeric' ? Number(refinement.name) : refinement.name;
198
+ var value = getValue(refinement);
199
199
  var label = refinement.operator ? "".concat(getOperatorSymbol(refinement.operator), " ").concat(refinement.name) : refinement.name;
200
200
  var normalizedRefinement = {
201
201
  attribute: refinement.attribute,
@@ -219,5 +219,17 @@ function normalizeRefinement(refinement) {
219
219
  return normalizedRefinement;
220
220
  }
221
221
 
222
+ function getValue(refinement) {
223
+ if (refinement.type === 'numeric') {
224
+ return Number(refinement.name);
225
+ }
226
+
227
+ if ('escapedValue' in refinement) {
228
+ return refinement.escapedValue;
229
+ }
230
+
231
+ return refinement.name;
232
+ }
233
+
222
234
  var _default = connectCurrentRefinements;
223
235
  exports.default = _default;
@@ -89,8 +89,8 @@ var connectToggleRefinement = function connectToggleRefinement(renderFn) {
89
89
  }
90
90
 
91
91
  var hasAnOffValue = userOff !== undefined;
92
- var on = (0, _index.toArray)(userOn).map(_index.escapeRefinement);
93
- var off = hasAnOffValue ? (0, _index.toArray)(userOff).map(_index.escapeRefinement) : undefined;
92
+ var on = (0, _index.toArray)(userOn).map(_index.escapeFacetValue);
93
+ var off = hasAnOffValue ? (0, _index.toArray)(userOff).map(_index.escapeFacetValue) : undefined;
94
94
  var sendEvent;
95
95
 
96
96
  var toggleRefinementFactory = function toggleRefinementFactory(helper) {
@@ -203,16 +203,16 @@ var connectToggleRefinement = function connectToggleRefinement(renderFn) {
203
203
  var allFacetValues = results.getFacetValues(attribute, {}) || [];
204
204
  var onData = on.map(function (v) {
205
205
  return (0, _index.find)(allFacetValues, function (_ref7) {
206
- var name = _ref7.name;
207
- return name === (0, _index.unescapeRefinement)(v);
206
+ var escapedValue = _ref7.escapedValue;
207
+ return escapedValue === (0, _index.escapeFacetValue)(String(v));
208
208
  });
209
209
  }).filter(function (v) {
210
210
  return v !== undefined;
211
211
  });
212
212
  var offData = hasAnOffValue ? offValue.map(function (v) {
213
213
  return (0, _index.find)(allFacetValues, function (_ref8) {
214
- var name = _ref8.name;
215
- return name === (0, _index.unescapeRefinement)(v);
214
+ var escapedValue = _ref8.escapedValue;
215
+ return escapedValue === (0, _index.escapeFacetValue)(String(v));
216
216
  });
217
217
  }).filter(function (v) {
218
218
  return v !== undefined;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.unescapeFacetValue = unescapeFacetValue;
7
+ exports.escapeFacetValue = escapeFacetValue;
8
+
9
+ function unescapeFacetValue(value) {
10
+ if (typeof value === 'string') {
11
+ return value.replace(/^\\-/, '-');
12
+ }
13
+
14
+ return value;
15
+ }
16
+
17
+ function escapeFacetValue(value) {
18
+ if (typeof value === 'number' && value < 0 || typeof value === 'string') {
19
+ return String(value).replace(/^-/, '\\-');
20
+ }
21
+
22
+ return value;
23
+ }
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.default = getRefinements;
7
7
 
8
8
  var _find = _interopRequireDefault(require("./find.js"));
9
9
 
10
- var _unescapeRefinement = _interopRequireDefault(require("./unescapeRefinement.js"));
10
+ var _escapeFacetValue = require("./escapeFacetValue.js");
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
@@ -16,7 +16,8 @@ function getRefinement(state, type, attribute, name) {
16
16
  var res = {
17
17
  type: type,
18
18
  attribute: attribute,
19
- name: name
19
+ name: name,
20
+ escapedValue: (0, _escapeFacetValue.escapeFacetValue)(name)
20
21
  };
21
22
  var facet = (0, _find.default)(resultsFacets, function (resultsFacet) {
22
23
  return resultsFacet.name === attribute;
@@ -50,14 +51,12 @@ function getRefinement(state, type, attribute, name) {
50
51
  count = facet && facet.data && facet.data[res.name];
51
52
  }
52
53
 
53
- var exhaustive = facet && facet.exhaustive;
54
-
55
54
  if (count !== undefined) {
56
55
  res.count = count;
57
56
  }
58
57
 
59
- if (exhaustive !== undefined) {
60
- res.exhaustive = exhaustive;
58
+ if (facet && facet.exhaustive !== undefined) {
59
+ res.exhaustive = facet.exhaustive;
61
60
  }
62
61
 
63
62
  return res;
@@ -98,9 +97,9 @@ function getRefinements(results, state) {
98
97
  Object.keys(disjunctiveFacetsRefinements).forEach(function (attribute) {
99
98
  var refinementNames = disjunctiveFacetsRefinements[attribute];
100
99
  refinementNames.forEach(function (refinementName) {
101
- refinements.push(getRefinement(state, 'disjunctive', attribute, // We unescape any disjunctive refined values with `unescapeRefinement` because
102
- // they can be escaped on negative numeric values with `escapeRefinement`.
103
- (0, _unescapeRefinement.default)(refinementName), results.disjunctiveFacets));
100
+ refinements.push(getRefinement(state, 'disjunctive', attribute, // We unescape any disjunctive refined values with `unescapeFacetValue` because
101
+ // they can be escaped on negative numeric values with `escapeFacetValue`.
102
+ (0, _escapeFacetValue.unescapeFacetValue)(refinementName), results.disjunctiveFacets));
104
103
  });
105
104
  });
106
105
  Object.keys(hierarchicalFacetsRefinements).forEach(function (attribute) {
@@ -144,7 +143,4 @@ function getRefinements(results, state) {
144
143
  }
145
144
 
146
145
  return refinements;
147
- }
148
-
149
- var _default = getRefinements;
150
- exports.default = _default;
146
+ }
@@ -13,8 +13,8 @@ var _exportNames = {
13
13
  renderTemplate: true,
14
14
  getRefinements: true,
15
15
  clearRefinements: true,
16
- escapeRefinement: true,
17
- unescapeRefinement: true,
16
+ escapeFacetValue: true,
17
+ unescapeFacetValue: true,
18
18
  checkRendering: true,
19
19
  checkIndexUiState: true,
20
20
  getPropertyByPath: true,
@@ -112,16 +112,16 @@ Object.defineProperty(exports, "clearRefinements", {
112
112
  return _clearRefinements.default;
113
113
  }
114
114
  });
115
- Object.defineProperty(exports, "escapeRefinement", {
115
+ Object.defineProperty(exports, "escapeFacetValue", {
116
116
  enumerable: true,
117
117
  get: function get() {
118
- return _escapeRefinement.default;
118
+ return _escapeFacetValue.escapeFacetValue;
119
119
  }
120
120
  });
121
- Object.defineProperty(exports, "unescapeRefinement", {
121
+ Object.defineProperty(exports, "unescapeFacetValue", {
122
122
  enumerable: true,
123
123
  get: function get() {
124
- return _unescapeRefinement.default;
124
+ return _escapeFacetValue.unescapeFacetValue;
125
125
  }
126
126
  });
127
127
  Object.defineProperty(exports, "checkRendering", {
@@ -395,9 +395,7 @@ var _getRefinements = _interopRequireDefault(require("./getRefinements.js"));
395
395
 
396
396
  var _clearRefinements = _interopRequireDefault(require("./clearRefinements.js"));
397
397
 
398
- var _escapeRefinement = _interopRequireDefault(require("./escapeRefinement.js"));
399
-
400
- var _unescapeRefinement = _interopRequireDefault(require("./unescapeRefinement.js"));
398
+ var _escapeFacetValue = require("./escapeFacetValue.js");
401
399
 
402
400
  var _checkRendering = _interopRequireDefault(require("./checkRendering.js"));
403
401
 
@@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _default = '4.40.3';
7
+ var _default = '4.40.4';
8
8
  exports.default = _default;
@@ -1,4 +1,4 @@
1
- /*! InstantSearch.js 4.40.3 | © 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) :
@@ -2247,20 +2247,24 @@
2247
2247
  /**
2248
2248
  * Replaces a leading - with \-
2249
2249
  * @private
2250
- * @param {string} value the facet value to replace
2251
- * @returns string
2250
+ * @param {any} value the facet value to replace
2251
+ * @returns any
2252
2252
  */
2253
2253
  function escapeFacetValue(value) {
2254
- return value.replace(/^-/, '\\-');
2254
+ if (typeof value !== 'string') return value;
2255
+
2256
+ return String(value).replace(/^-/, '\\-');
2255
2257
  }
2256
2258
 
2257
2259
  /**
2258
2260
  * Replaces a leading \- with -
2259
2261
  * @private
2260
- * @param {string} value the escaped facet value
2261
- * @returns string
2262
+ * @param {any} value the escaped facet value
2263
+ * @returns any
2262
2264
  */
2263
2265
  function unescapeFacetValue(value) {
2266
+ if (typeof value !== 'string') return value;
2267
+
2264
2268
  return value.replace(/^\\-/, '-');
2265
2269
  }
2266
2270
 
@@ -4159,7 +4163,7 @@
4159
4163
 
4160
4164
  var requestBuilder_1 = requestBuilder;
4161
4165
 
4162
- var version = '3.8.0';
4166
+ var version = '3.8.2';
4163
4167
 
4164
4168
  var escapeFacetValue$3 = escapeFacetValue_1.escapeFacetValue;
4165
4169
 
@@ -6654,8 +6658,19 @@
6654
6658
  return undefined;
6655
6659
  }
6656
6660
 
6657
- function unescapeRefinement(value) {
6658
- 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;
6659
6674
  }
6660
6675
 
6661
6676
  function getRefinement$1(state, type, attribute, name) {
@@ -6663,7 +6678,8 @@
6663
6678
  var res = {
6664
6679
  type: type,
6665
6680
  attribute: attribute,
6666
- name: name
6681
+ name: name,
6682
+ escapedValue: escapeFacetValue$4(name)
6667
6683
  };
6668
6684
  var facet = find$1(resultsFacets, function (resultsFacet) {
6669
6685
  return resultsFacet.name === attribute;
@@ -6697,14 +6713,12 @@
6697
6713
  count = facet && facet.data && facet.data[res.name];
6698
6714
  }
6699
6715
 
6700
- var exhaustive = facet && facet.exhaustive;
6701
-
6702
6716
  if (count !== undefined) {
6703
6717
  res.count = count;
6704
6718
  }
6705
6719
 
6706
- if (exhaustive !== undefined) {
6707
- res.exhaustive = exhaustive;
6720
+ if (facet && facet.exhaustive !== undefined) {
6721
+ res.exhaustive = facet.exhaustive;
6708
6722
  }
6709
6723
 
6710
6724
  return res;
@@ -6745,9 +6759,9 @@
6745
6759
  Object.keys(disjunctiveFacetsRefinements).forEach(function (attribute) {
6746
6760
  var refinementNames = disjunctiveFacetsRefinements[attribute];
6747
6761
  refinementNames.forEach(function (refinementName) {
6748
- refinements.push(getRefinement$1(state, 'disjunctive', attribute, // We unescape any disjunctive refined values with `unescapeRefinement` because
6749
- // they can be escaped on negative numeric values with `escapeRefinement`.
6750
- 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));
6751
6765
  });
6752
6766
  });
6753
6767
  Object.keys(hierarchicalFacetsRefinements).forEach(function (attribute) {
@@ -6834,14 +6848,6 @@
6834
6848
  return finalState;
6835
6849
  }
6836
6850
 
6837
- function escapeRefinement(value) {
6838
- if (typeof value === 'number' && value < 0) {
6839
- value = String(value).replace(/^-/, '\\-');
6840
- }
6841
-
6842
- return value;
6843
- }
6844
-
6845
6851
  function getObjectType(object) {
6846
6852
  return Object.prototype.toString.call(object).slice(8, -1);
6847
6853
  }
@@ -8530,7 +8536,7 @@
8530
8536
  instantSearchInstance.renderState = _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState), {}, _defineProperty({}, parentIndexName, _objectSpread2(_objectSpread2({}, instantSearchInstance.renderState[parentIndexName]), renderState)));
8531
8537
  }
8532
8538
 
8533
- var version$1 = '4.40.3';
8539
+ var version$1 = '4.40.4';
8534
8540
 
8535
8541
  var NAMESPACE = 'ais';
8536
8542
  var component = function component(componentName) {
@@ -10855,7 +10861,7 @@
10855
10861
  }
10856
10862
 
10857
10863
  function normalizeRefinement(refinement) {
10858
- var value = refinement.type === 'numeric' ? Number(refinement.name) : refinement.name;
10864
+ var value = getValue(refinement);
10859
10865
  var label = refinement.operator ? "".concat(getOperatorSymbol(refinement.operator), " ").concat(refinement.name) : refinement.name;
10860
10866
  var normalizedRefinement = {
10861
10867
  attribute: refinement.attribute,
@@ -10879,6 +10885,18 @@
10879
10885
  return normalizedRefinement;
10880
10886
  }
10881
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
+
10882
10900
  var withUsage$4 = createDocumentationMessageGenerator({
10883
10901
  name: 'hierarchical-menu',
10884
10902
  connector: true
@@ -13745,8 +13763,8 @@
13745
13763
  }
13746
13764
 
13747
13765
  var hasAnOffValue = userOff !== undefined;
13748
- var on = toArray(userOn).map(escapeRefinement);
13749
- 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;
13750
13768
  var sendEvent;
13751
13769
 
13752
13770
  var toggleRefinementFactory = function toggleRefinementFactory(helper) {
@@ -13859,16 +13877,16 @@
13859
13877
  var allFacetValues = results.getFacetValues(attribute, {}) || [];
13860
13878
  var onData = on.map(function (v) {
13861
13879
  return find$1(allFacetValues, function (_ref7) {
13862
- var name = _ref7.name;
13863
- return name === unescapeRefinement(v);
13880
+ var escapedValue = _ref7.escapedValue;
13881
+ return escapedValue === escapeFacetValue$4(String(v));
13864
13882
  });
13865
13883
  }).filter(function (v) {
13866
13884
  return v !== undefined;
13867
13885
  });
13868
13886
  var offData = hasAnOffValue ? offValue.map(function (v) {
13869
13887
  return find$1(allFacetValues, function (_ref8) {
13870
- var name = _ref8.name;
13871
- return name === unescapeRefinement(v);
13888
+ var escapedValue = _ref8.escapedValue;
13889
+ return escapedValue === escapeFacetValue$4(String(v));
13872
13890
  });
13873
13891
  }).filter(function (v) {
13874
13892
  return v !== undefined;
@@ -19452,7 +19470,7 @@
19452
19470
  return (value - min) / (max - min) * 100;
19453
19471
  }
19454
19472
 
19455
- function getValue(pos, min, max) {
19473
+ function getValue$1(pos, min, max) {
19456
19474
  var decimal = pos / 100;
19457
19475
 
19458
19476
  if (pos === 0) {
@@ -19663,7 +19681,7 @@
19663
19681
  var _ref = this.props,
19664
19682
  max = _ref.max,
19665
19683
  min = _ref.min;
19666
- var value = getValue(positionPercent, min, max);
19684
+ var value = getValue$1(positionPercent, min, max);
19667
19685
  var snapValue = this.getClosestSnapPoint(value);
19668
19686
  return getPosition(snapValue, min, max);
19669
19687
  }
@@ -19757,7 +19775,7 @@
19757
19775
  return {
19758
19776
  handlePos: nextHandlePos,
19759
19777
  values: nextHandlePos.map(function (pos) {
19760
- return getValue(pos, min, max);
19778
+ return getValue$1(pos, min, max);
19761
19779
  })
19762
19780
  };
19763
19781
  }