instantsearch.js 4.49.0 → 4.49.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/README.md +3 -3
  2. package/cjs/components/Answers/Answers.js +6 -16
  3. package/cjs/components/Breadcrumb/Breadcrumb.js +5 -12
  4. package/cjs/components/ClearRefinements/ClearRefinements.js +4 -11
  5. package/cjs/components/CurrentRefinements/CurrentRefinements.js +5 -12
  6. package/cjs/components/GeoSearchControls/GeoSearchButton.js +4 -6
  7. package/cjs/components/GeoSearchControls/GeoSearchControls.js +11 -20
  8. package/cjs/components/GeoSearchControls/GeoSearchToggle.js +4 -6
  9. package/cjs/components/Highlight/Highlight.js +3 -11
  10. package/cjs/components/Hits/Hits.js +8 -20
  11. package/cjs/components/InfiniteHits/InfiniteHits.js +13 -25
  12. package/cjs/components/InternalHighlight/InternalHighlight.js +0 -3
  13. package/cjs/components/MenuSelect/MenuSelect.js +9 -19
  14. package/cjs/components/Pagination/Pagination.js +10 -17
  15. package/cjs/components/Panel/Panel.js +7 -26
  16. package/cjs/components/PoweredBy/PoweredBy.js +4 -5
  17. package/cjs/components/QueryRuleCustomData/QueryRuleCustomData.js +2 -6
  18. package/cjs/components/RangeInput/RangeInput.js +16 -48
  19. package/cjs/components/RefinementList/RefinementList.js +19 -73
  20. package/cjs/components/RefinementList/RefinementListItem.js +8 -14
  21. package/cjs/components/RelevantSort/RelevantSort.js +4 -8
  22. package/cjs/components/ReverseHighlight/ReverseHighlight.js +3 -11
  23. package/cjs/components/ReverseSnippet/ReverseSnippet.js +3 -11
  24. package/cjs/components/SearchBox/SearchBox.js +25 -69
  25. package/cjs/components/Selector/Selector.js +3 -6
  26. package/cjs/components/Slider/Pit.js +3 -10
  27. package/cjs/components/Slider/Rheostat.js +63 -131
  28. package/cjs/components/Slider/Slider.js +28 -65
  29. package/cjs/components/Snippet/Snippet.js +3 -11
  30. package/cjs/components/Stats/Stats.js +7 -20
  31. package/cjs/components/Template/Template.js +8 -37
  32. package/cjs/components/ToggleRefinement/ToggleRefinement.js +4 -10
  33. package/cjs/components/VoiceSearch/VoiceSearch.js +8 -15
  34. package/cjs/connectors/answers/connectAnswers.js +21 -36
  35. package/cjs/connectors/autocomplete/connectAutocomplete.js +8 -25
  36. package/cjs/connectors/breadcrumb/connectBreadcrumb.js +17 -48
  37. package/cjs/connectors/clear-refinements/connectClearRefinements.js +27 -45
  38. package/cjs/connectors/configure/connectConfigure.js +6 -20
  39. package/cjs/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -36
  40. package/cjs/connectors/current-refinements/connectCurrentRefinements.js +18 -57
  41. package/cjs/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -37
  42. package/cjs/connectors/geo-search/connectGeoSearch.js +17 -47
  43. package/cjs/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -74
  44. package/cjs/connectors/hits/connectHits.js +10 -26
  45. package/cjs/connectors/hits/connectHitsWithInsights.js +0 -4
  46. package/cjs/connectors/hits-per-page/connectHitsPerPage.js +15 -38
  47. package/cjs/connectors/index.js +62 -96
  48. package/cjs/connectors/infinite-hits/connectInfiniteHits.js +26 -62
  49. package/cjs/connectors/infinite-hits/connectInfiniteHitsWithInsights.js +0 -4
  50. package/cjs/connectors/menu/connectMenu.js +28 -66
  51. package/cjs/connectors/numeric-menu/connectNumericMenu.js +24 -78
  52. package/cjs/connectors/pagination/Paginator.js +3 -20
  53. package/cjs/connectors/pagination/connectPagination.js +8 -25
  54. package/cjs/connectors/powered-by/connectPoweredBy.js +4 -13
  55. package/cjs/connectors/query-rules/connectQueryRules.js +32 -56
  56. package/cjs/connectors/range/connectRange.js +41 -101
  57. package/cjs/connectors/rating-menu/connectRatingMenu.js +23 -79
  58. package/cjs/connectors/refinement-list/connectRefinementList.js +37 -70
  59. package/cjs/connectors/relevant-sort/connectRelevantSort.js +4 -14
  60. package/cjs/connectors/search-box/connectSearchBox.js +7 -23
  61. package/cjs/connectors/sort-by/connectSortBy.js +11 -21
  62. package/cjs/connectors/stats/connectStats.js +4 -11
  63. package/cjs/connectors/toggle-refinement/connectToggleRefinement.js +29 -63
  64. package/cjs/connectors/voice-search/connectVoiceSearch.js +13 -35
  65. package/cjs/helpers/components/Highlight.js +4 -12
  66. package/cjs/helpers/components/ReverseHighlight.js +7 -19
  67. package/cjs/helpers/components/ReverseSnippet.js +7 -19
  68. package/cjs/helpers/components/Snippet.js +4 -12
  69. package/cjs/helpers/components/index.js +0 -8
  70. package/cjs/helpers/get-insights-anonymous-user-token.js +7 -12
  71. package/cjs/helpers/highlight.js +10 -16
  72. package/cjs/helpers/index.js +17 -31
  73. package/cjs/helpers/insights.js +5 -17
  74. package/cjs/helpers/reverseHighlight.js +10 -16
  75. package/cjs/helpers/reverseSnippet.js +10 -16
  76. package/cjs/helpers/snippet.js +10 -16
  77. package/cjs/index.js +3 -18
  78. package/cjs/lib/InstantSearch.js +79 -180
  79. package/cjs/lib/createHelpers.js +4 -11
  80. package/cjs/lib/formatNumber.js +0 -1
  81. package/cjs/lib/infiniteHitsCache/index.js +0 -2
  82. package/cjs/lib/infiniteHitsCache/sessionStorage.js +9 -18
  83. package/cjs/lib/insights/client.js +8 -34
  84. package/cjs/lib/insights/index.js +7 -13
  85. package/cjs/lib/insights/listener.js +4 -20
  86. package/cjs/lib/routers/history.js +63 -102
  87. package/cjs/lib/routers/index.js +0 -2
  88. package/cjs/lib/stateMappings/index.js +0 -3
  89. package/cjs/lib/stateMappings/simple.js +6 -13
  90. package/cjs/lib/stateMappings/singleIndex.js +1 -7
  91. package/cjs/lib/suit.js +2 -5
  92. package/cjs/lib/templating/index.js +0 -4
  93. package/cjs/lib/templating/prepareTemplateProps.js +8 -19
  94. package/cjs/lib/templating/renderTemplate.js +9 -24
  95. package/cjs/lib/utils/capitalize.js +0 -1
  96. package/cjs/lib/utils/checkIndexUiState.js +15 -43
  97. package/cjs/lib/utils/checkRendering.js +0 -2
  98. package/cjs/lib/utils/clearRefinements.js +2 -9
  99. package/cjs/lib/utils/concatHighlightedParts.js +1 -3
  100. package/cjs/lib/utils/createConcurrentSafePromise.js +0 -3
  101. package/cjs/lib/utils/createSendEventForFacet.js +7 -14
  102. package/cjs/lib/utils/createSendEventForHits.js +9 -33
  103. package/cjs/lib/utils/debounce.js +0 -3
  104. package/cjs/lib/utils/defer.js +0 -11
  105. package/cjs/lib/utils/detect-insights-client.js +0 -2
  106. package/cjs/lib/utils/documentation.js +2 -5
  107. package/cjs/lib/utils/escape-highlight.js +5 -22
  108. package/cjs/lib/utils/escape-html.js +9 -7
  109. package/cjs/lib/utils/escapeFacetValue.js +1 -5
  110. package/cjs/lib/utils/find.js +2 -5
  111. package/cjs/lib/utils/findIndex.js +0 -3
  112. package/cjs/lib/utils/geo-search.js +14 -34
  113. package/cjs/lib/utils/getAppIdAndApiKey.js +2 -3
  114. package/cjs/lib/utils/getContainerNode.js +0 -6
  115. package/cjs/lib/utils/getHighlightFromSiblings.js +0 -6
  116. package/cjs/lib/utils/getHighlightedParts.js +1 -4
  117. package/cjs/lib/utils/getObjectType.js +0 -1
  118. package/cjs/lib/utils/getPropertyByPath.js +0 -1
  119. package/cjs/lib/utils/getRefinements.js +13 -26
  120. package/cjs/lib/utils/getWidgetAttribute.js +0 -6
  121. package/cjs/lib/utils/hits-absolute-position.js +2 -6
  122. package/cjs/lib/utils/hits-query-id.js +2 -7
  123. package/cjs/lib/utils/index.js +0 -92
  124. package/cjs/lib/utils/isDomElement.js +0 -1
  125. package/cjs/lib/utils/isEqual.js +0 -8
  126. package/cjs/lib/utils/isFacetRefined.js +0 -1
  127. package/cjs/lib/utils/isFiniteNumber.js +0 -1
  128. package/cjs/lib/utils/isIndexWidget.js +0 -1
  129. package/cjs/lib/utils/isPlainObject.js +3 -11
  130. package/cjs/lib/utils/isSpecialClick.js +0 -1
  131. package/cjs/lib/utils/logger.js +3 -13
  132. package/cjs/lib/utils/mergeSearchParameters.js +16 -40
  133. package/cjs/lib/utils/noop.js +0 -1
  134. package/cjs/lib/utils/range.js +8 -14
  135. package/cjs/lib/utils/render-args.js +0 -2
  136. package/cjs/lib/utils/resolveSearchParameters.js +0 -3
  137. package/cjs/lib/utils/reverseHighlightedParts.js +2 -8
  138. package/cjs/lib/utils/safelyRunOnBrowser.js +7 -9
  139. package/cjs/lib/utils/serializer.js +1 -3
  140. package/cjs/lib/utils/setIndexHelperState.js +0 -5
  141. package/cjs/lib/utils/toArray.js +0 -1
  142. package/cjs/lib/utils/typedObject.js +0 -1
  143. package/cjs/lib/utils/uniq.js +0 -1
  144. package/cjs/lib/version.js +1 -1
  145. package/cjs/lib/voiceSearchHelper/index.js +8 -36
  146. package/cjs/middlewares/createInsightsMiddleware.js +15 -44
  147. package/cjs/middlewares/createMetadataMiddleware.js +4 -12
  148. package/cjs/middlewares/createRouterMiddleware.js +8 -19
  149. package/cjs/middlewares/index.js +0 -6
  150. package/cjs/types/algoliasearch.js +0 -2
  151. package/cjs/types/index.js +0 -28
  152. package/cjs/widgets/analytics/analytics.js +12 -47
  153. package/cjs/widgets/answers/answers.js +19 -39
  154. package/cjs/widgets/breadcrumb/breadcrumb.js +18 -38
  155. package/cjs/widgets/clear-refinements/clear-refinements.js +15 -35
  156. package/cjs/widgets/configure/configure.js +2 -10
  157. package/cjs/widgets/configure-related-items/configure-related-items.js +2 -10
  158. package/cjs/widgets/current-refinements/current-refinements.js +12 -30
  159. package/cjs/widgets/dynamic-widgets/dynamic-widgets.js +6 -25
  160. package/cjs/widgets/geo-search/GeoSearchRenderer.js +41 -68
  161. package/cjs/widgets/geo-search/createHTMLMarker.js +30 -60
  162. package/cjs/widgets/geo-search/defaultTemplates.js +0 -3
  163. package/cjs/widgets/geo-search/geo-search.js +27 -59
  164. package/cjs/widgets/hierarchical-menu/defaultTemplates.js +4 -7
  165. package/cjs/widgets/hierarchical-menu/hierarchical-menu.js +28 -47
  166. package/cjs/widgets/hits/hits.js +16 -37
  167. package/cjs/widgets/hits-per-page/hits-per-page.js +13 -31
  168. package/cjs/widgets/index/index.js +49 -95
  169. package/cjs/widgets/index.js +12 -50
  170. package/cjs/widgets/infinite-hits/infinite-hits.js +23 -44
  171. package/cjs/widgets/menu/defaultTemplates.js +3 -6
  172. package/cjs/widgets/menu/menu.js +23 -43
  173. package/cjs/widgets/menu-select/defaultTemplates.js +1 -3
  174. package/cjs/widgets/menu-select/menu-select.js +18 -38
  175. package/cjs/widgets/numeric-menu/defaultTemplates.js +3 -4
  176. package/cjs/widgets/numeric-menu/numeric-menu.js +17 -37
  177. package/cjs/widgets/pagination/pagination.js +32 -53
  178. package/cjs/widgets/panel/panel.js +20 -48
  179. package/cjs/widgets/places/places.js +16 -33
  180. package/cjs/widgets/powered-by/powered-by.js +10 -27
  181. package/cjs/widgets/query-rule-context/query-rule-context.js +2 -13
  182. package/cjs/widgets/query-rule-custom-data/query-rule-custom-data.js +14 -32
  183. package/cjs/widgets/range-input/range-input.js +23 -50
  184. package/cjs/widgets/range-slider/range-slider.js +28 -53
  185. package/cjs/widgets/rating-menu/defaultTemplates.js +8 -14
  186. package/cjs/widgets/rating-menu/rating-menu.js +17 -38
  187. package/cjs/widgets/refinement-list/defaultTemplates.js +5 -8
  188. package/cjs/widgets/refinement-list/refinement-list.js +39 -60
  189. package/cjs/widgets/relevant-sort/relevant-sort.js +10 -29
  190. package/cjs/widgets/search-box/defaultTemplates.js +0 -5
  191. package/cjs/widgets/search-box/search-box.js +31 -49
  192. package/cjs/widgets/sort-by/sort-by.js +11 -29
  193. package/cjs/widgets/stats/defaultTemplates.js +0 -1
  194. package/cjs/widgets/stats/stats.js +27 -57
  195. package/cjs/widgets/toggle-refinement/toggle-refinement.js +16 -36
  196. package/cjs/widgets/voice-search/defaultTemplates.js +4 -14
  197. package/cjs/widgets/voice-search/voice-search.js +17 -36
  198. package/dist/instantsearch.development.d.ts +8 -6
  199. package/dist/instantsearch.development.js +1725 -3087
  200. package/dist/instantsearch.development.js.map +1 -1
  201. package/dist/instantsearch.production.d.ts +8 -6
  202. package/dist/instantsearch.production.min.d.ts +8 -6
  203. package/dist/instantsearch.production.min.js +2 -2
  204. package/dist/instantsearch.production.min.js.map +1 -1
  205. package/es/components/Answers/Answers.js +6 -11
  206. package/es/components/Breadcrumb/Breadcrumb.js +5 -7
  207. package/es/components/ClearRefinements/ClearRefinements.js +4 -6
  208. package/es/components/CurrentRefinements/CurrentRefinements.js +7 -10
  209. package/es/components/GeoSearchControls/GeoSearchButton.js +6 -6
  210. package/es/components/GeoSearchControls/GeoSearchControls.js +11 -13
  211. package/es/components/GeoSearchControls/GeoSearchToggle.js +6 -6
  212. package/es/components/Highlight/Highlight.js +3 -7
  213. package/es/components/Hits/Hits.js +8 -15
  214. package/es/components/InfiniteHits/InfiniteHits.js +13 -20
  215. package/es/components/MenuSelect/MenuSelect.js +9 -13
  216. package/es/components/Pagination/Pagination.js +12 -15
  217. package/es/components/Panel/Panel.js +7 -20
  218. package/es/components/PoweredBy/PoweredBy.js +6 -5
  219. package/es/components/QueryRuleCustomData/QueryRuleCustomData.js +4 -4
  220. package/es/components/RangeInput/RangeInput.js +16 -43
  221. package/es/components/RefinementList/RefinementList.js +19 -64
  222. package/es/components/RefinementList/RefinementListItem.js +8 -10
  223. package/es/components/RelevantSort/RelevantSort.js +6 -6
  224. package/es/components/ReverseHighlight/ReverseHighlight.js +3 -7
  225. package/es/components/ReverseSnippet/ReverseSnippet.js +3 -7
  226. package/es/components/SearchBox/SearchBox.js +25 -63
  227. package/es/components/Selector/Selector.js +5 -5
  228. package/es/components/Slider/Pit.js +3 -7
  229. package/es/components/Slider/Rheostat.js +64 -129
  230. package/es/components/Slider/Slider.js +28 -58
  231. package/es/components/Snippet/Snippet.js +3 -7
  232. package/es/components/Stats/Stats.js +7 -15
  233. package/es/components/Template/Template.js +8 -32
  234. package/es/components/ToggleRefinement/ToggleRefinement.js +4 -6
  235. package/es/components/VoiceSearch/VoiceSearch.js +10 -13
  236. package/es/connectors/answers/connectAnswers.js +21 -35
  237. package/es/connectors/autocomplete/connectAutocomplete.js +8 -23
  238. package/es/connectors/breadcrumb/connectBreadcrumb.js +17 -46
  239. package/es/connectors/clear-refinements/connectClearRefinements.js +27 -43
  240. package/es/connectors/configure/connectConfigure.js +7 -16
  241. package/es/connectors/configure-related-items/connectConfigureRelatedItems.js +11 -31
  242. package/es/connectors/current-refinements/connectCurrentRefinements.js +18 -55
  243. package/es/connectors/dynamic-widgets/connectDynamicWidgets.js +17 -35
  244. package/es/connectors/geo-search/connectGeoSearch.js +17 -45
  245. package/es/connectors/hierarchical-menu/connectHierarchicalMenu.js +38 -72
  246. package/es/connectors/hits/connectHits.js +10 -24
  247. package/es/connectors/hits-per-page/connectHitsPerPage.js +15 -36
  248. package/es/connectors/index.d.ts +2 -1
  249. package/es/connectors/index.js +6 -3
  250. package/es/connectors/infinite-hits/connectInfiniteHits.js +26 -60
  251. package/es/connectors/menu/connectMenu.js +28 -64
  252. package/es/connectors/numeric-menu/connectNumericMenu.js +24 -76
  253. package/es/connectors/pagination/Paginator.js +3 -19
  254. package/es/connectors/pagination/connectPagination.js +8 -21
  255. package/es/connectors/powered-by/connectPoweredBy.js +4 -11
  256. package/es/connectors/query-rules/connectQueryRules.js +32 -54
  257. package/es/connectors/range/connectRange.js +41 -99
  258. package/es/connectors/rating-menu/connectRatingMenu.js +23 -77
  259. package/es/connectors/refinement-list/connectRefinementList.js +37 -68
  260. package/es/connectors/relevant-sort/connectRelevantSort.js +4 -13
  261. package/es/connectors/search-box/connectSearchBox.js +7 -21
  262. package/es/connectors/sort-by/connectSortBy.js +11 -19
  263. package/es/connectors/stats/connectStats.js +4 -9
  264. package/es/connectors/toggle-refinement/connectToggleRefinement.js +29 -61
  265. package/es/connectors/voice-search/connectVoiceSearch.js +13 -31
  266. package/es/helpers/components/Highlight.js +4 -8
  267. package/es/helpers/components/ReverseHighlight.js +7 -15
  268. package/es/helpers/components/ReverseSnippet.js +7 -15
  269. package/es/helpers/components/Snippet.js +4 -8
  270. package/es/helpers/get-insights-anonymous-user-token.js +5 -7
  271. package/es/helpers/highlight.js +9 -11
  272. package/es/helpers/insights.js +3 -10
  273. package/es/helpers/reverseHighlight.js +9 -11
  274. package/es/helpers/reverseSnippet.js +9 -11
  275. package/es/helpers/snippet.js +9 -11
  276. package/es/index.js +0 -2
  277. package/es/lib/InstantSearch.js +79 -170
  278. package/es/lib/createHelpers.js +4 -8
  279. package/es/lib/infiniteHitsCache/sessionStorage.js +9 -16
  280. package/es/lib/insights/client.js +8 -32
  281. package/es/lib/insights/listener.js +6 -18
  282. package/es/lib/routers/history.js +63 -99
  283. package/es/lib/stateMappings/simple.js +6 -12
  284. package/es/lib/stateMappings/singleIndex.js +1 -6
  285. package/es/lib/suit.js +2 -3
  286. package/es/lib/templating/prepareTemplateProps.js +8 -18
  287. package/es/lib/templating/renderTemplate.js +9 -20
  288. package/es/lib/utils/checkIndexUiState.js +18 -40
  289. package/es/lib/utils/clearRefinements.js +2 -8
  290. package/es/lib/utils/concatHighlightedParts.js +1 -1
  291. package/es/lib/utils/createConcurrentSafePromise.js +0 -2
  292. package/es/lib/utils/createSendEventForFacet.js +7 -12
  293. package/es/lib/utils/createSendEventForHits.js +8 -30
  294. package/es/lib/utils/debounce.js +0 -2
  295. package/es/lib/utils/defer.js +0 -10
  296. package/es/lib/utils/documentation.js +2 -3
  297. package/es/lib/utils/escape-highlight.js +3 -16
  298. package/es/lib/utils/escape-html.js +9 -5
  299. package/es/lib/utils/escapeFacetValue.js +0 -2
  300. package/es/lib/utils/find.js +2 -4
  301. package/es/lib/utils/findIndex.js +0 -2
  302. package/es/lib/utils/geo-search.js +14 -32
  303. package/es/lib/utils/getAppIdAndApiKey.js +2 -2
  304. package/es/lib/utils/getContainerNode.js +1 -5
  305. package/es/lib/utils/getHighlightFromSiblings.js +0 -3
  306. package/es/lib/utils/getHighlightedParts.js +1 -2
  307. package/es/lib/utils/getRefinements.js +13 -24
  308. package/es/lib/utils/getWidgetAttribute.js +0 -5
  309. package/es/lib/utils/hits-absolute-position.js +2 -5
  310. package/es/lib/utils/hits-query-id.js +2 -6
  311. package/es/lib/utils/isEqual.js +0 -7
  312. package/es/lib/utils/isPlainObject.js +3 -10
  313. package/es/lib/utils/logger.js +2 -12
  314. package/es/lib/utils/mergeSearchParameters.js +16 -37
  315. package/es/lib/utils/range.js +8 -13
  316. package/es/lib/utils/resolveSearchParameters.js +0 -2
  317. package/es/lib/utils/reverseHighlightedParts.js +2 -6
  318. package/es/lib/utils/safelyRunOnBrowser.js +7 -8
  319. package/es/lib/utils/setIndexHelperState.js +0 -2
  320. package/es/lib/version.d.ts +1 -1
  321. package/es/lib/version.js +1 -1
  322. package/es/lib/voiceSearchHelper/index.js +8 -35
  323. package/es/middlewares/createInsightsMiddleware.js +15 -41
  324. package/es/middlewares/createMetadataMiddleware.js +3 -9
  325. package/es/middlewares/createRouterMiddleware.js +8 -13
  326. package/es/types/index.js +9 -5
  327. package/es/widgets/analytics/analytics.js +12 -45
  328. package/es/widgets/answers/answers.js +19 -28
  329. package/es/widgets/breadcrumb/breadcrumb.js +18 -27
  330. package/es/widgets/clear-refinements/clear-refinements.js +15 -24
  331. package/es/widgets/configure/configure.js +3 -6
  332. package/es/widgets/configure-related-items/configure-related-items.js +2 -7
  333. package/es/widgets/current-refinements/current-refinements.js +12 -21
  334. package/es/widgets/dynamic-widgets/dynamic-widgets.js +6 -20
  335. package/es/widgets/geo-search/GeoSearchRenderer.js +41 -63
  336. package/es/widgets/geo-search/createHTMLMarker.js +30 -59
  337. package/es/widgets/geo-search/defaultTemplates.js +2 -2
  338. package/es/widgets/geo-search/geo-search.js +27 -49
  339. package/es/widgets/hierarchical-menu/defaultTemplates.js +5 -4
  340. package/es/widgets/hierarchical-menu/hierarchical-menu.js +28 -36
  341. package/es/widgets/hits/hits.js +16 -25
  342. package/es/widgets/hits-per-page/hits-per-page.js +13 -22
  343. package/es/widgets/index/index.js +49 -91
  344. package/es/widgets/index.d.ts +2 -1
  345. package/es/widgets/index.js +4 -3
  346. package/es/widgets/infinite-hits/infinite-hits.js +23 -32
  347. package/es/widgets/menu/defaultTemplates.js +4 -3
  348. package/es/widgets/menu/menu.js +23 -32
  349. package/es/widgets/menu-select/defaultTemplates.js +1 -1
  350. package/es/widgets/menu-select/menu-select.js +18 -27
  351. package/es/widgets/numeric-menu/defaultTemplates.js +4 -3
  352. package/es/widgets/numeric-menu/numeric-menu.js +17 -26
  353. package/es/widgets/pagination/pagination.js +32 -44
  354. package/es/widgets/panel/panel.js +20 -40
  355. package/es/widgets/places/places.js +16 -32
  356. package/es/widgets/powered-by/powered-by.js +10 -18
  357. package/es/widgets/query-rule-context/query-rule-context.js +2 -9
  358. package/es/widgets/query-rule-custom-data/query-rule-custom-data.js +13 -22
  359. package/es/widgets/range-input/range-input.js +23 -40
  360. package/es/widgets/range-slider/range-slider.js +28 -44
  361. package/es/widgets/rating-menu/defaultTemplates.js +9 -12
  362. package/es/widgets/rating-menu/rating-menu.js +17 -27
  363. package/es/widgets/refinement-list/defaultTemplates.js +6 -5
  364. package/es/widgets/refinement-list/refinement-list.js +39 -48
  365. package/es/widgets/relevant-sort/relevant-sort.js +10 -19
  366. package/es/widgets/search-box/defaultTemplates.js +1 -4
  367. package/es/widgets/search-box/search-box.js +31 -39
  368. package/es/widgets/sort-by/sort-by.js +11 -20
  369. package/es/widgets/stats/stats.js +26 -45
  370. package/es/widgets/toggle-refinement/toggle-refinement.js +16 -25
  371. package/es/widgets/voice-search/defaultTemplates.js +5 -13
  372. package/es/widgets/voice-search/voice-search.js +17 -26
  373. package/package.json +20 -119
  374. package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.input.js +0 -1
  375. package/scripts/transforms/__testfixtures__/addWidget-to-addWidgets/imported.output.js +0 -1
  376. package/CHANGELOG.md +0 -3684
