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
@@ -4,27 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _index = require("../../lib/utils/index.js");
9
-
10
- 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; }
11
-
12
- 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; }
13
-
8
+ 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; }
9
+ 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; }
14
10
  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; }
15
-
16
11
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
-
18
12
  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."); }
19
-
20
13
  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); }
21
-
22
14
  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; }
23
-
24
- 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; }
25
-
15
+ 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; }
26
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
27
-
28
17
  var withUsage = (0, _index.createDocumentationMessageGenerator)({
29
18
  name: 'range-input',
30
19
  connector: true
@@ -33,17 +22,17 @@ var withUsage = (0, _index.createDocumentationMessageGenerator)({
33
22
  connector: true
34
23
  });
35
24
  var $$type = 'ais.range';
36
-
37
25
  function toPrecision(_ref) {
38
26
  var min = _ref.min,
39
- max = _ref.max,
40
- precision = _ref.precision;
27
+ max = _ref.max,
28
+ precision = _ref.precision;
41
29
  var pow = Math.pow(10, precision);
42
30
  return {
43
31
  min: min ? Math.floor(min * pow) / pow : min,
44
32
  max: max ? Math.ceil(max * pow) / pow : max
45
33
  };
46
34
  }
35
+
47
36
  /**
48
37
  * **Range** connector provides the logic to create custom widget that will let
49
38
  * the user refine results using a numeric range.
@@ -51,32 +40,26 @@ function toPrecision(_ref) {
51
40
  * This connectors provides a `refine()` function that accepts bounds. It will also provide
52
41
  * information about the min and max bounds for the current result set.
53
42
  */
54
-
55
-
56
43
  var connectRange = function connectRange(renderFn) {
57
44
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _index.noop;
58
45
  (0, _index.checkRendering)(renderFn, withUsage());
59
46
  return function (widgetParams) {
60
47
  var _ref2 = widgetParams || {},
61
- _ref2$attribute = _ref2.attribute,
62
- attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,
63
- minBound = _ref2.min,
64
- maxBound = _ref2.max,
65
- _ref2$precision = _ref2.precision,
66
- precision = _ref2$precision === void 0 ? 0 : _ref2$precision;
67
-
48
+ _ref2$attribute = _ref2.attribute,
49
+ attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,
50
+ minBound = _ref2.min,
51
+ maxBound = _ref2.max,
52
+ _ref2$precision = _ref2.precision,
53
+ precision = _ref2$precision === void 0 ? 0 : _ref2$precision;
68
54
  if (!attribute) {
69
55
  throw new Error(withUsage('The `attribute` option is required.'));
70
56
  }
71
-
72
57
  if ((0, _index.isFiniteNumber)(minBound) && (0, _index.isFiniteNumber)(maxBound) && minBound > maxBound) {
73
58
  throw new Error(withUsage("The `max` option can't be lower than `min`."));
74
59
  }
75
-
76
60
  var formatToNumber = function formatToNumber(v) {
77
61
  return Number(Number(v).toFixed(precision));
78
62
  };
79
-
80
63
  var rangeFormatter = {
81
64
  from: function from(v) {
82
65
  return v.toLocaleString();
@@ -84,34 +67,29 @@ var connectRange = function connectRange(renderFn) {
84
67
  to: function to(v) {
85
68
  return formatToNumber(v).toLocaleString();
86
69
  }
87
- }; // eslint-disable-next-line complexity
70
+ };
88
71
 
72
+ // eslint-disable-next-line complexity
89
73
  var getRefinedState = function getRefinedState(helper, currentRange, nextMin, nextMax) {
90
74
  var resolvedState = helper.state;
91
75
  var currentRangeMin = currentRange.min,
92
- currentRangeMax = currentRange.max;
93
-
76
+ currentRangeMax = currentRange.max;
94
77
  var _ref3 = resolvedState.getNumericRefinement(attribute, '>=') || [],
95
- _ref4 = _slicedToArray(_ref3, 1),
96
- min = _ref4[0];
97
-
78
+ _ref4 = _slicedToArray(_ref3, 1),
79
+ min = _ref4[0];
98
80
  var _ref5 = resolvedState.getNumericRefinement(attribute, '<=') || [],
99
- _ref6 = _slicedToArray(_ref5, 1),
100
- max = _ref6[0];
101
-
81
+ _ref6 = _slicedToArray(_ref5, 1),
82
+ max = _ref6[0];
102
83
  var isResetMin = nextMin === undefined || nextMin === '';
103
84
  var isResetMax = nextMax === undefined || nextMax === '';
104
-
105
85
  var _toPrecision = toPrecision({
106
- min: !isResetMin ? parseFloat(nextMin) : undefined,
107
- max: !isResetMax ? parseFloat(nextMax) : undefined,
108
- precision: precision
109
- }),
110
- nextMinAsNumber = _toPrecision.min,
111
- nextMaxAsNumber = _toPrecision.max;
112
-
86
+ min: !isResetMin ? parseFloat(nextMin) : undefined,
87
+ max: !isResetMax ? parseFloat(nextMax) : undefined,
88
+ precision: precision
89
+ }),
90
+ nextMinAsNumber = _toPrecision.min,
91
+ nextMaxAsNumber = _toPrecision.max;
113
92
  var newNextMin;
114
-
115
93
  if (!(0, _index.isFiniteNumber)(minBound) && currentRangeMin === nextMinAsNumber) {
116
94
  newNextMin = undefined;
117
95
  } else if ((0, _index.isFiniteNumber)(minBound) && isResetMin) {
@@ -119,9 +97,7 @@ var connectRange = function connectRange(renderFn) {
119
97
  } else {
120
98
  newNextMin = nextMinAsNumber;
121
99
  }
122
-
123
100
  var newNextMax;
124
-
125
101
  if (!(0, _index.isFiniteNumber)(maxBound) && currentRangeMax === nextMaxAsNumber) {
126
102
  newNextMax = undefined;
127
103
  } else if ((0, _index.isFiniteNumber)(maxBound) && isResetMax) {
@@ -129,7 +105,6 @@ var connectRange = function connectRange(renderFn) {
129
105
  } else {
130
106
  newNextMax = nextMaxAsNumber;
131
107
  }
132
-
133
108
  var isResetNewNextMin = newNextMin === undefined;
134
109
  var isGreaterThanCurrentRange = (0, _index.isFiniteNumber)(currentRangeMin) && currentRangeMin <= newNextMin;
135
110
  var isMinValid = isResetNewNextMin || (0, _index.isFiniteNumber)(newNextMin) && (!(0, _index.isFiniteNumber)(currentRangeMin) || isGreaterThanCurrentRange);
@@ -138,24 +113,18 @@ var connectRange = function connectRange(renderFn) {
138
113
  var isMaxValid = isResetNewNextMax || (0, _index.isFiniteNumber)(newNextMax) && (!(0, _index.isFiniteNumber)(currentRangeMax) || isLowerThanRange);
139
114
  var hasMinChange = min !== newNextMin;
140
115
  var hasMaxChange = max !== newNextMax;
141
-
142
116
  if ((hasMinChange || hasMaxChange) && isMinValid && isMaxValid) {
143
117
  resolvedState = resolvedState.removeNumericRefinement(attribute);
144
-
145
118
  if ((0, _index.isFiniteNumber)(newNextMin)) {
146
119
  resolvedState = resolvedState.addNumericRefinement(attribute, '>=', newNextMin);
147
120
  }
148
-
149
121
  if ((0, _index.isFiniteNumber)(newNextMax)) {
150
122
  resolvedState = resolvedState.addNumericRefinement(attribute, '<=', newNextMax);
151
123
  }
152
-
153
124
  return resolvedState.resetPage();
154
125
  }
155
-
156
126
  return null;
157
127
  };
158
-
159
128
  var createSendEvent = function createSendEvent(instantSearchInstance) {
160
129
  return function () {
161
130
  if (arguments.length === 1) {
@@ -164,10 +133,8 @@ var connectRange = function connectRange(renderFn) {
164
133
  }
165
134
  };
166
135
  };
167
-
168
136
  function _getCurrentRange(stats) {
169
137
  var min;
170
-
171
138
  if ((0, _index.isFiniteNumber)(minBound)) {
172
139
  min = minBound;
173
140
  } else if ((0, _index.isFiniteNumber)(stats.min)) {
@@ -175,9 +142,7 @@ var connectRange = function connectRange(renderFn) {
175
142
  } else {
176
143
  min = 0;
177
144
  }
178
-
179
145
  var max;
180
-
181
146
  if ((0, _index.isFiniteNumber)(maxBound)) {
182
147
  max = maxBound;
183
148
  } else if ((0, _index.isFiniteNumber)(stats.max)) {
@@ -185,43 +150,35 @@ var connectRange = function connectRange(renderFn) {
185
150
  } else {
186
151
  max = 0;
187
152
  }
188
-
189
153
  return toPrecision({
190
154
  min: min,
191
155
  max: max,
192
156
  precision: precision
193
157
  });
194
158
  }
195
-
196
159
  function _getCurrentRefinement(helper) {
197
160
  var _ref7 = helper.getNumericRefinement(attribute, '>=') || [],
198
- _ref8 = _slicedToArray(_ref7, 1),
199
- minValue = _ref8[0];
200
-
161
+ _ref8 = _slicedToArray(_ref7, 1),
162
+ minValue = _ref8[0];
201
163
  var _ref9 = helper.getNumericRefinement(attribute, '<=') || [],
202
- _ref10 = _slicedToArray(_ref9, 1),
203
- maxValue = _ref10[0];
204
-
164
+ _ref10 = _slicedToArray(_ref9, 1),
165
+ maxValue = _ref10[0];
205
166
  var min = (0, _index.isFiniteNumber)(minValue) ? minValue : -Infinity;
206
167
  var max = (0, _index.isFiniteNumber)(maxValue) ? maxValue : Infinity;
207
168
  return [min, max];
208
169
  }
209
-
210
170
  function _refine(helper, currentRange) {
211
171
  return function () {
212
172
  var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [undefined, undefined],
213
- _ref12 = _slicedToArray(_ref11, 2),
214
- nextMin = _ref12[0],
215
- nextMax = _ref12[1];
216
-
173
+ _ref12 = _slicedToArray(_ref11, 2),
174
+ nextMin = _ref12[0],
175
+ nextMax = _ref12[1];
217
176
  var refinedState = getRefinedState(helper, currentRange, nextMin, nextMax);
218
-
219
177
  if (refinedState) {
220
178
  helper.setState(refinedState).search();
221
179
  }
222
180
  };
223
181
  }
224
-
225
182
  return {
226
183
  $$type: $$type,
227
184
  init: function init(initOptions) {
@@ -241,8 +198,8 @@ var connectRange = function connectRange(renderFn) {
241
198
  },
242
199
  getWidgetRenderState: function getWidgetRenderState(_ref13) {
243
200
  var results = _ref13.results,
244
- helper = _ref13.helper,
245
- instantSearchInstance = _ref13.instantSearchInstance;
201
+ helper = _ref13.helper,
202
+ instantSearchInstance = _ref13.instantSearchInstance;
246
203
  var facetsFromResults = results && results.disjunctiveFacets || [];
247
204
  var facet = (0, _index.find)(facetsFromResults, function (facetResult) {
248
205
  return facetResult.name === attribute;
@@ -251,13 +208,9 @@ var connectRange = function connectRange(renderFn) {
251
208
  min: undefined,
252
209
  max: undefined
253
210
  };
254
-
255
211
  var currentRange = _getCurrentRange(stats);
256
-
257
212
  var start = _getCurrentRefinement(helper);
258
-
259
213
  var refine;
260
-
261
214
  if (!results) {
262
215
  // On first render pass an empty range
263
216
  // to be able to bypass the validation
@@ -269,7 +222,6 @@ var connectRange = function connectRange(renderFn) {
269
222
  } else {
270
223
  refine = _refine(helper, currentRange);
271
224
  }
272
-
273
225
  return {
274
226
  refine: refine,
275
227
  canRefine: currentRange.min !== currentRange.max,
@@ -289,17 +241,14 @@ var connectRange = function connectRange(renderFn) {
289
241
  },
290
242
  getWidgetUiState: function getWidgetUiState(uiState, _ref15) {
291
243
  var searchParameters = _ref15.searchParameters;
292
-
293
244
  var _searchParameters$get = searchParameters.getNumericRefinements(attribute),
294
- _searchParameters$get2 = _searchParameters$get['>='],
295
- min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,
296
- _searchParameters$get3 = _searchParameters$get['<='],
297
- max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;
298
-
245
+ _searchParameters$get2 = _searchParameters$get['>='],
246
+ min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,
247
+ _searchParameters$get3 = _searchParameters$get['<='],
248
+ max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;
299
249
  if (min.length === 0 && max.length === 0) {
300
250
  return uiState;
301
251
  }
302
-
303
252
  return _objectSpread(_objectSpread({}, uiState), {}, {
304
253
  range: _objectSpread(_objectSpread({}, uiState.range), {}, _defineProperty({}, attribute, "".concat(min, ":").concat(max)))
305
254
  });
@@ -309,41 +258,32 @@ var connectRange = function connectRange(renderFn) {
309
258
  var widgetSearchParameters = searchParameters.addDisjunctiveFacet(attribute).setQueryParameters({
310
259
  numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))
311
260
  });
312
-
313
261
  if ((0, _index.isFiniteNumber)(minBound)) {
314
262
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', minBound);
315
263
  }
316
-
317
264
  if ((0, _index.isFiniteNumber)(maxBound)) {
318
265
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', maxBound);
319
266
  }
320
-
321
267
  var value = uiState.range && uiState.range[attribute];
322
-
323
268
  if (!value || value.indexOf(':') === -1) {
324
269
  return widgetSearchParameters;
325
270
  }
326
-
327
271
  var _value$split$map = value.split(':').map(parseFloat),
328
- _value$split$map2 = _slicedToArray(_value$split$map, 2),
329
- lowerBound = _value$split$map2[0],
330
- upperBound = _value$split$map2[1];
331
-
272
+ _value$split$map2 = _slicedToArray(_value$split$map, 2),
273
+ lowerBound = _value$split$map2[0],
274
+ upperBound = _value$split$map2[1];
332
275
  if ((0, _index.isFiniteNumber)(lowerBound) && (!(0, _index.isFiniteNumber)(minBound) || minBound < lowerBound)) {
333
276
  widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '>=');
334
277
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', lowerBound);
335
278
  }
336
-
337
279
  if ((0, _index.isFiniteNumber)(upperBound) && (!(0, _index.isFiniteNumber)(maxBound) || upperBound < maxBound)) {
338
280
  widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '<=');
339
281
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', upperBound);
340
282
  }
341
-
342
283
  return widgetSearchParameters;
343
284
  }
344
285
  };
345
286
  };
346
287
  };
347
-
348
288
  var _default = connectRange;
349
289
  exports.default = _default;
@@ -4,35 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _index = require("../../lib/utils/index.js");
9
-
10
8
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
11
-
12
9
  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."); }
13
-
14
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
15
-
10
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
16
11
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
17
-
18
- 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; }
19
-
20
- 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; }
21
-
12
+ 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; }
13
+ 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; }
22
14
  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; }
23
-
24
15
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
25
-
26
16
  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."); }
27
-
28
17
  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); }
29
-
30
18
  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; }
31
-
32
- 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; }
33
-
19
+ 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; }
34
20
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
-
36
21
  var withUsage = (0, _index.createDocumentationMessageGenerator)({
37
22
  name: 'rating-menu',
38
23
  connector: true
@@ -40,33 +25,27 @@ var withUsage = (0, _index.createDocumentationMessageGenerator)({
40
25
  var $$type = 'ais.ratingMenu';
41
26
  var MAX_VALUES_PER_FACET_API_LIMIT = 1000;
42
27
  var STEP = 1;
43
-
44
28
  var createSendEvent = function createSendEvent(_ref) {
45
29
  var instantSearchInstance = _ref.instantSearchInstance,
46
- helper = _ref.helper,
47
- getRefinedStar = _ref.getRefinedStar,
48
- attribute = _ref.attribute;
30
+ helper = _ref.helper,
31
+ getRefinedStar = _ref.getRefinedStar,
32
+ attribute = _ref.attribute;
49
33
  return function () {
50
34
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
51
35
  args[_key] = arguments[_key];
52
36
  }
53
-
54
37
  if (args.length === 1) {
55
38
  instantSearchInstance.sendEventToInsights(args[0]);
56
39
  return;
57
40
  }
58
-
59
41
  var eventType = args[0],
60
- facetValue = args[1],
61
- _args$ = args[2],
62
- eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
63
-
42
+ facetValue = args[1],
43
+ _args$ = args[2],
44
+ eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
64
45
  if (eventType !== 'click') {
65
46
  return;
66
47
  }
67
-
68
48
  var isRefined = getRefinedStar() === Number(facetValue);
69
-
70
49
  if (!isRefined) {
71
50
  instantSearchInstance.sendEventToInsights({
72
51
  insightsMethod: 'clickedFilters',
@@ -82,7 +61,6 @@ var createSendEvent = function createSendEvent(_ref) {
82
61
  }
83
62
  };
84
63
  };
85
-
86
64
  /**
87
65
  * **StarRating** connector provides the logic to build a custom widget that will let
88
66
  * the user refine search results based on ratings.
@@ -96,85 +74,68 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
96
74
  (0, _index.checkRendering)(renderFn, withUsage());
97
75
  return function (widgetParams) {
98
76
  var _ref2 = widgetParams || {},
99
- attribute = _ref2.attribute,
100
- _ref2$max = _ref2.max,
101
- max = _ref2$max === void 0 ? 5 : _ref2$max;
102
-
77
+ attribute = _ref2.attribute,
78
+ _ref2$max = _ref2.max,
79
+ max = _ref2$max === void 0 ? 5 : _ref2$max;
103
80
  var sendEvent;
104
-
105
81
  if (!attribute) {
106
82
  throw new Error(withUsage('The `attribute` option is required.'));
107
83
  }
108
-
109
84
  var _getRefinedStar = function getRefinedStar(state) {
110
85
  var _values$;
111
-
112
86
  var values = state.getNumericRefinements(attribute);
113
-
114
87
  if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {
115
88
  return undefined;
116
89
  }
117
-
118
90
  return values['>='][0];
119
91
  };
120
-
121
92
  var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {
122
93
  var maxDecimalPlaces = 0;
123
94
  facetResults.forEach(function (facetResult) {
124
95
  var _facetResult$name$spl = facetResult.name.split('.'),
125
- _facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
126
- _facetResult$name$spl3 = _facetResult$name$spl2[1],
127
- decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
128
-
96
+ _facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
97
+ _facetResult$name$spl3 = _facetResult$name$spl2[1],
98
+ decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
129
99
  maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);
130
100
  });
131
101
  return maxDecimalPlaces;
132
102
  };
133
-
134
103
  var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {
135
104
  var maxDecimalPlaces = _ref3.maxDecimalPlaces,
136
- maxFacets = _ref3.maxFacets,
137
- maxValuesPerFacet = _ref3.maxValuesPerFacet;
105
+ maxFacets = _ref3.maxFacets,
106
+ maxValuesPerFacet = _ref3.maxValuesPerFacet;
138
107
  var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));
139
108
  var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);
140
109
  var solutions = [];
141
-
142
110
  if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {
143
111
  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), ")"));
144
112
  }
145
-
146
113
  if (maxValuesPerFacet < maxFacetsInRange) {
147
114
  solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat((0, _index.createDocumentationLink)({
148
115
  name: 'configure'
149
116
  }), " and the \"maxValuesPerFacet\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/"));
150
117
  }
151
-
152
118
  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')) : "");
153
119
  };
154
-
155
120
  function getRefinedState(state, facetValue) {
156
121
  var isRefined = _getRefinedStar(state) === Number(facetValue);
157
122
  var emptyState = state.resetPage().removeNumericRefinement(attribute);
158
-
159
123
  if (!isRefined) {
160
124
  return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));
161
125
  }
162
-
163
126
  return emptyState;
164
127
  }
165
-
166
128
  var toggleRefinement = function toggleRefinement(helper, facetValue) {
167
129
  sendEvent('click', facetValue);
168
130
  helper.setState(getRefinedState(helper.state, facetValue)).search();
169
131
  };
170
-
171
132
  var connectorState = {
172
133
  toggleRefinementFactory: function toggleRefinementFactory(helper) {
173
134
  return toggleRefinement.bind(null, helper);
174
135
  },
175
136
  createURLFactory: function createURLFactory(_ref4) {
176
137
  var state = _ref4.state,
177
- createURL = _ref4.createURL;
138
+ createURL = _ref4.createURL;
178
139
  return function (value) {
179
140
  return createURL(getRefinedState(state, value));
180
141
  };
@@ -201,12 +162,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
201
162
  },
202
163
  getWidgetRenderState: function getWidgetRenderState(_ref5) {
203
164
  var helper = _ref5.helper,
204
- results = _ref5.results,
205
- state = _ref5.state,
206
- instantSearchInstance = _ref5.instantSearchInstance,
207
- createURL = _ref5.createURL;
165
+ results = _ref5.results,
166
+ state = _ref5.state,
167
+ instantSearchInstance = _ref5.instantSearchInstance,
168
+ createURL = _ref5.createURL;
208
169
  var facetValues = [];
209
-
210
170
  if (!sendEvent) {
211
171
  sendEvent = createSendEvent({
212
172
  instantSearchInstance: instantSearchInstance,
@@ -217,11 +177,9 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
217
177
  attribute: attribute
218
178
  });
219
179
  }
220
-
221
180
  var refinementIsApplied = false;
222
181
  var totalCount = 0;
223
182
  var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});
224
-
225
183
  if (results && facetResults) {
226
184
  var maxValuesPerFacet = facetResults.length;
227
185
  var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);
@@ -231,9 +189,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
231
189
  maxFacets: maxFacets,
232
190
  maxValuesPerFacet: maxValuesPerFacet
233
191
  })) : void 0;
234
-
235
192
  var refinedStar = _getRefinedStar(state);
236
-
237
193
  var _loop = function _loop(star) {
238
194
  var isRefined = refinedStar === star;
239
195
  refinementIsApplied = refinementIsApplied || isRefined;
@@ -245,17 +201,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
245
201
  return sum + current;
246
202
  }, 0);
247
203
  totalCount += count;
248
-
249
204
  if (refinedStar && !isRefined && count === 0) {
250
205
  // skip count==0 when at least 1 refinement is enabled
251
206
  // eslint-disable-next-line no-continue
252
207
  return "continue";
253
208
  }
254
-
255
209
  var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {
256
210
  return i * STEP < star;
257
211
  });
258
-
259
212
  facetValues.push({
260
213
  stars: stars,
261
214
  name: String(star),
@@ -265,14 +218,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
265
218
  isRefined: isRefined
266
219
  });
267
220
  };
268
-
269
221
  for (var star = STEP; star < max; star += STEP) {
270
222
  var _ret = _loop(star);
271
-
272
223
  if (_ret === "continue") continue;
273
224
  }
274
225
  }
275
-
276
226
  facetValues = facetValues.reverse();
277
227
  var hasNoResults = results ? results.nbHits === 0 : true;
278
228
  return {
@@ -295,13 +245,10 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
295
245
  },
296
246
  getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
297
247
  var searchParameters = _ref7.searchParameters;
298
-
299
248
  var value = _getRefinedStar(searchParameters);
300
-
301
249
  if (typeof value !== 'number') {
302
250
  return uiState;
303
251
  }
304
-
305
252
  return _objectSpread(_objectSpread({}, uiState), {}, {
306
253
  ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
307
254
  });
@@ -311,18 +258,15 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
311
258
  var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
312
259
  var withoutRefinements = searchParameters.clearRefinements(attribute);
313
260
  var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
314
-
315
261
  if (!value) {
316
262
  return withDisjunctiveFacet.setQueryParameters({
317
263
  numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
318
264
  });
319
265
  }
320
-
321
266
  return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);
322
267
  }
323
268
  };
324
269
  };
325
270
  };
326
-
327
271
  var _default = connectRatingMenu;
328
272
  exports.default = _default;