instantsearch.js 4.46.0 → 4.46.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.
Files changed (165) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +3 -1
  3. package/cjs/helpers/components/Highlight.js +7 -7
  4. package/cjs/helpers/components/ReverseHighlight.js +7 -7
  5. package/cjs/helpers/components/ReverseSnippet.js +7 -7
  6. package/cjs/helpers/components/Snippet.js +7 -7
  7. package/cjs/lib/InstantSearch.js +33 -24
  8. package/cjs/lib/utils/capitalize.js +2 -5
  9. package/cjs/lib/utils/checkIndexUiState.js +3 -5
  10. package/cjs/lib/utils/checkRendering.js +4 -9
  11. package/cjs/lib/utils/clearRefinements.js +3 -9
  12. package/cjs/lib/utils/concatHighlightedParts.js +1 -1
  13. package/cjs/lib/utils/createSendEventForFacet.js +2 -4
  14. package/cjs/lib/utils/defer.js +3 -6
  15. package/cjs/lib/utils/detect-insights-client.js +1 -1
  16. package/cjs/lib/utils/documentation.js +6 -9
  17. package/cjs/lib/utils/escape-highlight.js +4 -6
  18. package/cjs/lib/utils/escape-html.js +60 -0
  19. package/cjs/lib/utils/find.js +2 -5
  20. package/cjs/lib/utils/findIndex.js +2 -5
  21. package/cjs/lib/utils/getContainerNode.js +4 -9
  22. package/cjs/lib/utils/getHighlightFromSiblings.js +3 -5
  23. package/cjs/lib/utils/getHighlightedParts.js +1 -1
  24. package/cjs/lib/utils/getObjectType.js +2 -5
  25. package/cjs/lib/utils/getPropertyByPath.js +2 -5
  26. package/cjs/lib/utils/getRefinements.js +4 -6
  27. package/cjs/lib/utils/index.js +562 -440
  28. package/cjs/lib/utils/isDomElement.js +2 -5
  29. package/cjs/lib/utils/isEqual.js +2 -5
  30. package/cjs/lib/utils/isFacetRefined.js +1 -1
  31. package/cjs/lib/utils/isFiniteNumber.js +3 -5
  32. package/cjs/lib/utils/isIndexWidget.js +10 -0
  33. package/cjs/lib/utils/isPlainObject.js +2 -5
  34. package/cjs/lib/utils/isSpecialClick.js +2 -5
  35. package/cjs/lib/utils/logger.js +3 -5
  36. package/cjs/lib/utils/mergeSearchParameters.js +7 -10
  37. package/cjs/lib/utils/noop.js +2 -5
  38. package/cjs/lib/utils/prepareTemplateProps.js +4 -9
  39. package/cjs/lib/utils/range.js +2 -5
  40. package/cjs/lib/utils/renderTemplate.js +2 -5
  41. package/cjs/lib/utils/resolveSearchParameters.js +3 -6
  42. package/cjs/lib/utils/reverseHighlightedParts.js +3 -5
  43. package/cjs/lib/utils/setIndexHelperState.js +28 -0
  44. package/cjs/lib/utils/toArray.js +2 -5
  45. package/cjs/lib/utils/uniq.js +2 -5
  46. package/cjs/lib/version.js +1 -1
  47. package/cjs/middlewares/createInsightsMiddleware.js +23 -30
  48. package/cjs/middlewares/createMetadataMiddleware.js +1 -0
  49. package/cjs/middlewares/createRouterMiddleware.js +1 -0
  50. package/cjs/widgets/index/index.js +8 -12
  51. package/dist/instantsearch.development.d.ts +11 -3
  52. package/dist/instantsearch.development.js +2242 -2181
  53. package/dist/instantsearch.development.js.map +1 -1
  54. package/dist/instantsearch.production.d.ts +11 -3
  55. package/dist/instantsearch.production.min.d.ts +11 -3
  56. package/dist/instantsearch.production.min.js +2 -2
  57. package/dist/instantsearch.production.min.js.map +1 -1
  58. package/es/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  59. package/es/components/ClearRefinements/ClearRefinements.d.ts +1 -1
  60. package/es/components/GeoSearchControls/GeoSearchControls.d.ts +1 -1
  61. package/es/components/Hits/Hits.d.ts +1 -2
  62. package/es/components/RefinementList/RefinementList.d.ts +1 -1
  63. package/es/components/Template/Template.d.ts +1 -2
  64. package/es/components/ToggleRefinement/ToggleRefinement.d.ts +1 -4
  65. package/es/components/ToggleRefinement/ToggleRefinement.js +0 -4
  66. package/es/connectors/toggle-refinement/connectToggleRefinement.d.ts +3 -2
  67. package/es/connectors/toggle-refinement/connectToggleRefinement.js +3 -1
  68. package/es/helpers/components/Highlight.js +7 -5
  69. package/es/helpers/components/ReverseHighlight.js +7 -5
  70. package/es/helpers/components/ReverseSnippet.js +7 -5
  71. package/es/helpers/components/Snippet.js +7 -5
  72. package/es/lib/InstantSearch.d.ts +6 -1
  73. package/es/lib/InstantSearch.js +34 -21
  74. package/es/lib/utils/capitalize.d.ts +1 -2
  75. package/es/lib/utils/capitalize.js +2 -4
  76. package/es/lib/utils/checkIndexUiState.js +1 -1
  77. package/es/lib/utils/checkRendering.d.ts +1 -2
  78. package/es/lib/utils/checkRendering.js +3 -6
  79. package/es/lib/utils/clearRefinements.d.ts +4 -8
  80. package/es/lib/utils/clearRefinements.js +3 -8
  81. package/es/lib/utils/concatHighlightedParts.d.ts +1 -1
  82. package/es/lib/utils/concatHighlightedParts.js +1 -1
  83. package/es/lib/utils/createSendEventForFacet.js +1 -1
  84. package/es/lib/utils/createSendEventForHits.d.ts +0 -3
  85. package/es/lib/utils/createSendEventForHits.js +0 -3
  86. package/es/lib/utils/defer.d.ts +2 -2
  87. package/es/lib/utils/defer.js +2 -5
  88. package/es/lib/utils/detect-insights-client.d.ts +1 -1
  89. package/es/lib/utils/detect-insights-client.js +1 -1
  90. package/es/lib/utils/documentation.d.ts +2 -2
  91. package/es/lib/utils/documentation.js +4 -4
  92. package/es/lib/utils/escape-highlight.js +2 -2
  93. package/es/lib/utils/{escape.d.ts → escape-html.d.ts} +6 -2
  94. package/es/lib/utils/escape-html.js +51 -0
  95. package/es/lib/utils/escapeFacetValue.d.ts +1 -1
  96. package/es/lib/utils/find.d.ts +1 -2
  97. package/es/lib/utils/find.js +2 -4
  98. package/es/lib/utils/findIndex.d.ts +1 -2
  99. package/es/lib/utils/findIndex.js +2 -4
  100. package/es/lib/utils/getContainerNode.d.ts +1 -2
  101. package/es/lib/utils/getContainerNode.js +3 -5
  102. package/es/lib/utils/getHighlightFromSiblings.d.ts +1 -1
  103. package/es/lib/utils/getHighlightFromSiblings.js +2 -2
  104. package/es/lib/utils/getHighlightedParts.d.ts +1 -1
  105. package/es/lib/utils/getHighlightedParts.js +1 -1
  106. package/es/lib/utils/getObjectType.d.ts +1 -2
  107. package/es/lib/utils/getObjectType.js +2 -4
  108. package/es/lib/utils/getPropertyByPath.d.ts +1 -2
  109. package/es/lib/utils/getPropertyByPath.js +2 -4
  110. package/es/lib/utils/getRefinements.d.ts +1 -1
  111. package/es/lib/utils/getRefinements.js +2 -2
  112. package/es/lib/utils/index.d.ts +46 -46
  113. package/es/lib/utils/index.js +46 -46
  114. package/es/lib/utils/isDomElement.d.ts +1 -2
  115. package/es/lib/utils/isDomElement.js +2 -4
  116. package/es/lib/utils/isEqual.d.ts +1 -2
  117. package/es/lib/utils/isEqual.js +2 -4
  118. package/es/lib/utils/isFacetRefined.d.ts +1 -1
  119. package/es/lib/utils/isFacetRefined.js +1 -1
  120. package/es/lib/utils/isFiniteNumber.d.ts +1 -2
  121. package/es/lib/utils/isFiniteNumber.js +3 -4
  122. package/es/lib/utils/isIndexWidget.d.ts +3 -0
  123. package/es/lib/utils/isIndexWidget.js +3 -0
  124. package/es/lib/utils/isPlainObject.d.ts +1 -2
  125. package/es/lib/utils/isPlainObject.js +2 -4
  126. package/es/lib/utils/isSpecialClick.d.ts +1 -2
  127. package/es/lib/utils/isSpecialClick.js +2 -4
  128. package/es/lib/utils/logger.js +1 -1
  129. package/es/lib/utils/mergeSearchParameters.d.ts +1 -2
  130. package/es/lib/utils/mergeSearchParameters.js +4 -6
  131. package/es/lib/utils/noop.d.ts +1 -2
  132. package/es/lib/utils/noop.js +1 -3
  133. package/es/lib/utils/prepareTemplateProps.d.ts +2 -2
  134. package/es/lib/utils/prepareTemplateProps.js +3 -5
  135. package/es/lib/utils/range.d.ts +2 -2
  136. package/es/lib/utils/range.js +2 -4
  137. package/es/lib/utils/renderTemplate.d.ts +1 -2
  138. package/es/lib/utils/renderTemplate.js +2 -4
  139. package/es/lib/utils/resolveSearchParameters.d.ts +1 -2
  140. package/es/lib/utils/resolveSearchParameters.js +2 -4
  141. package/es/lib/utils/reverseHighlightedParts.d.ts +1 -1
  142. package/es/lib/utils/reverseHighlightedParts.js +2 -2
  143. package/es/lib/utils/setIndexHelperState.d.ts +3 -0
  144. package/es/lib/utils/setIndexHelperState.js +19 -0
  145. package/es/lib/utils/toArray.d.ts +3 -2
  146. package/es/lib/utils/toArray.js +2 -4
  147. package/es/lib/utils/uniq.d.ts +1 -2
  148. package/es/lib/utils/uniq.js +2 -4
  149. package/es/lib/version.d.ts +1 -1
  150. package/es/lib/version.js +1 -1
  151. package/es/middlewares/createInsightsMiddleware.js +23 -27
  152. package/es/middlewares/createMetadataMiddleware.js +1 -0
  153. package/es/middlewares/createRouterMiddleware.js +1 -0
  154. package/es/types/middleware.d.ts +1 -0
  155. package/es/widgets/index/index.d.ts +0 -1
  156. package/es/widgets/index/index.js +5 -6
  157. package/package.json +5 -5
  158. package/cjs/lib/utils/convertNumericRefinementsToFilters.js +0 -31
  159. package/cjs/lib/utils/escape.js +0 -35
  160. package/cjs/lib/utils/unescape.js +0 -32
  161. package/es/lib/utils/convertNumericRefinementsToFilters.d.ts +0 -2
  162. package/es/lib/utils/convertNumericRefinementsToFilters.js +0 -24
  163. package/es/lib/utils/escape.js +0 -27
  164. package/es/lib/utils/unescape.d.ts +0 -9
  165. package/es/lib/utils/unescape.js +0 -25