@@ -4,32 +4,20 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _index = require("../../lib/utils/index.js");
9
-
10
8
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
11
-
12
9
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
13
-
14
10
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
15
-
16
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
17
-
11
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
18
12
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
19
-
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; }
21
-
22
- 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; }
23
-
24
- 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; }
25
-
14
+ 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; }
15
+ 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; }
26
16
  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; }
27
-
28
17
  var withUsage = (0, _index.createDocumentationMessageGenerator)({
29
18
  name: 'current-refinements',
30
19
  connector: true
31
20
  });
32
-
33
21
  var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
34
22
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _index.noop;
35
23
  (0, _index.checkRendering)(renderFn, withUsage());
@@ -37,16 +25,14 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
37
25
  if ((widgetParams || {}).includedAttributes && (widgetParams || {}).excludedAttributes) {
38
26
  throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));
39
27
  }
40
-
41
28
  var _ref = widgetParams || {},
42
- includedAttributes = _ref.includedAttributes,
43
- _ref$excludedAttribut = _ref.excludedAttributes,
44
- excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,
45
- _ref$transformItems = _ref.transformItems,
46
- transformItems = _ref$transformItems === void 0 ? function (items) {
47
- return items;
48
- } : _ref$transformItems;
49
-
29
+ includedAttributes = _ref.includedAttributes,
30
+ _ref$excludedAttribut = _ref.excludedAttributes,
31
+ excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,
32
+ _ref$transformItems = _ref.transformItems,
33
+ transformItems = _ref$transformItems === void 0 ? function (items) {
34
+ return items;
35
+ } : _ref$transformItems;
50
36
  return {
51
37
  $$type: 'ais.currentRefinements',
52
38
  init: function init(initOptions) {
@@ -71,10 +57,9 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
71
57
  },
72
58
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
73
59
  var results = _ref2.results,
74
- scopedResults = _ref2.scopedResults,
75
- _createURL = _ref2.createURL,
76
- helper = _ref2.helper;
77
-
60
+ scopedResults = _ref2.scopedResults,
61
+ _createURL = _ref2.createURL,
62
+ helper = _ref2.helper;
78
63
  function getItems() {
79
64
  if (!results) {
80
65
  return transformItems(getRefinementsItems({
@@ -86,7 +71,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
86
71
  results: results
87
72
  });
88
73
  }
89
-
90
74
  return scopedResults.reduce(function (accResults, scopedResult) {
91
75
  return accResults.concat(transformItems(getRefinementsItems({
92
76
  results: scopedResult.results,
@@ -98,7 +82,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
98
82
  }));
99
83
  }, []);
100
84
  }
101
-
102
85
  var items = getItems();
103
86
  return {
104
87
  items: items,
@@ -115,12 +98,11 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
115
98
  };
116
99
  };
117
100
  };
118
-
119
101
  function getRefinementsItems(_ref3) {
120
102
  var results = _ref3.results,
121
- helper = _ref3.helper,
122
- includedAttributes = _ref3.includedAttributes,
123
- excludedAttributes = _ref3.excludedAttributes;
103
+ helper = _ref3.helper,
104
+ includedAttributes = _ref3.includedAttributes,
105
+ excludedAttributes = _ref3.excludedAttributes;
124
106
  var includesQuery = (includedAttributes || []).indexOf('query') !== -1 || (excludedAttributes || []).indexOf('query') === -1;
125
107
  var filterFunction = includedAttributes ? function (item) {
126
108
  return includedAttributes.indexOf(item.attribute) !== -1;
@@ -137,7 +119,8 @@ function getRefinementsItems(_ref3) {
137
119
  label: currentItem.attribute,
138
120
  refinements: items.filter(function (result) {
139
121
  return result.attribute === currentItem.attribute;
140
- }) // We want to keep the order of refinements except the numeric ones.
122
+ })
123
+ // We want to keep the order of refinements except the numeric ones.
141
124
  .sort(function (a, b) {
142
125
  return a.type === 'numeric' ? a.value - b.value : 0;
143
126
  }),
@@ -147,55 +130,41 @@ function getRefinementsItems(_ref3) {
147
130
  }]);
