instantsearch.js 4.45.1 → 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 (230) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/cjs/components/Hits/Hits.js +3 -1
  3. package/cjs/components/InfiniteHits/InfiniteHits.js +3 -1
  4. package/cjs/components/Template/Template.js +13 -3
  5. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +3 -1
  6. package/cjs/helpers/components/Highlight.js +7 -7
  7. package/cjs/helpers/components/ReverseHighlight.js +7 -7
  8. package/cjs/helpers/components/ReverseSnippet.js +7 -7
  9. package/cjs/helpers/components/Snippet.js +7 -7
  10. package/cjs/lib/InstantSearch.js +33 -24
  11. package/cjs/lib/createHelpers.js +3 -1
  12. package/cjs/lib/formatNumber.js +10 -0
  13. package/cjs/lib/utils/capitalize.js +2 -5
  14. package/cjs/lib/utils/checkIndexUiState.js +3 -5
  15. package/cjs/lib/utils/checkRendering.js +4 -9
  16. package/cjs/lib/utils/clearRefinements.js +3 -9
  17. package/cjs/lib/utils/concatHighlightedParts.js +1 -1
  18. package/cjs/lib/utils/createSendEventForFacet.js +2 -4
  19. package/cjs/lib/utils/cx.js +10 -0
  20. package/cjs/lib/utils/defer.js +3 -6
  21. package/cjs/lib/utils/detect-insights-client.js +1 -1
  22. package/cjs/lib/utils/documentation.js +6 -9
  23. package/cjs/lib/utils/escape-highlight.js +4 -6
  24. package/cjs/lib/utils/escape-html.js +60 -0
  25. package/cjs/lib/utils/find.js +2 -5
  26. package/cjs/lib/utils/findIndex.js +2 -5
  27. package/cjs/lib/utils/getContainerNode.js +4 -9
  28. package/cjs/lib/utils/getHighlightFromSiblings.js +3 -5
  29. package/cjs/lib/utils/getHighlightedParts.js +1 -1
  30. package/cjs/lib/utils/getObjectType.js +2 -5
  31. package/cjs/lib/utils/getPropertyByPath.js +2 -5
  32. package/cjs/lib/utils/getRefinements.js +4 -6
  33. package/cjs/lib/utils/index.js +563 -432
  34. package/cjs/lib/utils/isDomElement.js +2 -5
  35. package/cjs/lib/utils/isEqual.js +2 -5
  36. package/cjs/lib/utils/isFacetRefined.js +1 -1
  37. package/cjs/lib/utils/isFiniteNumber.js +3 -5
  38. package/cjs/lib/utils/isIndexWidget.js +10 -0
  39. package/cjs/lib/utils/isPlainObject.js +2 -5
  40. package/cjs/lib/utils/isSpecialClick.js +2 -5
  41. package/cjs/lib/utils/logger.js +3 -5
  42. package/cjs/lib/utils/mergeSearchParameters.js +7 -10
  43. package/cjs/lib/utils/noop.js +2 -5
  44. package/cjs/lib/utils/prepareTemplateProps.js +4 -9
  45. package/cjs/lib/utils/range.js +2 -5
  46. package/cjs/lib/utils/renderTemplate.js +19 -7
  47. package/cjs/lib/utils/resolveSearchParameters.js +3 -6
  48. package/cjs/lib/utils/reverseHighlightedParts.js +3 -5
  49. package/cjs/lib/utils/setIndexHelperState.js +28 -0
  50. package/cjs/lib/utils/toArray.js +2 -5
  51. package/cjs/lib/utils/uniq.js +2 -5
  52. package/cjs/lib/version.js +1 -1
  53. package/cjs/middlewares/createInsightsMiddleware.js +23 -30
  54. package/cjs/middlewares/createMetadataMiddleware.js +1 -0
  55. package/cjs/middlewares/createRouterMiddleware.js +1 -0
  56. package/cjs/widgets/answers/defaultTemplates.js +6 -2
  57. package/cjs/widgets/breadcrumb/defaultTemplates.js +6 -2
  58. package/cjs/widgets/clear-refinements/defaultTemplates.js +3 -1
  59. package/cjs/widgets/geo-search/createHTMLMarker.js +10 -4
  60. package/cjs/widgets/geo-search/defaultTemplates.js +18 -4
  61. package/cjs/widgets/hierarchical-menu/defaultTemplates.js +26 -2
  62. package/cjs/widgets/hits/defaultTemplates.js +3 -1
  63. package/cjs/widgets/index/index.js +8 -12
  64. package/cjs/widgets/infinite-hits/defaultTemplates.js +9 -3
  65. package/cjs/widgets/menu/defaultTemplates.js +26 -2
  66. package/cjs/widgets/menu-select/defaultTemplates.js +11 -2
  67. package/cjs/widgets/numeric-menu/defaultTemplates.js +20 -1
  68. package/cjs/widgets/range-input/range-input.js +6 -2
  69. package/cjs/widgets/rating-menu/defaultTemplates.js +57 -1
  70. package/cjs/widgets/refinement-list/defaultTemplates.js +38 -3
  71. package/cjs/widgets/relevant-sort/defaultTemplates.js +3 -1
  72. package/cjs/widgets/search-box/defaultTemplates.js +62 -3
  73. package/cjs/widgets/stats/stats.js +70 -22
  74. package/cjs/widgets/toggle-refinement/defaultTemplates.js +4 -1
  75. package/cjs/widgets/voice-search/defaultTemplates.js +81 -9
  76. package/dist/instantsearch.development.d.ts +153 -22
  77. package/dist/instantsearch.development.js +2842 -2112
  78. package/dist/instantsearch.development.js.map +1 -1
  79. package/dist/instantsearch.production.d.ts +153 -22
  80. package/dist/instantsearch.production.min.d.ts +153 -22
  81. package/dist/instantsearch.production.min.js +2 -2
  82. package/dist/instantsearch.production.min.js.map +1 -1
  83. package/es/components/Breadcrumb/Breadcrumb.d.ts +1 -1
  84. package/es/components/ClearRefinements/ClearRefinements.d.ts +1 -1
  85. package/es/components/GeoSearchControls/GeoSearchControls.d.ts +1 -1
  86. package/es/components/Hits/Hits.d.ts +2 -3
  87. package/es/components/Hits/Hits.js +3 -1
  88. package/es/components/InfiniteHits/InfiniteHits.d.ts +1 -1
  89. package/es/components/InfiniteHits/InfiniteHits.js +3 -1
  90. package/es/components/RefinementList/RefinementList.d.ts +1 -1
  91. package/es/components/Template/Template.d.ts +4 -3
  92. package/es/components/Template/Template.js +14 -4
  93. package/es/components/ToggleRefinement/ToggleRefinement.d.ts +1 -4
  94. package/es/components/ToggleRefinement/ToggleRefinement.js +0 -4
  95. package/es/connectors/toggle-refinement/connectToggleRefinement.d.ts +3 -2
  96. package/es/connectors/toggle-refinement/connectToggleRefinement.js +3 -1
  97. package/es/helpers/components/Highlight.js +7 -5
  98. package/es/helpers/components/ReverseHighlight.js +7 -5
  99. package/es/helpers/components/ReverseSnippet.js +7 -5
  100. package/es/helpers/components/Snippet.js +7 -5
  101. package/es/lib/InstantSearch.d.ts +6 -1
  102. package/es/lib/InstantSearch.js +34 -21
  103. package/es/lib/createHelpers.js +2 -1
  104. package/es/lib/formatNumber.d.ts +1 -0
  105. package/es/lib/formatNumber.js +3 -0
  106. package/es/lib/utils/capitalize.d.ts +1 -2
  107. package/es/lib/utils/capitalize.js +2 -4
  108. package/es/lib/utils/checkIndexUiState.js +1 -1
  109. package/es/lib/utils/checkRendering.d.ts +1 -2
  110. package/es/lib/utils/checkRendering.js +3 -6
  111. package/es/lib/utils/clearRefinements.d.ts +4 -8
  112. package/es/lib/utils/clearRefinements.js +3 -8
  113. package/es/lib/utils/concatHighlightedParts.d.ts +1 -1
  114. package/es/lib/utils/concatHighlightedParts.js +1 -1
  115. package/es/lib/utils/createSendEventForFacet.js +1 -1
  116. package/es/lib/utils/createSendEventForHits.d.ts +0 -3
  117. package/es/lib/utils/createSendEventForHits.js +0 -3
  118. package/es/lib/utils/cx.d.ts +1 -0
  119. package/es/lib/utils/cx.js +3 -0
  120. package/es/lib/utils/defer.d.ts +2 -2
  121. package/es/lib/utils/defer.js +2 -5
  122. package/es/lib/utils/detect-insights-client.d.ts +1 -1
  123. package/es/lib/utils/detect-insights-client.js +1 -1
  124. package/es/lib/utils/documentation.d.ts +2 -2
  125. package/es/lib/utils/documentation.js +4 -4
  126. package/es/lib/utils/escape-highlight.js +2 -2
  127. package/es/lib/utils/{escape.d.ts → escape-html.d.ts} +6 -2
  128. package/es/lib/utils/escape-html.js +51 -0
  129. package/es/lib/utils/escapeFacetValue.d.ts +1 -1
  130. package/es/lib/utils/find.d.ts +1 -2
  131. package/es/lib/utils/find.js +2 -4
  132. package/es/lib/utils/findIndex.d.ts +1 -2
  133. package/es/lib/utils/findIndex.js +2 -4
  134. package/es/lib/utils/getContainerNode.d.ts +1 -2
  135. package/es/lib/utils/getContainerNode.js +3 -5
  136. package/es/lib/utils/getHighlightFromSiblings.d.ts +1 -1
  137. package/es/lib/utils/getHighlightFromSiblings.js +2 -2
  138. package/es/lib/utils/getHighlightedParts.d.ts +1 -1
  139. package/es/lib/utils/getHighlightedParts.js +1 -1
  140. package/es/lib/utils/getObjectType.d.ts +1 -2
  141. package/es/lib/utils/getObjectType.js +2 -4
  142. package/es/lib/utils/getPropertyByPath.d.ts +1 -2
  143. package/es/lib/utils/getPropertyByPath.js +2 -4
  144. package/es/lib/utils/getRefinements.d.ts +1 -1
  145. package/es/lib/utils/getRefinements.js +2 -2
  146. package/es/lib/utils/index.d.ts +46 -45
  147. package/es/lib/utils/index.js +46 -45
  148. package/es/lib/utils/isDomElement.d.ts +1 -2
  149. package/es/lib/utils/isDomElement.js +2 -4
  150. package/es/lib/utils/isEqual.d.ts +1 -2
  151. package/es/lib/utils/isEqual.js +2 -4
  152. package/es/lib/utils/isFacetRefined.d.ts +1 -1
  153. package/es/lib/utils/isFacetRefined.js +1 -1
  154. package/es/lib/utils/isFiniteNumber.d.ts +1 -2
  155. package/es/lib/utils/isFiniteNumber.js +3 -4
  156. package/es/lib/utils/isIndexWidget.d.ts +3 -0
  157. package/es/lib/utils/isIndexWidget.js +3 -0
  158. package/es/lib/utils/isPlainObject.d.ts +1 -2
  159. package/es/lib/utils/isPlainObject.js +2 -4
  160. package/es/lib/utils/isSpecialClick.d.ts +1 -2
  161. package/es/lib/utils/isSpecialClick.js +2 -4
  162. package/es/lib/utils/logger.js +1 -1
  163. package/es/lib/utils/mergeSearchParameters.d.ts +1 -2
  164. package/es/lib/utils/mergeSearchParameters.js +4 -6
  165. package/es/lib/utils/noop.d.ts +1 -2
  166. package/es/lib/utils/noop.js +1 -3
  167. package/es/lib/utils/prepareTemplateProps.d.ts +2 -2
  168. package/es/lib/utils/prepareTemplateProps.js +3 -5
  169. package/es/lib/utils/range.d.ts +2 -2
  170. package/es/lib/utils/range.js +2 -4
  171. package/es/lib/utils/renderTemplate.d.ts +4 -4
  172. package/es/lib/utils/renderTemplate.js +17 -6
  173. package/es/lib/utils/resolveSearchParameters.d.ts +1 -2
  174. package/es/lib/utils/resolveSearchParameters.js +2 -4
  175. package/es/lib/utils/reverseHighlightedParts.d.ts +1 -1
  176. package/es/lib/utils/reverseHighlightedParts.js +2 -2
  177. package/es/lib/utils/setIndexHelperState.d.ts +3 -0
  178. package/es/lib/utils/setIndexHelperState.js +19 -0
  179. package/es/lib/utils/toArray.d.ts +3 -2
  180. package/es/lib/utils/toArray.js +2 -4
  181. package/es/lib/utils/uniq.d.ts +1 -2
  182. package/es/lib/utils/uniq.js +2 -4
  183. package/es/lib/version.d.ts +1 -1
  184. package/es/lib/version.js +1 -1
  185. package/es/middlewares/createInsightsMiddleware.js +23 -27
  186. package/es/middlewares/createMetadataMiddleware.js +1 -0
  187. package/es/middlewares/createRouterMiddleware.js +1 -0
  188. package/es/types/middleware.d.ts +1 -0
  189. package/es/types/templates.d.ts +16 -3
  190. package/es/widgets/answers/defaultTemplates.js +6 -2
  191. package/es/widgets/breadcrumb/defaultTemplates.js +6 -2
  192. package/es/widgets/clear-refinements/clear-refinements.d.ts +3 -1
  193. package/es/widgets/clear-refinements/defaultTemplates.js +3 -1
  194. package/es/widgets/geo-search/createHTMLMarker.d.ts +2 -1
  195. package/es/widgets/geo-search/createHTMLMarker.js +8 -1
  196. package/es/widgets/geo-search/defaultTemplates.d.ts +1 -0
  197. package/es/widgets/geo-search/defaultTemplates.js +17 -4
  198. package/es/widgets/hierarchical-menu/defaultTemplates.js +22 -2
  199. package/es/widgets/hierarchical-menu/hierarchical-menu.d.ts +2 -0
  200. package/es/widgets/hits/defaultTemplates.js +3 -1
  201. package/es/widgets/hits/hits.d.ts +2 -1
  202. package/es/widgets/index/index.d.ts +0 -1
  203. package/es/widgets/index/index.js +5 -6
  204. package/es/widgets/infinite-hits/defaultTemplates.js +9 -3
  205. package/es/widgets/infinite-hits/infinite-hits.d.ts +1 -3
  206. package/es/widgets/menu/defaultTemplates.js +22 -2
  207. package/es/widgets/menu-select/defaultTemplates.js +9 -2
  208. package/es/widgets/numeric-menu/defaultTemplates.js +18 -1
  209. package/es/widgets/range-input/range-input.js +6 -2
  210. package/es/widgets/rating-menu/defaultTemplates.js +54 -1
  211. package/es/widgets/rating-menu/rating-menu.d.ts +6 -0
  212. package/es/widgets/refinement-list/defaultTemplates.js +34 -3
  213. package/es/widgets/refinement-list/refinement-list.d.ts +7 -1
  214. package/es/widgets/relevant-sort/defaultTemplates.js +3 -1
  215. package/es/widgets/search-box/defaultTemplates.js +61 -3
  216. package/es/widgets/search-box/search-box.d.ts +10 -3
  217. package/es/widgets/stats/stats.d.ts +10 -6
  218. package/es/widgets/stats/stats.js +69 -22
  219. package/es/widgets/toggle-refinement/defaultTemplates.js +4 -1
  220. package/es/widgets/toggle-refinement/toggle-refinement.d.ts +3 -1
  221. package/es/widgets/voice-search/defaultTemplates.js +81 -9
  222. package/package.json +8 -7
  223. package/cjs/lib/utils/convertNumericRefinementsToFilters.js +0 -31
  224. package/cjs/lib/utils/escape.js +0 -35
  225. package/cjs/lib/utils/unescape.js +0 -32
  226. package/es/lib/utils/convertNumericRefinementsToFilters.d.ts +0 -2
  227. package/es/lib/utils/convertNumericRefinementsToFilters.js +0 -24
  228. package/es/lib/utils/escape.js +0 -27
  229. package/es/lib/utils/unescape.d.ts +0 -9
  230. package/es/lib/utils/unescape.js +0 -25
