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
@@ -1,2 +1 @@
1
- declare function isSpecialClick(event: MouseEvent): boolean;
2
- export default isSpecialClick;
1
+ export declare function isSpecialClick(event: MouseEvent): boolean;
@@ -1,6 +1,4 @@
1
- function isSpecialClick(event) {
1
+ export function isSpecialClick(event) {
2
2
  var isMiddleClick = event.button === 1;
3
3
  return isMiddleClick || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
4
- }
5
-
6
- export default isSpecialClick;
4
+ }
@@ -1,4 +1,4 @@
1
- import noop from "./noop.js";
1
+ import { noop } from "./noop.js";
2
2
 
3
3
  /**
4
4
  * Logs a warning when this function is called, in development environment only.
@@ -1,3 +1,2 @@
1
1
  import type { SearchParameters } from 'algoliasearch-helper';
2
- declare const merge: (...parameters: SearchParameters[]) => SearchParameters;
3
- export default merge;
2
+ export declare const mergeSearchParameters: (...parameters: SearchParameters[]) => SearchParameters;
@@ -8,8 +8,8 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
8
8
 
9
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
10
10
 
11
- import findIndex from "./findIndex.js";
12
- import uniq from "./uniq.js";
11
+ import { findIndex } from "./findIndex.js";
12
+ import { uniq } from "./uniq.js";
13
13
 
14
14
  var mergeWithRest = function mergeWithRest(left, right) {
15
15
  var facets = right.facets,
@@ -107,7 +107,7 @@ var mergeRuleContexts = function mergeRuleContexts(left, right) {
107
107
  return left;
108
108
  };
109
109
 
110
- var merge = function merge() {
110
+ export var mergeSearchParameters = function mergeSearchParameters() {
111
111
  for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) {
112
112
  parameters[_key] = arguments[_key];
113
113
  }
@@ -125,6 +125,4 @@ var merge = function merge() {
125
125
  var facetsMerged = mergeFacets(ruleContextsMerged, right);
126
126
  return mergeWithRest(facetsMerged, right);
127
127
  });
128
- };
129
-
130
- export default merge;
128
+ };
@@ -1,2 +1 @@
1
- declare function noop(..._args: any[]): void;
2
- export default noop;
1
+ export declare function noop(..._args: any[]): void;
@@ -1,3 +1 @@
1
- function noop() {}
2
-
3
- export default noop;
1
+ export function noop() {}
@@ -14,9 +14,9 @@ export declare type PreparedTemplateProps<TTemplates extends Templates> = {
14
14
  /**
15
15
  * Prepares an object to be passed to the Template widget
16
16
  */