148
131
  }, []);
149
132
  }
150
-
151
133
  function clearRefinementFromState(state, refinement) {
152
134
  state = state.resetPage();
153
-
154
135
  switch (refinement.type) {
155
136
  case 'facet':
156
137
  return state.removeFacetRefinement(refinement.attribute, String(refinement.value));
157
-
158
138
  case 'disjunctive':
159
139
  return state.removeDisjunctiveFacetRefinement(refinement.attribute, String(refinement.value));
160
-
161
140
  case 'hierarchical':
162
141
  return state.removeHierarchicalFacetRefinement(refinement.attribute);
163
-
164
142
  case 'exclude':
165
143
  return state.removeExcludeRefinement(refinement.attribute, String(refinement.value));
166
-
167
144
  case 'numeric':
168
145
  return state.removeNumericRefinement(refinement.attribute, refinement.operator, String(refinement.value));
169
-
170
146
  case 'tag':
171
147
  return state.removeTagRefinement(String(refinement.value));
172
-
173
148
  case 'query':
174
149
  return state.setQueryParameter('query', '');
175
-
176
150
  default:
177
151
  process.env.NODE_ENV === 'development' ? (0, _index.warning)(false, "The refinement type \"".concat(refinement.type, "\" does not exist and cannot be cleared from the current refinements.")) : void 0;
178
152
  return state;
179
153
  }
180
154
  }
