instantsearch.js 4.49.0 → 4.49.2

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 (376) hide show
  1. package/README.md +3 -3
  2. package/cjs/components/Answers/Answers.js +6 -16
  3. package/cjs/components/Breadcrumb/Breadcrumb.js +5 -12
  4. package/cjs/components/ClearRefinements/ClearRefinements.js +4 -11
  5. package/cjs/components/CurrentRefinements/CurrentRefinements.js +5 -12
  6. package/cjs/components/GeoSearchControls/GeoSearchButton.js +4 -6
  7. package/cjs/components/GeoSearchControls/GeoSearchControls.js +11 -20
  8. package/cjs/components/GeoSearchControls/GeoSearchToggle.js +4 -6
  9. package/cjs/components/Highlight/Highlight.js +3 -11
  10. package/cjs/components/Hits/Hits.js +8 -20
  11. package/cjs/components/InfiniteHits/InfiniteHits.js +13 -25
  12. package/cjs/components/InternalHighlight/InternalHighlight.js +0 -3
  13. package/cjs/components/MenuSelect/MenuSelect.js +9 -19
  14. package/cjs/components/Pagination/Pagination.js +10 -17
  15. package/cjs/components/Panel/Panel.js +7 -26
  16. package/cjs/components/PoweredBy/PoweredBy.js +4 -5
  17. package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +2 -6
  18. package/cjs/components/RangeInput/RangeInput.js +16 -48
  19. package/cjs/components/RefinementList/RefinementList.js +19 -73
  20. package/cjs/components/RefinementList/RefinementListItem.js +8 -14
  21. package/cjs/components/RelevantSort/RelevantSort.js +4 -8
  22. package/cjs/components/ReverseHighlight/ReverseHighlight.js +3 -11
  23. package/cjs/components/ReverseSnippet/ReverseSnippet.js +3 -11
  24. package/cjs/components/SearchBox/SearchBox.js +25 -69
  25. package/cjs/components/Selector/Selector.js +3 -6
  26. package/cjs/components/Slider/Pit.js +3 -10
  27. package/cjs/components/Slider/Rheostat.js +63 -131
  28. package/cjs/components/Slider/Slider.js +28 -65
  29. package/cjs/components/Snippet/Snippet.js +3 -11
  30. package/cjs/components/Stats/Stats.js +7 -20
  31. package/cjs/components/Template/Template.js +8 -37
  32. package/cjs/components/ToggleRefinement/ToggleRefinement.js +4 -10
  33. package/cjs/components/VoiceSearch/VoiceSearch.js +8 -15
  34. package/cjs/connectors/answers/connectAnswers.js +21 -36
  35. package/cjs/connectors/autocomplete/connectAutocomplete.js +8 -25
  36. package/cjs/connectors/breadcrumb/connectBreadcrumb.js +17 -48
  37. package/cjs/connectors/clear-refinements/connectClearRefinements.js +27 -45
  38. package/cjs/connectors/configure/connectConfigure.js +6 -20
  39. package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -36
  40. package/cjs/connectors/current-refinements/connectCurrentRefinements.js +18 -57
  41. package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -37
  42. package/cjs/connectors/geo-search/connectGeoSearch.js +17 -47
  43. package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -74
  44. package/cjs/connectors/hits/connectHits.js +10 -26
  45. package/cjs/connectors/hits/connectHitsWithInsights.js +0 -4
  46. package/cjs/connectors/hits-per-page/connectHitsPerPage.js +15 -38
  47. package/cjs/connectors/index.js +62 -96
  48. package/cjs/connectors/infinite-hits/connectInfiniteHits.js +26 -62
  49. package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +0 -4
  50. package/cjs/connectors/menu/connectMenu.js +28 -66
  51. package/cjs/connectors/numeric-menu/connectNumericMenu.js +24 -78
  52. package/cjs/connectors/pagination/Paginator.js +3 -20
  53. package/cjs/connectors/pagination/connectPagination.js +8 -25
  54. package/cjs/connectors/powered-by/connectPoweredBy.js +4 -13
  55. package/cjs/connectors/query-rules/connectQueryRules.js +32 -56
  56. package/cjs/connectors/range/connectRange.js +41 -101
  57. package/cjs/connectors/rating-menu/connectRatingMenu.js +23 -79
  58. package/cjs/connectors/refinement-list/connectRefinementList.js +37 -70
  59. package/cjs/connectors/relevant-sort/connectRelevantSort.js +4 -14
  60. package/cjs/connectors/search-box/connectSearchBox.js +7 -23
  61. package/cjs/connectors/sort-by/connectSortBy.js +11 -21
  62. package/cjs/connectors/stats/connectStats.js +4 -11
  63. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +29 -63
  64. package/cjs/connectors/voice-search/connectVoiceSearch.js +13 -35
  65. package/cjs/helpers/components/Highlight.js +4 -12
  66. package/cjs/helpers/components/ReverseHighlight.js +7 -19
  67. package/cjs/helpers/components/ReverseSnippet.js +7 -19
  68. package/cjs/helpers/components/Snippet.js +4 -12
  69. package/cjs/helpers/components/index.js +0 -8
  70. package/cjs/helpers/get-insights-anonymous-user-token.js +7 -12
  71. package/cjs/helpers/highlight.js +10 -16
  72. package/cjs/helpers/index.js +17 -31
  73. package/cjs/helpers/insights.js +5 -17
  74. package/cjs/helpers/reverseHighlight.js +10 -16
  75. package/cjs/helpers/reverseSnippet.js +10 -16
  76. package/cjs/helpers/snippet.js +10 -16
  77. package/cjs/index.js +3 -18
  78. package/cjs/lib/InstantSearch.js +79 -180
  79. package/cjs/lib/createHelpers.js +4 -11
  80. package/cjs/lib/formatNumber.js +0 -1
  81. package/cjs/lib/infiniteHitsCache/index.js +0 -2
  82. package/cjs/lib/infiniteHitsCache/sessionStorage.js +9 -18
  83. package/cjs/lib/insights/client.js +8 -34
  84. package/cjs/lib/insights/index.js +7 -13
  85. package/cjs/lib/insights/listener.js +4 -20
  86. package/cjs/lib/routers/history.js +63 -102
  87. package/cjs/lib/routers/index.js +0 -2
  88. package/cjs/lib/stateMappings/index.js +0 -3
  89. package/cjs/lib/stateMappings/simple.js +6 -13
  90. package/cjs/lib/stateMappings/singleIndex.js +1 -7
  91. package/cjs/lib/suit.js +2 -5
  92. package/cjs/lib/templating/index.js +0 -4
  93. package/cjs/lib/templating/prepareTemplateProps.js +8 -19
  94. package/cjs/lib/templating/renderTemplate.js +9 -24
  95. package/cjs/lib/utils/capitalize.js +0 -1
  96. package/cjs/lib/utils/checkIndexUiState.js +15 -43
  97. package/cjs/lib/utils/checkRendering.js +0 -2
  98. package/cjs/lib/utils/clearRefinements.js +2 -9
  99. package/cjs/lib/utils/concatHighlightedParts.js +1 -3
  100. package/cjs/lib/utils/createConcurrentSafePromise.js +0 -3
  101. package/cjs/lib/utils/createSendEventForFacet.js +7 -14
  102. package/cjs/lib/utils/createSendEventForHits.js +9 -33
  103. package/cjs/lib/utils/debounce.js +0 -3
  104. package/cjs/lib/utils/defer.js +0 -11
  105. package/cjs/lib/utils/detect-insights-client.js +0 -2
  106. package/cjs/lib/utils/documentation.js +2 -5
  107. package/cjs/lib/utils/escape-highlight.js +5 -22
  108. package/cjs/lib/utils/escape-html.js +9 -7
  109. package/cjs/lib/utils/escapeFacetValue.js +1 -5
  110. package/cjs/lib/utils/find.js +2 -5
  111. package/cjs/lib/utils/findIndex.js +0 -3
  112. package/cjs/lib/utils/geo-search.js +14 -34
  113. package/cjs/lib/utils/getAppIdAndApiKey.js +2 -3
  114. package/cjs/lib/utils/getContainerNode.js +0 -6
  115. package/cjs/lib/utils/getHighlightFromSiblings.js +0 -6
  116. package/cjs/lib/utils/getHighlightedParts.js +1 -4
  117. package/cjs/lib/utils/getObjectType.js +0 -1
  118. package/cjs/lib/utils/getPropertyByPath.js +0 -1
  119. package/cjs/lib/utils/getRefinements.js +13 -26
  120. package/cjs/lib/utils/getWidgetAttribute.js +0 -6
  121. package/cjs/lib/utils/hits-absolute-position.js +2 -6
  122. package/cjs/lib/utils/hits-query-id.js +2 -7
  123. package/cjs/lib/utils/index.js +0 -92
  124. package/cjs/lib/utils/isDomElement.js +0 -1
  125. package/cjs/lib/utils/isEqual.js +0 -8
  126. package/cjs/lib/utils/isFacetRefined.js +0 -1
  127. package/cjs/lib/utils/isFiniteNumber.js +0 -1
  128. package/cjs/lib/utils/isIndexWidget.js +0 -1
  129. package/cjs/lib/utils/isPlainObject.js +3 -11
  130. package/cjs/lib/utils/isSpecialClick.js +0 -1
  131. package/cjs/lib/utils/logger.js +3 -13
  132. package/cjs/lib/utils/mergeSearchParameters.js +16 -40
  133. package/cjs/lib/utils/noop.js +0 -1
  134. package/cjs/lib/utils/range.js +8 -14
  135. package/cjs/lib/utils/render-args.js +0 -2
  136. package/cjs/lib/utils/resolveSearchParameters.js +0 -3
  137. package/cjs/lib/utils/reverseHighlightedParts.js +2 -8
  138. package/cjs/lib/utils/safelyRunOnBrowser.js +7 -9
  139. package/cjs/lib/utils/serializer.js +1 -3
  140. package/cjs/lib/utils/setIndexHelperState.js +0 -5
  141. package/cjs/lib/utils/toArray.js +0 -1
  142. package/cjs/lib/utils/typedObject.js +0 -1
  143. package/cjs/lib/utils/uniq.js +0 -1
  144. package/cjs/lib/version.js +1 -1
  145. package/cjs/lib/voiceSearchHelper/index.js +8 -36
  146. package/cjs/middlewares/createInsightsMiddleware.js +15 -44
  147. package/cjs/middlewares/createMetadataMiddleware.js +4 -12
  148. package/cjs/middlewares/createRouterMiddleware.js +8 -19
  149. package/cjs/middlewares/index.js +0 -6
  150. package/cjs/types/algoliasearch.js +0 -2
  151. package/cjs/types/index.js +0 -28
  152. package/cjs/widgets/analytics/analytics.js +12 -47
  153. package/cjs/widgets/answers/answers.js +19 -39
  154. package/cjs/widgets/breadcrumb/breadcrumb.js +18 -38
  155. package/cjs/widgets/clear-refinements/clear-refinements.js +15 -35
  156. package/cjs/widgets/configure/configure.js +2 -10
  157. package/cjs/widgets/configure-related-items/configure-related-items.js +2 -10
  158. package/cjs/widgets/current-refinements/current-refinements.js +12 -30
  159. package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +6 -25
  160. package/cjs/widgets/geo-search/GeoSearchRenderer.js +41 -68
  161. package/cjs/widgets/geo-search/createHTMLMarker.js +30 -60
  162. package/cjs/widgets/geo-search/defaultTemplates.js +0 -3
  163. package/cjs/widgets/geo-search/geo-search.js +27 -59
  164. package/cjs/widgets/hierarchical-menu/defaultTemplates.js +4 -7
  165. package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +28 -47
  166. package/cjs/widgets/hits/hits.js +16 -37
  167. package/cjs/widgets/hits-per-page/hits-per-page.js +13 -31
  168. package/cjs/widgets/index/index.js +49 -95
  169. package/cjs/widgets/index.js +12 -50
  170. package/cjs/widgets/infinite-hits/infinite-hits.js +23 -44
  171. package/cjs/widgets/menu/defaultTemplates.js +3 -6
  172. package/cjs/widgets/menu/menu.js +23 -43
  173. package/cjs/widgets/menu-select/defaultTemplates.js +1 -3
  174. package/cjs/widgets/menu-select/menu-select.js +18 -38
  175. package/cjs/widgets/numeric-menu/defaultTemplates.js +3 -4
  176. package/cjs/widgets/numeric-menu/numeric-menu.js +17 -37
  177. package/cjs/widgets/pagination/pagination.js +32 -53
  178. package/cjs/widgets/panel/panel.js +20 -48
  179. package/cjs/widgets/places/places.js +16 -33
  180. package/cjs/widgets/powered-by/powered-by.js +10 -27
  181. package/cjs/widgets/query-rule-context/query-rule-context.js +2 -13
  182. package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +14 -32
  183. package/cjs/widgets/range-input/range-input.js +23 -50
  184. package/cjs/widgets/range-slider/range-slider.js +28 -53
  185. package/cjs/widgets/rating-menu/defaultTemplates.js +8 -14
  186. package/cjs/widgets/rating-menu/rating-menu.js +17 -38
  187. package/cjs/widgets/refinement-list/defaultTemplates.js +5 -8
  188. package/cjs/widgets/refinement-list/refinement-list.js +39 -60
  189. package/cjs/widgets/relevant-sort/relevant-sort.js +10 -29
  190. package/cjs/widgets/search-box/defaultTemplates.js +0 -5
  191. package/cjs/widgets/search-box/search-box.js +31 -49
  192. package/cjs/widgets/sort-by/sort-by.js +11 -29
  193. package/cjs/widgets/stats/defaultTemplates.js +0 -1
  194. package/cjs/widgets/stats/stats.js +27 -57
  195. package/cjs/widgets/toggle-refinement/toggle-refinement.js +16 -36
  196. package/cjs/widgets/voice-search/defaultTemplates.js +4 -14
  197. package/cjs/widgets/voice-search/voice-search.js +17 -36
  198. package/dist/instantsearch.development.d.ts +8 -6
  199. package/dist/instantsearch.development.js +1725 -3087
  200. package/dist/instantsearch.development.js.map +1 -1
  201. package/dist/instantsearch.production.d.ts +8 -6
  202. package/dist/instantsearch.production.min.d.ts +8 -6
  203. package/dist/instantsearch.production.min.js +2 -2
  204. package/dist/instantsearch.production.min.js.map +1 -1
  205. package/es/components/Answers/Answers.js +6 -11
  206. package/es/components/Breadcrumb/Breadcrumb.js +5 -7
  207. package/es/components/ClearRefinements/ClearRefinements.js +4 -6
  208. package/es/components/CurrentRefinements/CurrentRefinements.js +7 -10
  209. package/es/components/GeoSearchControls/GeoSearchButton.js +6 -6
  210. package/es/components/GeoSearchControls/GeoSearchControls.js +11 -13
  211. package/es/components/GeoSearchControls/GeoSearchToggle.js +6 -6
  212. package/es/components/Highlight/Highlight.js +3 -7
  213. package/es/components/Hits/Hits.js +8 -15
  214. package/es/components/InfiniteHits/InfiniteHits.js +13 -20
  215. package/es/components/MenuSelect/MenuSelect.js +9 -13
  216. package/es/components/Pagination/Pagination.js +12 -15
  217. package/es/components/Panel/Panel.js +7 -20
  218. package/es/components/PoweredBy/PoweredBy.js +6 -5
  219. package/es/components/QueryRuleCustomData/QueryRuleCustomData.js +4 -4
  220. package/es/components/RangeInput/RangeInput.js +16 -43
  221. package/es/components/RefinementList/RefinementList.js +19 -64
  222. package/es/components/RefinementList/RefinementListItem.js +8 -10
  223. package/es/components/RelevantSort/RelevantSort.js +6 -6
  224. package/es/components/ReverseHighlight/ReverseHighlight.js +3 -7
  225. package/es/components/ReverseSnippet/ReverseSnippet.js +3 -7
  226. package/es/components/SearchBox/SearchBox.js +25 -63
  227. package/es/components/Selector/Selector.js +5 -5
  228. package/es/components/Slider/Pit.js +3 -7
  229. package/es/components/Slider/Rheostat.js +64 -129
  230. package/es/components/Slider/Slider.js +28 -58
  231. package/es/components/Snippet/Snippet.js +3 -7
  232. package/es/components/Stats/Stats.js +7 -15
  233. package/es/components/Template/Template.js +8 -32
  234. package/es/components/ToggleRefinement/ToggleRefinement.js +4 -6
  235. package/es/components/VoiceSearch/VoiceSearch.js +10 -13
  236. package/es/connectors/answers/connectAnswers.js +21 -35
  237. package/es/connectors/autocomplete/connectAutocomplete.js +8 -23
  238. package/es/connectors/breadcrumb/connectBreadcrumb.js +17 -46
  239. package/es/connectors/clear-refinements/connectClearRefinements.js +27 -43
  240. package/es/connectors/configure/connectConfigure.js +7 -16
  241. package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -31
  242. package/es/connectors/current-refinements/connectCurrentRefinements.js +18 -55
  243. package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -35
  244. package/es/connectors/geo-search/connectGeoSearch.js +17 -45
  245. package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -72
  246. package/es/connectors/hits/connectHits.js +10 -24
  247. package/es/connectors/hits-per-page/connectHitsPerPage.js +15 -36
  248. package/es/connectors/index.d.ts +2 -1
  249. package/es/connectors/index.js +6 -3
  250. package/es/connectors/infinite-hits/connectInfiniteHits.js +26 -60
  251. package/es/connectors/menu/connectMenu.js +28 -64
  252. package/es/connectors/numeric-menu/connectNumericMenu.js +24 -76
  253. package/es/connectors/pagination/Paginator.js +3 -19
  254. package/es/connectors/pagination/connectPagination.js +8 -21
  255. package/es/connectors/powered-by/connectPoweredBy.js +4 -11
  256. package/es/connectors/query-rules/connectQueryRules.js +32 -54
  257. package/es/connectors/range/connectRange.js +41 -99
  258. package/es/connectors/rating-menu/connectRatingMenu.js +23 -77
  259. package/es/connectors/refinement-list/connectRefinementList.js +37 -68
  260. package/es/connectors/relevant-sort/connectRelevantSort.js +4 -13
  261. package/es/connectors/search-box/connectSearchBox.js +7 -21
  262. package/es/connectors/sort-by/connectSortBy.js +11 -19
  263. package/es/connectors/stats/connectStats.js +4 -9
  264. package/es/connectors/toggle-refinement/connectToggleRefinement.js +29 -61
  265. package/es/connectors/voice-search/connectVoiceSearch.js +13 -31
  266. package/es/helpers/components/Highlight.js +4 -8
  267. package/es/helpers/components/ReverseHighlight.js +7 -15
  268. package/es/helpers/components/ReverseSnippet.js +7 -15
  269. package/es/helpers/components/Snippet.js +4 -8
  270. package/es/helpers/get-insights-anonymous-user-token.js +5 -7
  271. package/es/helpers/highlight.js +9 -11
  272. package/es/helpers/insights.js +3 -10
  273. package/es/helpers/reverseHighlight.js +9 -11
  274. package/es/helpers/reverseSnippet.js +9 -11
  275. package/es/helpers/snippet.js +9 -11
  276. package/es/index.js +0 -2
  277. package/es/lib/InstantSearch.js +79 -170
  278. package/es/lib/createHelpers.js +4 -8
  279. package/es/lib/infiniteHitsCache/sessionStorage.js +9 -16
  280. package/es/lib/insights/client.js +8 -32
  281. package/es/lib/insights/listener.js +6 -18
  282. package/es/lib/routers/history.js +63 -99
  283. package/es/lib/stateMappings/simple.js +6 -12
  284. package/es/lib/stateMappings/singleIndex.js +1 -6
  285. package/es/lib/suit.js +2 -3
  286. package/es/lib/templating/prepareTemplateProps.js +8 -18
  287. package/es/lib/templating/renderTemplate.js +9 -20
  288. package/es/lib/utils/checkIndexUiState.js +18 -40
  289. package/es/lib/utils/clearRefinements.js +2 -8
  290. package/es/lib/utils/concatHighlightedParts.js +1 -1
  291. package/es/lib/utils/createConcurrentSafePromise.js +0 -2
  292. package/es/lib/utils/createSendEventForFacet.js +7 -12
  293. package/es/lib/utils/createSendEventForHits.js +8 -30
  294. package/es/lib/utils/debounce.js +0 -2
  295. package/es/lib/utils/defer.js +0 -10
  296. package/es/lib/utils/documentation.js +2 -3
  297. package/es/lib/utils/escape-highlight.js +3 -16
  298. package/es/lib/utils/escape-html.js +9 -5
  299. package/es/lib/utils/escapeFacetValue.js +0 -2
  300. package/es/lib/utils/find.js +2 -4
  301. package/es/lib/utils/findIndex.js +0 -2
  302. package/es/lib/utils/geo-search.js +14 -32
  303. package/es/lib/utils/getAppIdAndApiKey.js +2 -2
  304. package/es/lib/utils/getContainerNode.js +1 -5
  305. package/es/lib/utils/getHighlightFromSiblings.js +0 -3
  306. package/es/lib/utils/getHighlightedParts.js +1 -2
  307. package/es/lib/utils/getRefinements.js +13 -24
  308. package/es/lib/utils/getWidgetAttribute.js +0 -5
  309. package/es/lib/utils/hits-absolute-position.js +2 -5
  310. package/es/lib/utils/hits-query-id.js +2 -6
  311. package/es/lib/utils/isEqual.js +0 -7
  312. package/es/lib/utils/isPlainObject.js +3 -10
  313. package/es/lib/utils/logger.js +2 -12
  314. package/es/lib/utils/mergeSearchParameters.js +16 -37
  315. package/es/lib/utils/range.js +8 -13
  316. package/es/lib/utils/resolveSearchParameters.js +0 -2
  317. package/es/lib/utils/reverseHighlightedParts.js +2 -6
  318. package/es/lib/utils/safelyRunOnBrowser.js +7 -8
  319. package/es/lib/utils/setIndexHelperState.js +0 -2
  320. package/es/lib/version.d.ts +1 -1
  321. package/es/lib/version.js +1 -1
  322. package/es/lib/voiceSearchHelper/index.js +8 -35
  323. package/es/middlewares/createInsightsMiddleware.js +15 -41
  324. package/es/middlewares/createMetadataMiddleware.js +3 -9
  325. package/es/middlewares/createRouterMiddleware.js +8 -13
  326. package/es/types/index.js +9 -5
  327. package/es/widgets/analytics/analytics.js +12 -45
  328. package/es/widgets/answers/answers.js +19 -28
  329. package/es/widgets/breadcrumb/breadcrumb.js +18 -27
  330. package/es/widgets/clear-refinements/clear-refinements.js +15 -24
  331. package/es/widgets/configure/configure.js +3 -6
  332. package/es/widgets/configure-related-items/configure-related-items.js +2 -7
  333. package/es/widgets/current-refinements/current-refinements.js +12 -21
  334. package/es/widgets/dynamic-widgets/dynamic-widgets.js +6 -20
  335. package/es/widgets/geo-search/GeoSearchRenderer.js +41 -63
  336. package/es/widgets/geo-search/createHTMLMarker.js +30 -59
  337. package/es/widgets/geo-search/defaultTemplates.js +2 -2
  338. package/es/widgets/geo-search/geo-search.js +27 -49
  339. package/es/widgets/hierarchical-menu/defaultTemplates.js +5 -4
  340. package/es/widgets/hierarchical-menu/hierarchical-menu.js +28 -36
  341. package/es/widgets/hits/hits.js +16 -25
  342. package/es/widgets/hits-per-page/hits-per-page.js +13 -22
  343. package/es/widgets/index/index.js +49 -91
  344. package/es/widgets/index.d.ts +2 -1
  345. package/es/widgets/index.js +4 -3
  346. package/es/widgets/infinite-hits/infinite-hits.js +23 -32
  347. package/es/widgets/menu/defaultTemplates.js +4 -3
  348. package/es/widgets/menu/menu.js +23 -32
  349. package/es/widgets/menu-select/defaultTemplates.js +1 -1
  350. package/es/widgets/menu-select/menu-select.js +18 -27
  351. package/es/widgets/numeric-menu/defaultTemplates.js +4 -3
  352. package/es/widgets/numeric-menu/numeric-menu.js +17 -26
  353. package/es/widgets/pagination/pagination.js +32 -44
  354. package/es/widgets/panel/panel.js +20 -40
  355. package/es/widgets/places/places.js +16 -32
  356. package/es/widgets/powered-by/powered-by.js +10 -18
  357. package/es/widgets/query-rule-context/query-rule-context.js +2 -9
  358. package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +13 -22
  359. package/es/widgets/range-input/range-input.js +23 -40
  360. package/es/widgets/range-slider/range-slider.js +28 -44
  361. package/es/widgets/rating-menu/defaultTemplates.js +9 -12
  362. package/es/widgets/rating-menu/rating-menu.js +17 -27
  363. package/es/widgets/refinement-list/defaultTemplates.js +6 -5
  364. package/es/widgets/refinement-list/refinement-list.js +39 -48
  365. package/es/widgets/relevant-sort/relevant-sort.js +10 -19
  366. package/es/widgets/search-box/defaultTemplates.js +1 -4
  367. package/es/widgets/search-box/search-box.js +31 -39
  368. package/es/widgets/sort-by/sort-by.js +11 -20
  369. package/es/widgets/stats/stats.js +26 -45
  370. package/es/widgets/toggle-refinement/toggle-refinement.js +16 -25
  371. package/es/widgets/voice-search/defaultTemplates.js +5 -13
  372. package/es/widgets/voice-search/voice-search.js +17 -26
  373. package/package.json +20 -119
  374. package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.input.js +0 -1
  375. package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.output.js +0 -1
  376. package/CHANGELOG.md +0 -3684