@@ -4,9 +4,33 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
8
+ var _preact = require("preact");
9
+
10
+ var _formatNumber = require("../../lib/formatNumber.js");
11
+
12
+ var _index = require("../../lib/utils/index.js");
13
+
14
+ /** @jsx h */
7
15
  var defaultTemplates = {
8
- item: '<a class="{{cssClasses.link}}" href="{{url}}">' + '<span class="{{cssClasses.label}}">{{label}}</span>' + '<span class="{{cssClasses.count}}">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>' + '</a>',
9
- showMoreText: "\n {{#isShowingMore}}\n Show less\n {{/isShowingMore}}\n {{^isShowingMore}}\n Show more\n {{/isShowingMore}}\n "
16
+ item: function item(_ref) {
17
+ var url = _ref.url,
18
+ label = _ref.label,
19
+ count = _ref.count,
20
+ cssClasses = _ref.cssClasses;
21
+ return (0, _preact.h)("a", {
22
+ className: (0, _index.cx)(cssClasses.link),
23
+ href: url
24
+ }, (0, _preact.h)("span", {
25
+ className: (0, _index.cx)(cssClasses.label)
26
+ }, label), (0, _preact.h)("span", {
27
+ className: (0, _index.cx)(cssClasses.count)
28
+ }, (0, _formatNumber.formatNumber)(count)));
29
+ },
30
+ showMoreText: function showMoreText(_ref2) {
31
+ var isShowingMore = _ref2.isShowingMore;
32
+ return isShowingMore ? 'Show less' : 'Show more';
33
+ }
10
34
  };