181
-
182
155
  function clearRefinement(helper, refinement) {
183
156
  helper.setState(clearRefinementFromState(helper.state, refinement)).search();
184
157
  }
185
-
186
158
  function getOperatorSymbol(operator) {
187
159
  switch (operator) {
188
160
  case '>=':
189
161
  return '≥';
190
-
191
162
  case '<=':
192
163
  return '≤';
193
-
194
164
  default:
195
165
  return operator;
196
166
  }
197
167
  }
198
-
199
168
  function normalizeRefinement(refinement) {
200
169
  var value = getValue(refinement);
201
170
  var label = refinement.operator ? "".concat(getOperatorSymbol(refinement.operator), " ").concat(refinement.name) : refinement.name;
@@ -205,33 +174,25 @@ function normalizeRefinement(refinement) {
205
174
  value: value,
206
175
  label: label
207
176
  };
208
-
209
177
  if (refinement.operator !== undefined) {
210
178
  normalizedRefinement.operator = refinement.operator;
211
179
  }
212
-
213
180
  if (refinement.count !== undefined) {
214
181
  normalizedRefinement.count = refinement.count;
215
182
  }
216
-
217
183
  if (refinement.exhaustive !== undefined) {
218
184
  normalizedRefinement.exhaustive = refinement.exhaustive;
219
185
  }
220
-
221
186
  return normalizedRefinement;
222
187
  }
