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,27 +1,25 @@
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
  import { checkRendering, aroundLatLngToPosition, insideBoundingBoxToBoundingBox, createDocumentationMessageGenerator, createSendEventForHits, noop } from "../../lib/utils/index.js";
8
8
  var withUsage = createDocumentationMessageGenerator({
9
9
  name: 'geo-search',
10
10
  connector: true
11
- }); // in this connector, we assume insideBoundingBox is only a string,
11
+ });
12
+
13
+ // in this connector, we assume insideBoundingBox is only a string,
12
14
  // even though in the helper it's defined as number[][] alone.
13
15
  // This can be done, since the connector assumes "control" of the parameter
14
-
15
16
  function getBoundingBoxAsString(state) {
16
17
  return state.insideBoundingBox || '';
17
18
  }
18
-
19
19
  function setBoundingBoxAsString(state, value) {
20
20
  return state.setQueryParameter('insideBoundingBox', value);
21
21
  }
22
-
23
22
  var $$type = 'ais.geoSearch';
24
-
25
23
  /**
26
24
  * The **GeoSearch** connector provides the logic to build a widget that will display the results on a map. It also provides a way to search for results based on their position. The connector provides functions to manage the search experience (search on map interaction or control the interaction for example).
27
25
  *
@@ -36,13 +34,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
36
34
  checkRendering(renderFn, withUsage());
37
35
  return function (widgetParams) {
38
36
  var _ref = widgetParams || {},
39
- _ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
40
- enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
41
- _ref$transformItems = _ref.transformItems,
42
- transformItems = _ref$transformItems === void 0 ? function (items) {
43
- return items;
44
- } : _ref$transformItems;
45
-
37
+ _ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
38
+ enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
39
+ _ref$transformItems = _ref.transformItems,
40
+ transformItems = _ref$transformItems === void 0 ? function (items) {
41
+ return items;
42
+ } : _ref$transformItems;
46
43
  var widgetState = {
47
44
  isRefineOnMapMove: enableRefineOnMapMove,
48
45
  // @MAJOR hasMapMoveSinceLastRefine -> hasMapMovedSinceLastRefine
@@ -52,72 +49,59 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
52
49
  internalToggleRefineOnMapMove: noop,
53
50
  internalSetMapMoveSinceLastRefine: noop
54
51
  };
55
-
56
52
  var getPositionFromState = function getPositionFromState(state) {
57
53
  return state.aroundLatLng ? aroundLatLngToPosition(state.aroundLatLng) : undefined;
58
54
  };
59
-
60
55
  var getCurrentRefinementFromState = function getCurrentRefinementFromState(state) {
61
56
  return state.insideBoundingBox && insideBoundingBoxToBoundingBox(state.insideBoundingBox);
62
57
  };
63
-
64
58
  var refine = function refine(helper) {
65
59
  return function (_ref2) {
66
60
  var ne = _ref2.northEast,
67
- sw = _ref2.southWest;
61
+ sw = _ref2.southWest;
68
62
  var boundingBox = [ne.lat, ne.lng, sw.lat, sw.lng].join();
69
63
  helper.setState(setBoundingBoxAsString(helper.state, boundingBox).resetPage()).search();
70
64
  widgetState.hasMapMoveSinceLastRefine = false;
71
65
  widgetState.lastRefineBoundingBox = boundingBox;
72
66
  };
73
67
  };
74
-
75
68
  var clearMapRefinement = function clearMapRefinement(helper) {
76
69
  return function () {
77
70
  helper.setQueryParameter('insideBoundingBox', undefined).search();
78
71
  };
79
72
  };
80
-
81
73
  var isRefinedWithMap = function isRefinedWithMap(state) {
82
74
  return function () {
83
75
  return Boolean(state.insideBoundingBox);
84
76
  };
85
77
  };
86
-
87
78
  var toggleRefineOnMapMove = function toggleRefineOnMapMove() {
88
79
  return widgetState.internalToggleRefineOnMapMove();
89
80
  };
90
-
91
81
  var createInternalToggleRefinementOnMapMove = function createInternalToggleRefinementOnMapMove(renderOptions, render) {
92
82
  return function () {
93
83
  widgetState.isRefineOnMapMove = !widgetState.isRefineOnMapMove;
94
84
  render(renderOptions);
95
85
  };
96
86
  };
97
-
98
87
  var isRefineOnMapMove = function isRefineOnMapMove() {
99
88
  return widgetState.isRefineOnMapMove;
100
89
  };
101
-
102
90
  var setMapMoveSinceLastRefine = function setMapMoveSinceLastRefine() {
103
91
  return widgetState.internalSetMapMoveSinceLastRefine();
104
92
  };
105
-
106
93
  var createInternalSetMapMoveSinceLastRefine = function createInternalSetMapMoveSinceLastRefine(renderOptions, render) {
107
94
  return function () {
108
95
  var shouldTriggerRender = widgetState.hasMapMoveSinceLastRefine !== true;
109
96
  widgetState.hasMapMoveSinceLastRefine = true;
110
-
111
97
  if (shouldTriggerRender) {
112
98
  render(renderOptions);
113
99
  }
114
100
  };
115
101
  };
116
-
117
102
  var hasMapMoveSinceLastRefine = function hasMapMoveSinceLastRefine() {
118
103
  return widgetState.hasMapMoveSinceLastRefine;
119
104
  };
120
-
121
105
  var sendEvent;
122
106
  return {
123
107
  $$type: $$type,
@@ -132,18 +116,16 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
132
116
  },
133
117
  render: function render(renderArgs) {
134
118
  var helper = renderArgs.helper,
135
- instantSearchInstance = renderArgs.instantSearchInstance;
136
- var isFirstRendering = false; // We don't use the state provided by the render function because we need
119
+ instantSearchInstance = renderArgs.instantSearchInstance;
120
+ var isFirstRendering = false;
121
+ // We don't use the state provided by the render function because we need
137
122
  // to be sure that the state is the latest one for the following condition
138
-
139
123
  var state = helper.state;
140
124
  var positionChangedSinceLastRefine = Boolean(state.aroundLatLng) && Boolean(widgetState.lastRefinePosition) && state.aroundLatLng !== widgetState.lastRefinePosition;
141
125
  var boundingBoxChangedSinceLastRefine = !state.insideBoundingBox && Boolean(widgetState.lastRefineBoundingBox) && state.insideBoundingBox !== widgetState.lastRefineBoundingBox;
142
-
143
126
  if (positionChangedSinceLastRefine || boundingBoxChangedSinceLastRefine) {
144
127
  widgetState.hasMapMoveSinceLastRefine = false;
145
128
  }
146
-
147
129
  widgetState.lastRefinePosition = state.aroundLatLng || '';
148
130
  widgetState.lastRefineBoundingBox = getBoundingBoxAsString(state);
149
131
  widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(renderArgs, this.render.bind(this));
@@ -156,15 +138,14 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
156
138
  },
157
139
  getWidgetRenderState: function getWidgetRenderState(renderOptions) {
158
140
  var helper = renderOptions.helper,
159
- results = renderOptions.results,
160
- instantSearchInstance = renderOptions.instantSearchInstance;
141
+ results = renderOptions.results,
142
+ instantSearchInstance = renderOptions.instantSearchInstance;
161
143
  var state = helper.state;
162
144
  var items = results ? transformItems(results.hits.filter(function (hit) {
163
145
  return hit._geoloc;
164
146
  }), {
165
147
  results: results
166
148
  }) : [];
167
-
168
149
  if (!sendEvent) {
169
150
  sendEvent = createSendEventForHits({
170
151
  instantSearchInstance: instantSearchInstance,
@@ -172,7 +153,6 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
172
153
  widgetType: $$type
173
154
  });
174
155
  }
175
-
176
156
  return {
177
157
  items: items,
178
158
  position: getPositionFromState(state),
@@ -201,11 +181,9 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
201
181
  getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
202
182
  var searchParameters = _ref4.searchParameters;
203
183
  var boundingBox = getBoundingBoxAsString(searchParameters);
204
-
205
184
  if (!boundingBox || uiState && uiState.geoSearch && uiState.geoSearch.boundingBox === boundingBox) {
206
185
  return uiState;
207
186
  }
208
-
209
187
  return _objectSpread(_objectSpread({}, uiState), {}, {
210
188
  geoSearch: {
211
189
  boundingBox: boundingBox
@@ -214,15 +192,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
214
192
  },
215
193
  getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
216
194
  var uiState = _ref5.uiState;
217
-
218
195
  if (!uiState || !uiState.geoSearch) {
219
196
  return searchParameters.setQueryParameter('insideBoundingBox', undefined);
220
197
  }
221
-
222
198
  return setBoundingBoxAsString(searchParameters, uiState.geoSearch.boundingBox);
223
199
  }
224
200
  };
225
201
  };
226
202
  };
227
-
228
203
  export default connectGeoSearch;
@@ -1,32 +1,24 @@
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
+ var _excluded = ["name", "escapedValue", "data", "path"];
3
+ 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; }
4
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
5
+ 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; }
6
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
7
+ 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
8
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
8
-
9
9
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
10
-
11
10
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
-
13
11
  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."); }
14
-
15
12
  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); }
16
-
17
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
18
-
19
- 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; }
20
-
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
+ 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; } }
21
15
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
-
23
16
  import { checkRendering, warning, createDocumentationMessageGenerator, createSendEventForFacet, isEqual, noop } from "../../lib/utils/index.js";
24
17
  var withUsage = createDocumentationMessageGenerator({
25
18
  name: 'hierarchical-menu',
26
19
  connector: true
27
20
  });
28
21
  var DEFAULT_SORT = ['name:asc'];
29
-
30
22
  /**
31
23
  * **HierarchicalMenu** connector provides the logic to build a custom widget
32
24
  * that will give the user the ability to explore facets in a tree-like structure.
@@ -45,86 +37,73 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
45
37
  checkRendering(renderFn, withUsage());
46
38
  return function (widgetParams) {
47
39
  var _ref = widgetParams || {},
48
- attributes = _ref.attributes,
49
- _ref$separator = _ref.separator,
50
- separator = _ref$separator === void 0 ? ' > ' : _ref$separator,
51
- _ref$rootPath = _ref.rootPath,
52
- rootPath = _ref$rootPath === void 0 ? null : _ref$rootPath,
53
- _ref$showParentLevel = _ref.showParentLevel,
54
- showParentLevel = _ref$showParentLevel === void 0 ? true : _ref$showParentLevel,
55
- _ref$limit = _ref.limit,
56
- limit = _ref$limit === void 0 ? 10 : _ref$limit,
57
- _ref$showMore = _ref.showMore,
58
- showMore = _ref$showMore === void 0 ? false : _ref$showMore,
59
- _ref$showMoreLimit = _ref.showMoreLimit,
60
- showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
61
- _ref$sortBy = _ref.sortBy,
62
- sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
63
- _ref$transformItems = _ref.transformItems,
64
- transformItems = _ref$transformItems === void 0 ? function (items) {
65
- return items;
66
- } : _ref$transformItems;
67
-
40
+ attributes = _ref.attributes,
41
+ _ref$separator = _ref.separator,
42
+ separator = _ref$separator === void 0 ? ' > ' : _ref$separator,
43
+ _ref$rootPath = _ref.rootPath,
44
+ rootPath = _ref$rootPath === void 0 ? null : _ref$rootPath,
45
+ _ref$showParentLevel = _ref.showParentLevel,
46
+ showParentLevel = _ref$showParentLevel === void 0 ? true : _ref$showParentLevel,
47
+ _ref$limit = _ref.limit,
48
+ limit = _ref$limit === void 0 ? 10 : _ref$limit,
49
+ _ref$showMore = _ref.showMore,
50
+ showMore = _ref$showMore === void 0 ? false : _ref$showMore,
51
+ _ref$showMoreLimit = _ref.showMoreLimit,
52
+ showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,
53
+ _ref$sortBy = _ref.sortBy,
54
+ sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,
55
+ _ref$transformItems = _ref.transformItems,
56
+ transformItems = _ref$transformItems === void 0 ? function (items) {
57
+ return items;
58
+ } : _ref$transformItems;
68
59
  if (!attributes || !Array.isArray(attributes) || attributes.length === 0) {
69
60
  throw new Error(withUsage('The `attributes` option expects an array of strings.'));
70
61
  }
71
-
72
62
  if (showMore === true && showMoreLimit <= limit) {
73
63
  throw new Error(withUsage('The `showMoreLimit` option must be greater than `limit`.'));
74
64
  }
75
-
76
65
  // we need to provide a hierarchicalFacet name for the search state
77
66
  // so that we can always map $hierarchicalFacetName => real attributes
78
67
  // we use the first attribute name
79
68
  var _attributes = _slicedToArray(attributes, 1),
80
- hierarchicalFacetName = _attributes[0];
69
+ hierarchicalFacetName = _attributes[0];
70
+ var sendEvent;
81
71
 
82
- var sendEvent; // Provide the same function to the `renderFn` so that way the user
72
+ // Provide the same function to the `renderFn` so that way the user
83
73
  // has to only bind it once when `isFirstRendering` for instance
84
-
85
74
  var toggleShowMore = function toggleShowMore() {};
86
-
87
75
  function cachedToggleShowMore() {
88
76
  toggleShowMore();
89
77
  }
90
-
91
78
  var _refine;
92
-
93
79
  var isShowingMore = false;
94
-
95
80
  function createToggleShowMore(renderOptions, widget) {
96
81
  return function () {
97
82
  isShowingMore = !isShowingMore;
98
83
  widget.render(renderOptions);
99
84
  };
100
85
  }
101
-
102
86
  function getLimit() {
103
87
  return isShowingMore ? showMoreLimit : limit;
104
88
  }
105
-
106
89
  function _prepareFacetValues(facetValues) {
107
90
  return facetValues.slice(0, getLimit()).map(function (_ref2) {
108
91
  var label = _ref2.name,
109
- value = _ref2.escapedValue,
110
- data = _ref2.data,
111
- path = _ref2.path,
112
- subValue = _objectWithoutProperties(_ref2, ["name", "escapedValue", "data", "path"]);
113
-
92
+ value = _ref2.escapedValue,
93
+ data = _ref2.data,
94
+ path = _ref2.path,
95
+ subValue = _objectWithoutProperties(_ref2, _excluded);
114
96
  var item = _objectSpread(_objectSpread({}, subValue), {}, {
115
97
  value: value,
116
98
  label: label,
117
99
  data: null
118
100
  });
119
-
120
101
  if (Array.isArray(data)) {
121
102
  item.data = _prepareFacetValues(data);
122
103
  }
123
-
124
104
  return item;
125
105
  });
126
106
  }
127
-
128
107
  return {
129
108
  $$type: 'ais.hierarchicalMenu',
130
109
  init: function init(initOptions) {
@@ -152,17 +131,17 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
152
131
  },
153
132
  getWidgetRenderState: function getWidgetRenderState(_ref4) {
154
133
  var results = _ref4.results,
155
- state = _ref4.state,
156
- createURL = _ref4.createURL,
157
- instantSearchInstance = _ref4.instantSearchInstance,
158
- helper = _ref4.helper;
134
+ state = _ref4.state,
135
+ createURL = _ref4.createURL,
136
+ instantSearchInstance = _ref4.instantSearchInstance,
137
+ helper = _ref4.helper;
159
138
  var items = [];
160
- var canToggleShowMore = false; // Bind createURL to this specific attribute
139
+ var canToggleShowMore = false;
161
140
 
141
+ // Bind createURL to this specific attribute
162
142
  function _createURL(facetValue) {
163
143
  return createURL(state.resetPage().toggleFacetRefinement(hierarchicalFacetName, facetValue));
164
144
  }
165
-
166
145
  if (!sendEvent) {
167
146
  sendEvent = createSendEventForFacet({
168
147
  instantSearchInstance: instantSearchInstance,
@@ -174,33 +153,31 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
174
153
  widgetType: this.$$type
175
154
  });
176
155
  }
177
-
178
156
  if (!_refine) {
179
157
  _refine = function _refine(facetValue) {
180
158
  sendEvent('click', facetValue);
181
159
  helper.toggleFacetRefinement(hierarchicalFacetName, facetValue).search();
182
160
  };
183
161
  }
184
-
185
162
  if (results) {
186
163
  var facetValues = results.getFacetValues(hierarchicalFacetName, {
187
164
  sortBy: sortBy,
188
165
  facetOrdering: sortBy === DEFAULT_SORT
189
166
  });
190
- var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : []; // If the limit is the max number of facet retrieved it is impossible to know
167
+ var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];
168
+
169
+ // If the limit is the max number of facet retrieved it is impossible to know
191
170
  // if the facets are exhaustive. The only moment we are sure it is exhaustive
192
171
  // is when it is strictly under the number requested unless we know that another
193
172
  // widget has requested more values (maxValuesPerFacet > getLimit()).
194
173
  // Because this is used for making the search of facets unable or not, it is important
195
174
  // to be conservative here.
196
-
197
175
  var hasExhaustiveItems = (state.maxValuesPerFacet || 0) > getLimit() ? facetItems.length <= getLimit() : facetItems.length < getLimit();
198
176
  canToggleShowMore = showMore && (isShowingMore || !hasExhaustiveItems);
199
177
  items = transformItems(_prepareFacetValues(facetItems), {
200
178
  results: results
201
179
  });
202
180
  }
203
-
204
181
  return {
205
182
  items: items,
206
183
  refine: _refine,
@@ -216,11 +193,9 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
216
193
  getWidgetUiState: function getWidgetUiState(uiState, _ref5) {
217
194
  var searchParameters = _ref5.searchParameters;
218
195
  var path = searchParameters.getHierarchicalFacetBreadcrumb(hierarchicalFacetName);
219
-
220
196
  if (!path.length) {
221
197
  return uiState;
222
198
  }
223
-
224
199
  return _objectSpread(_objectSpread({}, uiState), {}, {
225
200
  hierarchicalMenu: _objectSpread(_objectSpread({}, uiState.hierarchicalMenu), {}, _defineProperty({}, hierarchicalFacetName, path))
226
201
  });
@@ -228,12 +203,10 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
228
203
  getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {
229
204
  var uiState = _ref6.uiState;
230
205
  var values = uiState.hierarchicalMenu && uiState.hierarchicalMenu[hierarchicalFacetName];
231
-
232
206
  if (searchParameters.isHierarchicalFacet(hierarchicalFacetName)) {
233
207
  var facet = searchParameters.getHierarchicalFacetByName(hierarchicalFacetName);
234
208
  process.env.NODE_ENV === 'development' ? warning(isEqual(facet.attributes, attributes) && facet.separator === separator && facet.rootPath === rootPath, 'Using Breadcrumb and HierarchicalMenu on the same facet with different options overrides the configuration of the HierarchicalMenu.') : void 0;
235
209
  }
236
-
237
210
  var withFacetConfiguration = searchParameters.removeHierarchicalFacet(hierarchicalFacetName).addHierarchicalFacet({
238
211
  name: hierarchicalFacetName,
239
212
  attributes: attributes,
@@ -244,17 +217,14 @@ var connectHierarchicalMenu = function connectHierarchicalMenu(renderFn) {
244
217
  var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;
245
218
  var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);
246
219
  var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);
247
-
248
220
  if (!values) {
249
221
  return withMaxValuesPerFacet.setQueryParameters({
250
222
  hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, withMaxValuesPerFacet.hierarchicalFacetsRefinements), {}, _defineProperty({}, hierarchicalFacetName, []))
251
223
  });
252
224
  }
253
-
254
225
  return withMaxValuesPerFacet.addHierarchicalFacetRefinement(hierarchicalFacetName, values.join(separator));
255
226
  }
256
227
  };
257
228
  };
258
229
  };
259
-
260
230
  export default connectHierarchicalMenu;
@@ -1,27 +1,25 @@
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
  import { escapeHits, TAG_PLACEHOLDER, checkRendering, createDocumentationMessageGenerator, addAbsolutePosition, addQueryID, createSendEventForHits, createBindEventForHits, noop } from "../../lib/utils/index.js";
8
8
  var withUsage = createDocumentationMessageGenerator({
9
9
  name: 'hits',
10
10
  connector: true
11
11
  });
12
-
13
12
  var connectHits = function connectHits(renderFn) {
14
13
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
15
14
  checkRendering(renderFn, withUsage());
16
15
  return function (widgetParams) {
17
16
  var _ref = widgetParams || {},
18
- _ref$escapeHTML = _ref.escapeHTML,
19
- escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,
20
- _ref$transformItems = _ref.transformItems,
21
- transformItems = _ref$transformItems === void 0 ? function (items) {
22
- return items;
23
- } : _ref$transformItems;
24
-
17
+ _ref$escapeHTML = _ref.escapeHTML,
18
+ escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,
19
+ _ref$transformItems = _ref.transformItems,
20
+ transformItems = _ref$transformItems === void 0 ? function (items) {
21
+ return items;
22
+ } : _ref$transformItems;
25
23
  var sendEvent;
26
24
  var bindEvent;
27
25
  return {
@@ -45,9 +43,8 @@ var connectHits = function connectHits(renderFn) {
45
43
  },
46
44
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
47
45
  var results = _ref2.results,
48
- helper = _ref2.helper,
49
- instantSearchInstance = _ref2.instantSearchInstance;
50
-
46
+ helper = _ref2.helper,
47
+ instantSearchInstance = _ref2.instantSearchInstance;
51
48
  if (!sendEvent) {
52
49
  sendEvent = createSendEventForHits({
53
50
  instantSearchInstance: instantSearchInstance,
@@ -55,14 +52,12 @@ var connectHits = function connectHits(renderFn) {
55
52
  widgetType: this.$$type
56
53
  });
57
54
  }
58
-
59
55
  if (!bindEvent) {
60
56
  bindEvent = createBindEventForHits({
61
57
  index: helper.getIndex(),
62
58
  widgetType: this.$$type
63
59
  });
64
60
  }
65
-
66
61
  if (!results) {
67
62
  return {
68
63
  hits: [],
@@ -72,11 +67,9 @@ var connectHits = function connectHits(renderFn) {
72
67
  widgetParams: widgetParams
73
68
  };
74
69
  }
75
-
76
70
  if (escapeHTML && results.hits.length > 0) {
77
71
  results.hits = escapeHits(results.hits);
78
72
  }
79
-
80
73
  var hitsWithAbsolutePosition = addAbsolutePosition(results.hits, results.page, results.hitsPerPage);
81
74
  var hitsWithAbsolutePositionAndQueryID = addQueryID(hitsWithAbsolutePosition, results.queryID);
82
75
  var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {
@@ -93,11 +86,9 @@ var connectHits = function connectHits(renderFn) {
93
86
  dispose: function dispose(_ref3) {
94
87
  var state = _ref3.state;
95
88
  unmountFn();
96
-
97
89
  if (!escapeHTML) {
98
90
  return state;
99
91
  }
100
-
101
92
  return state.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function (acc, key) {
102
93
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));
103
94
  }, {}));
@@ -106,11 +97,9 @@ var connectHits = function connectHits(renderFn) {
106
97
  if (!escapeHTML) {
107
98
  return state;
108
99
  }
109
-
110
100
  return state.setQueryParameters(TAG_PLACEHOLDER);
111
101
  }
112
102
  };
113
103
  };
114
104
  };
115
-
116
105
  export default connectHits;