package/CHANGELOG.md CHANGED
@@ -1,4 +1,15 @@
1
- # [4.46.0](https://github.com/algolia/instantsearch.js/compare/v4.45.1...v4.46.0) (2022-09-12)
1
+ ## [4.46.1](https://github.com/algolia/instantsearch.js/compare/v4.46.0...v4.46.1) (2022-09-15)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **hierarchicalMenu:** use existing facet filters in multi queries for parent facet values ([#5105](https://github.com/algolia/instantsearch.js/issues/5105)) ([10a83f1](https://github.com/algolia/instantsearch.js/commit/10a83f146f714d9f97bb8edca2499f16df4ca22d))
7
+ * **insights:** make sure change in userToken can't reset the search parameters ([#5101](https://github.com/algolia/instantsearch.js/issues/5101)) ([b20c8dc](https://github.com/algolia/instantsearch.js/commit/b20c8dc70e34c1f234dc10eb7fc69296f30986a4))
8
+ * **setUiState**: call onStateChange handler ([#5104](https://github.com/algolia/instantsearch.js/issues/5104)) ([231853d](https://github.com/algolia/instantsearch.js/commit/231853dab731189a33ee480cdb196789c7336fda)))
9
+
10
+
11
+
12
+ ## [4.46.0](https://github.com/algolia/instantsearch.js/compare/v4.45.1...v4.46.0) (2022-09-12)
2
13
 
3
14
 
4
15
  ### Features
@@ -88,7 +88,9 @@ var connectToggleRefinement = function connectToggleRefinement(renderFn) {
88
88
  throw new Error(withUsage('The `attribute` option is required.'));
89
89
  }
90
90
 
91
- var hasAnOffValue = userOff !== undefined;
91
+ var hasAnOffValue = userOff !== undefined; // even though facet values can be numbers and boolean,
92
+ // the helper methods only accept string in the type
93
+
92
94
  var on = (0, _index.toArray)(userOn).map(_index.escapeFacetValue);
93
95
  var off = hasAnOffValue ? (0, _index.toArray)(userOff).map(_index.escapeFacetValue) : undefined;
94
96
  var sendEvent;
@@ -9,15 +9,15 @@ var _preact = require("preact");
9
9
 
10
10
  var _Highlight = require("../../components/Highlight/Highlight.js");
11
11
 
12
- var _getHighlightedParts = _interopRequireDefault(require("../../lib/utils/getHighlightedParts.js"));
12
+ var _getPropertyByPath = require("../../lib/utils/getPropertyByPath.js");
13
13
 
14
- var _getPropertyByPath = _interopRequireDefault(require("../../lib/utils/getPropertyByPath.js"));
14
+ var _escapeHtml = require("../../lib/utils/escape-html.js");
15
15
 
16
- var _unescape = _interopRequireDefault(require("../../lib/utils/unescape.js"));
16
+ var _toArray = require("../../lib/utils/toArray.js");
17
17
 
18
18
  var _logger = require("../../lib/utils/logger.js");
19
19
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ var _getHighlightedParts = require("../../lib/utils/getHighlightedParts.js");
21
21
 
22
22
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
23
 
@@ -31,12 +31,12 @@ function Highlight(_ref) {
31
31
  cssClasses = _ref.cssClasses,
32
32
  props = _objectWithoutProperties(_ref, ["hit", "attribute", "cssClasses"]);
33
33
 
34
- var property = (0, _getPropertyByPath.default)(hit._highlightResult, attribute) || [];
35
- var properties = Array.isArray(property) ? property : [property];
34
+ var property = (0, _getPropertyByPath.getPropertyByPath)(hit._highlightResult, attribute) || [];
35
+ var properties = (0, _toArray.toArray)(property);
36
36
  process.env.NODE_ENV === 'development' ? (0, _logger.warning)(Boolean(properties.length), "Could not enable highlight for \"".concat(attribute.toString(), "\", will display an empty string.\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\n\nSee: https://alg.li/highlighting\n")) : void 0;
37
37
  var parts = properties.map(function (_ref2) {
38
38
  var value = _ref2.value;
39
- return (0, _getHighlightedParts.default)((0, _unescape.default)(value || ''));
39
+ return (0, _getHighlightedParts.getHighlightedParts)((0, _escapeHtml.unescape)(value || ''));
40
40
  });
41
41
  return (0, _preact.h)(_Highlight.Highlight, _extends({}, props, {
42
42
  parts: parts,
@@ -9,15 +9,15 @@ var _preact = require("preact");
9
9
 
10
10
  var _ReverseHighlight = require("../../components/ReverseHighlight/ReverseHighlight.js");
11
11
 
12
- var _getHighlightedParts = _interopRequireDefault(require("../../lib/utils/getHighlightedParts.js"));
12
+ var _getPropertyByPath = require("../../lib/utils/getPropertyByPath.js");
13
13
 
14
- var _getPropertyByPath = _interopRequireDefault(require("../../lib/utils/getPropertyByPath.js"));
14
+ var _escapeHtml = require("../../lib/utils/escape-html.js");
15
15
 
16
- var _unescape = _interopRequireDefault(require("../../lib/utils/unescape.js"));
16
+ var _toArray = require("../../lib/utils/toArray.js");
17
17
 
18
18
  var _logger = require("../../lib/utils/logger.js");
19
19
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ var _getHighlightedParts = require("../../lib/utils/getHighlightedParts.js");
21
21
 
22
22
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
23
 
@@ -37,12 +37,12 @@ function ReverseHighlight(_ref) {
37
37
  cssClasses = _ref.cssClasses,
38
38
  props = _objectWithoutProperties(_ref, ["hit", "attribute", "cssClasses"]);
39
39
 
40
- var property = (0, _getPropertyByPath.default)(hit._highlightResult, attribute) || [];
41
- var properties = Array.isArray(property) ? property : [property];
40
+ var property = (0, _getPropertyByPath.getPropertyByPath)(hit._highlightResult, attribute) || [];
41
+ var properties = (0, _toArray.toArray)(property);
42
42
  process.env.NODE_ENV === 'development' ? (0, _logger.warning)(Boolean(properties.length), "Could not enable highlight for \"".concat(attribute.toString(), "\", will display an empty string.\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\n\nSee: https://alg.li/highlighting\n")) : void 0;
43
43
  var parts = properties.map(function (_ref2) {
44
44
  var value = _ref2.value;
45
- return (0, _getHighlightedParts.default)((0, _unescape.default)(value || '')).map(function (_ref3) {
45
+ return (0, _getHighlightedParts.getHighlightedParts)((0, _escapeHtml.unescape)(value || '')).map(function (_ref3) {
46
46
  var isHighlighted = _ref3.isHighlighted,
47
47
  rest = _objectWithoutProperties(_ref3, ["isHighlighted"]);
48
48
 
@@ -9,15 +9,15 @@ var _preact = require("preact");
9
9
 
10
10
  var _ReverseSnippet = require("../../components/ReverseSnippet/ReverseSnippet.js");
11
11
 
12
- var _getHighlightedParts = _interopRequireDefault(require("../../lib/utils/getHighlightedParts.js"));
12
+ var _getPropertyByPath = require("../../lib/utils/getPropertyByPath.js");
13
13
 
14
- var _getPropertyByPath = _interopRequireDefault(require("../../lib/utils/getPropertyByPath.js"));
14
+ var _escapeHtml = require("../../lib/utils/escape-html.js");
15
15
 
16
- var _unescape = _interopRequireDefault(require("../../lib/utils/unescape.js"));
16
+ var _toArray = require("../../lib/utils/toArray.js");
17
17
 
18
18
  var _logger = require("../../lib/utils/logger.js");
19
19
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ var _getHighlightedParts = require("../../lib/utils/getHighlightedParts.js");
21
21
 
22
22
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
23
 
@@ -37,12 +37,12 @@ function ReverseSnippet(_ref) {
37
37
  cssClasses = _ref.cssClasses,
38
38
  props = _objectWithoutProperties(_ref, ["hit", "attribute", "cssClasses"]);
39
39
 
40
- var property = (0, _getPropertyByPath.default)(hit._snippetResult, attribute) || [];
41
- var properties = Array.isArray(property) ? property : [property];
40
+ var property = (0, _getPropertyByPath.getPropertyByPath)(hit._snippetResult, attribute) || [];
41
+ var properties = (0, _toArray.toArray)(property);
42
42
  process.env.NODE_ENV === 'development' ? (0, _logger.warning)(Boolean(properties.length), "Could not enable snippet for \"".concat(attribute.toString(), "\", will display an empty string.\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\n\nSee: https://alg.li/highlighting\n")) : void 0;
43
43
  var parts = properties.map(function (_ref2) {
44
44
  var value = _ref2.value;
45
- return (0, _getHighlightedParts.default)((0, _unescape.default)(value || '')).map(function (_ref3) {
45
+ return (0, _getHighlightedParts.getHighlightedParts)((0, _escapeHtml.unescape)(value || '')).map(function (_ref3) {
46
46
  var isHighlighted = _ref3.isHighlighted,
47
47
  rest = _objectWithoutProperties(_ref3, ["isHighlighted"]);
48
48
 
@@ -9,15 +9,15 @@ var _preact = require("preact");
9
9
 
10
10
  var _Snippet = require("../../components/Snippet/Snippet.js");
11
11
 
12
- var _getHighlightedParts = _interopRequireDefault(require("../../lib/utils/getHighlightedParts.js"));
12
+ var _getPropertyByPath = require("../../lib/utils/getPropertyByPath.js");
13
13
 
14
- var _getPropertyByPath = _interopRequireDefault(require("../../lib/utils/getPropertyByPath.js"));
14
+ var _toArray = require("../../lib/utils/toArray.js");
15
15
 
16
- var _unescape = _interopRequireDefault(require("../../lib/utils/unescape.js"));
16
+ var _escapeHtml = require("../../lib/utils/escape-html.js");
17
17
 
18
18
  var _logger = require("../../lib/utils/logger.js");
19
19
 
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+ var _getHighlightedParts = require("../../lib/utils/getHighlightedParts.js");
21
21
 
22
22
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
23
23
 
@@ -31,12 +31,12 @@ function Snippet(_ref) {
31
31
  cssClasses = _ref.cssClasses,
32
32
  props = _objectWithoutProperties(_ref, ["hit", "attribute", "cssClasses"]);
33
33
 
34
- var property = (0, _getPropertyByPath.default)(hit._snippetResult, attribute) || [];
35
- var properties = Array.isArray(property) ? property : [property];
34
+ var property = (0, _getPropertyByPath.getPropertyByPath)(hit._snippetResult, attribute) || [];
35
+ var properties = (0, _toArray.toArray)(property);
36
36
  process.env.NODE_ENV === 'development' ? (0, _logger.warning)(Boolean(properties.length), "Could not enable snippet for \"".concat(attribute.toString(), "\", will display an empty string.\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\n\nSee: https://alg.li/highlighting\n")) : void 0;
37
37
  var parts = properties.map(function (_ref2) {
38
38
  var value = _ref2.value;
39
- return (0, _getHighlightedParts.default)((0, _unescape.default)(value || ''));
39
+ return (0, _getHighlightedParts.getHighlightedParts)((0, _escapeHtml.unescape)(value || ''));
40
40
  });
41
41
  return (0, _preact.h)(_Snippet.Snippet, _extends({}, props, {
42
42
  parts: parts,
@@ -11,7 +11,7 @@ var _algoliasearchHelper = _interopRequireDefault(require("algoliasearch-helper"
11
11
 
12
12
  var _events = _interopRequireDefault(require("@algolia/events"));
13
13
 
14
- var _index = _interopRequireWildcard(require("../widgets/index/index.js"));
14
+ var _index = _interopRequireDefault(require("../widgets/index/index.js"));
15
15
 
16
16
  var _version = _interopRequireDefault(require("./version.js"));
17
17
 
@@ -23,10 +23,6 @@ var _createRouterMiddleware = require("../middlewares/createRouterMiddleware.js"
23
23
 
24
24
  var _createMetadataMiddleware = require("../middlewares/createMetadataMiddleware.js");
25
25
 
26
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
27
-
28
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
29
-
30
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
27
 
32
28
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
@@ -254,6 +250,7 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
254
250
  var newMiddlewareList = middleware.map(function (fn) {
255
251
  var newMiddleware = _objectSpread({
256
252
  subscribe: _index2.noop,
253
+ started: _index2.noop,
257
254
  unsubscribe: _index2.noop,
258
255
  onStateChange: _index2.noop
259
256
  }, fn({
@@ -272,6 +269,7 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
272
269
  if (this.started) {
273
270
  newMiddlewareList.forEach(function (m) {
274
271
  m.subscribe();
272
+ m.started();
275
273
  });
276
274
  }
277
275
 
@@ -508,6 +506,10 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
508
506
  // to init them directly after add
509
507
 
510
508
  this.started = true;
509
+ this.middleware.forEach(function (_ref6) {
510
+ var instance = _ref6.instance;
511
+ instance.started();
512
+ });
511
513
  }
512
514
  /**
513
515
  * Removes all widgets without triggering a search afterwards. This is an **EXPERIMENTAL** feature,
@@ -534,8 +536,8 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
534
536
  this.mainHelper.removeAllListeners();
535
537
  this.mainHelper = null;
536
538
  this.helper = null;
537
- this.middleware.forEach(function (_ref6) {
538
- var instance = _ref6.instance;
539
+ this.middleware.forEach(function (_ref7) {
540
+ var instance = _ref7.instance;
539
541
  instance.unsubscribe();
540
542
  });
541
543
  }
@@ -552,9 +554,19 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
552
554
  }, this._stalledSearchDelay);
553
555
  }
554
556
  }
557
+ /**
558
+ * Set the UI state and trigger a search.
559
+ * @param uiState The next UI state or a function computing it from the current state
560
+ * @param callOnStateChange private parameter used to know if the method is called from a state change
561
+ */
562
+
555
563
  }, {
556
564
  key: "setUiState",
557
565
  value: function setUiState(uiState) {
566
+ var _this5 = this;
567
+
568
+ var callOnStateChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
569
+
558
570
  if (!this.mainHelper) {
559
571
  throw new Error(withUsage('The `start` method needs to be called before `setUiState`.'));
560
572
  } // We refresh the index UI state to update the local UI state that the
@@ -564,25 +576,22 @@ var InstantSearch = /*#__PURE__*/function (_EventEmitter) {
564
576
  this.mainIndex.refreshUiState();
565
577
  var nextUiState = typeof uiState === 'function' ? uiState(this.mainIndex.getWidgetUiState({})) : uiState;
566
578
 
567
- var setIndexHelperState = function setIndexHelperState(indexWidget) {
568
- var nextIndexUiState = nextUiState[indexWidget.getIndexId()] || {};
579
+ if (this.onStateChange && callOnStateChange) {
580
+ this.onStateChange({
581
+ uiState: nextUiState,
582
+ setUiState: function setUiState(finalUiState) {
583
+ (0, _index2.setIndexHelperState)(typeof finalUiState === 'function' ? finalUiState(nextUiState) : finalUiState, _this5.mainIndex);
569
584
 
570
- if (process.env.NODE_ENV === 'development') {
571
- (0, _index2.checkIndexUiState)({
572
- index: indexWidget,
573
- indexUiState: nextIndexUiState
574
- });
575
- }
585
+ _this5.scheduleSearch();
576
586
 
577
- indexWidget.getHelper().setState(indexWidget.getWidgetSearchParameters(indexWidget.getHelper().state, {
578
- uiState: nextIndexUiState
579
- }));
580
- indexWidget.getWidgets().filter(_index.isIndexWidget).forEach(setIndexHelperState);
581
- };
582
-
583
- setIndexHelperState(this.mainIndex);
584
- this.scheduleSearch();
585
- this.onInternalStateChange();
587
+ _this5.onInternalStateChange();
588
+ }
589
+ });
590
+ } else {
591
+ (0, _index2.setIndexHelperState)(nextUiState, this.mainIndex);
592
+ this.scheduleSearch();
593
+ this.onInternalStateChange();
594
+ }
586
595
  }
587
596
  }, {
588
597
  key: "getUiState",
@@ -3,11 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.capitalize = capitalize;
7
7
 
8
8
  function capitalize(text) {
9
9
  return text.toString().charAt(0).toUpperCase() + text.toString().slice(1);
10
- }
11
-
12
- var _default = capitalize;
13
- exports.default = _default;
10
+ }
@@ -5,14 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.checkIndexUiState = checkIndexUiState;
7
7
 
8
- var _capitalize = _interopRequireDefault(require("./capitalize.js"));
8
+ var _capitalize = require("./capitalize.js");
9
9
 
10
10
  var _logger = require("./logger.js");
11
11
 
12
12
  var _typedObject = require("./typedObject.js");
13
13
 
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
14
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
17
15
 
18
16
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
@@ -160,7 +158,7 @@ function checkIndexUiState(_ref) {
160
158
  connectors = _ref8$.connectors,
161
159
  widgets = _ref8$.widgets;
162
160
 
163
- var capitalizedWidget = (0, _capitalize.default)(widgets[0]);
161
+ var capitalizedWidget = (0, _capitalize.capitalize)(widgets[0]);
164
162
  var connectorName = connectors[0];
165
163
  return "const virtual".concat(capitalizedWidget, " = ").concat(connectorName, "(() => null);");
166
164
  }).join('\n'), "\n\nsearch.addWidgets([\n ").concat(missingWidgets.filter(function (_ref9) {
@@ -174,7 +172,7 @@ function checkIndexUiState(_ref) {
174
172
  _stateParameter = _ref12[0],
175
173
  widgets = _ref12[1].widgets;
176
174
 
177
- var capitalizedWidget = (0, _capitalize.default)(widgets[0]);
175
+ var capitalizedWidget = (0, _capitalize.capitalize)(widgets[0]);
178
176
  return "virtual".concat(capitalizedWidget, "({ /* ... */ })");
179
177
  }).join(',\n '), "\n]);\n```\n\nIf you're using custom widgets that do set these query parameters, we recommend using connectors instead.\n\nSee https://www.algolia.com/doc/guides/building-search-ui/widgets/customize-an-existing-widget/js/#customize-the-complete-ui-of-the-widgets")) : void 0;
180
178
  }
@@ -3,17 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.checkRendering = checkRendering;
7
7
 
8
- var _getObjectType = _interopRequireDefault(require("./getObjectType.js"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ var _getObjectType = require("./getObjectType.js");
11
9
 
12
10
  function checkRendering(rendering, usage) {
13
11
  if (rendering === undefined || typeof rendering !== 'function') {
14
- throw new Error("The render function is not valid (received type ".concat((0, _getObjectType.default)(rendering), ").\n\n").concat(usage));
12
+ throw new Error("The render function is not valid (received type ".concat((0, _getObjectType.getObjectType)(rendering), ").\n\n").concat(usage));
15
13
  }
16
- }
17
-
18
- var _default = checkRendering;
19
- exports.default = _default;
14
+ }
@@ -3,16 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.clearRefinements = clearRefinements;
7
7
 
8
8
  /**
9
9
  * Clears the refinements of a SearchParameters object based on rules provided.
10
10
  * The included attributes list is applied before the excluded attributes list. If the list
11
11
  * is not provided, this list of all the currently refined attributes is used as included attributes.
12
- * @param {object} $0 parameters
13
- * @param {Helper} $0.helper instance of the Helper
14
- * @param {string[]} [$0.attributesToClear = []] list of parameters to clear
15
- * @returns {SearchParameters} search parameters with refinements cleared
12
+ * @returns search parameters with refinements cleared
16
13
  */
17
14
  function clearRefinements(_ref) {
18
15
  var helper = _ref.helper,
@@ -44,7 +41,4 @@ function clearRefinements(_ref) {
44
41
  }
45
42
 
46
43
  return finalState;
47
- }
48
-
49
- var _default = clearRefinements;
50
- exports.default = _default;
44
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = concatHighlightedParts;
6
+ exports.concatHighlightedParts = concatHighlightedParts;
7
7
 
8
8
  var _escapeHighlight = require("./escape-highlight.js");
9
9
 
@@ -5,9 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createSendEventForFacet = createSendEventForFacet;
7
7
 
8
- var _isFacetRefined = _interopRequireDefault(require("./isFacetRefined.js"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ var _isFacetRefined = require("./isFacetRefined.js");
11
9
 
12
10
  function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13
11
 
@@ -30,7 +28,7 @@ function createSendEventForFacet(_ref) {
30
28
  if (args.length === 1 && _typeof(args[0]) === 'object') {
31
29
  instantSearchInstance.sendEventToInsights(args[0]);
32
30
  } else if (eventType === 'click' && (args.length === 2 || args.length === 3)) {
33
- if (!(0, _isFacetRefined.default)(helper, attribute, facetValue)) {
31
+ if (!(0, _isFacetRefined.isFacetRefined)(helper, attribute, facetValue)) {
34
32
  // send event only when the facet is being checked "ON"
35
33
  instantSearchInstance.sendEventToInsights({
36
34
  insightsMethod: 'clickedFilters',
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.defer = defer;
7
7
  var nextMicroTask = Promise.resolve();
8
8
 
9
- var defer = function defer(callback) {
9
+ function defer(callback) {
10
10
  var progress = null;
11
11
  var cancelled = false;
12
12
 
@@ -48,7 +48,4 @@ var defer = function defer(callback) {
48
48
  };
49
49
 
50
50
  return fn;
51
- };
52
-
53
- var _default = defer;
54
- exports.default = _default;
51
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = hasDetectedInsightsClient;
6
+ exports.hasDetectedInsightsClient = hasDetectedInsightsClient;
7
7
 
8
8
  var _safelyRunOnBrowser = require("./safelyRunOnBrowser.js");
9
9
 
@@ -3,18 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createDocumentationMessageGenerator = exports.createDocumentationLink = void 0;
6
+ exports.createDocumentationLink = createDocumentationLink;
7
+ exports.createDocumentationMessageGenerator = createDocumentationMessageGenerator;
7
8
 
8
- var createDocumentationLink = function createDocumentationLink(_ref) {
9
+ function createDocumentationLink(_ref) {
9
10
  var name = _ref.name,
10
11
  _ref$connector = _ref.connector,
11
12
  connector = _ref$connector === void 0 ? false : _ref$connector;
12
13
  return ['https://www.algolia.com/doc/api-reference/widgets/', name, '/js/', connector ? '#connector' : ''].join('');
13
- };
14
-
15
- exports.createDocumentationLink = createDocumentationLink;
14
+ }
16
15
 
17
- var createDocumentationMessageGenerator = function createDocumentationMessageGenerator() {
16
+ function createDocumentationMessageGenerator() {
18
17
  for (var _len = arguments.length, widgets = new Array(_len), _key = 0; _key < _len; _key++) {
19
18
  widgets[_key] = arguments[_key];
20
19
  }
@@ -25,6 +24,4 @@ var createDocumentationMessageGenerator = function createDocumentationMessageGen
25
24
  return function (message) {
26
25
  return [message, "See documentation: ".concat(links)].filter(Boolean).join('\n\n');
27
26
  };
28
- };
29
-
30
- exports.createDocumentationMessageGenerator = createDocumentationMessageGenerator;
27
+ }
@@ -7,11 +7,9 @@ exports.escapeHits = escapeHits;
7
7
  exports.escapeFacets = escapeFacets;
8
8
  exports.TAG_REPLACEMENT = exports.TAG_PLACEHOLDER = void 0;
9
9
 
10
- var _escape = _interopRequireDefault(require("./escape.js"));
10
+ var _escapeHtml = require("./escape-html.js");
11
11
 
12
- var _isPlainObject = _interopRequireDefault(require("./isPlainObject.js"));
13
-
14
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var _isPlainObject = require("./isPlainObject.js");
15
13
 
16
14
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
15
 
@@ -33,11 +31,11 @@ var TAG_REPLACEMENT = {
33
31
  exports.TAG_REPLACEMENT = TAG_REPLACEMENT;
34
32
 
35
33
  function replaceTagsAndEscape(value) {
36
- return (0, _escape.default)(value).replace(new RegExp(TAG_PLACEHOLDER.highlightPreTag, 'g'), TAG_REPLACEMENT.highlightPreTag).replace(new RegExp(TAG_PLACEHOLDER.highlightPostTag, 'g'), TAG_REPLACEMENT.highlightPostTag);
34
+ return (0, _escapeHtml.escape)(value).replace(new RegExp(TAG_PLACEHOLDER.highlightPreTag, 'g'), TAG_REPLACEMENT.highlightPreTag).replace(new RegExp(TAG_PLACEHOLDER.highlightPostTag, 'g'), TAG_REPLACEMENT.highlightPostTag);
37
35
  }
38
36
 
39
37
  function recursiveEscape(input) {
40
- if ((0, _isPlainObject.default)(input) && typeof input.value !== 'string') {
38
+ if ((0, _isPlainObject.isPlainObject)(input) && typeof input.value !== 'string') {
41
39
  return Object.keys(input).reduce(function (acc, key) {
42
40
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, recursiveEscape(input[key])));
43
41
  }, {});
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.escape = escape;
7
+ exports.unescape = unescape;
8
+
9
+ /**
10
+ * This implementation is taken from Lodash implementation.
11
+ * See: https://github.com/lodash/lodash/blob/4.17.11-npm/escape.js
12
+ */
13
+ // Used to map characters to HTML entities.
14
+ var htmlEntities = {
15
+ '&': '&amp;',
16
+ '<': '&lt;',
17
+ '>': '&gt;',
18
+ '"': '&quot;',
19
+ "'": '&#39;'
20
+ }; // Used to match HTML entities and HTML characters.
21
+
22
+ var regexUnescapedHtml = /[&<>"']/g;
23
+ var regexHasUnescapedHtml = RegExp(regexUnescapedHtml.source);
24
+ /**
25
+ * Converts the characters "&", "<", ">", '"', and "'" in `string` to their
26
+ * corresponding HTML entities.
27
+ */
28
+
29
+ function escape(value) {
30
+ return value && regexHasUnescapedHtml.test(value) ? value.replace(regexUnescapedHtml, function (character) {
31
+ return htmlEntities[character];
32
+ }) : value;
33
+ }
34
+ /**
35
+ * This implementation is taken from Lodash implementation.
36
+ * See: https://github.com/lodash/lodash/blob/4.17.11-npm/unescape.js
37
+ */
38
+ // Used to map HTML entities to characters.
39
+
40
+
41
+ var htmlCharacters = {
42
+ '&amp;': '&',
43
+ '&lt;': '<',
44
+ '&gt;': '>',
45
+ '&quot;': '"',
46
+ '&#39;': "'"
47
+ }; // Used to match HTML entities and HTML characters.
48
+
49
+ var regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;
50
+ var regexHasEscapedHtml = RegExp(regexEscapedHtml.source);
51
+ /**
52
+ * Converts the HTML entities "&", "<", ">", '"', and "'" in `string` to their
53
+ * characters.
54
+ */
55
+
56
+ function unescape(value) {
57
+ return value && regexHasEscapedHtml.test(value) ? value.replace(regexEscapedHtml, function (character) {
58
+ return htmlCharacters[character];
59
+ }) : value;
60
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.find = find;
7
7
 
8
8
  // We aren't using the native `Array.prototype.find` because the refactor away from Lodash is not
9
9
  // published as a major version.
@@ -23,7 +23,4 @@ function find(items, predicate) {
23
23
  }
24
24
 
25
25
  return undefined;
26
- }
27
-
28
- var _default = find;
29
- exports.default = _default;
26
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.findIndex = findIndex;
7
7
 
8
8
  // We aren't using the native `Array.prototype.findIndex` because the refactor away from Lodash is not
9
9
  // published as a major version.
@@ -23,7 +23,4 @@ function findIndex(array, comparator) {
23
23
  }
24
24
 
25
25
  return -1;
26
- }
27
-
28
- var _default = findIndex;
29
- exports.default = _default;
26
+ }