223
-
224
188
  function getValue(refinement) {
225
189
  if (refinement.type === 'numeric') {
226
190
  return Number(refinement.name);
227
191
  }
228
-
229
192
  if ('escapedValue' in refinement) {
230
193
  return refinement.escapedValue;
231
194
  }
232
-
233
195
  return refinement.name;
234
196
  }
235
-
236
197
  var _default = connectCurrentRefinements;
237
198
  exports.default = _default;
@@ -4,48 +4,38 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _index = require("../../lib/utils/index.js");
9
-
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
11
-
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
-
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17
-
11
+ 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); }
18
12
  var withUsage = (0, _index.createDocumentationMessageGenerator)({
19
13
  name: 'dynamic-widgets',
20
14
  connector: true
21
15
  });
22
16
  var MAX_WILDCARD_FACETS = 20;
23
-
24
17
  var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
25
18
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _index.noop;
26
19
  (0, _index.checkRendering)(renderFn, withUsage());
27
20
  return function (widgetParams) {
28
21
  var widgets = widgetParams.widgets,
29
- _widgetParams$maxValu = widgetParams.maxValuesPerFacet,
30
- maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
31
- _widgetParams$facets = widgetParams.facets,
32
- facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
33
- _widgetParams$transfo = widgetParams.transformItems,
34
- transformItems = _widgetParams$transfo === void 0 ? function (items) {
35
- return items;
36
- } : _widgetParams$transfo,
37
- fallbackWidget = widgetParams.fallbackWidget;
38
-
22
+ _widgetParams$maxValu = widgetParams.maxValuesPerFacet,
23
+ maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
24
+ _widgetParams$facets = widgetParams.facets,
25
+ facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
26
+ _widgetParams$transfo = widgetParams.transformItems,
27
+ transformItems = _widgetParams$transfo === void 0 ? function (items) {
28
+ return items;
29
+ } : _widgetParams$transfo,
30
+ fallbackWidget = widgetParams.fallbackWidget;
39
31
  if (!(widgets && Array.isArray(widgets) && widgets.every(function (widget) {
40
32
  return _typeof(widget) === 'object';
41
33
  }))) {
42
34
  throw new Error(withUsage('The `widgets` option expects an array of widgets.'));
43
35
  }
44
-
45
36
  if (!(Array.isArray(facets) && facets.length <= 1 && (facets[0] === '*' || facets[0] === undefined))) {
46
37
  throw new Error(withUsage("The `facets` option only accepts [] or [\"*\"], you passed ".concat(JSON.stringify(facets))));
47
38
  }
48
-
49
39
  var localWidgets = new Map();
50
40
  return {
51
41
  $$type: 'ais.dynamicWidgets',
@@ -66,7 +56,6 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
66
56
  var renderState = this.getWidgetRenderState(renderOptions);
67
57
  var widgetsToUnmount = [];
68
58
  var widgetsToMount = [];
69
-
70
59
  if (fallbackWidget) {
71
60
  renderState.attributesToRender.forEach(function (attribute) {
72
61
  if (!localWidgets.has(attribute)) {
@@ -80,12 +69,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
80
69
  }
81
70
  });
82
71
  }
83
-
84
72
  localWidgets.forEach(function (_ref, attribute) {
85
73
  var widget = _ref.widget,
86
- isMounted = _ref.isMounted;
74
+ isMounted = _ref.isMounted;
87
75
  var shouldMount = renderState.attributesToRender.indexOf(attribute) > -1;
88
-
89
76
  if (!isMounted && shouldMount) {
90
77
  widgetsToMount.push(widget);
91
78
  localWidgets.set(attribute, {
@@ -100,10 +87,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
100
87
  });
101
88
  }
102
89
  });
103
- parent.addWidgets(widgetsToMount); // make sure this only happens after the regular render, otherwise it
90
+ parent.addWidgets(widgetsToMount);
91
+ // make sure this only happens after the regular render, otherwise it
104
92
  // happens too quick, since render is "deferred" for the next microtask,
105
93
  // so this needs to be a whole task later
106
-
107
94
  setTimeout(function () {
108
95
  return parent.removeWidgets(widgetsToUnmount);
109
96
  }, 0);
@@ -116,8 +103,7 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
116
103
  var toRemove = [];
117
104
  localWidgets.forEach(function (_ref3) {
118
105
  var widget = _ref3.widget,
119
- isMounted = _ref3.isMounted;
120
-
106
+ isMounted = _ref3.isMounted;
121
107
  if (isMounted) {
122
108
  toRemove.push(widget);
123
109
  }
@@ -140,25 +126,20 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
140
126
  },
141
127
  getWidgetRenderState: function getWidgetRenderState(_ref4) {
142
128
  var _results$renderingCon, _results$renderingCon2, _results$renderingCon3, _results$renderingCon4;
143
-
144
129
  var results = _ref4.results,
145
- state = _ref4.state;
146
-
130
+ state = _ref4.state;
147
131
  if (!results) {
148
132
  return {
149
133
  attributesToRender: [],
150
134
  widgetParams: widgetParams
151
135
  };
152
136
  }
153
-
154
137
  var attributesToRender = transformItems((_results$renderingCon = (_results$renderingCon2 = results.renderingContent) === null || _results$renderingCon2 === void 0 ? void 0 : (_results$renderingCon3 = _results$renderingCon2.facetOrdering) === null || _results$renderingCon3 === void 0 ? void 0 : (_results$renderingCon4 = _results$renderingCon3.facets) === null || _results$renderingCon4 === void 0 ? void 0 : _results$renderingCon4.order) !== null && _results$renderingCon !== void 0 ? _results$renderingCon : [], {
155
138
  results: results
156
139
  });
157
-
158
140
  if (!Array.isArray(attributesToRender)) {
159
141
  throw new Error(withUsage('The `transformItems` option expects a function that returns an Array.'));
160
142
  }
161
-
162
143
  process.env.NODE_ENV === 'development' ? (0, _index.warning)(maxValuesPerFacet >= (state.maxValuesPerFacet || 0), "The maxValuesPerFacet set by dynamic widgets (".concat(maxValuesPerFacet, ") is smaller than one of the limits set by a widget (").concat(state.maxValuesPerFacet, "). This causes a mismatch in query parameters and thus an extra network request when that widget is mounted.")) : void 0;
163
144
  process.env.NODE_ENV === 'development' ? (0, _index.warning)(attributesToRender.length <= MAX_WILDCARD_FACETS || widgetParams.facets !== undefined, "More than ".concat(MAX_WILDCARD_FACETS, " facets are requested to be displayed without explicitly setting which facets to retrieve. This could have a performance impact. Set \"facets\" to [] to do two smaller network requests, or explicitly to ['*'] to avoid this warning.")) : void 0;
164
145
  return {
@@ -169,6 +150,5 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
169
150
  };
170
151
  };
171
152
  };
172
-
173
153
  var _default = connectDynamicWidgets;
174
154
  exports.default = _default;
@@ -4,32 +4,25 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _index = require("../../lib/utils/index.js");
9
-
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
11
-
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
-
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
-
16
11
  var withUsage = (0, _index.createDocumentationMessageGenerator)({
17
12
  name: 'geo-search',
18
13
  connector: true
19
- }); // in this connector, we assume insideBoundingBox is only a string,
14
+ });
15
+
16
+ // in this connector, we assume insideBoundingBox is only a string,
20
17
  // even though in the helper it's defined as number[][] alone.