17
- declare function prepareTemplateProps<TTemplates extends Templates>({ defaultTemplates, templates, templatesConfig, }: {
17
+ export declare function prepareTemplateProps<TTemplates extends Templates>({ defaultTemplates, templates, templatesConfig, }: {
18
18
  defaultTemplates: TTemplates;
19
19
  templates?: Partial<TTemplates>;
20
20
  templatesConfig: TemplatesConfig;
21
21
  }): PreparedTemplateProps<TTemplates>;
22
- export default prepareTemplateProps;
22
+ export {};
@@ -16,7 +16,7 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
16
16
 
17
17
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
18
18
 
19
- import uniq from "./uniq.js";
19
+ import { uniq } from "./uniq.js";
20
20
 
21
21
  function prepareTemplates( // can not use = {} here, since the template could have different constraints
22
22
  defaultTemplates) {
@@ -42,7 +42,7 @@ defaultTemplates) {
42
42
  */
43
43
 
44
44
 
45
- function prepareTemplateProps(_ref) {
45
+ export function prepareTemplateProps(_ref) {
46
46
  var defaultTemplates = _ref.defaultTemplates,
47
47
  templates = _ref.templates,
48
48
  templatesConfig = _ref.templatesConfig;
@@ -50,6 +50,4 @@ function prepareTemplateProps(_ref) {
50
50
  return _objectSpread({
51
51
  templatesConfig: templatesConfig
52
52
  }, preparedTemplates);
53
- }
54
-
55
- export default prepareTemplateProps;
53
+ }
@@ -3,5 +3,5 @@ declare type RangeOptions = {
3
3
  end: number;
4
4
  step?: number;
5
5
  };
6
- declare function range({ start, end, step }: RangeOptions): number[];
7
- export default range;
6
+ export declare function range({ start, end, step }: RangeOptions): number[];
7
+ export {};
@@ -10,7 +10,7 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
10
10
 
11
11
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
12
 
13
- function range(_ref) {
13
+ export function range(_ref) {
14
14
  var _ref$start = _ref.start,
15
15
  start = _ref$start === void 0 ? 0 : _ref$start,
16
16
  end = _ref.end,
@@ -27,6 +27,4 @@ function range(_ref) {
27
27
  return _toConsumableArray(Array(arrayLength)).map(function (_, current) {
28
28
  return start + current * limitStep;
29
29
  });
30
- }
31
-
32
- export default range;
30
+ }
@@ -1,12 +1,12 @@
1
1
  import type { HoganOptions } from 'hogan.js';
2
2
  import type { Templates, HoganHelpers } from '../../types';
3
- import type { BindEventForHits } from './createSendEventForHits';
4
- declare function renderTemplate({ templates, templateKey, compileOptions, helpers, data, bindEvent, }: {
3
+ import type { BindEventForHits, SendEventForHits } from './createSendEventForHits';
4
+ export declare function renderTemplate({ templates, templateKey, compileOptions, helpers, data, bindEvent, sendEvent, }: {
5
5
  templates: Templates;
6
6
  templateKey: string;
7
7
  compileOptions?: HoganOptions;
8
8
  helpers?: HoganHelpers;
9
9
  data?: Record<string, any>;
10
10
  bindEvent?: BindEventForHits;
11
- }): string;
12
- export default renderTemplate;
11
+ sendEvent?: SendEventForHits;
12
+ }): string | import("preact").VNode<{}> | import("preact").VNode<{}>[];
@@ -7,6 +7,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
7
7
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
8
8
 
9
9
  import hogan from 'hogan.js';
10
+ import { Highlight, ReverseHighlight, ReverseSnippet, Snippet } from "../../helpers/components/index.js";
11
+ import { html } from 'htm/preact';
10
12
 
11
13
  // We add all our template helper methods to the template as lambdas. Note
12
14
  // that lambdas in Mustache are supposed to accept a second argument of
@@ -31,13 +33,14 @@ function transformHelpersToHogan() {
31
33
  }, {});
32
34
  }
33
35
 
34
- function renderTemplate(_ref) {
36
+ export function renderTemplate(_ref) {
35
37
  var templates = _ref.templates,
36
38
  templateKey = _ref.templateKey,
37
39
  compileOptions = _ref.compileOptions,
38
40
  helpers = _ref.helpers,
39
41
  data = _ref.data,
40
- bindEvent = _ref.bindEvent;
42
+ bindEvent = _ref.bindEvent,
43
+ sendEvent = _ref.sendEvent;
41
44
  var template = templates[templateKey];
42
45
 
43
46
  if (typeof template !== 'string' && typeof template !== 'function') {
@@ -45,7 +48,17 @@ function renderTemplate(_ref) {
45
48
  }
46
49
 
47
50
  if (typeof template === 'function') {
48
- return template(data, bindEvent);
51
+ // @MAJOR no longer pass bindEvent when string templates are removed
52
+ var params = bindEvent || {};
53
+ params.html = html;
54
+ params.sendEvent = sendEvent;
55
+ params.components = {
56
+ Highlight: Highlight,
57
+ ReverseHighlight: ReverseHighlight,
58
+ Snippet: Snippet,
59
+ ReverseSnippet: ReverseSnippet
60
+ };
61
+ return template(data, params);
49
62
  }
50
63
 
51
64
  var transformedHelpers = transformHelpersToHogan(helpers, compileOptions, data);
@@ -54,6 +67,4 @@ function renderTemplate(_ref) {
54
67
  })).replace(/[ \n\r\t\f\xA0]+/g, function (spaces) {
55
68
  return spaces.replace(/(^|\xA0+)[^\xA0]+/g, '$1 ');
56
69
  }).trim();
57
- }
58
-
59
- export default renderTemplate;
70
+ }
@@ -1,4 +1,3 @@
1
1
  import type { SearchParameters } from 'algoliasearch-helper';
2
2
  import type { IndexWidget } from '../../widgets/index/index';
3
- declare const resolveSearchParameters: (current: IndexWidget) => SearchParameters[];
4
- export default resolveSearchParameters;
3
+ export declare function resolveSearchParameters(current: IndexWidget): SearchParameters[];
@@ -1,4 +1,4 @@
1
- var resolveSearchParameters = function resolveSearchParameters(current) {
1
+ export function resolveSearchParameters(current) {
2
2
  var parent = current.getParent();
3
3
  var states = [current.getHelper().state];
4
4
 
@@ -8,6 +8,4 @@ var resolveSearchParameters = function resolveSearchParameters(current) {
8
8
  }
9
9
 
10
10
  return states;
11
- };
12
-
13
- export default resolveSearchParameters;
11
+ }
@@ -1,5 +1,5 @@
1
1
  import type { HighlightedParts } from '../../types';
2
- export default function reverseHighlightedParts(parts: HighlightedParts[]): {
2
+ export declare function reverseHighlightedParts(parts: HighlightedParts[]): {
3
3
  isHighlighted: boolean;
4
4
  value: string;
5
5
  }[];
@@ -4,8 +4,8 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
- import getHighlightFromSiblings from "./getHighlightFromSiblings.js";
8
- export default function reverseHighlightedParts(parts) {
7
+ import { getHighlightFromSiblings } from "./getHighlightFromSiblings.js";
8
+ export function reverseHighlightedParts(parts) {
9
9
  if (!parts.some(function (part) {
10
10
  return part.isHighlighted;
11
11
  })) {
@@ -0,0 +1,3 @@
1
+ import type { UiState } from '../../types';
2
+ import type { IndexWidget } from '../../widgets/index/index';
3
+ export declare function setIndexHelperState<TUiState extends UiState>(finalUiState: TUiState, indexWidget: IndexWidget): void;
@@ -0,0 +1,19 @@
1
+ import { isIndexWidget } from "./isIndexWidget.js";
2
+ import { checkIndexUiState } from "./checkIndexUiState.js";
3
+ export function setIndexHelperState(finalUiState, indexWidget) {
4
+ var nextIndexUiState = finalUiState[indexWidget.getIndexId()] || {};
5
+
6
+ if (process.env.NODE_ENV === 'development') {
7
+ checkIndexUiState({
8
+ index: indexWidget,
9
+ indexUiState: nextIndexUiState
10
+ });
11
+ }
12
+
13
+ indexWidget.getHelper().setState(indexWidget.getWidgetSearchParameters(indexWidget.getHelper().state, {
14
+ uiState: nextIndexUiState
15
+ }));
16
+ indexWidget.getWidgets().filter(isIndexWidget).forEach(function (widget) {
17
+ return setIndexHelperState(finalUiState, widget);
18
+ });
19
+ }
@@ -1,2 +1,3 @@
1
- declare function toArray(value: any): any[];
2
- export default toArray;
1
+ declare type ToArray<T> = T extends unknown[] ? T : T[];
2
+ export declare function toArray<T>(value: T): ToArray<T>;
3
+ export {};
@@ -1,5 +1,3 @@
1
- function toArray(value) {
1
+ export function toArray(value) {
2
2
  return Array.isArray(value) ? value : [value];
3
- }
4
-
5
- export default toArray;
3
+ }
@@ -1,2 +1 @@
1
- declare function uniq<TItem>(array: TItem[]): TItem[];
2
- export default uniq;
1
+ export declare function uniq<TItem>(array: TItem[]): TItem[];
@@ -1,7 +1,5 @@
1
- function uniq(array) {
1
+ export function uniq(array) {
2
2
  return array.filter(function (value, index, self) {
3
3
  return self.indexOf(value) === index;
4
4
  });
5
- }
6
-
7
- export default uniq;
5
+ }
@@ -1,2 +1,2 @@
1
- declare const _default: "4.45.1";
1
+ declare const _default: "4.46.1";
2
2
  export default _default;
package/es/lib/version.js CHANGED
@@ -1 +1 @@
1
- export default '4.45.1';
1
+ export default '4.46.1';
@@ -18,7 +18,6 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
18
 
19
19
  import { getInsightsAnonymousUserTokenInternal } from "../helpers/index.js";
20
20
  import { warning, noop, getAppIdAndApiKey, find } from "../lib/utils/index.js";
21
- import connectConfigure from "../connectors/configure/connectConfigure.js";
22
21
  export var createInsightsMiddleware = function createInsightsMiddleware(props) {
23
22
  var _ref = props || {},
24
23
  _insightsClient = _ref.insightsClient,
@@ -86,31 +85,28 @@ export var createInsightsMiddleware = function createInsightsMiddleware(props) {
86
85
  appId: appId,
87
86
  apiKey: apiKey
88
87
  }, insightsInitParams));
89
- var createWidget = connectConfigure(noop);
90
- var configureClickAnalytics;
91
- var configureUserToken;
88
+ var initialParameters;
89
+ var helper;
92
90
  return {
93
91
  onStateChange: function onStateChange() {},
94
- subscribe: function subscribe() {
92
+ subscribe: function subscribe() {},
93
+ started: function started() {
95
94
  insightsClient('addAlgoliaAgent', 'insights-middleware');
96
- configureClickAnalytics = createWidget({
97
- searchParameters: {
98
- clickAnalytics: true
99
- }
100
- });
101
- instantSearchInstance.addWidgets([configureClickAnalytics]);
95
+ helper = instantSearchInstance.helper;
96
+ initialParameters = {
97
+ userToken: helper.state.userToken,
98
+ clickAnalytics: helper.state.clickAnalytics
99
+ };
100
+ helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, helper.state), {}, {
101
+ clickAnalytics: true
102
+ }));
103
+ instantSearchInstance.scheduleSearch();
102
104
 
103
105
  var setUserTokenToSearch = function setUserTokenToSearch(userToken) {
104
- if (configureUserToken) {
105
- instantSearchInstance.removeWidgets([configureUserToken]);
106
- }
107
-
108
- configureUserToken = createWidget({
109
- searchParameters: {
110
- userToken: userToken
111
- }
112
- });
113
- instantSearchInstance.addWidgets([configureUserToken]);
106
+ helper.overrideStateWithoutTriggeringChangeEvent(_objectSpread(_objectSpread({}, helper.state), {}, {
107
+ userToken: userToken
108
+ }));
109
+ instantSearchInstance.scheduleSearch();
114
110
  };
115
111
 
116
112
  var anonymousUserToken = getInsightsAnonymousUserTokenInternal();
@@ -138,9 +134,7 @@ export var createInsightsMiddleware = function createInsightsMiddleware(props) {
138
134
  if (onEvent) {
139
135
  onEvent(event, _insightsClient);
140
136
  } else if (event.insightsMethod) {
141
- // At this point, instantSearchInstance must be started and
142
- // it means there is a configure widget (added above).
143
- var hasUserToken = Boolean(instantSearchInstance.renderState[instantSearchInstance.indexName].configure.widgetParams.searchParameters.userToken);
137
+ var hasUserToken = Boolean(helper.state.userToken);
144
138
 
145
139
  if (hasUserToken) {
146
140
  insightsClient(event.insightsMethod, event.payload);
@@ -154,10 +148,12 @@ export var createInsightsMiddleware = function createInsightsMiddleware(props) {
154
148
  },
155
149
  unsubscribe: function unsubscribe() {
156
150
  insightsClient('onUserTokenChange', undefined);
157
- instantSearchInstance.removeWidgets([configureClickAnalytics, configureUserToken]);
158
- configureClickAnalytics = undefined;
159
- configureUserToken = undefined;
160
151
  instantSearchInstance.sendEventToInsights = noop;
152
+
153
+ if (helper && initialParameters) {
154
+ helper.setState(_objectSpread(_objectSpread({}, helper.state), initialParameters));
155
+ instantSearchInstance.scheduleSearch();
156
+ }
161
157
  }
162
158
  };
163
159
  };
@@ -85,6 +85,7 @@ export function createMetadataMiddleware() {
85
85
  refNode.appendChild(payloadContainer);
86
86
  }, 0);
87
87
  },
88
+ started: function started() {},
88
89
  unsubscribe: function unsubscribe() {
89
90
  payloadContainer.remove();
90
91
  }
@@ -45,6 +45,7 @@ export var createRouterMiddleware = function createRouterMiddleware() {
45
45
  instantSearchInstance.setUiState(stateMapping.routeToState(route));
46
46
  });
47
47
  },
48
+ started: function started() {},
48
49
  unsubscribe: function unsubscribe() {
49
50
  router.dispose();
50
51
  }
@@ -6,6 +6,7 @@ export declare type MiddlewareDefinition<TUiState extends UiState = UiState> = {
6
6
  uiState: TUiState;
7
7
  }): void;
8
8
  subscribe(): void;
9
+ started(): void;
9
10
  unsubscribe(): void;
10
11
  };
