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,72 +1,54 @@
1
1
  "use strict";
2
2
 
3
+ 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); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
7
-
8
- var _index = require("../../lib/utils/index.js");
9
-
8
+ var _utils = require("../../lib/utils");
10
9
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
11
-
12
10
  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
-
11
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
16
12
  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
-
22
- 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
-
13
+ 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; }
14
+ 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; }
15
+ 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; }
16
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
17
+ 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); }
24
18
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
25
-
26
19
  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
20
  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
- 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
-
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
+ 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; } }
34
23
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
35
-
36
- var withUsage = (0, _index.createDocumentationMessageGenerator)({
24
+ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
37
25
  name: 'rating-menu',
38
26
  connector: true
39
27
  });
40
28
  var $$type = 'ais.ratingMenu';
41
29
  var MAX_VALUES_PER_FACET_API_LIMIT = 1000;
42
30
  var STEP = 1;
43
-
44
31
  var createSendEvent = function createSendEvent(_ref) {
45
32
  var instantSearchInstance = _ref.instantSearchInstance,
46
- helper = _ref.helper,
47
- getRefinedStar = _ref.getRefinedStar,
48
- attribute = _ref.attribute;
33
+ helper = _ref.helper,
34
+ getRefinedStar = _ref.getRefinedStar,
35
+ attribute = _ref.attribute;
49
36
  return function () {
50
37
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
51
38
  args[_key] = arguments[_key];
52
39
  }
53
-
54
40
  if (args.length === 1) {
55
41
  instantSearchInstance.sendEventToInsights(args[0]);
56
42
  return;
57
43
  }
58
-
59
44
  var eventType = args[0],
60
- facetValue = args[1],
61
- _args$ = args[2],
62
- eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
63
-
45
+ facetValue = args[1],
46
+ _args$ = args[2],
47
+ eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
64
48
  if (eventType !== 'click') {
65
49
  return;
66
50
  }
67
-
68
51
  var isRefined = getRefinedStar() === Number(facetValue);
69
-
70
52
  if (!isRefined) {
71
53
  instantSearchInstance.sendEventToInsights({
72
54
  insightsMethod: 'clickedFilters',
@@ -82,7 +64,6 @@ var createSendEvent = function createSendEvent(_ref) {
82
64
  }
83
65
  };
84
66
  };
85
-
86
67
  /**
87
68
  * **StarRating** connector provides the logic to build a custom widget that will let
88
69
  * the user refine search results based on ratings.
@@ -92,89 +73,72 @@ var createSendEvent = function createSendEvent(_ref) {
92
73
  * with `items.value`.
93
74
  */
94
75
  var connectRatingMenu = function connectRatingMenu(renderFn) {
95
- var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _index.noop;
96
- (0, _index.checkRendering)(renderFn, withUsage());
76
+ var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
77
+ (0, _utils.checkRendering)(renderFn, withUsage());
97
78
  return function (widgetParams) {
98
79
  var _ref2 = widgetParams || {},
99
- attribute = _ref2.attribute,
100
- _ref2$max = _ref2.max,
101
- max = _ref2$max === void 0 ? 5 : _ref2$max;
102
-
80
+ attribute = _ref2.attribute,
81
+ _ref2$max = _ref2.max,
82
+ max = _ref2$max === void 0 ? 5 : _ref2$max;
103
83
  var sendEvent;
104
-
105
84
  if (!attribute) {
106
85
  throw new Error(withUsage('The `attribute` option is required.'));
107
86
  }
108
-
109
87
  var _getRefinedStar = function getRefinedStar(state) {
110
88
  var _values$;
111
-
112
89
  var values = state.getNumericRefinements(attribute);
113
-
114
90
  if (!((_values$ = values['>=']) !== null && _values$ !== void 0 && _values$.length)) {
115
91
  return undefined;
116
92
  }
117
-
118
93
  return values['>='][0];
119
94
  };
120
-
121
95
  var getFacetsMaxDecimalPlaces = function getFacetsMaxDecimalPlaces(facetResults) {
122
96
  var maxDecimalPlaces = 0;
123
97
  facetResults.forEach(function (facetResult) {
124
98
  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
-
99
+ _facetResult$name$spl2 = _slicedToArray(_facetResult$name$spl, 2),
100
+ _facetResult$name$spl3 = _facetResult$name$spl2[1],
101
+ decimal = _facetResult$name$spl3 === void 0 ? '' : _facetResult$name$spl3;
129
102
  maxDecimalPlaces = Math.max(maxDecimalPlaces, decimal.length);
130
103
  });
131
104
  return maxDecimalPlaces;
132
105
  };
133
-
134
106
  var getFacetValuesWarningMessage = function getFacetValuesWarningMessage(_ref3) {
135
107
  var maxDecimalPlaces = _ref3.maxDecimalPlaces,
136
- maxFacets = _ref3.maxFacets,
137
- maxValuesPerFacet = _ref3.maxValuesPerFacet;
108
+ maxFacets = _ref3.maxFacets,
109
+ maxValuesPerFacet = _ref3.maxValuesPerFacet;
138
110
  var maxDecimalPlacesInRange = Math.max(0, Math.floor(Math.log10(MAX_VALUES_PER_FACET_API_LIMIT / max)));
139
111
  var maxFacetsInRange = Math.min(MAX_VALUES_PER_FACET_API_LIMIT, Math.pow(10, maxDecimalPlacesInRange) * max);
140
112
  var solutions = [];
141
-
142
113
  if (maxFacets > MAX_VALUES_PER_FACET_API_LIMIT) {
143
114
  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
115
  }
145
-
146
116
  if (maxValuesPerFacet < maxFacetsInRange) {
147
- solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat((0, _index.createDocumentationLink)({
117
+ solutions.push("- Increase the maximum number of facet values to ".concat(maxFacetsInRange, " using the \"configure\" widget ").concat((0, _utils.createDocumentationLink)({
148
118
  name: 'configure'
149
119
  }), " and the \"maxValuesPerFacet\" parameter https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/"));
150
120
  }
151
-
152
121
  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
122
  };
154
-
155
123
  function getRefinedState(state, facetValue) {
156
124
  var isRefined = _getRefinedStar(state) === Number(facetValue);
157
125
  var emptyState = state.resetPage().removeNumericRefinement(attribute);
158
-
159
126
  if (!isRefined) {
160
127
  return emptyState.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', Number(facetValue));
161
128
  }
162
-
163
129
  return emptyState;
164
130
  }
165
-
166
131
  var toggleRefinement = function toggleRefinement(helper, facetValue) {
167
132
  sendEvent('click', facetValue);
168
133
  helper.setState(getRefinedState(helper.state, facetValue)).search();
169
134
  };
170
-
171
135
  var connectorState = {
172
136
  toggleRefinementFactory: function toggleRefinementFactory(helper) {
173
137
  return toggleRefinement.bind(null, helper);
174
138
  },
175
139
  createURLFactory: function createURLFactory(_ref4) {
176
140
  var state = _ref4.state,
177
- createURL = _ref4.createURL;
141
+ createURL = _ref4.createURL;
178
142
  return function (value) {
179
143
  return createURL(getRefinedState(state, value));
180
144
  };
@@ -201,12 +165,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
201
165
  },
202
166
  getWidgetRenderState: function getWidgetRenderState(_ref5) {
203
167
  var helper = _ref5.helper,
204
- results = _ref5.results,
205
- state = _ref5.state,
206
- instantSearchInstance = _ref5.instantSearchInstance,
207
- createURL = _ref5.createURL;
168
+ results = _ref5.results,
169
+ state = _ref5.state,
170
+ instantSearchInstance = _ref5.instantSearchInstance,
171
+ createURL = _ref5.createURL;
208
172
  var facetValues = [];
209
-
210
173
  if (!sendEvent) {
211
174
  sendEvent = createSendEvent({
212
175
  instantSearchInstance: instantSearchInstance,
@@ -217,23 +180,19 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
217
180
  attribute: attribute
218
181
  });
219
182
  }
220
-
221
183
  var refinementIsApplied = false;
222
184
  var totalCount = 0;
223
185
  var facetResults = results === null || results === void 0 ? void 0 : results.getFacetValues(attribute, {});
224
-
225
186
  if (results && facetResults) {
226
187
  var maxValuesPerFacet = facetResults.length;
227
188
  var maxDecimalPlaces = getFacetsMaxDecimalPlaces(facetResults);
228
189
  var maxFacets = Math.pow(10, maxDecimalPlaces) * max;
229
- process.env.NODE_ENV === 'development' ? (0, _index.warning)(maxFacets <= maxValuesPerFacet || Boolean(results.__isArtificial), getFacetValuesWarningMessage({
190
+ process.env.NODE_ENV === 'development' ? (0, _utils.warning)(maxFacets <= maxValuesPerFacet || Boolean(results.__isArtificial), getFacetValuesWarningMessage({
230
191
  maxDecimalPlaces: maxDecimalPlaces,
231
192
  maxFacets: maxFacets,
232
193
  maxValuesPerFacet: maxValuesPerFacet
233
194
  })) : void 0;
234
-
235
195
  var refinedStar = _getRefinedStar(state);
236
-
237
196
  var _loop = function _loop(star) {
238
197
  var isRefined = refinedStar === star;
239
198
  refinementIsApplied = refinementIsApplied || isRefined;
@@ -245,17 +204,14 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
245
204
  return sum + current;
246
205
  }, 0);
247
206
  totalCount += count;
248
-
249
207
  if (refinedStar && !isRefined && count === 0) {
250
208
  // skip count==0 when at least 1 refinement is enabled
251
209
  // eslint-disable-next-line no-continue
252
210
  return "continue";
253
211
  }
254
-
255
212
  var stars = _toConsumableArray(new Array(Math.floor(max / STEP))).map(function (_v, i) {
256
213
  return i * STEP < star;
257
214
  });
258
-
259
215
  facetValues.push({
260
216
  stars: stars,
261
217
  name: String(star),
@@ -265,14 +221,11 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
265
221
  isRefined: isRefined
266
222
  });
267
223
  };
268
-
269
224
  for (var star = STEP; star < max; star += STEP) {
270
225
  var _ret = _loop(star);
271
-
272
226
  if (_ret === "continue") continue;
273
227
  }
274
228
  }
275
-
276
229
  facetValues = facetValues.reverse();
277
230
  var hasNoResults = results ? results.nbHits === 0 : true;
278
231
  return {
@@ -295,13 +248,10 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
295
248
  },
296
249
  getWidgetUiState: function getWidgetUiState(uiState, _ref7) {
297
250
  var searchParameters = _ref7.searchParameters;
298
-
299
251
  var value = _getRefinedStar(searchParameters);
300
-
301
252
  if (typeof value !== 'number') {
302
253
  return uiState;
303
254
  }
304
-
305
255
  return _objectSpread(_objectSpread({}, uiState), {}, {
306
256
  ratingMenu: _objectSpread(_objectSpread({}, uiState.ratingMenu), {}, _defineProperty({}, attribute, value))
307
257
  });
@@ -311,18 +261,15 @@ var connectRatingMenu = function connectRatingMenu(renderFn) {
311
261
  var value = uiState.ratingMenu && uiState.ratingMenu[attribute];
312
262
  var withoutRefinements = searchParameters.clearRefinements(attribute);
313
263
  var withDisjunctiveFacet = withoutRefinements.addDisjunctiveFacet(attribute);
314
-
315
264
  if (!value) {
316
265
  return withDisjunctiveFacet.setQueryParameters({
317
266
  numericRefinements: _objectSpread(_objectSpread({}, withDisjunctiveFacet.numericRefinements), {}, _defineProperty({}, attribute, {}))
318
267
  });
319
268
  }
320
-
321
269
  return withDisjunctiveFacet.addNumericRefinement(attribute, '<=', max).addNumericRefinement(attribute, '>=', value);
322
270
  }
323
271
  };
324
272
  };
325
273
  };
326
-
327
274
  var _default = connectRatingMenu;
328
275
  exports.default = _default;
@@ -1,28 +1,25 @@
1
1
  "use strict";
2
2
 
3
+ 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); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.default = void 0;
7
-
8
- 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
-
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; }
15
-
8
+ var _utils = require("../../lib/utils");
9
+ var _excluded = ["name", "escapedValue"],
10
+ _excluded2 = ["escapedValue", "value"];
11
+ 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; }
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
+ 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; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
+ 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); }
16
16
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
17
-
18
17
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
19
-
20
- var withUsage = (0, _index.createDocumentationMessageGenerator)({
18
+ var withUsage = (0, _utils.createDocumentationMessageGenerator)({
21
19
  name: 'refinement-list',
22
20
  connector: true
23
21
  });
24
22
  var DEFAULT_SORT = ['isRefined', 'count:desc', 'name:asc'];
25
-
26
23
  /**
27
24
  * **RefinementList** connector provides the logic to build a custom widget that
28
25
  * will let the user filter the results based on the values of a specific facet.
@@ -36,87 +33,75 @@ var DEFAULT_SORT = ['isRefined', 'count:desc', 'name:asc'];
36
33
  * - a `searchForItems()` function to search within the items.
37
34
  */
38
35
  var connectRefinementList = function connectRefinementList(renderFn) {
39
- var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _index.noop;
40
- (0, _index.checkRendering)(renderFn, withUsage());
36
+ var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _utils.noop;
37
+ (0, _utils.checkRendering)(renderFn, withUsage());
41
38
  return function (widgetParams) {
42
39
  var _ref = widgetParams || {},
43
- attribute = _ref.attribute,
44
- _ref$operator = _ref.operator,
45
- operator = _ref$operator === void 0 ? 'or' : _ref$operator,
46
- _ref$limit = _ref.limit,
47
- limit = _ref$limit === void 0 ? 10 : _ref$limit,
48
- _ref$showMore = _ref.showMore,
49
- showMore = _ref$showMore === void 0 ? false : _ref$showMore,
50
- _ref$showMoreLimit = _ref.showMoreLimit,
51
- showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
52
- _ref$sortBy = _ref.sortBy,
53
- sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
54
- _ref$escapeFacetValue = _ref.escapeFacetValues,
55
- escapeFacetValues = _ref$escapeFacetValue === void 0 ? true : _ref$escapeFacetValue,
56
- _ref$transformItems = _ref.transformItems,
57
- transformItems = _ref$transformItems === void 0 ? function (items) {
58
- return items;
59
- } : _ref$transformItems;
60
-
40
+ attribute = _ref.attribute,
41
+ _ref$operator = _ref.operator,
42
+ operator = _ref$operator === void 0 ? 'or' : _ref$operator,
43
+ _ref$limit = _ref.limit,
44
+ limit = _ref$limit === void 0 ? 10 : _ref$limit,
45
+ _ref$showMore = _ref.showMore,
46
+ showMore = _ref$showMore === void 0 ? false : _ref$showMore,
47
+ _ref$showMoreLimit = _ref.showMoreLimit,
48
+ showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
49
+ _ref$sortBy = _ref.sortBy,
50
+ sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
51
+ _ref$escapeFacetValue = _ref.escapeFacetValues,
52
+ escapeFacetValues = _ref$escapeFacetValue === void 0 ? true : _ref$escapeFacetValue,
53
+ _ref$transformItems = _ref.transformItems,
54
+ transformItems = _ref$transformItems === void 0 ? function (items) {
55
+ return items;
56
+ } : _ref$transformItems;
61
57
  if (!attribute) {
62
58
  throw new Error(withUsage('The `attribute` option is required.'));
63
59
  }
64
-
65
60
  if (!/^(and|or)$/.test(operator)) {
66
61
  throw new Error(withUsage("The `operator` must one of: `\"and\"`, `\"or\"` (got \"".concat(operator, "\").")));
67
62
  }
68
-
69
63
  if (showMore === true && showMoreLimit <= limit) {
70
64
  throw new Error(withUsage('`showMoreLimit` should be greater than `limit`.'));
71
65
  }
72
-
73
66
  var formatItems = function formatItems(_ref2) {
74
67
  var label = _ref2.name,
75
- value = _ref2.escapedValue,
76
- item = _objectWithoutProperties(_ref2, ["name", "escapedValue"]);
77
-
68
+ value = _ref2.escapedValue,
69
+ item = _objectWithoutProperties(_ref2, _excluded);
78
70
  return _objectSpread(_objectSpread({}, item), {}, {
79
71
  value: value,
80
72
  label: label,
81
73
  highlighted: label
82
74
  });
83
75
  };
84
-
85
76
  var lastResultsFromMainSearch;
86
77
  var lastItemsFromMainSearch = [];
87
78
  var hasExhaustiveItems = true;
88
79
  var triggerRefine;
89
80
  var sendEvent;
90
- var isShowingMore = false; // Provide the same function to the `renderFn` so that way the user
81
+ var isShowingMore = false;
82
+ // Provide the same function to the `renderFn` so that way the user
91
83
  // has to only bind it once when `isFirstRendering` for instance
92
-
93
84
  var toggleShowMore = function toggleShowMore() {};
94
-
95
85
  function cachedToggleShowMore() {
96
86
  toggleShowMore();
97
87
  }
98
-
99
88
  function createToggleShowMore(renderOptions, widget) {
100
89
  return function () {
101
90
  isShowingMore = !isShowingMore;
102
91
  widget.render(renderOptions);
103
92
  };
104
93
  }
105
-
106
94
  function getLimit() {
107
95
  return isShowingMore ? showMoreLimit : limit;
108
96
  }
109
-
110
97
  var searchForFacetValues = function searchForFacetValues() {
111
98
  return function () {};
112
99
  };
113
-
114
100
  var createSearchForFacetValues = function createSearchForFacetValues(helper, widget) {
115
101
  return function (renderOptions) {
116
102
  return function (query) {
117
103
  var instantSearchInstance = renderOptions.instantSearchInstance,
118
- searchResults = renderOptions.results;
119
-
104
+ searchResults = renderOptions.results;
120
105
  if (query === '' && lastItemsFromMainSearch) {
121
106
  // render with previous data from the helper.
122
107
  renderFn(_objectSpread(_objectSpread({}, widget.getWidgetRenderState(_objectSpread(_objectSpread({}, renderOptions), {}, {
@@ -126,19 +111,19 @@ var connectRefinementList = function connectRefinementList(renderFn) {
126
111
  }), false);
127
112
  } else {
128
113
  var tags = {
129
- highlightPreTag: escapeFacetValues ? _index.TAG_PLACEHOLDER.highlightPreTag : _index.TAG_REPLACEMENT.highlightPreTag,
130
- highlightPostTag: escapeFacetValues ? _index.TAG_PLACEHOLDER.highlightPostTag : _index.TAG_REPLACEMENT.highlightPostTag
114
+ highlightPreTag: escapeFacetValues ? _utils.TAG_PLACEHOLDER.highlightPreTag : _utils.TAG_REPLACEMENT.highlightPreTag,
115
+ highlightPostTag: escapeFacetValues ? _utils.TAG_PLACEHOLDER.highlightPostTag : _utils.TAG_REPLACEMENT.highlightPostTag
131
116
  };
132
- helper.searchForFacetValues(attribute, query, // We cap the `maxFacetHits` value to 100 because the Algolia API
117
+ helper.searchForFacetValues(attribute, query,
118
+ // We cap the `maxFacetHits` value to 100 because the Algolia API
133
119
  // doesn't support a greater number.
134
120
  // See https://www.algolia.com/doc/api-reference/api-parameters/maxFacetHits/
135
121
  Math.min(getLimit(), 100), tags).then(function (results) {
136
- var facetValues = escapeFacetValues ? (0, _index.escapeFacets)(results.facetHits) : results.facetHits;
122
+ var facetValues = escapeFacetValues ? (0, _utils.escapeFacets)(results.facetHits) : results.facetHits;
137
123
  var normalizedFacetValues = transformItems(facetValues.map(function (_ref3) {
138
124
  var escapedValue = _ref3.escapedValue,
139
- value = _ref3.value,
140
- item = _objectWithoutProperties(_ref3, ["escapedValue", "value"]);
141
-
125
+ value = _ref3.value,
126
+ item = _objectWithoutProperties(_ref3, _excluded2);
142
127
  return _objectSpread(_objectSpread({}, item), {}, {
143
128
  value: escapedValue,
144
129
  label: value
@@ -160,7 +145,6 @@ var connectRefinementList = function connectRefinementList(renderFn) {
160
145
  };
161
146
  };
162
147
  };
163
-
164
148
  return {
165
149
  $$type: 'ais.refinementList',
166
150
  init: function init(initOptions) {
@@ -180,29 +164,25 @@ var connectRefinementList = function connectRefinementList(renderFn) {
180
164
  },
181
165
  getWidgetRenderState: function getWidgetRenderState(renderOptions) {
182
166
  var results = renderOptions.results,
183
- state = renderOptions.state,
184
- _createURL = renderOptions.createURL,
185
- instantSearchInstance = renderOptions.instantSearchInstance,
186
- helper = renderOptions.helper;
167
+ state = renderOptions.state,
168
+ _createURL = renderOptions.createURL,
169
+ instantSearchInstance = renderOptions.instantSearchInstance,
170
+ helper = renderOptions.helper;
187
171
  var items = [];
188
172
  var facetValues = [];
189
-
190
173
  if (!sendEvent || !triggerRefine || !searchForFacetValues) {
191
- sendEvent = (0, _index.createSendEventForFacet)({
174
+ sendEvent = (0, _utils.createSendEventForFacet)({
192
175
  instantSearchInstance: instantSearchInstance,
193
176
  helper: helper,
194
177
  attribute: attribute,
195
178
  widgetType: this.$$type
196
179
  });
197
-
198
180
  triggerRefine = function triggerRefine(facetValue) {
199
181
  sendEvent('click', facetValue);
200
182
  helper.toggleFacetRefinement(attribute, facetValue).search();
201
183
  };
202
-
203
184
  searchForFacetValues = createSearchForFacetValues(helper, this);
204
185
  }
205
-
206
186
  if (results) {
207
187
  var values = results.getFacetValues(attribute, {
208
188
  sortBy: sortBy,
@@ -213,24 +193,23 @@ var connectRefinementList = function connectRefinementList(renderFn) {
213
193
  results: results
214
194
  });
215
195
  var maxValuesPerFacetConfig = state.maxValuesPerFacet;
216
- var currentLimit = getLimit(); // If the limit is the max number of facet retrieved it is impossible to know
196
+ var currentLimit = getLimit();
197
+ // If the limit is the max number of facet retrieved it is impossible to know
217
198
  // if the facets are exhaustive. The only moment we are sure it is exhaustive
218
199
  // is when it is strictly under the number requested unless we know that another
219
200
  // widget has requested more values (maxValuesPerFacet > getLimit()).
220
201
  // Because this is used for making the search of facets unable or not, it is important
221
202
  // to be conservative here.
222
-
223
203
  hasExhaustiveItems = maxValuesPerFacetConfig > currentLimit ? facetValues.length <= currentLimit : facetValues.length < currentLimit;
224
204
  lastResultsFromMainSearch = results;
225
205
  lastItemsFromMainSearch = items;
226
-
227
206
  if (renderOptions.results) {
228
207
  toggleShowMore = createToggleShowMore(renderOptions, this);
229
208
  }
230
- } // Do not mistake searchForFacetValues and searchFacetValues which is the actual search
231
- // function
232
-
209
+ }
233
210
 
211
+ // Do not mistake searchForFacetValues and searchFacetValues which is the actual search
212
+ // function
234
213
  var searchFacetValues = searchForFacetValues && searchForFacetValues(renderOptions);
235
214
  var canShowLess = isShowingMore && lastItemsFromMainSearch.length > limit;
236
215
  var canShowMore = showMore && !hasExhaustiveItems;
@@ -256,21 +235,17 @@ var connectRefinementList = function connectRefinementList(renderFn) {
256
235
  var state = _ref4.state;
257
236
  unmountFn();
258
237
  var withoutMaxValuesPerFacet = state.setQueryParameter('maxValuesPerFacet', undefined);
259
-
260
238
  if (operator === 'and') {
261
239
  return withoutMaxValuesPerFacet.removeFacet(attribute);
262
240
  }
263
-
264
241
  return withoutMaxValuesPerFacet.removeDisjunctiveFacet(attribute);
265
242
  },
266
243
  getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
267
244
  var searchParameters = _ref5.searchParameters;
268
245
  var values = operator === 'or' ? searchParameters.getDisjunctiveRefinements(attribute) : searchParameters.getConjunctiveRefinements(attribute);
269
-
270
246
  if (!values.length) {
271
247
  return uiState;
272
248
  }
273
-
274
249
  return _objectSpread(_objectSpread({}, uiState), {}, {
275
250
  refinementList: _objectSpread(_objectSpread({}, uiState.refinementList), {}, _defineProperty({}, attribute, values))
276
251
  });
@@ -284,12 +259,10 @@ var connectRefinementList = function connectRefinementList(renderFn) {
284
259
  var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
285
260
  var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
286
261
  var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
287
-
288
262
  if (!values) {
289
263
  var key = isDisjunctive ? 'disjunctiveFacetsRefinements' : 'facetsRefinements';
290
264
  return withMaxValuesPerFacet.setQueryParameters(_defineProperty({}, key, _objectSpread(_objectSpread({}, withMaxValuesPerFacet[key]), {}, _defineProperty({}, attribute, []))));
291
265
  }
292
-
293
266
  return values.reduce(function (parameters, value) {
294
267
  return isDisjunctive ? parameters.addDisjunctiveFacetRefinement(attribute, value) : parameters.addFacetRefinement(attribute, value);
295
268
  }, withMaxValuesPerFacet);
@@ -297,6 +270,5 @@ var connectRefinementList = function connectRefinementList(renderFn) {
297
270
  };
298
271
  };
299
272
  };
300
-
301
273
  var _default = connectRefinementList;
302
274
  exports.default = _default;