@@ -1,29 +1,16 @@
1
1
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
-
3
2
  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."); }
4
-
5
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
6
-
3
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
7
4
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
8
-
9
- 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; }
10
-
11
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
12
-
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
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; }
14
-
15
8
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
-
17
9
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
18
-
19
10
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
20
-
21
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; }
22
-
23
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
24
-
12
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
25
13
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
26
-
27
14
  import { checkRendering, createDocumentationLink, createDocumentationMessageGenerator, noop, warning } from "../../lib/utils/index.js";
28
15
  var withUsage = createDocumentationMessageGenerator({
29
16
  name: 'rating-menu',
@@ -32,33 +19,27 @@ var withUsage = createDocumentationMessageGenerator({
32
19
  var $$type = 'ais.ratingMenu';
33
20
  var MAX_VALUES_PER_FACET_API_LIMIT = 1000;
34
21
  var STEP = 1;
35
-
36
22
  var createSendEvent = function createSendEvent(_ref) {
37
23
  var instantSearchInstance = _ref.instantSearchInstance,
38
- helper = _ref.helper,
39
- getRefinedStar = _ref.getRefinedStar,
40
- attribute = _ref.attribute;
24
+ helper = _ref.helper,
25
+ getRefinedStar = _ref.getRefinedStar,
26
+ attribute = _ref.attribute;
41
27
  return function () {
42
28
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43
29
  args[_key] = arguments[_key];
44
30
  }
45
-
46
31
  if (args.length === 1) {
47
32
  instantSearchInstance.sendEventToInsights(args[0]);
48
33
  return;
49
34
  }
50
-
51
35
  var eventType = args[0],
52
- facetValue = args[1],
53
- _args$ = args[2],
54
- eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
55
-
36
+ facetValue = args[1],
37
+ _args$ = args[2],
38
+ eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
56
39
  if (eventType !== 'click') {
57
40
  return;
58
41
  }
59
-
60
42
  var isRefined = getRefinedStar() === Number(facetValue);
61
-
62
43
  if (!isRefined) {
63
44
  instantSearchInstance.sendEventToInsights({
64
45
  insightsMethod: 'clickedFilters',
@@ -74,7 +55,6 @@ var createSendEvent = function createSendEvent(_ref) {
74
55
  }
75
56
  };
76
57
  };
77
-
78
58
  /**
79
59
  * **StarRating** connector provides the logic to build a custom widget that will let
80
60
  * the user refine search results based on ratings.
@@ -88,85 +68,68 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
88
68
  checkRendering(renderFn, withUsage());
89
69
  return function (widgetParams) {
90
70
  var _ref2 = widgetParams || {},
91
- attribute = _ref2.attribute,
92
- _ref2$max = _ref2.max,
93
- max = _ref2$max === void 0 ? 5 : _ref2$max;
94
-
71
+ attribute = _ref2.attribute,
72
+ _ref2$max = _ref2.max,
73
+ max = _ref2$max === void 0 ? 5 : _ref2$max;
95
74
  var sendEvent;
96
-
97
75
  if (!attribute) {
98
76
  throw new Error(withUsage('The `attribute` option is required.'));
99
77
  }
100
-
101
78
  var _getRefinedStar = function getRefinedStar(state) {
102
79
  var _values$;
103
-
104
80
  var values = state.getNumericRefinements(attribute);
105
-
106
81
  if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {
107
82
  return undefined;
108
83
  }
109
-
110
84
  return values['>='][0];
111
85
  };
112
-
113
86
  var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {
114
87
  var maxDecimalPlaces = 0;
115
88
  facetResults.forEach(function (facetResult) {
116
89
  var _facetResult$name$spl = facetResult.name.split('.'),
117
- _facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
118
- _facetResult$name$spl3 = _facetResult$name$spl2[1],
119
- decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
120
-
90
+ _facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
91
+ _facetResult$name$spl3 = _facetResult$name$spl2[1],
92
+ decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
121
93
  maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);
122
94
  });
123
95
  return maxDecimalPlaces;
124
96
  };
125
-
126
97
  var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {
127
98
  var maxDecimalPlaces = _ref3.maxDecimalPlaces,
128
- maxFacets = _ref3.maxFacets,
129
- maxValuesPerFacet = _ref3.maxValuesPerFacet;
99
+ maxFacets = _ref3.maxFacets,
100
+ maxValuesPerFacet = _ref3.maxValuesPerFacet;
130
101
  var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));
131
102
  var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);
132
103
  var solutions = [];
133
-
134
104
  if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {
135
105
  solutions.push("- Update your records to lower the precision of the values in the \"".concat(attribute, "\" attribute (for example: ").concat(5.123456789.toPrecision(maxDecimalPlaces + 1), " to ").concat(5.123456789.toPrecision(maxDecimalPlacesInRange + 1), ")"));
136
106
  }
137
-
138
107
  if (maxValuesPerFacet < maxFacetsInRange) {
139
108
  solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat(createDocumentationLink({
140
109
  name: 'configure'
141
110
  }), " and the \"maxValuesPerFacet\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/"));
142
111
  }
143
-
144
112
  return "The ".concat(attribute, " attribute can have ").concat(maxFacets, " different values (0 to ").concat(max, " with a maximum of ").concat(maxDecimalPlaces, " decimals = ").concat(maxFacets, ") but you retrieved only ").concat(maxValuesPerFacet, " facet values. Therefore the number of results that match the refinements can be incorrect.\n ").concat(solutions.length ? "To resolve this problem you can:\n".concat(solutions.join('\n')) : "");
145
113
  };
146
-
147
114
  function getRefinedState(state, facetValue) {
148
115
  var isRefined = _getRefinedStar(state) === Number(facetValue);
149
116
  var emptyState = state.resetPage().removeNumericRefinement(attribute);
150
-
151
117
  if (!isRefined) {
152
118
  return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));
153
119
  }
154
-
155
120
  return emptyState;
156
121
  }
157
-
158
122
  var toggleRefinement = function toggleRefinement(helper, facetValue) {
159
123
  sendEvent('click', facetValue);
160
124
  helper.setState(getRefinedState(helper.state, facetValue)).search();
161
125
  };
162
-
163
126
  var connectorState = {
164
127
  toggleRefinementFactory: function toggleRefinementFactory(helper) {
165
128
  return toggleRefinement.bind(null, helper);
166
129
  },
167
130
  createURLFactory: function createURLFactory(_ref4) {
168
131
  var state = _ref4.state,
169
- createURL = _ref4.createURL;
132
+ createURL = _ref4.createURL;
170
133
  return function (value) {
171
134
  return createURL(getRefinedState(state, value));
172
135
  };
@@ -193,12 +156,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
193
156
  },
194
157
  getWidgetRenderState: function getWidgetRenderState(_ref5) {
195
158
  var helper = _ref5.helper,
196
- results = _ref5.results,
197
- state = _ref5.state,
198
- instantSearchInstance = _ref5.instantSearchInstance,
199
- createURL = _ref5.createURL;
159
+ results = _ref5.results,
160
+ state = _ref5.state,
161
+ instantSearchInstance = _ref5.instantSearchInstance,
162
+ createURL = _ref5.createURL;
200
163
  var facetValues = [];
201
-
202
164
  if (!sendEvent) {
203
165
  sendEvent = createSendEvent({
204
166
  instantSearchInstance: instantSearchInstance,
@@ -209,11 +171,9 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
209
171
  attribute: attribute
210
172
  });
211
173
  }
212
-
213
174
  var refinementIsApplied = false;
214
175
  var totalCount = 0;
215
176
  var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});
216
-
217
177
  if (results && facetResults) {
218
178
  var maxValuesPerFacet = facetResults.length;
219
179
  var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);
@@ -223,9 +183,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
223
183
  maxFacets: maxFacets,
224
184
  maxValuesPerFacet: maxValuesPerFacet
225
185
  })) : void 0;
226
-
227
186
  var refinedStar = _getRefinedStar(state);
228
-
229
187
  var _loop = function _loop(star) {
230
188
  var isRefined = refinedStar === star;
231
189
  refinementIsApplied = refinementIsApplied || isRefined;
@@ -237,17 +195,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
237
195
  return sum + current;
238
196
  }, 0);
239
197
  totalCount += count;
240
-
241
198
  if (refinedStar && !isRefined && count === 0) {
242
199
  // skip count==0 when at least 1 refinement is enabled
243
200
  // eslint-disable-next-line no-continue
244
201
  return "continue";
245
202
  }
246
-
247
203
  var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {
248
204
  return i * STEP < star;
249
205
  });
250
-
251
206
  facetValues.push({
252
207
  stars: stars,
253
208
  name: String(star),
@@ -257,14 +212,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
257
212
  isRefined: isRefined
258
213
  });
259
214
  };
260
-
261
215
  for (var star = STEP; star < max; star += STEP) {
262
216
  var _ret = _loop(star);
263
-
264
217
  if (_ret === "continue") continue;
265
218
  }
266
219
  }
267
-
268
220
  facetValues = facetValues.reverse();
269
221
  var hasNoResults = results ? results.nbHits === 0 : true;
270
222
  return {
@@ -287,13 +239,10 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
287
239
  },
288
240
  getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
289
241
  var searchParameters = _ref7.searchParameters;
290
-
291
242
  var value = _getRefinedStar(searchParameters);
292
-
293
243
  if (typeof value !== 'number') {
294
244
  return uiState;
295
245
  }
296
-
297
246
  return _objectSpread(_objectSpread({}, uiState), {}, {
298
247
  ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
299
248
  });
@@ -303,17 +252,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
303
252
  var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
304
253
  var withoutRefinements = searchParameters.clearRefinements(attribute);
305
254
  var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
306
-
307
255
  if (!value) {
308
256
  return withDisjunctiveFacet.setQueryParameters({
309
257
  numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
310
258
  });
311
259
  }
312
-
313
260
  return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);
314
261
  }
315
262
  };
316
263
  };
317
264
  };
318
-
319
265
  export default connectRatingMenu;
@@ -1,20 +1,14 @@
1
- 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; }
2
-
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
-
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
3
  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
-
7
4
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
8
-
9
5
  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
-
11
6
  import { escapeFacets, TAG_PLACEHOLDER, TAG_REPLACEMENT, checkRendering, createDocumentationMessageGenerator, createSendEventForFacet, noop } from "../../lib/utils/index.js";
12
7
  var withUsage = createDocumentationMessageGenerator({
13
8
  name: 'refinement-list',
14
9
  connector: true
15
10
  });
16
11
  var DEFAULT_SORT = ['isRefined', 'count:desc', 'name:asc'];
17
-
18
12
  /**
19
13
  * **RefinementList** connector provides the logic to build a custom widget that
20
14
  * will let the user filter the results based on the values of a specific facet.
@@ -32,83 +26,71 @@ var connectRefinementList = function connectRefinementList(renderFn) {
32
26
  checkRendering(renderFn, withUsage());
33
27
  return function (widgetParams) {
34
28
  var _ref = widgetParams || {},
35
- attribute = _ref.attribute,
36
- _ref$operator = _ref.operator,
37
- operator = _ref$operator === void 0 ? 'or' : _ref$operator,
38
- _ref$limit = _ref.limit,
39
- limit = _ref$limit === void 0 ? 10 : _ref$limit,
40
- _ref$showMore = _ref.showMore,
41
- showMore = _ref$showMore === void 0 ? false : _ref$showMore,
42
- _ref$showMoreLimit = _ref.showMoreLimit,
43
- showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
44
- _ref$sortBy = _ref.sortBy,
45
- sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
46
- _ref$escapeFacetValue = _ref.escapeFacetValues,
47
- escapeFacetValues = _ref$escapeFacetValue === void 0 ? true : _ref$escapeFacetValue,
48
- _ref$transformItems = _ref.transformItems,
49
- transformItems = _ref$transformItems === void 0 ? function (items) {
50
- return items;
51
- } : _ref$transformItems;
52
-
29
+ attribute = _ref.attribute,
30
+ _ref$operator = _ref.operator,
31
+ operator = _ref$operator === void 0 ? 'or' : _ref$operator,
32
+ _ref$limit = _ref.limit,
33
+ limit = _ref$limit === void 0 ? 10 : _ref$limit,
34
+ _ref$showMore = _ref.showMore,
35
+ showMore = _ref$showMore === void 0 ? false : _ref$showMore,
36
+ _ref$showMoreLimit = _ref.showMoreLimit,
37
+ showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
38
+ _ref$sortBy = _ref.sortBy,
39
+ sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
40
+ _ref$escapeFacetValue = _ref.escapeFacetValues,
41
+ escapeFacetValues = _ref$escapeFacetValue === void 0 ? true : _ref$escapeFacetValue,
42
+ _ref$transformItems = _ref.transformItems,
43
+ transformItems = _ref$transformItems === void 0 ? function (items) {
44
+ return items;
45
+ } : _ref$transformItems;
53
46
  if (!attribute) {
54
47
  throw new Error(withUsage('The `attribute` option is required.'));
55
48
  }
56
-
57
49
  if (!/^(and|or)$/.test(operator)) {
58
50
  throw new Error(withUsage("The `operator` must one of: `\"and\"`, `\"or\"` (got \"".concat(operator, "\").")));
59
51
  }
60
-
61
52
  if (showMore === true && showMoreLimit <= limit) {
62
53
  throw new Error(withUsage('`showMoreLimit` should be greater than `limit`.'));
63
54
  }
64
-
65
55
  var formatItems = function formatItems(_ref2) {
66
56
  var label = _ref2.name,
67
- value = _ref2.escapedValue,
68
- item = _objectWithoutProperties(_ref2, ["name", "escapedValue"]);
69
-
57
+ value = _ref2.escapedValue,
58
+ item = _objectWithoutProperties(_ref2, ["name", "escapedValue"]);
70
59
  return _objectSpread(_objectSpread({}, item), {}, {
71
60
  value: value,
72
61
  label: label,
73
62
  highlighted: label
74
63
  });
75
64
  };
76
-
77
65
  var lastResultsFromMainSearch;
78
66
  var lastItemsFromMainSearch = [];
79
67
  var hasExhaustiveItems = true;
80
68
  var triggerRefine;
81
69
  var sendEvent;
82
- var isShowingMore = false; // Provide the same function to the `renderFn` so that way the user
70
+ var isShowingMore = false;
71
+ // Provide the same function to the `renderFn` so that way the user
83
72
  // has to only bind it once when `isFirstRendering` for instance
84
-
85
73
  var toggleShowMore = function toggleShowMore() {};
86
-
87
74
  function cachedToggleShowMore() {
88
75
  toggleShowMore();
89
76
  }
90
-
91
77
  function createToggleShowMore(renderOptions, widget) {
92
78
  return function () {
93
79
  isShowingMore = !isShowingMore;
94
80
  widget.render(renderOptions);
95
81
  };
96
82
  }
97
-
98
83
  function getLimit() {
99
84
  return isShowingMore ? showMoreLimit : limit;
100
85
  }
101
-
102
86
  var searchForFacetValues = function searchForFacetValues() {
103
87
  return function () {};
104
88
  };
105
-
106
89
  var createSearchForFacetValues = function createSearchForFacetValues(helper, widget) {
107
90
  return function (renderOptions) {
108
91
  return function (query) {
109
92
  var instantSearchInstance = renderOptions.instantSearchInstance,
110
- searchResults = renderOptions.results;
111
-
93
+ searchResults = renderOptions.results;
112
94
  if (query === '' && lastItemsFromMainSearch) {
113
95
  // render with previous data from the helper.
114
96
  renderFn(_objectSpread(_objectSpread({}, widget.getWidgetRenderState(_objectSpread(_objectSpread({}, renderOptions), {}, {
@@ -121,16 +103,16 @@ var connectRefinementList = function connectRefinementList(renderFn) {
121
103
  highlightPreTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPreTag : TAG_REPLACEMENT.highlightPreTag,
122
104
  highlightPostTag: escapeFacetValues ? TAG_PLACEHOLDER.highlightPostTag : TAG_REPLACEMENT.highlightPostTag
123
105
  };
124
- helper.searchForFacetValues(attribute, query, // We cap the `maxFacetHits` value to 100 because the Algolia API
106
+ helper.searchForFacetValues(attribute, query,
107
+ // We cap the `maxFacetHits` value to 100 because the Algolia API
125
108
  // doesn't support a greater number.
126
109
  // See https://www.algolia.com/doc/api-reference/api-parameters/maxFacetHits/
127
110
  Math.min(getLimit(), 100), tags).then(function (results) {
128
111
  var facetValues = escapeFacetValues ? escapeFacets(results.facetHits) : results.facetHits;
129
112
  var normalizedFacetValues = transformItems(facetValues.map(function (_ref3) {
130
113
  var escapedValue = _ref3.escapedValue,
131
- value = _ref3.value,
132
- item = _objectWithoutProperties(_ref3, ["escapedValue", "value"]);
133
-
114
+ value = _ref3.value,
115
+ item = _objectWithoutProperties(_ref3, ["escapedValue", "value"]);
134
116
  return _objectSpread(_objectSpread({}, item), {}, {
135
117
  value: escapedValue,
136
118
  label: value
@@ -152,7 +134,6 @@ var connectRefinementList = function connectRefinementList(renderFn) {
152
134
  };
153
135
  };
154
136
  };
155
-
156
137
  return {
157
138
  $$type: 'ais.refinementList',
158
139
  init: function init(initOptions) {
@@ -172,13 +153,12 @@ var connectRefinementList = function connectRefinementList(renderFn) {
172
153
  },
173
154
  getWidgetRenderState: function getWidgetRenderState(renderOptions) {
174
155
  var results = renderOptions.results,
175
- state = renderOptions.state,
176
- _createURL = renderOptions.createURL,
177
- instantSearchInstance = renderOptions.instantSearchInstance,
178
- helper = renderOptions.helper;
156
+ state = renderOptions.state,
157
+ _createURL = renderOptions.createURL,
158
+ instantSearchInstance = renderOptions.instantSearchInstance,
159
+ helper = renderOptions.helper;
179
160
  var items = [];
180
161
  var facetValues = [];
181
-
182
162
  if (!sendEvent || !triggerRefine || !searchForFacetValues) {
183
163
  sendEvent = createSendEventForFacet({
184
164
  instantSearchInstance: instantSearchInstance,
@@ -186,15 +166,12 @@ var connectRefinementList = function connectRefinementList(renderFn) {
186
166
  attribute: attribute,
187
167
  widgetType: this.$$type
188
168
  });
189
-
190
169
  triggerRefine = function triggerRefine(facetValue) {
191
170
  sendEvent('click', facetValue);
192
171
  helper.toggleFacetRefinement(attribute, facetValue).search();
193
172
  };
194
-
195
173
  searchForFacetValues = createSearchForFacetValues(helper, this);
196
174
  }
197
-
198
175
  if (results) {
199
176
  var values = results.getFacetValues(attribute, {
200
177
  sortBy: sortBy,
@@ -205,24 +182,23 @@ var connectRefinementList = function connectRefinementList(renderFn) {
205
182
  results: results
206
183
  });
207
184
  var maxValuesPerFacetConfig = state.maxValuesPerFacet;
208
- var currentLimit = getLimit(); // If the limit is the max number of facet retrieved it is impossible to know
185
+ var currentLimit = getLimit();
186
+ // If the limit is the max number of facet retrieved it is impossible to know
209
187
  // if the facets are exhaustive. The only moment we are sure it is exhaustive
210
188
  // is when it is strictly under the number requested unless we know that another
211
189
  // widget has requested more values (maxValuesPerFacet > getLimit()).
212
190
  // Because this is used for making the search of facets unable or not, it is important
213
191
  // to be conservative here.
214
-
215
192
  hasExhaustiveItems = maxValuesPerFacetConfig > currentLimit ? facetValues.length <= currentLimit : facetValues.length < currentLimit;
216
193
  lastResultsFromMainSearch = results;
217
194
  lastItemsFromMainSearch = items;
218
-
219
195
  if (renderOptions.results) {
220
196
  toggleShowMore = createToggleShowMore(renderOptions, this);
221
197
  }
222
- } // Do not mistake searchForFacetValues and searchFacetValues which is the actual search
223
- // function
224
-
198
+ }
225
199
 
200
+ // Do not mistake searchForFacetValues and searchFacetValues which is the actual search
201
+ // function
226
202
  var searchFacetValues = searchForFacetValues && searchForFacetValues(renderOptions);
227
203
  var canShowLess = isShowingMore && lastItemsFromMainSearch.length > limit;
228
204
  var canShowMore = showMore && !hasExhaustiveItems;
@@ -248,21 +224,17 @@ var connectRefinementList = function connectRefinementList(renderFn) {
248
224
  var state = _ref4.state;
249
225
  unmountFn();
250
226
  var withoutMaxValuesPerFacet = state.setQueryParameter('maxValuesPerFacet', undefined);
251
-
252
227
  if (operator === 'and') {
253
228
  return withoutMaxValuesPerFacet.removeFacet(attribute);
254
229
  }
255
-
256
230
  return withoutMaxValuesPerFacet.removeDisjunctiveFacet(attribute);
257
231
  },
258
232
  getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
259
233
  var searchParameters = _ref5.searchParameters;
260
234
  var values = operator === 'or' ? searchParameters.getDisjunctiveRefinements(attribute) : searchParameters.getConjunctiveRefinements(attribute);
261
-
262
235
  if (!values.length) {
263
236
  return uiState;
264
237
  }
265
-
266
238
  return _objectSpread(_objectSpread({}, uiState), {}, {
267
239
  refinementList: _objectSpread(_objectSpread({}, uiState.refinementList), {}, _defineProperty({}, attribute, values))
268
240
  });
@@ -276,12 +248,10 @@ var connectRefinementList = function connectRefinementList(renderFn) {
276
248
  var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
277
249
  var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
278
250
  var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
279
-
280
251
  if (!values) {
281
252
  var key = isDisjunctive ? 'disjunctiveFacetsRefinements' : 'facetsRefinements';
282
253
  return withMaxValuesPerFacet.setQueryParameters(_defineProperty({}, key, _objectSpread(_objectSpread({}, withMaxValuesPerFacet[key]), {}, _defineProperty({}, attribute, []))));
283
254
  }
284
-
285
255
  return values.reduce(function (parameters, value) {
286
256
  return isDisjunctive ? parameters.addDisjunctiveFacetRefinement(attribute, value) : parameters.addFacetRefinement(attribute, value);
287
257
  }, withMaxValuesPerFacet);
@@ -289,5 +259,4 @@ var connectRefinementList = function connectRefinementList(renderFn) {
289
259
  };
290
260
  };
291
261
  };
292
-
293
262
  export default connectRefinementList;
@@ -1,11 +1,7 @@
1
- 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; }
2
-
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
-
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
3
  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
-
7
4
  import { noop } from "../../lib/utils/index.js";
8
-
9
5
  var connectRelevantSort = function connectRelevantSort() {
10
6
  var renderFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;
11
7
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
@@ -37,17 +33,14 @@ var connectRelevantSort = function connectRelevantSort() {
37
33
  },
38
34
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
39
35
  var results = _ref2.results,
40
- helper = _ref2.helper;
41
-
36
+ helper = _ref2.helper;
42
37
  if (!connectorState.refine) {
43
38
  connectorState.refine = function (relevancyStrictness) {
44
39
  helper.setQueryParameter('relevancyStrictness', relevancyStrictness).search();
45
40
  };
46
41
  }
47
-
48
42
  var _ref3 = results || {},
49
- appliedRelevancyStrictness = _ref3.appliedRelevancyStrictness;
50
-
43
+ appliedRelevancyStrictness = _ref3.appliedRelevancyStrictness;
51
44
  var isVirtualReplica = appliedRelevancyStrictness !== undefined;
52
45
  return {
53
46
  isRelevantSorted: typeof appliedRelevancyStrictness !== 'undefined' && appliedRelevancyStrictness > 0,
@@ -59,7 +52,6 @@ var connectRelevantSort = function connectRelevantSort() {
59
52
  },
60
53
  getWidgetSearchParameters: function getWidgetSearchParameters(state, _ref4) {
61
54
  var _uiState$relevantSort;
62
-
63
55
  var uiState = _ref4.uiState;
64
56
  return state.setQueryParameter('relevancyStrictness', (_uiState$relevantSort = uiState.relevantSort) !== null && _uiState$relevantSort !== void 0 ? _uiState$relevantSort : state.relevancyStrictness);
65
57
  },
@@ -72,5 +64,4 @@ var connectRelevantSort = function connectRelevantSort() {
72
64
  };
73
65
  };
74
66
  };
75
-
76
67
  export default connectRelevantSort;