11
35
  var _default = defaultTemplates;
12
36
  exports.default = _default;
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var defaultTemplates = {
8
- empty: 'No results',
8
+ empty: function empty() {
9
+ return 'No results';
10
+ },
9
11
  item: function item(data) {
10
12
  return JSON.stringify(data, null, 2);
11
13
  }
@@ -3,7 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.isIndexWidget = isIndexWidget;
7
6
  exports.default = void 0;
8
7
 
9
8
  var _algoliasearchHelper = _interopRequireDefault(require("algoliasearch-helper"));
@@ -38,16 +37,11 @@ var withUsage = (0, _index.createDocumentationMessageGenerator)({
38
37
  name: 'index-widget'
39
38
  });
40
39
 
41
- function isIndexWidget(widget) {
42
- return widget.$$type === 'ais.index';
43
- }
44
40
  /**
45
41
  * This is the same content as helper._change / setState, but allowing for extra
46
42
  * UiState to be synchronized.
47
43
  * see: https://github.com/algolia/algoliasearch-helper-js/blob/6b835ffd07742f2d6b314022cce6848f5cfecd4a/src/algoliasearch.helper.js#L1311-L1324
48
44
  */
49
-
50
-
51
45
  function privateHelperSetState(helper, _ref) {
52
46
  var state = _ref.state,
53
47
  isPageReset = _ref.isPageReset,
@@ -67,7 +61,7 @@ function privateHelperSetState(helper, _ref) {
67
61
  function getLocalWidgetsUiState(widgets, widgetStateOptions) {
68
62
  var initialUiState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
69
63
  return widgets.reduce(function (uiState, widget) {
70
- if (isIndexWidget(widget)) {
64
+ if ((0, _index.isIndexWidget)(widget)) {
71
65
  return uiState;
72
66
  }
73
67
 
@@ -88,7 +82,7 @@ function getLocalWidgetsSearchParameters(widgets, widgetSearchParametersOptions)
88
82
  rest = _objectWithoutProperties(widgetSearchParametersOptions, ["initialSearchParameters"]);
89
83
 
90
84
  return widgets.filter(function (widget) {
91
- return !isIndexWidget(widget);
85
+ return !(0, _index.isIndexWidget)(widget);
92
86
  }).reduce(function (state, widget) {
93
87
  if (!widget.getWidgetSearchParameters) {
94
88
  return state;
@@ -99,7 +93,7 @@ function getLocalWidgetsSearchParameters(widgets, widgetSearchParametersOptions)
99
93
  }
100
94
 
101
95
  function resetPageFromWidgets(widgets) {
102
- var indexWidgets = widgets.filter(isIndexWidget);
96
+ var indexWidgets = widgets.filter(_index.isIndexWidget);
103
97
 
104
98
  if (indexWidgets.length === 0) {
105
99
  return;
@@ -116,7 +110,7 @@ function resetPageFromWidgets(widgets) {
116
110
  }
117
111
 
118
112
  function resolveScopedResultsFromWidgets(widgets) {
119
- var indexWidgets = widgets.filter(isIndexWidget);
113
+ var indexWidgets = widgets.filter(_index.isIndexWidget);
120
114
  return indexWidgets.reduce(function (scopedResults, current) {
121
115
  return scopedResults.concat.apply(scopedResults, [{
122
116
  indexId: current.getIndexId(),
@@ -326,7 +320,9 @@ var index = function index(widgetParams) {
326
320
  if (instantSearchInstance.onStateChange) {
327
321
  instantSearchInstance.onStateChange({
328
322
  uiState: instantSearchInstance.mainIndex.getWidgetUiState({}),
329
- setUiState: instantSearchInstance.setUiState.bind(instantSearchInstance)
323
+ setUiState: function setUiState(nextState) {
324
+ return instantSearchInstance.setUiState(nextState, false);
325
+ }
330
326
  }); // We don't trigger a search when controlled because it becomes the
331
327
  // responsibility of `setUiState`.
332
328
 
@@ -554,7 +550,7 @@ var index = function index(widgetParams) {
554
550
  derivedHelper = null;
555
551
  },
556
552
  getWidgetUiState: function getWidgetUiState(uiState) {
557
- return localWidgets.filter(isIndexWidget).reduce(function (previousUiState, innerIndex) {
553
+ return localWidgets.filter(_index.isIndexWidget).reduce(function (previousUiState, innerIndex) {
558
554
  return innerIndex.getWidgetUiState(previousUiState);
559
555
  }, _objectSpread(_objectSpread({}, uiState), {}, _defineProperty({}, this.getIndexId(), localUiState)));
560
556
  },
@@ -5,9 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var defaultTemplates = {
8
- empty: 'No results',
9
- showPreviousText: 'Show previous results',
10
- showMoreText: 'Show more results',
8
+ empty: function empty() {
9
+ return 'No results';
10
+ },
11
+ showPreviousText: function showPreviousText() {
12
+ return 'Show previous results';
13
+ },
14
+ showMoreText: function showMoreText() {
15
+ return 'Show more results';
16
+ },
11
17
  item: function item(data) {
12
18
  return JSON.stringify(data, null, 2);
13
19
  }
@@ -4,9 +4,33 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
8
+ var _preact = require("preact");
9
+
10
+ var _formatNumber = require("../../lib/formatNumber.js");
11
+
12
+ var _index = require("../../lib/utils/index.js");
13
+
14
+ /** @jsx h */
7
15
  var defaultTemplates = {
8
- item: '<a class="{{cssClasses.link}}" href="{{url}}">' + '<span class="{{cssClasses.label}}">{{label}}</span>' + '<span class="{{cssClasses.count}}">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>' + '</a>',
9
- showMoreText: "\n {{#isShowingMore}}\n Show less\n {{/isShowingMore}}\n {{^isShowingMore}}\n Show more\n {{/isShowingMore}}\n "
16
+ item: function item(_ref) {
17
+ var cssClasses = _ref.cssClasses,
18
+ url = _ref.url,
19
+ label = _ref.label,
20
+ count = _ref.count;
21
+ return (0, _preact.h)("a", {
22
+ className: (0, _index.cx)(cssClasses.link),
23
+ href: url
24
+ }, (0, _preact.h)("span", {
25
+ className: (0, _index.cx)(cssClasses.label)
26
+ }, label), (0, _preact.h)("span", {
27
+ className: (0, _index.cx)(cssClasses.count)
28
+ }, (0, _formatNumber.formatNumber)(count)));
29
+ },
30
+ showMoreText: function showMoreText(_ref2) {
31
+ var isShowingMore = _ref2.isShowingMore;
32
+ return isShowingMore ? 'Show less' : 'Show more';
33
+ }
10
34
  };
11
35
  var _default = defaultTemplates;
12
36
  exports.default = _default;
@@ -4,9 +4,18 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
8
+ var _formatNumber = require("../../lib/formatNumber.js");
9
+
7
10
  var defaultTemplates = {
8
- item: '{{label}} ({{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}})',
9
- defaultOption: 'See all'
11
+ item: function item(_ref) {
12
+ var label = _ref.label,
13
+ count = _ref.count;
14
+ return "".concat(label, " (").concat((0, _formatNumber.formatNumber)(count), ")");
15
+ },
16
+ defaultOption: function defaultOption() {
17
+ return 'See all';
18
+ }
10
19
  };
11
20
  var _default = defaultTemplates;
12
21
  exports.default = _default;
@@ -4,8 +4,27 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
8
+ var _preact = require("preact");
9
+
10
+ /** @jsx h */
7
11
  var defaultTemplates = {
8
- item: "<label class=\"{{cssClasses.label}}\">\n <input type=\"radio\" class=\"{{cssClasses.radio}}\" name=\"{{attribute}}\"{{#isRefined}} checked{{/isRefined}} />\n <span class=\"{{cssClasses.labelText}}\">{{label}}</span>\n</label>"
12
+ item: function item(_ref) {
13
+ var cssClasses = _ref.cssClasses,
14
+ attribute = _ref.attribute,
15
+ label = _ref.label,
16
+ isRefined = _ref.isRefined;
17
+ return (0, _preact.h)("label", {
18
+ className: cssClasses.label
19
+ }, (0, _preact.h)("input", {
20
+ type: "radio",
21
+ className: cssClasses.radio,
22
+ name: attribute,
23
+ defaultChecked: isRefined
24
+ }), (0, _preact.h)("span", {
25
+ className: cssClasses.labelText
26
+ }, label));
27
+ }
9
28
  };
10
29
  var _default = defaultTemplates;
11
30
  exports.default = _default;
@@ -42,8 +42,12 @@ var withUsage = (0, _index.createDocumentationMessageGenerator)({
42
42
  });
43
43
  var suit = (0, _suit.component)('RangeInput');
44
44
  var defaultTemplates = {
45
- separatorText: 'to',
46
- submitText: 'Go'
45
+ separatorText: function separatorText() {
46
+ return 'to';
47
+ },
48
+ submitText: function submitText() {
49
+ return 'Go';
50
+ }
47
51
  };
48
52
 
49
53
  var renderer = function renderer(_ref) {
@@ -4,8 +4,64 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
8
+ var _preact = require("preact");
9
+
10
+ var _formatNumber = require("../../lib/formatNumber.js");
11
+
12
+ var _index = require("../../lib/utils/index.js");
13
+
14
+ /** @jsx h */
15
+ function ItemWrapper(_ref) {
16
+ var children = _ref.children,
17
+ count = _ref.count,
18
+ value = _ref.value,
19
+ url = _ref.url,
20
+ cssClasses = _ref.cssClasses;
21
+
22
+ if (count) {
23
+ return (0, _preact.h)("a", {
24
+ className: (0, _index.cx)(cssClasses.link),
25
+ "aria-label": "".concat(value, " & up"),
26
+ href: url
27
+ }, children);
28
+ }
29
+
30
+ return (0, _preact.h)("div", {
31
+ className: (0, _index.cx)(cssClasses.link),
32
+ "aria-label": "".concat(value, " & up"),
33
+ disabled: true
34
+ }, children);
35
+ }
36
+
7
37
  var defaultTemplates = {
8
- item: "{{#count}}<a class=\"{{cssClasses.link}}\" aria-label=\"{{value}} & up\" href=\"{{url}}\">{{/count}}{{^count}}<div class=\"{{cssClasses.link}}\" aria-label=\"{{value}} & up\" disabled>{{/count}}\n {{#stars}}<svg class=\"{{cssClasses.starIcon}} {{#.}}{{cssClasses.fullStarIcon}}{{/.}}{{^.}}{{cssClasses.emptyStarIcon}}{{/.}}\" aria-hidden=\"true\" width=\"24\" height=\"24\">\n {{#.}}<use xlink:href=\"#ais-RatingMenu-starSymbol\"></use>{{/.}}{{^.}}<use xlink:href=\"#ais-RatingMenu-starEmptySymbol\"></use>{{/.}}\n </svg>{{/stars}}\n <span class=\"{{cssClasses.label}}\">& Up</span>\n {{#count}}<span class=\"{{cssClasses.count}}\">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>{{/count}}\n{{#count}}</a>{{/count}}{{^count}}</div>{{/count}}"
38
+ item: function item(_ref2) {
39
+ var count = _ref2.count,
40
+ value = _ref2.value,
41
+ url = _ref2.url,
42
+ stars = _ref2.stars,
43
+ cssClasses = _ref2.cssClasses;
44
+ return (0, _preact.h)(ItemWrapper, {
45
+ count: count,
46
+ value: value,
47
+ url: url,
48
+ cssClasses: cssClasses
49
+ }, stars.map(function (isFull, index) {
50
+ return (0, _preact.h)("svg", {
51
+ key: index,
52
+ className: (0, _index.cx)([(0, _index.cx)(cssClasses.starIcon), (0, _index.cx)(isFull ? cssClasses.fullStarIcon : cssClasses.emptyStarIcon)]),
53
+ "aria-hidden": "true",
54
+ width: "24",
55
+ height: "24"
56
+ }, (0, _preact.h)("use", {
57
+ xlinkHref: isFull ? '#ais-RatingMenu-starSymbol' : '#ais-RatingMenu-starEmptySymbol'
58
+ }));
59
+ }), (0, _preact.h)("span", {
60
+ className: (0, _index.cx)(cssClasses.label)
61
+ }, "& Up"), count && (0, _preact.h)("span", {
62
+ className: (0, _index.cx)(cssClasses.count)
63
+ }, (0, _formatNumber.formatNumber)(count)));
64
+ }
9
65
  };
10
66
  var _default = defaultTemplates;
11
67
  exports.default = _default;
@@ -4,10 +4,45 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
8
+ var _preact = require("preact");
9
+
10
+ var _formatNumber = require("../../lib/formatNumber.js");
11
+
12
+ var _index = require("../../lib/utils/index.js");
13
+
14
+ /** @jsx h */
7
15
  var defaultTemplates = {
8
- item: "<label class=\"{{cssClasses.label}}\">\n <input type=\"checkbox\"\n class=\"{{cssClasses.checkbox}}\"\n value=\"{{value}}\"\n {{#isRefined}}checked{{/isRefined}} />\n <span class=\"{{cssClasses.labelText}}\">{{#isFromSearch}}{{{highlighted}}}{{/isFromSearch}}{{^isFromSearch}}{{highlighted}}{{/isFromSearch}}</span>\n <span class=\"{{cssClasses.count}}\">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>\n</label>",
9
- showMoreText: "\n {{#isShowingMore}}\n Show less\n {{/isShowingMore}}\n {{^isShowingMore}}\n Show more\n {{/isShowingMore}}\n ",
10
- searchableNoResults: 'No results'
16
+ item: function item(_ref) {
17
+ var cssClasses = _ref.cssClasses,
18
+ count = _ref.count,
19
+ value = _ref.value,
20
+ highlighted = _ref.highlighted,
21
+ isRefined = _ref.isRefined,
22
+ isFromSearch = _ref.isFromSearch;
23
+ return (0, _preact.h)("label", {
24
+ className: (0, _index.cx)(cssClasses.label)
25
+ }, (0, _preact.h)("input", {
26
+ type: "checkbox",
27
+ className: (0, _index.cx)(cssClasses.checkbox),
28
+ value: value,
29
+ defaultChecked: isRefined
30
+ }), (0, _preact.h)("span", {
31
+ className: (0, _index.cx)(cssClasses.labelText),
32
+ dangerouslySetInnerHTML: isFromSearch ? {
33
+ __html: highlighted
34
+ } : undefined
35
+ }, !isFromSearch && highlighted), (0, _preact.h)("span", {
36
+ className: (0, _index.cx)(cssClasses.count)
37
+ }, (0, _formatNumber.formatNumber)(count)));
38
+ },
39
+ showMoreText: function showMoreText(_ref2) {
40
+ var isShowingMore = _ref2.isShowingMore;
41
+ return isShowingMore ? 'Show less' : 'Show more';
42
+ },
43
+ searchableNoResults: function searchableNoResults() {
44
+ return 'No results';
45
+ }
11
46
  };
12
47
  var _default = defaultTemplates;
13
48
  exports.default = _default;
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var defaultTemplates = {
8
- text: '',
8
+ text: function text() {
9
+ return '';
10
+ },
9
11
  button: function button(_ref) {
10
12
  var isRelevantSorted = _ref.isRelevantSorted;
11
13
  return isRelevantSorted ? 'See all results' : 'See relevant results';
@@ -4,10 +4,69 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
8
+ var _preact = require("preact");
9
+
10
+ /** @jsx h */
11
+ var _ref2 = (0, _preact.h)("path", {
12
+ d: "M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z"
13
+ });
14
+
15
+ var _ref4 = (0, _preact.h)("path", {
16
+ d: "M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z"
17
+ });
18
+
19
+ var _ref6 = (0, _preact.h)("g", {
20
+ fill: "none",
21
+ fillRule: "evenodd"
22
+ }, (0, _preact.h)("g", {
23
+ transform: "translate(1 1)",
24
+ strokeWidth: "2"
25
+ }, (0, _preact.h)("circle", {
26
+ strokeOpacity: ".5",
27
+ cx: "18",
28
+ cy: "18",
29
+ r: "18"
30
+ }), (0, _preact.h)("path", {
31
+ d: "M36 18c0-9.94-8.06-18-18-18"
32
+ }, (0, _preact.h)("animateTransform", {
33
+ attributeName: "transform",
34
+ type: "rotate",
35
+ from: "0 18 18",
36
+ to: "360 18 18",
37
+ dur: "1s",
38
+ repeatCount: "indefinite"
39
+ }))));
40
+
7
41
  var defaultTemplate = {
8
- reset: "\n<svg class=\"{{cssClasses.resetIcon}}\" viewBox=\"0 0 20 20\" width=\"10\" height=\"10\">\n <path d=\"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"></path>\n</svg>\n ",
9
- submit: "\n<svg class=\"{{cssClasses.submitIcon}}\" width=\"10\" height=\"10\" viewBox=\"0 0 40 40\">\n <path d=\"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"></path>\n</svg>\n ",
10
- loadingIndicator: "\n<svg class=\"{{cssClasses.loadingIcon}}\" width=\"16\" height=\"16\" viewBox=\"0 0 38 38\" stroke=\"#444\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <g transform=\"translate(1 1)\" strokeWidth=\"2\">\n <circle strokeOpacity=\".5\" cx=\"18\" cy=\"18\" r=\"18\" />\n <path d=\"M36 18c0-9.94-8.06-18-18-18\">\n <animateTransform\n attributeName=\"transform\"\n type=\"rotate\"\n from=\"0 18 18\"\n to=\"360 18 18\"\n dur=\"1s\"\n repeatCount=\"indefinite\"\n />\n </path>\n </g>\n </g>\n</svg>\n "
42
+ reset: function reset(_ref) {
43
+ var cssClasses = _ref.cssClasses;
44
+ return (0, _preact.h)("svg", {
45
+ className: cssClasses.resetIcon,
46
+ viewBox: "0 0 20 20",
47
+ width: "10",
48
+ height: "10"
49
+ }, _ref2);
50
+ },
51
+ submit: function submit(_ref3) {
52
+ var cssClasses = _ref3.cssClasses;
53
+ return (0, _preact.h)("svg", {
54
+ className: cssClasses.submitIcon,
55
+ width: "10",
56
+ height: "10",
57
+ viewBox: "0 0 40 40"
58
+ }, _ref4);
59
+ },
60
+ loadingIndicator: function loadingIndicator(_ref5) {
61
+ var cssClasses = _ref5.cssClasses;
62
+ return (0, _preact.h)("svg", {
63
+ className: cssClasses.loadingIcon,
64
+ width: "16",
65
+ height: "16",
66
+ viewBox: "0 0 38 38",
67
+ stroke: "#444"
68
+ }, _ref6);
69
+ }
11
70
  };
12
71
  var _default = defaultTemplate;
13
72
  exports.default = _default;
@@ -17,6 +17,8 @@ var _index = require("../../lib/utils/index.js");
17
17
 
18
18
  var _suit = require("../../lib/suit.js");
19
19
 
20
+ var _formatNumber = require("../../lib/formatNumber.js");
21
+
20
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
23
 
22
24
  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; }
@@ -30,25 +32,71 @@ var withUsage = (0, _index.createDocumentationMessageGenerator)({
30
32
  });
31
33
  var suit = (0, _suit.component)('Stats');
32
34
  var defaultTemplates = {
33
- text: "\n {{#areHitsSorted}}\n {{#hasNoSortedResults}}No relevant results{{/hasNoSortedResults}}\n {{#hasOneSortedResults}}1 relevant result{{/hasOneSortedResults}}\n {{#hasManySortedResults}}{{#helpers.formatNumber}}{{nbSortedHits}}{{/helpers.formatNumber}} relevant results{{/hasManySortedResults}}\n sorted out of {{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}}\n {{/areHitsSorted}}\n {{^areHitsSorted}}\n {{#hasNoResults}}No results{{/hasNoResults}}\n {{#hasOneResult}}1 result{{/hasOneResult}}\n {{#hasManyResults}}{{#helpers.formatNumber}}{{nbHits}}{{/helpers.formatNumber}} results{{/hasManyResults}}\n {{/areHitsSorted}}\n found in {{processingTimeMS}}ms"
35
+ text: function text(props) {
36
+ return "".concat(props.areHitsSorted ? getSortedResultsSentence(props) : getResultsSentence(props), " found in ").concat(props.processingTimeMS, "ms");
37
+ }
34
38
  };
35
39
  exports.defaultTemplates = defaultTemplates;
36
40
 
37
- var renderer = function renderer(_ref) {
38
- var renderState = _ref.renderState,
39
- cssClasses = _ref.cssClasses,
40
- containerNode = _ref.containerNode,
41
- templates = _ref.templates;
42
- return function (_ref2, isFirstRendering) {
43
- var hitsPerPage = _ref2.hitsPerPage,
44
- nbHits = _ref2.nbHits,
45
- nbSortedHits = _ref2.nbSortedHits,
46
- areHitsSorted = _ref2.areHitsSorted,
47
- nbPages = _ref2.nbPages,
48
- page = _ref2.page,
49
- processingTimeMS = _ref2.processingTimeMS,
50
- query = _ref2.query,
51
- instantSearchInstance = _ref2.instantSearchInstance;
41
+ function getSortedResultsSentence(_ref) {
42
+ var nbHits = _ref.nbHits,
43
+ hasNoSortedResults = _ref.hasNoSortedResults,
44
+ hasOneSortedResults = _ref.hasOneSortedResults,
45
+ hasManySortedResults = _ref.hasManySortedResults,
46
+ nbSortedHits = _ref.nbSortedHits;
47
+ var suffix = "sorted out of ".concat((0, _formatNumber.formatNumber)(nbHits));
48
+
49
+ if (hasNoSortedResults) {
50
+ return "No relevant results ".concat(suffix);
51
+ }
52
+
53
+ if (hasOneSortedResults) {
54
+ return "1 relevant result ".concat(suffix);
55
+ }
56
+
57
+ if (hasManySortedResults) {
58
+ return "".concat((0, _formatNumber.formatNumber)(nbSortedHits || 0), " relevant results ").concat(suffix);
59
+ }
60
+
61
+ return '';
62
+ }
63
+
64
+ function getResultsSentence(_ref2) {
65
+ var nbHits = _ref2.nbHits,
66
+ hasNoResults = _ref2.hasNoResults,
67
+ hasOneResult = _ref2.hasOneResult,
68
+ hasManyResults = _ref2.hasManyResults;
69
+
70
+ if (hasNoResults) {
71
+ return 'No results';
72
+ }
73
+
74
+ if (hasOneResult) {
75
+ return '1 result';
76
+ }
77
+
78
+ if (hasManyResults) {
79
+ return "".concat((0, _formatNumber.formatNumber)(nbHits), " results");
80
+ }
81
+
82
+ return '';
83
+ }
84
+
85
+ var renderer = function renderer(_ref3) {
86
+ var renderState = _ref3.renderState,
87
+ cssClasses = _ref3.cssClasses,
88
+ containerNode = _ref3.containerNode,
89
+ templates = _ref3.templates;
90
+ return function (_ref4, isFirstRendering) {
91
+ var hitsPerPage = _ref4.hitsPerPage,
92
+ nbHits = _ref4.nbHits,
93
+ nbSortedHits = _ref4.nbSortedHits,
94
+ areHitsSorted = _ref4.areHitsSorted,
95
+ nbPages = _ref4.nbPages,
96
+ page = _ref4.page,
97
+ processingTimeMS = _ref4.processingTimeMS,
98
+ query = _ref4.query,
99
+ instantSearchInstance = _ref4.instantSearchInstance;
52
100
 
53
101
  if (isFirstRendering) {
54
102
  renderState.templateProps = (0, _index.prepareTemplateProps)({
@@ -82,12 +130,12 @@ var renderer = function renderer(_ref) {
82
130
 
83
131
 
84
132
  var stats = function stats(widgetParams) {
85
- var _ref3 = widgetParams || {},
86
- container = _ref3.container,
87
- _ref3$cssClasses = _ref3.cssClasses,
88
- userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses,
89
- _ref3$templates = _ref3.templates,
90
- templates = _ref3$templates === void 0 ? {} : _ref3$templates;
133
+ var _ref5 = widgetParams || {},
134
+ container = _ref5.container,
135
+ _ref5$cssClasses = _ref5.cssClasses,
136
+ userCssClasses = _ref5$cssClasses === void 0 ? {} : _ref5$cssClasses,
137
+ _ref5$templates = _ref5.templates,
138
+ templates = _ref5$templates === void 0 ? {} : _ref5$templates;
91
139
 
92
140
  if (!container) {
93
141
  throw new Error(withUsage('The `container` option is required.'));
@@ -5,7 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var defaultTemplates = {
8
- labelText: '{{name}}'
8
+ labelText: function labelText(_ref) {
9
+ var name = _ref.name;
10
+ return name;
11
+ }
9
12
  };
10
13
  var _default = defaultTemplates;
11
14
  exports.default = _default;