instantsearch.js 4.49.1 → 4.49.3

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 (396) hide show
  1. package/README.md +14 -8
  2. package/cjs/components/Answers/Answers.js +11 -18
  3. package/cjs/components/Breadcrumb/Breadcrumb.js +6 -13
  4. package/cjs/components/ClearRefinements/ClearRefinements.js +5 -12
  5. package/cjs/components/CurrentRefinements/CurrentRefinements.js +8 -16
  6. package/cjs/components/GeoSearchControls/GeoSearchButton.js +4 -7
  7. package/cjs/components/GeoSearchControls/GeoSearchControls.js +14 -23
  8. package/cjs/components/GeoSearchControls/GeoSearchToggle.js +4 -7
  9. package/cjs/components/Highlight/Highlight.js +5 -12
  10. package/cjs/components/Hits/Hits.js +13 -22
  11. package/cjs/components/InfiniteHits/InfiniteHits.js +18 -27
  12. package/cjs/components/InternalHighlight/InternalHighlight.js +0 -3
  13. package/cjs/components/MenuSelect/MenuSelect.js +12 -22
  14. package/cjs/components/Pagination/Pagination.js +12 -20
  15. package/cjs/components/Panel/Panel.js +9 -28
  16. package/cjs/components/PoweredBy/PoweredBy.js +4 -6
  17. package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +3 -8
  18. package/cjs/components/RangeInput/RangeInput.js +21 -51
  19. package/cjs/components/RefinementList/RefinementList.js +30 -81
  20. package/cjs/components/RefinementList/RefinementListItem.js +9 -15
  21. package/cjs/components/RelevantSort/RelevantSort.js +5 -10
  22. package/cjs/components/ReverseHighlight/ReverseHighlight.js +5 -12
  23. package/cjs/components/ReverseSnippet/ReverseSnippet.js +5 -12
  24. package/cjs/components/SearchBox/SearchBox.js +35 -77
  25. package/cjs/components/Selector/Selector.js +3 -7
  26. package/cjs/components/Slider/Pit.js +7 -11
  27. package/cjs/components/Slider/Rheostat.js +69 -133
  28. package/cjs/components/Slider/Slider.js +39 -72
  29. package/cjs/components/Snippet/Snippet.js +5 -12
  30. package/cjs/components/Stats/Stats.js +13 -22
  31. package/cjs/components/Template/Template.js +17 -44
  32. package/cjs/components/ToggleRefinement/ToggleRefinement.js +5 -11
  33. package/cjs/components/VoiceSearch/VoiceSearch.js +9 -17
  34. package/cjs/connectors/answers/connectAnswers.js +36 -46
  35. package/cjs/connectors/autocomplete/connectAutocomplete.js +21 -35
  36. package/cjs/connectors/breadcrumb/connectBreadcrumb.js +27 -55
  37. package/cjs/connectors/clear-refinements/connectClearRefinements.js +41 -56
  38. package/cjs/connectors/configure/connectConfigure.js +17 -28
  39. package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +21 -43
  40. package/cjs/connectors/current-refinements/connectCurrentRefinements.js +29 -65
  41. package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +27 -45
  42. package/cjs/connectors/geo-search/connectGeoSearch.js +32 -59
  43. package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +50 -82
  44. package/cjs/connectors/hits/connectHits.js +25 -38
  45. package/cjs/connectors/hits/connectHitsWithInsights.js +3 -7
  46. package/cjs/connectors/hits-per-page/connectHitsPerPage.js +26 -46
  47. package/cjs/connectors/index.js +92 -126
  48. package/cjs/connectors/infinite-hits/connectInfiniteHits.js +43 -75
  49. package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +3 -7
  50. package/cjs/connectors/menu/connectMenu.js +39 -73
  51. package/cjs/connectors/numeric-menu/connectNumericMenu.js +37 -86
  52. package/cjs/connectors/pagination/Paginator.js +11 -25
  53. package/cjs/connectors/pagination/connectPagination.js +17 -31
  54. package/cjs/connectors/powered-by/connectPoweredBy.js +13 -19
  55. package/cjs/connectors/query-rules/connectQueryRules.js +44 -65
  56. package/cjs/connectors/range/connectRange.js +72 -129
  57. package/cjs/connectors/rating-menu/connectRatingMenu.js +34 -87
  58. package/cjs/connectors/refinement-list/connectRefinementList.js +51 -79
  59. package/cjs/connectors/relevant-sort/connectRelevantSort.js +11 -18
  60. package/cjs/connectors/search-box/connectSearchBox.js +15 -28
  61. package/cjs/connectors/sort-by/connectSortBy.js +21 -28
  62. package/cjs/connectors/stats/connectStats.js +12 -16
  63. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +44 -75
  64. package/cjs/connectors/voice-search/connectVoiceSearch.js +22 -41
  65. package/cjs/helpers/components/Highlight.js +11 -18
  66. package/cjs/helpers/components/ReverseHighlight.js +19 -26
  67. package/cjs/helpers/components/ReverseSnippet.js +19 -26
  68. package/cjs/helpers/components/Snippet.js +11 -18
  69. package/cjs/helpers/components/index.js +4 -12
  70. package/cjs/helpers/get-insights-anonymous-user-token.js +6 -17
  71. package/cjs/helpers/highlight.js +15 -19
  72. package/cjs/helpers/index.js +23 -37
  73. package/cjs/helpers/insights.js +9 -21
  74. package/cjs/helpers/reverseHighlight.js +16 -20
  75. package/cjs/helpers/reverseSnippet.js +16 -20
  76. package/cjs/helpers/snippet.js +15 -19
  77. package/cjs/index.js +12 -27
  78. package/cjs/lib/InstantSearch.js +108 -207
  79. package/cjs/lib/createHelpers.js +15 -19
  80. package/cjs/lib/formatNumber.js +0 -1
  81. package/cjs/lib/infiniteHitsCache/index.js +1 -3
  82. package/cjs/lib/infiniteHitsCache/sessionStorage.js +14 -22
  83. package/cjs/lib/insights/client.js +17 -40
  84. package/cjs/lib/insights/index.js +9 -15
  85. package/cjs/lib/insights/listener.js +7 -24
  86. package/cjs/lib/routers/history.js +75 -117
  87. package/cjs/lib/routers/index.js +1 -3
  88. package/cjs/lib/stateMappings/index.js +2 -5
  89. package/cjs/lib/stateMappings/simple.js +11 -14
  90. package/cjs/lib/stateMappings/singleIndex.js +6 -8
  91. package/cjs/lib/suit.js +2 -5
  92. package/cjs/lib/templating/index.js +2 -6
  93. package/cjs/lib/templating/prepareTemplateProps.js +14 -22
  94. package/cjs/lib/templating/renderTemplate.js +17 -30
  95. package/cjs/lib/utils/capitalize.js +0 -1
  96. package/cjs/lib/utils/checkIndexUiState.js +19 -47
  97. package/cjs/lib/utils/checkRendering.js +1 -3
  98. package/cjs/lib/utils/clearRefinements.js +2 -9
  99. package/cjs/lib/utils/concatHighlightedParts.js +2 -4
  100. package/cjs/lib/utils/createConcurrentSafePromise.js +0 -3
  101. package/cjs/lib/utils/createSendEventForFacet.js +8 -15
  102. package/cjs/lib/utils/createSendEventForHits.js +10 -34
  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 +1 -3
  106. package/cjs/lib/utils/documentation.js +2 -5
  107. package/cjs/lib/utils/escape-highlight.js +13 -26
  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 +21 -37
  113. package/cjs/lib/utils/getAppIdAndApiKey.js +2 -3
  114. package/cjs/lib/utils/getContainerNode.js +1 -7
  115. package/cjs/lib/utils/getHighlightFromSiblings.js +1 -7
  116. package/cjs/lib/utils/getHighlightedParts.js +2 -5
  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 +30 -45
  120. package/cjs/lib/utils/getWidgetAttribute.js +0 -6
  121. package/cjs/lib/utils/hits-absolute-position.js +6 -7
  122. package/cjs/lib/utils/hits-query-id.js +6 -8
  123. package/cjs/lib/utils/index.js +46 -138
  124. package/cjs/lib/utils/isDomElement.js +0 -1
  125. package/cjs/lib/utils/isEqual.js +2 -7
  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 +6 -16
  132. package/cjs/lib/utils/mergeSearchParameters.js +23 -43
  133. package/cjs/lib/utils/noop.js +0 -1
  134. package/cjs/lib/utils/range.js +9 -15
  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 +7 -10
  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 +2 -7
  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 +12 -37
  146. package/cjs/middlewares/createInsightsMiddleware.js +30 -54
  147. package/cjs/middlewares/createMetadataMiddleware.js +7 -15
  148. package/cjs/middlewares/createRouterMiddleware.js +16 -24
  149. package/cjs/middlewares/index.js +3 -9
  150. package/cjs/types/algoliasearch.js +0 -2
  151. package/cjs/types/index.js +14 -42
  152. package/cjs/widgets/analytics/analytics.js +22 -48
  153. package/cjs/widgets/answers/answers.js +32 -49
  154. package/cjs/widgets/breadcrumb/breadcrumb.js +31 -48
  155. package/cjs/widgets/clear-refinements/clear-refinements.js +28 -45
  156. package/cjs/widgets/configure/configure.js +9 -14
  157. package/cjs/widgets/configure-related-items/configure-related-items.js +9 -14
  158. package/cjs/widgets/current-refinements/current-refinements.js +22 -37
  159. package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +17 -32
  160. package/cjs/widgets/geo-search/GeoSearchRenderer.js +50 -72
  161. package/cjs/widgets/geo-search/createHTMLMarker.js +34 -62
  162. package/cjs/widgets/geo-search/defaultTemplates.js +0 -3
  163. package/cjs/widgets/geo-search/geo-search.js +44 -70
  164. package/cjs/widgets/hierarchical-menu/defaultTemplates.js +5 -9
  165. package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +41 -57
  166. package/cjs/widgets/hits/hits.js +32 -50
  167. package/cjs/widgets/hits-per-page/hits-per-page.js +24 -39
  168. package/cjs/widgets/index/index.js +71 -113
  169. package/cjs/widgets/index.js +47 -85
  170. package/cjs/widgets/infinite-hits/infinite-hits.js +39 -57
  171. package/cjs/widgets/menu/defaultTemplates.js +4 -8
  172. package/cjs/widgets/menu/menu.js +36 -53
  173. package/cjs/widgets/menu-select/defaultTemplates.js +2 -4
  174. package/cjs/widgets/menu-select/menu-select.js +31 -48
  175. package/cjs/widgets/numeric-menu/defaultTemplates.js +3 -5
  176. package/cjs/widgets/numeric-menu/numeric-menu.js +30 -47
  177. package/cjs/widgets/pagination/pagination.js +43 -61
  178. package/cjs/widgets/panel/panel.js +31 -56
  179. package/cjs/widgets/places/places.js +22 -34
  180. package/cjs/widgets/powered-by/powered-by.js +20 -34
  181. package/cjs/widgets/query-rule-context/query-rule-context.js +10 -18
  182. package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +24 -39
  183. package/cjs/widgets/range-input/range-input.js +36 -60
  184. package/cjs/widgets/range-slider/range-slider.js +39 -61
  185. package/cjs/widgets/rating-menu/defaultTemplates.js +9 -16
  186. package/cjs/widgets/rating-menu/rating-menu.js +30 -48
  187. package/cjs/widgets/refinement-list/defaultTemplates.js +6 -10
  188. package/cjs/widgets/refinement-list/refinement-list.js +54 -72
  189. package/cjs/widgets/relevant-sort/relevant-sort.js +21 -37
  190. package/cjs/widgets/search-box/defaultTemplates.js +0 -5
  191. package/cjs/widgets/search-box/search-box.js +42 -57
  192. package/cjs/widgets/sort-by/sort-by.js +21 -36
  193. package/cjs/widgets/stats/defaultTemplates.js +1 -2
  194. package/cjs/widgets/stats/stats.js +40 -67
  195. package/cjs/widgets/toggle-refinement/toggle-refinement.js +29 -46
  196. package/cjs/widgets/voice-search/defaultTemplates.js +4 -14
  197. package/cjs/widgets/voice-search/voice-search.js +28 -44
  198. package/dist/instantsearch.development.d.ts +9 -6
  199. package/dist/instantsearch.development.js +1840 -3142
  200. package/dist/instantsearch.development.js.map +1 -1
  201. package/dist/instantsearch.production.d.ts +9 -6
  202. package/dist/instantsearch.production.min.d.ts +9 -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 +10 -13
  206. package/es/components/Breadcrumb/Breadcrumb.js +5 -8
  207. package/es/components/ClearRefinements/ClearRefinements.js +4 -7
  208. package/es/components/CurrentRefinements/CurrentRefinements.js +5 -10
  209. package/es/components/GeoSearchControls/GeoSearchButton.js +4 -6
  210. package/es/components/GeoSearchControls/GeoSearchControls.js +11 -14
  211. package/es/components/GeoSearchControls/GeoSearchToggle.js +4 -6
  212. package/es/components/Highlight/Highlight.js +4 -7
  213. package/es/components/Hits/Hits.js +12 -17
  214. package/es/components/InfiniteHits/InfiniteHits.js +17 -22
  215. package/es/components/MenuSelect/MenuSelect.js +9 -14
  216. package/es/components/Pagination/Pagination.js +10 -15
  217. package/es/components/Panel/Panel.js +8 -22
  218. package/es/components/PoweredBy/PoweredBy.js +4 -5
  219. package/es/components/QueryRuleCustomData/QueryRuleCustomData.js +2 -4
  220. package/es/components/RangeInput/RangeInput.js +20 -46
  221. package/es/components/RefinementList/RefinementList.js +24 -67
  222. package/es/components/RefinementList/RefinementListItem.js +8 -11
  223. package/es/components/RelevantSort/RelevantSort.js +4 -6
  224. package/es/components/ReverseHighlight/ReverseHighlight.js +4 -7
  225. package/es/components/ReverseSnippet/ReverseSnippet.js +4 -7
  226. package/es/components/SearchBox/SearchBox.js +29 -66
  227. package/es/components/Selector/Selector.js +3 -5
  228. package/es/components/Slider/Pit.js +7 -9
  229. package/es/components/Slider/Rheostat.js +70 -133
  230. package/es/components/Slider/Slider.js +34 -61
  231. package/es/components/Snippet/Snippet.js +4 -7
  232. package/es/components/Stats/Stats.js +12 -17
  233. package/es/components/Template/Template.js +12 -35
  234. package/es/components/ToggleRefinement/ToggleRefinement.js +4 -7
  235. package/es/components/VoiceSearch/VoiceSearch.js +8 -13
  236. package/es/connectors/answers/connectAnswers.js +27 -36
  237. package/es/connectors/autocomplete/connectAutocomplete.js +12 -24
  238. package/es/connectors/breadcrumb/connectBreadcrumb.js +22 -48
  239. package/es/connectors/clear-refinements/connectClearRefinements.js +32 -45
  240. package/es/connectors/configure/connectConfigure.js +11 -17
  241. package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +16 -33
  242. package/es/connectors/current-refinements/connectCurrentRefinements.js +23 -57
  243. package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +20 -36
  244. package/es/connectors/geo-search/connectGeoSearch.js +21 -46
  245. package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +44 -74
  246. package/es/connectors/hits/connectHits.js +14 -25
  247. package/es/connectors/hits-per-page/connectHitsPerPage.js +20 -38
  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 +32 -62
  251. package/es/connectors/menu/connectMenu.js +34 -66
  252. package/es/connectors/numeric-menu/connectNumericMenu.js +31 -78
  253. package/es/connectors/pagination/Paginator.js +8 -21
  254. package/es/connectors/pagination/connectPagination.js +12 -22
  255. package/es/connectors/powered-by/connectPoweredBy.js +8 -12
  256. package/es/connectors/query-rules/connectQueryRules.js +37 -56
  257. package/es/connectors/range/connectRange.js +46 -101
  258. package/es/connectors/rating-menu/connectRatingMenu.js +28 -79
  259. package/es/connectors/refinement-list/connectRefinementList.js +43 -69
  260. package/es/connectors/relevant-sort/connectRelevantSort.js +8 -14
  261. package/es/connectors/search-box/connectSearchBox.js +11 -22
  262. package/es/connectors/sort-by/connectSortBy.js +15 -20
  263. package/es/connectors/stats/connectStats.js +8 -10
  264. package/es/connectors/toggle-refinement/connectToggleRefinement.js +33 -62
  265. package/es/connectors/toggle-refinement/types.js +1 -0
  266. package/es/connectors/voice-search/connectVoiceSearch.js +17 -32
  267. package/es/helpers/components/Highlight.js +5 -8
  268. package/es/helpers/components/ReverseHighlight.js +13 -16
  269. package/es/helpers/components/ReverseSnippet.js +13 -16
  270. package/es/helpers/components/Snippet.js +5 -8
  271. package/es/helpers/get-insights-anonymous-user-token.js +2 -10
  272. package/es/helpers/highlight.js +10 -10
  273. package/es/helpers/insights.js +3 -10
  274. package/es/helpers/reverseHighlight.js +10 -10
  275. package/es/helpers/reverseSnippet.js +10 -10
  276. package/es/helpers/snippet.js +10 -10
  277. package/es/index.js +0 -2
  278. package/es/lib/InstantSearch.js +83 -172
  279. package/es/lib/createHelpers.js +8 -9
  280. package/es/lib/infiniteHitsCache/sessionStorage.js +10 -16
  281. package/es/lib/insights/client.js +12 -33
  282. package/es/lib/insights/listener.js +4 -18
  283. package/es/lib/routers/history.js +69 -108
  284. package/es/lib/stateMappings/simple.js +11 -13
  285. package/es/lib/stateMappings/singleIndex.js +6 -7
  286. package/es/lib/suit.js +2 -3
  287. package/es/lib/templating/prepareTemplateProps.js +13 -20
  288. package/es/lib/templating/renderTemplate.js +12 -21
  289. package/es/lib/utils/checkIndexUiState.js +19 -41
  290. package/es/lib/utils/clearRefinements.js +2 -8
  291. package/es/lib/utils/concatHighlightedParts.js +1 -1
  292. package/es/lib/utils/createConcurrentSafePromise.js +0 -2
  293. package/es/lib/utils/createSendEventForFacet.js +7 -12
  294. package/es/lib/utils/createSendEventForHits.js +8 -30
  295. package/es/lib/utils/debounce.js +0 -2
  296. package/es/lib/utils/defer.js +0 -10
  297. package/es/lib/utils/documentation.js +2 -3
  298. package/es/lib/utils/escape-highlight.js +9 -18
  299. package/es/lib/utils/escape-html.js +9 -5
  300. package/es/lib/utils/escapeFacetValue.js +0 -2
  301. package/es/lib/utils/find.js +2 -4
  302. package/es/lib/utils/findIndex.js +0 -2
  303. package/es/lib/utils/geo-search.js +21 -35
  304. package/es/lib/utils/getAppIdAndApiKey.js +2 -2
  305. package/es/lib/utils/getContainerNode.js +1 -5
  306. package/es/lib/utils/getHighlightFromSiblings.js +0 -3
  307. package/es/lib/utils/getHighlightedParts.js +1 -2
  308. package/es/lib/utils/getRefinements.js +28 -41
  309. package/es/lib/utils/getWidgetAttribute.js +0 -5
  310. package/es/lib/utils/hits-absolute-position.js +6 -6
  311. package/es/lib/utils/hits-query-id.js +6 -7
  312. package/es/lib/utils/isEqual.js +2 -6
  313. package/es/lib/utils/isPlainObject.js +3 -10
  314. package/es/lib/utils/logger.js +4 -14
  315. package/es/lib/utils/mergeSearchParameters.js +21 -38
  316. package/es/lib/utils/range.js +9 -14
  317. package/es/lib/utils/resolveSearchParameters.js +0 -2
  318. package/es/lib/utils/reverseHighlightedParts.js +6 -7
  319. package/es/lib/utils/safelyRunOnBrowser.js +7 -8
  320. package/es/lib/utils/setIndexHelperState.js +0 -2
  321. package/es/lib/version.d.ts +1 -1
  322. package/es/lib/version.js +1 -1
  323. package/es/lib/voiceSearchHelper/index.js +12 -36
  324. package/es/lib/voiceSearchHelper/types.js +1 -0
  325. package/es/middlewares/createInsightsMiddleware.js +21 -42
  326. package/es/middlewares/createMetadataMiddleware.js +3 -9
  327. package/es/middlewares/createRouterMiddleware.js +12 -14
  328. package/es/types/algoliasearch.js +1 -0
  329. package/es/types/component.js +1 -0
  330. package/es/types/connector.js +1 -0
  331. package/es/types/index.js +9 -5
  332. package/es/types/insights.js +1 -0
  333. package/es/types/instantsearch.js +1 -0
  334. package/es/types/middleware.js +1 -0
  335. package/es/types/render-state.js +1 -0
  336. package/es/types/results.js +1 -0
  337. package/es/types/router.js +1 -0
  338. package/es/types/templates.js +1 -0
  339. package/es/types/ui-state.js +1 -0
  340. package/es/types/utils.js +1 -0
  341. package/es/types/widget-factory.js +1 -0
  342. package/es/types/widget.js +1 -0
  343. package/es/widgets/analytics/analytics.js +19 -43
  344. package/es/widgets/answers/answers.js +23 -30
  345. package/es/widgets/breadcrumb/breadcrumb.js +22 -29
  346. package/es/widgets/clear-refinements/clear-refinements.js +19 -26
  347. package/es/widgets/configure/configure.js +7 -7
  348. package/es/widgets/configure-related-items/configure-related-items.js +6 -8
  349. package/es/widgets/current-refinements/current-refinements.js +16 -23
  350. package/es/widgets/dynamic-widgets/dynamic-widgets.js +11 -21
  351. package/es/widgets/geo-search/GeoSearchRenderer.d.js +1 -0
  352. package/es/widgets/geo-search/GeoSearchRenderer.js +47 -65
  353. package/es/widgets/geo-search/createHTMLMarker.d.ts +1 -0
  354. package/es/widgets/geo-search/createHTMLMarker.js +34 -61
  355. package/es/widgets/geo-search/defaultTemplates.js +0 -2
  356. package/es/widgets/geo-search/geo-search.d.ts +1 -0
  357. package/es/widgets/geo-search/geo-search.js +34 -50
  358. package/es/widgets/hierarchical-menu/defaultTemplates.js +4 -4
  359. package/es/widgets/hierarchical-menu/hierarchical-menu.js +32 -38
  360. package/es/widgets/hits/hits.js +20 -27
  361. package/es/widgets/hits-per-page/hits-per-page.js +17 -24
  362. package/es/widgets/index/index.js +55 -93
  363. package/es/widgets/index.d.ts +2 -1
  364. package/es/widgets/index.js +4 -3
  365. package/es/widgets/infinite-hits/infinite-hits.js +27 -34
  366. package/es/widgets/menu/defaultTemplates.js +3 -3
  367. package/es/widgets/menu/menu.js +27 -34
  368. package/es/widgets/menu-select/defaultTemplates.js +1 -1
  369. package/es/widgets/menu-select/menu-select.js +22 -29
  370. package/es/widgets/numeric-menu/defaultTemplates.js +3 -3
  371. package/es/widgets/numeric-menu/numeric-menu.js +21 -28
  372. package/es/widgets/pagination/pagination.js +36 -46
  373. package/es/widgets/panel/panel.js +24 -42
  374. package/es/widgets/places/places.js +22 -33
  375. package/es/widgets/powered-by/powered-by.js +14 -20
  376. package/es/widgets/query-rule-context/query-rule-context.js +6 -10
  377. package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +17 -24
  378. package/es/widgets/range-input/range-input.js +28 -43
  379. package/es/widgets/range-slider/range-slider.js +33 -47
  380. package/es/widgets/rating-menu/defaultTemplates.js +8 -12
  381. package/es/widgets/rating-menu/rating-menu.js +21 -29
  382. package/es/widgets/refinement-list/defaultTemplates.js +5 -5
  383. package/es/widgets/refinement-list/refinement-list.js +43 -50
  384. package/es/widgets/relevant-sort/relevant-sort.js +14 -21
  385. package/es/widgets/search-box/defaultTemplates.js +0 -4
  386. package/es/widgets/search-box/search-box.js +35 -41
  387. package/es/widgets/sort-by/sort-by.js +15 -22
  388. package/es/widgets/stats/stats.js +30 -47
  389. package/es/widgets/toggle-refinement/toggle-refinement.js +20 -27
  390. package/es/widgets/voice-search/defaultTemplates.js +4 -13
  391. package/es/widgets/voice-search/voice-search.js +21 -28
  392. package/package.json +20 -119
  393. package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.input.js +0 -1
  394. package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.output.js +0 -1
  395. package/scripts/transforms/__tests__/addWidget-to-addWidgets.test.js +1 -0
  396. package/CHANGELOG.md +0 -3693