11
12
  export declare type MiddlewareOptions = {
@@ -1,6 +1,19 @@
1
- import type { BindEventForHits } from '../lib/utils';
2
- export declare type Template<TTemplateData = void> = string | ((data: TTemplateData) => string);
3
- export declare type TemplateWithBindEvent<TTemplateData = void> = string | ((data: TTemplateData, bindEvent: BindEventForHits) => string);
1
+ import type { VNode } from 'preact';
2
+ import type { Highlight, ReverseHighlight, ReverseSnippet, Snippet } from '../helpers/components';
3
+ import type { html } from 'htm/preact';
4
+ import type { BindEventForHits, SendEventForHits } from '../lib/utils';
5
+ export declare type Template<TTemplateData = void> = string | ((data: TTemplateData, params: TemplateParams) => VNode | VNode[] | string);
6
+ export declare type TemplateParams = BindEventForHits & {
7
+ html: typeof html;
8
+ components: {
9
+ Highlight: typeof Highlight;
10
+ ReverseHighlight: typeof ReverseHighlight;
11
+ Snippet: typeof Snippet;
12
+ ReverseSnippet: typeof ReverseSnippet;
13
+ };
14
+ sendEvent?: SendEventForHits;
15
+ };
16
+ export declare type TemplateWithBindEvent<TTemplateData = void> = string | ((data: TTemplateData, params: TemplateParams) => VNode | VNode[] | string);
4
17
  export declare type Templates = {
5
18
  [key: string]: Template<any> | TemplateWithBindEvent<any> | undefined;
6
19
  };
@@ -1,6 +1,10 @@
1
1
  var defaultTemplates = {
2
- header: '',
3
- loader: '',
2
+ header: function header() {
3
+ return '';
4
+ },
5
+ loader: function loader() {
6
+ return '';
7
+ },
4
8
  item: function item(_item) {
5
9
  return JSON.stringify(_item);
6
10
  }
@@ -1,5 +1,9 @@
1
1
  var defaultTemplates = {
2
- home: 'Home',
3
- separator: '>'
2
+ home: function home() {
3
+ return 'Home';
4
+ },
5
+ separator: function separator() {
6
+ return '>';
7
+ }
4
8
  };
5
9
  export default defaultTemplates;
@@ -19,7 +19,9 @@ export declare type ClearRefinementsTemplates = Partial<{
19
19
  /**
20
20
  * Template for the content of the button
21
21
  */
22
- resetLabel: Template;
22
+ resetLabel: Template<{
23
+ hasRefinements: boolean;
24
+ }>;
23
25
  }>;
24
26
  export declare type ClearRefinementsWidgetParams = {
25
27
  /**
@@ -1,4 +1,6 @@
1
1
  var defaultTemplates = {
2
- resetLabel: 'Clear refinements'
2
+ resetLabel: function resetLabel() {
3
+ return 'Clear refinements';
4
+ }
3
5
  };
4
6
  export default defaultTemplates;
@@ -1,9 +1,10 @@
1
1
  /// <reference types="google.maps" />
2
+ import type { renderTemplate } from '../../lib/utils';
2
3
  export declare type HTMLMarkerArguments = {
3
4
  __id: string;
4
5
  position: google.maps.LatLngLiteral;
5
6
  map: google.maps.Map;
6
- template: string;
7
+ template: ReturnType<typeof renderTemplate>;
7
8
  title?: string;
8
9
  className: string;
9
10
  anchor?: {
@@ -23,6 +23,8 @@ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.g
23
23
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
24
24
 
25
25
  /* global google EventListener */
26
+ import { render } from 'preact';
27
+
26
28
  var createHTMLMarker = function createHTMLMarker(googleReference) {
27
29
  var HTMLMarker = /*#__PURE__*/function (_googleReference$maps) {
28
30
  _inherits(HTMLMarker, _googleReference$maps);
@@ -66,7 +68,12 @@ var createHTMLMarker = function createHTMLMarker(googleReference) {
66
68
  _this.element = document.createElement('div');
67
69
  _this.element.className = className;
68
70
  _this.element.style.position = 'absolute';
69
- _this.element.innerHTML = template;
71
+
72
+ if (_typeof(template) === 'object') {
73
+ render(template, _this.element);
74
+ } else {
75
+ _this.element.innerHTML = template;
76
+ }
70
77
 
71
78
  _this.setMap(map);
72
79
 
@@ -1,3 +1,4 @@
1
+ /** @jsx h */
1
2
  import type { GeoSearchComponentTemplates } from './geo-search';
2
3
  declare const defaultTemplates: GeoSearchComponentTemplates;
3
4
  export default defaultTemplates;
@@ -1,7 +1,20 @@
1
+ /** @jsx h */
2
+ import { h } from 'preact';
3
+
4
+ var _ref = h("p", null, "Your custom HTML Marker");
5
+
1
6
  var defaultTemplates = {
2
- HTMLMarker: '<p>Your custom HTML Marker</p>',
3
- reset: 'Clear the map refinement',
4
- toggle: 'Search as I move the map',
5
- redo: 'Redo search here'
7
+ HTMLMarker: function HTMLMarker() {
8
+ return _ref;
9
+ },
10
+ reset: function reset() {
11
+ return 'Clear the map refinement';
12
+ },
13
+ toggle: function toggle() {
14
+ return 'Search as I move the map';
15
+ },
16
+ redo: function redo() {
17
+ return 'Redo search here';
18
+ }
6
19
  };
7
20
  export default defaultTemplates;
@@ -1,5 +1,25 @@
1
+ /** @jsx h */
2
+ import { h } from 'preact';
3
+ import { formatNumber } from "../../lib/formatNumber.js";
4
+ import { cx } from "../../lib/utils/index.js";
1
5
  var defaultTemplates = {
2
- item: '<a class="{{cssClasses.link}}" href="{{url}}">' + '<span class="{{cssClasses.label}}">{{label}}</span>' + '<span class="{{cssClasses.count}}">{{#helpers.formatNumber}}{{count}}{{/helpers.formatNumber}}</span>' + '</a>',
3
- showMoreText: "\n {{#isShowingMore}}\n Show less\n {{/isShowingMore}}\n {{^isShowingMore}}\n Show more\n {{/isShowingMore}}\n "
6
+ item: function item(_ref) {
7
+ var url = _ref.url,
8
+ label = _ref.label,
9
+ count = _ref.count,
10
+ cssClasses = _ref.cssClasses;
11
+ return h("a", {
12
+ className: cx(cssClasses.link),
13
+ href: url
14
+ }, h("span", {
15
+ className: cx(cssClasses.label)
16
+ }, label), h("span", {
17
+ className: cx(cssClasses.count)
18
+ }, formatNumber(count)));
19
+ },
20
+ showMoreText: function showMoreText(_ref2) {
21
+ var isShowingMore = _ref2.isShowingMore;
22
+ return isShowingMore ? 'Show less' : 'Show more';
23
+ }
4
24
  };
5
25
  export default defaultTemplates;
@@ -10,6 +10,8 @@ declare type HierarchicalMenuTemplates = Partial<{
10
10
  count: number;
11
11
  isRefined: boolean;
12
12
  url: string;
13
+ label: string;
14
+ cssClasses: HierarchicalMenuCSSClasses;
13
15
  }>;
14
16
  /**
15
17
  * Template used for the show more text, provided with `isShowingMore` data property.
@@ -1,5 +1,7 @@
1
1
  var defaultTemplates = {
2
- empty: 'No results',
2
+ empty: function empty() {
3
+ return 'No results';
4
+ },
3
5
  item: function item(data) {
4
6
  return JSON.stringify(data, null, 2);
5
7
  }
@@ -1,6 +1,7 @@
1
1
  /** @jsx h */
2
2
  import type { HitsConnectorParams, HitsWidgetDescription } from '../../connectors/hits/connectHits';
3
3
  import type { Template, TemplateWithBindEvent, Hit, WidgetFactory } from '../../types';
4
+ import type { SearchResults } from 'algoliasearch-helper';
4
5
  export declare type HitsCSSClasses = Partial<{
5
6
  /**
6
7
  * CSS class to add to the wrapping element.
@@ -25,7 +26,7 @@ export declare type HitsTemplates = Partial<{
25
26
  *
26
27
  * @default 'No Results'
27
28
  */
28
- empty: Template;
29
+ empty: Template<SearchResults>;
29
30
  /**
30
31
  * Template to use for each result. This template will receive an object containing a single record.
31
32
  *
@@ -42,6 +42,5 @@ export declare type IndexWidget = Omit<Widget<IndexWidgetDescription & {
42
42
  }): SearchParameters;
43
43
  refreshUiState(): void;
44
44
  };
45
- export declare function isIndexWidget(widget: Widget | IndexWidget): widget is IndexWidget;
46
45
  declare const index: (widgetParams: IndexWidgetParams) => IndexWidget;
47
46
  export default index;