21
18
  // This can be done, since the connector assumes "control" of the parameter
22
-
23
19
  function getBoundingBoxAsString(state) {
24
20
  return state.insideBoundingBox || '';
25
21
  }
26
-
27
22
  function setBoundingBoxAsString(state, value) {
28
23
  return state.setQueryParameter('insideBoundingBox', value);
29
24
  }
30
-
31
25
  var $$type = 'ais.geoSearch';
32
-
33
26
  /**
34
27
  * 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).
35
28
  *
@@ -44,13 +37,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
44
37
  (0, _index.checkRendering)(renderFn, withUsage());
45
38
  return function (widgetParams) {
46
39
  var _ref = widgetParams || {},
47
- _ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
48
- enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
49
- _ref$transformItems = _ref.transformItems,
50
- transformItems = _ref$transformItems === void 0 ? function (items) {
51
- return items;
52
- } : _ref$transformItems;
53
-
40
+ _ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
41
+ enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
42
+ _ref$transformItems = _ref.transformItems,
43
+ transformItems = _ref$transformItems === void 0 ? function (items) {
44
+ return items;
45
+ } : _ref$transformItems;
54
46
  var widgetState = {
55
47
  isRefineOnMapMove: enableRefineOnMapMove,
56
48
  // @MAJOR hasMapMoveSinceLastRefine -> hasMapMovedSinceLastRefine
@@ -60,72 +52,59 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
60
52
  internalToggleRefineOnMapMove: _index.noop,
61
53
  internalSetMapMoveSinceLastRefine: _index.noop
62
54
  };
63
-
64
55
  var getPositionFromState = function getPositionFromState(state) {
65
56
  return state.aroundLatLng ? (0, _index.aroundLatLngToPosition)(state.aroundLatLng) : undefined;
66
57
  };
67
-
68
58
  var getCurrentRefinementFromState = function getCurrentRefinementFromState(state) {
69
59
  return state.insideBoundingBox && (0, _index.insideBoundingBoxToBoundingBox)(state.insideBoundingBox);
70
60
  };
71
-
72
61
  var refine = function refine(helper) {
73
62
  return function (_ref2) {
74
63
  var ne = _ref2.northEast,
75
- sw = _ref2.southWest;
64
+ sw = _ref2.southWest;
76
65
  var boundingBox = [ne.lat, ne.lng, sw.lat, sw.lng].join();
77
66
  helper.setState(setBoundingBoxAsString(helper.state, boundingBox).resetPage()).search();
78
67
  widgetState.hasMapMoveSinceLastRefine = false;
79
68
  widgetState.lastRefineBoundingBox = boundingBox;
80
69
  };
81
70
  };
82
-
83
71
  var clearMapRefinement = function clearMapRefinement(helper) {
84
72
  return function () {
85
73
  helper.setQueryParameter('insideBoundingBox', undefined).search();
86
74
  };
87
75
  };
88
-
89
76
  var isRefinedWithMap = function isRefinedWithMap(state) {
90
77
  return function () {
91
78
  return Boolean(state.insideBoundingBox);
92
79
  };
93
80
  };
94
-
95
81
  var toggleRefineOnMapMove = function toggleRefineOnMapMove() {
96
82
  return widgetState.internalToggleRefineOnMapMove();
97
83
  };
98
-
99
84
  var createInternalToggleRefinementOnMapMove = function createInternalToggleRefinementOnMapMove(renderOptions, render) {
100
85
  return function () {
101
86
  widgetState.isRefineOnMapMove = !widgetState.isRefineOnMapMove;
102
87
  render(renderOptions);
103
88
  };
104
89
  };
105
-
106
90
  var isRefineOnMapMove = function isRefineOnMapMove() {
107
91
  return widgetState.isRefineOnMapMove;
108
92
  };
109
-
110
93
  var setMapMoveSinceLastRefine = function setMapMoveSinceLastRefine() {
111
94
  return widgetState.internalSetMapMoveSinceLastRefine();
112
95
  };
113
-
114
96
  var createInternalSetMapMoveSinceLastRefine = function createInternalSetMapMoveSinceLastRefine(renderOptions, render) {
115
97
  return function () {
116
98
  var shouldTriggerRender = widgetState.hasMapMoveSinceLastRefine !== true;
117
99
  widgetState.hasMapMoveSinceLastRefine = true;
118
-
119
100
  if (shouldTriggerRender) {
120
101
  render(renderOptions);
121
102
  }
122
103
  };
123
104
  };
124
-
125
105
  var hasMapMoveSinceLastRefine = function hasMapMoveSinceLastRefine() {
126
106
  return widgetState.hasMapMoveSinceLastRefine;
127
107
  };
128
-
129
108
  var sendEvent;
130
109
  return {
131
110
  $$type: $$type,
@@ -140,18 +119,16 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
140
119
  },
141
120
  render: function render(renderArgs) {
142
121
  var helper = renderArgs.helper,
143
- instantSearchInstance = renderArgs.instantSearchInstance;
144
- var isFirstRendering = false; // We don't use the state provided by the render function because we need
122
+ instantSearchInstance = renderArgs.instantSearchInstance;
123
+ var isFirstRendering = false;
124
+ // We don't use the state provided by the render function because we need
145
125
  // to be sure that the state is the latest one for the following condition
146
-
147
126
  var state = helper.state;
148
127
  var positionChangedSinceLastRefine = Boolean(state.aroundLatLng) && Boolean(widgetState.lastRefinePosition) && state.aroundLatLng !== widgetState.lastRefinePosition;
149
128
  var boundingBoxChangedSinceLastRefine = !state.insideBoundingBox && Boolean(widgetState.lastRefineBoundingBox) && state.insideBoundingBox !== widgetState.lastRefineBoundingBox;
150
-
151
129
  if (positionChangedSinceLastRefine || boundingBoxChangedSinceLastRefine) {
152
130
  widgetState.hasMapMoveSinceLastRefine = false;
153
131
  }
154
-
155
132
  widgetState.lastRefinePosition = state.aroundLatLng || '';
156
133
  widgetState.lastRefineBoundingBox = getBoundingBoxAsString(state);
157
134
  widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(renderArgs, this.render.bind(this));
@@ -164,15 +141,14 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
164
141
  },
165
142
  getWidgetRenderState: function getWidgetRenderState(renderOptions) {
166
143
  var helper = renderOptions.helper,
167
- results = renderOptions.results,
168
- instantSearchInstance = renderOptions.instantSearchInstance;
144
+ results = renderOptions.results,
145
+ instantSearchInstance = renderOptions.instantSearchInstance;
169
146
  var state = helper.state;
170
147
  var items = results ? transformItems(results.hits.filter(function (hit) {
171
148
  return hit._geoloc;
172
149
  }), {
173
150
  results: results
174
151
  }) : [];
175
-
176
152
  if (!sendEvent) {
177
153
  sendEvent = (0, _index.createSendEventForHits)({
178
154
  instantSearchInstance: instantSearchInstance,
@@ -180,7 +156,6 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
180
156
  widgetType: $$type
181
157
  });
182
158
  }
183
-
184
159
  return {
185
160
  items: items,
186
161
  position: getPositionFromState(state),
@@ -209,11 +184,9 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
209
184
  getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
210
185
  var searchParameters = _ref4.searchParameters;
211
186
  var boundingBox = getBoundingBoxAsString(searchParameters);
212
-
213
187
  if (!boundingBox || uiState && uiState.geoSearch && uiState.geoSearch.boundingBox === boundingBox) {
214
188
  return uiState;
215
189
  }
216
-
217
190
  return _objectSpread(_objectSpread({}, uiState), {}, {
218
191
  geoSearch: {
219
192
  boundingBox: boundingBox
@@ -222,16 +195,13 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
222
195
  },
223
196
  getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
224
197
  var uiState = _ref5.uiState;
225
-
226
198
  if (!uiState || !uiState.geoSearch) {
227
199
  return searchParameters.setQueryParameter('insideBoundingBox', undefined);
228
200
  }
229
-
230
201
  return setBoundingBoxAsString(searchParameters, uiState.geoSearch.boundingBox);
231
202
  }
232
203
  };
233
204
  };
234
205
  };
235
-
236
206
  var _default = connectGeoSearch;
237
207
  exports.default = _default;