@@ -1,21 +1,15 @@
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
-
5
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
-
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ 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; }
3
+ 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; }
4
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
5
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
6
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
7
7
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
8
-
9
8
  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."); }
10
-
11
9
  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); }
12
-
13
- 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; }
14
-
15
- 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; }
16
-
10
+ 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; }
11
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
17
12
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
18
-
19
13
  import { checkRendering, createDocumentationMessageGenerator, isFiniteNumber, find, noop } from "../../lib/utils/index.js";
20
14
  var withUsage = createDocumentationMessageGenerator({
21
15
  name: 'range-input',
@@ -25,17 +19,17 @@ var withUsage = createDocumentationMessageGenerator({
25
19
  connector: true
26
20
  });
27
21
  var $$type = 'ais.range';
28
-
29
22
  function toPrecision(_ref) {
30
23
  var min = _ref.min,
31
- max = _ref.max,
32
- precision = _ref.precision;
24
+ max = _ref.max,
25
+ precision = _ref.precision;
33
26
  var pow = Math.pow(10, precision);
34
27
  return {
35
28
  min: min ? Math.floor(min * pow) / pow : min,
36
29
  max: max ? Math.ceil(max * pow) / pow : max
37
30
  };
38
31
  }
32
+
39
33
  /**
40
34
  * **Range** connector provides the logic to create custom widget that will let
41
35
  * the user refine results using a numeric range.
@@ -43,32 +37,26 @@ function toPrecision(_ref) {
43
37
  * This connectors provides a `refine()` function that accepts bounds. It will also provide
44
38
  * information about the min and max bounds for the current result set.
45
39
  */
46
-
47
-
48
40
  var connectRange = function connectRange(renderFn) {
49
41
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
50
42
  checkRendering(renderFn, withUsage());
51
43
  return function (widgetParams) {
52
44
  var _ref2 = widgetParams || {},
53
- _ref2$attribute = _ref2.attribute,
54
- attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,
55
- minBound = _ref2.min,
56
- maxBound = _ref2.max,
57
- _ref2$precision = _ref2.precision,
58
- precision = _ref2$precision === void 0 ? 0 : _ref2$precision;
59
-
45
+ _ref2$attribute = _ref2.attribute,
46
+ attribute = _ref2$attribute === void 0 ? '' : _ref2$attribute,
47
+ minBound = _ref2.min,
48
+ maxBound = _ref2.max,
49
+ _ref2$precision = _ref2.precision,
50
+ precision = _ref2$precision === void 0 ? 0 : _ref2$precision;
60
51
  if (!attribute) {
61
52
  throw new Error(withUsage('The `attribute` option is required.'));
62
53
  }
63
-
64
54
  if (isFiniteNumber(minBound) && isFiniteNumber(maxBound) && minBound > maxBound) {
65
55
  throw new Error(withUsage("The `max` option can't be lower than `min`."));
66
56
  }
67
-
68
57
  var formatToNumber = function formatToNumber(v) {
69
58
  return Number(Number(v).toFixed(precision));
70
59
  };
71
-
72
60
  var rangeFormatter = {
73
61
  from: function from(v) {
74
62
  return v.toLocaleString();
@@ -76,34 +64,29 @@ var connectRange = function connectRange(renderFn) {
76
64
  to: function to(v) {
77
65
  return formatToNumber(v).toLocaleString();
78
66
  }
79
- }; // eslint-disable-next-line complexity
67
+ };
80
68
 
69
+ // eslint-disable-next-line complexity
81
70
  var getRefinedState = function getRefinedState(helper, currentRange, nextMin, nextMax) {
82
71
  var resolvedState = helper.state;
83
72
  var currentRangeMin = currentRange.min,
84
- currentRangeMax = currentRange.max;
85
-
73
+ currentRangeMax = currentRange.max;
86
74
  var _ref3 = resolvedState.getNumericRefinement(attribute, '>=') || [],
87
- _ref4 = _slicedToArray(_ref3, 1),
88
- min = _ref4[0];
89
-
75
+ _ref4 = _slicedToArray(_ref3, 1),
76
+ min = _ref4[0];
90
77
  var _ref5 = resolvedState.getNumericRefinement(attribute, '<=') || [],
91
- _ref6 = _slicedToArray(_ref5, 1),
92
- max = _ref6[0];
93
-
78
+ _ref6 = _slicedToArray(_ref5, 1),
79
+ max = _ref6[0];
94
80
  var isResetMin = nextMin === undefined || nextMin === '';
95
81
  var isResetMax = nextMax === undefined || nextMax === '';
96
-
97
82
  var _toPrecision = toPrecision({
98
- min: !isResetMin ? parseFloat(nextMin) : undefined,
99
- max: !isResetMax ? parseFloat(nextMax) : undefined,
100
- precision: precision
101
- }),
102
- nextMinAsNumber = _toPrecision.min,
103
- nextMaxAsNumber = _toPrecision.max;
104
-
83
+ min: !isResetMin ? parseFloat(nextMin) : undefined,
84
+ max: !isResetMax ? parseFloat(nextMax) : undefined,
85
+ precision: precision
86
+ }),
87
+ nextMinAsNumber = _toPrecision.min,
88
+ nextMaxAsNumber = _toPrecision.max;
105
89
  var newNextMin;
106
-
107
90
  if (!isFiniteNumber(minBound) && currentRangeMin === nextMinAsNumber) {
108
91
  newNextMin = undefined;
109
92
  } else if (isFiniteNumber(minBound) && isResetMin) {
@@ -111,9 +94,7 @@ var connectRange = function connectRange(renderFn) {
111
94
  } else {
112
95
  newNextMin = nextMinAsNumber;
113
96
  }
114
-
115
97
  var newNextMax;
116
-
117
98
  if (!isFiniteNumber(maxBound) && currentRangeMax === nextMaxAsNumber) {
118
99
  newNextMax = undefined;
119
100
  } else if (isFiniteNumber(maxBound) && isResetMax) {
@@ -121,7 +102,6 @@ var connectRange = function connectRange(renderFn) {
121
102
  } else {
122
103
  newNextMax = nextMaxAsNumber;
123
104
  }
124
-
125
105
  var isResetNewNextMin = newNextMin === undefined;
126
106
  var isGreaterThanCurrentRange = isFiniteNumber(currentRangeMin) && currentRangeMin <= newNextMin;
127
107
  var isMinValid = isResetNewNextMin || isFiniteNumber(newNextMin) && (!isFiniteNumber(currentRangeMin) || isGreaterThanCurrentRange);
@@ -130,24 +110,18 @@ var connectRange = function connectRange(renderFn) {
130
110
  var isMaxValid = isResetNewNextMax || isFiniteNumber(newNextMax) && (!isFiniteNumber(currentRangeMax) || isLowerThanRange);
131
111
  var hasMinChange = min !== newNextMin;
132
112
  var hasMaxChange = max !== newNextMax;
133
-
134
113
  if ((hasMinChange || hasMaxChange) && isMinValid && isMaxValid) {
135
114
  resolvedState = resolvedState.removeNumericRefinement(attribute);
136
-
137
115
  if (isFiniteNumber(newNextMin)) {
138
116
  resolvedState = resolvedState.addNumericRefinement(attribute, '>=', newNextMin);
139
117
  }
140
-
141
118
  if (isFiniteNumber(newNextMax)) {
142
119
  resolvedState = resolvedState.addNumericRefinement(attribute, '<=', newNextMax);
143
120
  }
144
-
145
121
  return resolvedState.resetPage();
146
122
  }
147
-
148
123
  return null;
149
124
  };
150
-
151
125
  var createSendEvent = function createSendEvent(instantSearchInstance) {
152
126
  return function () {
153
127
  if (arguments.length === 1) {
@@ -156,10 +130,8 @@ var connectRange = function connectRange(renderFn) {
156
130
  }
157
131
  };
158
132
  };
159
-
160
133
  function _getCurrentRange(stats) {
161
134
  var min;
162
-
163
135
  if (isFiniteNumber(minBound)) {
164
136
  min = minBound;
165
137
  } else if (isFiniteNumber(stats.min)) {
@@ -167,9 +139,7 @@ var connectRange = function connectRange(renderFn) {
167
139
  } else {
168
140
  min = 0;
169
141
  }
170
-
171
142
  var max;
172
-
173
143
  if (isFiniteNumber(maxBound)) {
174
144
  max = maxBound;
175
145
  } else if (isFiniteNumber(stats.max)) {
@@ -177,43 +147,35 @@ var connectRange = function connectRange(renderFn) {
177
147
  } else {
178
148
  max = 0;
179
149
  }
180
-
181
150
  return toPrecision({
182
151
  min: min,
183
152
  max: max,
184
153
  precision: precision
185
154
  });
186
155
  }
187
-
188
156
  function _getCurrentRefinement(helper) {
189
157
  var _ref7 = helper.getNumericRefinement(attribute, '>=') || [],
190
- _ref8 = _slicedToArray(_ref7, 1),
191
- minValue = _ref8[0];
192
-
158
+ _ref8 = _slicedToArray(_ref7, 1),
159
+ minValue = _ref8[0];
193
160
  var _ref9 = helper.getNumericRefinement(attribute, '<=') || [],
194
- _ref10 = _slicedToArray(_ref9, 1),
195
- maxValue = _ref10[0];
196
-
161
+ _ref10 = _slicedToArray(_ref9, 1),
162
+ maxValue = _ref10[0];
197
163
  var min = isFiniteNumber(minValue) ? minValue : -Infinity;
198
164
  var max = isFiniteNumber(maxValue) ? maxValue : Infinity;
199
165
  return [min, max];
200
166
  }
201
-
202
167
  function _refine(helper, currentRange) {
203
168
  return function () {
204
169
  var _ref11 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [undefined, undefined],
205
- _ref12 = _slicedToArray(_ref11, 2),
206
- nextMin = _ref12[0],
207
- nextMax = _ref12[1];
208
-
170
+ _ref12 = _slicedToArray(_ref11, 2),
171
+ nextMin = _ref12[0],
172
+ nextMax = _ref12[1];
209
173
  var refinedState = getRefinedState(helper, currentRange, nextMin, nextMax);
210
-
211
174
  if (refinedState) {
212
175
  helper.setState(refinedState).search();
213
176
  }
214
177
  };
215
178
  }
216
-
217
179
  return {
218
180
  $$type: $$type,
219
181
  init: function init(initOptions) {
@@ -233,8 +195,8 @@ var connectRange = function connectRange(renderFn) {
233
195
  },
234
196
  getWidgetRenderState: function getWidgetRenderState(_ref13) {
235
197
  var results = _ref13.results,
236
- helper = _ref13.helper,
237
- instantSearchInstance = _ref13.instantSearchInstance;
198
+ helper = _ref13.helper,
199
+ instantSearchInstance = _ref13.instantSearchInstance;
238
200
  var facetsFromResults = results && results.disjunctiveFacets || [];
239
201
  var facet = find(facetsFromResults, function (facetResult) {
240
202
  return facetResult.name === attribute;
@@ -243,13 +205,9 @@ var connectRange = function connectRange(renderFn) {
243
205
  min: undefined,
244
206
  max: undefined
245
207
  };
246
-
247
208
  var currentRange = _getCurrentRange(stats);
248
-
249
209
  var start = _getCurrentRefinement(helper);
250
-
251
210
  var refine;
252
-
253
211
  if (!results) {
254
212
  // On first render pass an empty range
255
213
  // to be able to bypass the validation
@@ -261,7 +219,6 @@ var connectRange = function connectRange(renderFn) {
261
219
  } else {
262
220
  refine = _refine(helper, currentRange);
263
221
  }
264
-
265
222
  return {
266
223
  refine: refine,
267
224
  canRefine: currentRange.min !== currentRange.max,
@@ -281,17 +238,14 @@ var connectRange = function connectRange(renderFn) {
281
238
  },
282
239
  getWidgetUiState: function getWidgetUiState(uiState, _ref15) {
283
240
  var searchParameters = _ref15.searchParameters;
284
-
285
241
  var _searchParameters$get = searchParameters.getNumericRefinements(attribute),
286
- _searchParameters$get2 = _searchParameters$get['>='],
287
- min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,
288
- _searchParameters$get3 = _searchParameters$get['<='],
289
- max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;
290
-
242
+ _searchParameters$get2 = _searchParameters$get['>='],
243
+ min = _searchParameters$get2 === void 0 ? [] : _searchParameters$get2,
244
+ _searchParameters$get3 = _searchParameters$get['<='],
245
+ max = _searchParameters$get3 === void 0 ? [] : _searchParameters$get3;
291
246
  if (min.length === 0 && max.length === 0) {
292
247
  return uiState;
293
248
  }
294
-
295
249
  return _objectSpread(_objectSpread({}, uiState), {}, {
296
250
  range: _objectSpread(_objectSpread({}, uiState.range), {}, _defineProperty({}, attribute, "".concat(min, ":").concat(max)))
297
251
  });
@@ -301,40 +255,31 @@ var connectRange = function connectRange(renderFn) {
301
255
  var widgetSearchParameters = searchParameters.addDisjunctiveFacet(attribute).setQueryParameters({
302
256
  numericRefinements: _objectSpread(_objectSpread({}, searchParameters.numericRefinements), {}, _defineProperty({}, attribute, {}))
303
257
  });
304
-
305
258
  if (isFiniteNumber(minBound)) {
306
259
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', minBound);
307
260
  }
308
-
309
261
  if (isFiniteNumber(maxBound)) {
310
262
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', maxBound);
311
263
  }
312
-
313
264
  var value = uiState.range && uiState.range[attribute];
314
-
315
265
  if (!value || value.indexOf(':') === -1) {
316
266
  return widgetSearchParameters;
317
267
  }
318
-
319
268
  var _value$split$map = value.split(':').map(parseFloat),
320
- _value$split$map2 = _slicedToArray(_value$split$map, 2),
321
- lowerBound = _value$split$map2[0],
322
- upperBound = _value$split$map2[1];
323
-
269
+ _value$split$map2 = _slicedToArray(_value$split$map, 2),
270
+ lowerBound = _value$split$map2[0],
271
+ upperBound = _value$split$map2[1];
324
272
  if (isFiniteNumber(lowerBound) && (!isFiniteNumber(minBound) || minBound < lowerBound)) {
325
273
  widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '>=');
326
274
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '>=', lowerBound);
327
275
  }
328
-
329
276
  if (isFiniteNumber(upperBound) && (!isFiniteNumber(maxBound) || upperBound < maxBound)) {
330
277
  widgetSearchParameters = widgetSearchParameters.removeNumericRefinement(attribute, '<=');
331
278
  widgetSearchParameters = widgetSearchParameters.addNumericRefinement(attribute, '<=', upperBound);
332
279
  }
333
-
334
280
  return widgetSearchParameters;
335
281
  }
336
282
  };
337
283
  };
338
284
  };
339
-
340
285
  export default connectRange;
@@ -1,29 +1,19 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
1
2
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
-
3
3
  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
-
4
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
7
5
  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
-
13
- 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
-
6
+ 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; }
7
+ 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; }
8
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
10
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
15
11
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
16
-
17
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."); }
18
-
19
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); }
20
-
21
- 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
-
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; }
15
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
25
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
26
-
27
17
  import { checkRendering, createDocumentationLink, createDocumentationMessageGenerator, noop, warning } from "../../lib/utils/index.js";
28
18
  var withUsage = createDocumentationMessageGenerator({
29
19
  name: 'rating-menu',
@@ -32,33 +22,27 @@ var withUsage = createDocumentationMessageGenerator({
32
22
  var $$type = 'ais.ratingMenu';
33
23
  var MAX_VALUES_PER_FACET_API_LIMIT = 1000;
34
24
  var STEP = 1;
35
-
36
25
  var createSendEvent = function createSendEvent(_ref) {
37
26
  var instantSearchInstance = _ref.instantSearchInstance,
38
- helper = _ref.helper,
39
- getRefinedStar = _ref.getRefinedStar,
40
- attribute = _ref.attribute;
27
+ helper = _ref.helper,
28
+ getRefinedStar = _ref.getRefinedStar,
29
+ attribute = _ref.attribute;
41
30
  return function () {
42
31
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
43
32
  args[_key] = arguments[_key];
44
33
  }
45
-
46
34
  if (args.length === 1) {
47
35
  instantSearchInstance.sendEventToInsights(args[0]);
48
36
  return;
49
37
  }
50
-
51
38
  var eventType = args[0],
52
- facetValue = args[1],
53
- _args$ = args[2],
54
- eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
55
-
39
+ facetValue = args[1],
40
+ _args$ = args[2],
41
+ eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
56
42
  if (eventType !== 'click') {
57
43
  return;
58
44
  }
59
-
60
45
  var isRefined = getRefinedStar() === Number(facetValue);
61
-
62
46
  if (!isRefined) {
63
47
  instantSearchInstance.sendEventToInsights({
64
48
  insightsMethod: 'clickedFilters',
@@ -74,7 +58,6 @@ var createSendEvent = function createSendEvent(_ref) {
74
58
  }
75
59
  };
76
60
  };
77
-
78
61
  /**
79
62
  * **StarRating** connector provides the logic to build a custom widget that will let
80
63
  * the user refine search results based on ratings.
@@ -88,85 +71,68 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
88
71
  checkRendering(renderFn, withUsage());
89
72
  return function (widgetParams) {
90
73
  var _ref2 = widgetParams || {},
91
- attribute = _ref2.attribute,
92
- _ref2$max = _ref2.max,
93
- max = _ref2$max === void 0 ? 5 : _ref2$max;
94
-
74
+ attribute = _ref2.attribute,
75
+ _ref2$max = _ref2.max,
76
+ max = _ref2$max === void 0 ? 5 : _ref2$max;
95
77
  var sendEvent;
96
-
97
78
  if (!attribute) {
98
79
  throw new Error(withUsage('The `attribute` option is required.'));
99
80
  }
100
-
101
81
  var _getRefinedStar = function getRefinedStar(state) {
102
82
  var _values$;
103
-
104
83
  var values = state.getNumericRefinements(attribute);
105
-
106
84
  if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {
107
85
  return undefined;
108
86
  }
109
-
110
87
  return values['>='][0];
111
88
  };
112
-
113
89
  var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {
114
90
  var maxDecimalPlaces = 0;
115
91
  facetResults.forEach(function (facetResult) {
116
92
  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
-
93
+ _facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
94
+ _facetResult$name$spl3 = _facetResult$name$spl2[1],
95
+ decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
121
96
  maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);
122
97
  });
123
98
  return maxDecimalPlaces;
124
99
  };
125
-
126
100
  var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {
127
101
  var maxDecimalPlaces = _ref3.maxDecimalPlaces,
128
- maxFacets = _ref3.maxFacets,
129
- maxValuesPerFacet = _ref3.maxValuesPerFacet;
102
+ maxFacets = _ref3.maxFacets,
103
+ maxValuesPerFacet = _ref3.maxValuesPerFacet;
130
104
  var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));
131
105
  var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);
132
106
  var solutions = [];
133
-
134
107
  if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {
135
108
  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
109
  }
137
-
138
110
  if (maxValuesPerFacet < maxFacetsInRange) {
139
111
  solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat(createDocumentationLink({
140
112
  name: 'configure'
141
113
  }), " and the \"maxValuesPerFacet\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/"));
142
114
  }
143
-
144
115
  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
116
  };
146
-
147
117
  function getRefinedState(state, facetValue) {
148
118
  var isRefined = _getRefinedStar(state) === Number(facetValue);
149
119
  var emptyState = state.resetPage().removeNumericRefinement(attribute);
150
-
151
120
  if (!isRefined) {
152
121
  return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));
153
122
  }
154
-
155
123
  return emptyState;
156
124
  }
157
-
158
125
  var toggleRefinement = function toggleRefinement(helper, facetValue) {
159
126
  sendEvent('click', facetValue);
160
127
  helper.setState(getRefinedState(helper.state, facetValue)).search();
161
128
  };
162
-
163
129
  var connectorState = {
164
130
  toggleRefinementFactory: function toggleRefinementFactory(helper) {
165
131
  return toggleRefinement.bind(null, helper);
166
132
  },
167
133
  createURLFactory: function createURLFactory(_ref4) {
168
134
  var state = _ref4.state,
169
- createURL = _ref4.createURL;
135
+ createURL = _ref4.createURL;
170
136
  return function (value) {
171
137
  return createURL(getRefinedState(state, value));
172
138
  };
@@ -193,12 +159,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
193
159
  },
194
160
  getWidgetRenderState: function getWidgetRenderState(_ref5) {
195
161
  var helper = _ref5.helper,
196
- results = _ref5.results,
197
- state = _ref5.state,
198
- instantSearchInstance = _ref5.instantSearchInstance,
199
- createURL = _ref5.createURL;
162
+ results = _ref5.results,
163
+ state = _ref5.state,
164
+ instantSearchInstance = _ref5.instantSearchInstance,
165
+ createURL = _ref5.createURL;
200
166
  var facetValues = [];
201
-
202
167
  if (!sendEvent) {
203
168
  sendEvent = createSendEvent({
204
169
  instantSearchInstance: instantSearchInstance,
@@ -209,11 +174,9 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
209
174
  attribute: attribute
210
175
  });
211
176
  }
212
-
213
177
  var refinementIsApplied = false;
214
178
  var totalCount = 0;
215
179
  var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});
216
-
217
180
  if (results && facetResults) {
218
181
  var maxValuesPerFacet = facetResults.length;
219
182
  var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);
@@ -223,9 +186,7 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
223
186
  maxFacets: maxFacets,
224
187
  maxValuesPerFacet: maxValuesPerFacet
225
188
  })) : void 0;
226
-
227
189
  var refinedStar = _getRefinedStar(state);
228
-
229
190
  var _loop = function _loop(star) {
230
191
  var isRefined = refinedStar === star;
231
192
  refinementIsApplied = refinementIsApplied || isRefined;
@@ -237,17 +198,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
237
198
  return sum + current;
238
199
  }, 0);
239
200
  totalCount += count;
240
-
241
201
  if (refinedStar && !isRefined && count === 0) {
242
202
  // skip count==0 when at least 1 refinement is enabled
243
203
  // eslint-disable-next-line no-continue
244
204
  return "continue";
245
205
  }
246
-
247
206
  var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {
248
207
  return i * STEP < star;
249
208
  });
250
-
251
209
  facetValues.push({
252
210
  stars: stars,
253
211
  name: String(star),
@@ -257,14 +215,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
257
215
  isRefined: isRefined
258
216
  });
259
217
  };
260
-
261
218
  for (var star = STEP; star < max; star += STEP) {
262
219
  var _ret = _loop(star);
263
-
264
220
  if (_ret === "continue") continue;
265
221
  }
266
222
  }
267
-
268
223
  facetValues = facetValues.reverse();
269
224
  var hasNoResults = results ? results.nbHits === 0 : true;
270
225
  return {
@@ -287,13 +242,10 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
287
242
  },
288
243
  getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
289
244
  var searchParameters = _ref7.searchParameters;
290
-
291
245
  var value = _getRefinedStar(searchParameters);
292
-
293
246
  if (typeof value !== 'number') {
294
247
  return uiState;
295
248
  }
296
-
297
249
  return _objectSpread(_objectSpread({}, uiState), {}, {
298
250
  ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
299
251
  });
@@ -303,17 +255,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
303
255
  var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
304
256
  var withoutRefinements = searchParameters.clearRefinements(attribute);
305
257
  var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
306
-
307
258
  if (!value) {
308
259
  return withDisjunctiveFacet.setQueryParameters({
309
260
  numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
310
261
  });
311
262
  }
312
-
313
263
  return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);
314
264
  }
315
265
  };
316
266
  };
317
267
  };
318
-
319
268
  export default connectRatingMenu;