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
@@ -1,27 +1,17 @@
1
1
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
-
3
2
  function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
3
  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); }
6
-
7
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
8
-
4
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
9
5
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
10
-
11
6
  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; }
12
-
13
- 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; }
14
-
15
- 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; }
16
-
7
+ 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; }
8
+ 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; }
17
9
  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; }
18
-
19
10
  import { getRefinements, checkRendering, createDocumentationMessageGenerator, noop, warning } from "../../lib/utils/index.js";
20
11
  var withUsage = createDocumentationMessageGenerator({
21
12
  name: 'current-refinements',
22
13
  connector: true
23
14
  });
24
-
25
15
  var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
26
16
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
27
17
  checkRendering(renderFn, withUsage());
@@ -29,16 +19,14 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
29
19
  if ((widgetParams || {}).includedAttributes && (widgetParams || {}).excludedAttributes) {
30
20
  throw new Error(withUsage('The options `includedAttributes` and `excludedAttributes` cannot be used together.'));
31
21
  }
32
-
33
22
  var _ref = widgetParams || {},
34
- includedAttributes = _ref.includedAttributes,
35
- _ref$excludedAttribut = _ref.excludedAttributes,
36
- excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,
37
- _ref$transformItems = _ref.transformItems,
38
- transformItems = _ref$transformItems === void 0 ? function (items) {
39
- return items;
40
- } : _ref$transformItems;
41
-
23
+ includedAttributes = _ref.includedAttributes,
24
+ _ref$excludedAttribut = _ref.excludedAttributes,
25
+ excludedAttributes = _ref$excludedAttribut === void 0 ? ['query'] : _ref$excludedAttribut,
26
+ _ref$transformItems = _ref.transformItems,
27
+ transformItems = _ref$transformItems === void 0 ? function (items) {
28
+ return items;
29
+ } : _ref$transformItems;
42
30
  return {
43
31
  $$type: 'ais.currentRefinements',
44
32
  init: function init(initOptions) {
@@ -63,10 +51,9 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
63
51
  },
64
52
  getWidgetRenderState: function getWidgetRenderState(_ref2) {
65
53
  var results = _ref2.results,
66
- scopedResults = _ref2.scopedResults,
67
- _createURL = _ref2.createURL,
68
- helper = _ref2.helper;
69
-
54
+ scopedResults = _ref2.scopedResults,
55
+ _createURL = _ref2.createURL,
56
+ helper = _ref2.helper;
70
57
  function getItems() {
71
58
  if (!results) {
72
59
  return transformItems(getRefinementsItems({
@@ -78,7 +65,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
78
65
  results: results
79
66
  });
80
67
  }
81
-
82
68
  return scopedResults.reduce(function (accResults, scopedResult) {
83
69
  return accResults.concat(transformItems(getRefinementsItems({
84
70
  results: scopedResult.results,
@@ -90,7 +76,6 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
90
76
  }));
91
77
  }, []);
92
78
  }
93
-
94
79
  var items = getItems();
95
80
  return {
96
81
  items: items,
@@ -107,12 +92,11 @@ var connectCurrentRefinements = function connectCurrentRefinements(renderFn) {
107
92
  };
108
93
  };
109
94
  };
110
-
111
95
  function getRefinementsItems(_ref3) {
112
96
  var results = _ref3.results,
113
- helper = _ref3.helper,
114
- includedAttributes = _ref3.includedAttributes,
115
- excludedAttributes = _ref3.excludedAttributes;
97
+ helper = _ref3.helper,
98
+ includedAttributes = _ref3.includedAttributes,
99
+ excludedAttributes = _ref3.excludedAttributes;
116
100
  var includesQuery = (includedAttributes || []).indexOf('query') !== -1 || (excludedAttributes || []).indexOf('query') === -1;
117
101
  var filterFunction = includedAttributes ? function (item) {
118
102
  return includedAttributes.indexOf(item.attribute) !== -1;
@@ -129,7 +113,8 @@ function getRefinementsItems(_ref3) {
129
113
  label: currentItem.attribute,
130
114
  refinements: items.filter(function (result) {
131
115
  return result.attribute === currentItem.attribute;
132
- }) // We want to keep the order of refinements except the numeric ones.
116
+ })
117
+ // We want to keep the order of refinements except the numeric ones.
133
118
  .sort(function (a, b) {
134
119
  return a.type === 'numeric' ? a.value - b.value : 0;
135
120
  }),
@@ -139,55 +124,41 @@ function getRefinementsItems(_ref3) {
139
124
  }]);
140
125
  }, []);
141
126
  }
142
-
143
127
  function clearRefinementFromState(state, refinement) {
144
128
  state = state.resetPage();
145
-
146
129
  switch (refinement.type) {
147
130
  case 'facet':
148
131
  return state.removeFacetRefinement(refinement.attribute, String(refinement.value));
149
-
150
132
  case 'disjunctive':
151
133
  return state.removeDisjunctiveFacetRefinement(refinement.attribute, String(refinement.value));
152
-
153
134
  case 'hierarchical':
154
135
  return state.removeHierarchicalFacetRefinement(refinement.attribute);
155
-
156
136
  case 'exclude':
157
137
  return state.removeExcludeRefinement(refinement.attribute, String(refinement.value));
158
-
159
138
  case 'numeric':
160
139
  return state.removeNumericRefinement(refinement.attribute, refinement.operator, String(refinement.value));
161
-
162
140
  case 'tag':
163
141
  return state.removeTagRefinement(String(refinement.value));
164
-
165
142
  case 'query':
166
143
  return state.setQueryParameter('query', '');
167
-
168
144
  default:
169
145
  process.env.NODE_ENV === 'development' ? warning(false, "The refinement type \"".concat(refinement.type, "\" does not exist and cannot be cleared from the current refinements.")) : void 0;
170
146
  return state;
171
147
  }
172
148
  }
173
-
174
149
  function clearRefinement(helper, refinement) {
175
150
  helper.setState(clearRefinementFromState(helper.state, refinement)).search();
176
151
  }
177
-
178
152
  function getOperatorSymbol(operator) {
179
153
  switch (operator) {
180
154
  case '>=':
181
155
  return '≥';
182
-
183
156
  case '<=':
184
157
  return '≤';
185
-
186
158
  default:
187
159
  return operator;
188
160
  }
189
161
  }
190
-
191
162
  function normalizeRefinement(refinement) {
192
163
  var value = getValue(refinement);
193
164
  var label = refinement.operator ? "".concat(getOperatorSymbol(refinement.operator), " ").concat(refinement.name) : refinement.name;
@@ -197,32 +168,24 @@ function normalizeRefinement(refinement) {
197
168
  value: value,
198
169
  label: label
199
170
  };
200
-
201
171
  if (refinement.operator !== undefined) {
202
172
  normalizedRefinement.operator = refinement.operator;
203
173
  }
204
-
205
174
  if (refinement.count !== undefined) {
206
175
  normalizedRefinement.count = refinement.count;
207
176
  }
208
-
209
177
  if (refinement.exhaustive !== undefined) {
210
178
  normalizedRefinement.exhaustive = refinement.exhaustive;
211
179
  }
212
-
213
180
  return normalizedRefinement;
214
181
  }
215
-
216
182
  function getValue(refinement) {
217
183
  if (refinement.type === 'numeric') {
218
184
  return Number(refinement.name);
219
185
  }
220
-
221
186
  if ('escapedValue' in refinement) {
222
187
  return refinement.escapedValue;
223
188
  }
224
-
225
189
  return refinement.name;
226
190
  }
227
-
228
191
  export default connectCurrentRefinements;
@@ -1,43 +1,35 @@
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
-
1
+ 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; }
2
+ 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
3
  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
-
7
- 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); }
8
-
4
+ 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); }
9
5
  import { checkRendering, createDocumentationMessageGenerator, getWidgetAttribute, noop, warning } from "../../lib/utils/index.js";
10
6
  var withUsage = createDocumentationMessageGenerator({
11
7
  name: 'dynamic-widgets',
12
8
  connector: true
13
9
  });
14
10
  var MAX_WILDCARD_FACETS = 20;
15
-
16
11
  var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
17
12
  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;
18
13
  checkRendering(renderFn, withUsage());
19
14
  return function (widgetParams) {
20
15
  var widgets = widgetParams.widgets,
21
- _widgetParams$maxValu = widgetParams.maxValuesPerFacet,
22
- maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
23
- _widgetParams$facets = widgetParams.facets,
24
- facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
25
- _widgetParams$transfo = widgetParams.transformItems,
26
- transformItems = _widgetParams$transfo === void 0 ? function (items) {
27
- return items;
28
- } : _widgetParams$transfo,
29
- fallbackWidget = widgetParams.fallbackWidget;
30
-
16
+ _widgetParams$maxValu = widgetParams.maxValuesPerFacet,
17
+ maxValuesPerFacet = _widgetParams$maxValu === void 0 ? 20 : _widgetParams$maxValu,
18
+ _widgetParams$facets = widgetParams.facets,
19
+ facets = _widgetParams$facets === void 0 ? ['*'] : _widgetParams$facets,
20
+ _widgetParams$transfo = widgetParams.transformItems,
21
+ transformItems = _widgetParams$transfo === void 0 ? function (items) {
22
+ return items;
23
+ } : _widgetParams$transfo,
24
+ fallbackWidget = widgetParams.fallbackWidget;
31
25
  if (!(widgets && Array.isArray(widgets) && widgets.every(function (widget) {
32
26
  return _typeof(widget) === 'object';
33
27
  }))) {
34
28
  throw new Error(withUsage('The `widgets` option expects an array of widgets.'));
35
29
  }
36
-
37
30
  if (!(Array.isArray(facets) && facets.length <= 1 && (facets[0] === '*' || facets[0] === undefined))) {
38
31
  throw new Error(withUsage("The `facets` option only accepts [] or [\"*\"], you passed ".concat(JSON.stringify(facets))));
39
32
  }
40
-
41
33
  var localWidgets = new Map();
42
34
  return {
43
35
  $$type: 'ais.dynamicWidgets',
@@ -58,7 +50,6 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
58
50
  var renderState = this.getWidgetRenderState(renderOptions);
59
51
  var widgetsToUnmount = [];
60
52
  var widgetsToMount = [];
61
-
62
53
  if (fallbackWidget) {
63
54
  renderState.attributesToRender.forEach(function (attribute) {
64
55
  if (!localWidgets.has(attribute)) {
@@ -72,12 +63,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
72
63
  }
73
64
  });
74
65
  }
75
-
76
66
  localWidgets.forEach(function (_ref, attribute) {
77
67
  var widget = _ref.widget,
78
- isMounted = _ref.isMounted;
68
+ isMounted = _ref.isMounted;
79
69
  var shouldMount = renderState.attributesToRender.indexOf(attribute) > -1;
80
-
81
70
  if (!isMounted && shouldMount) {
82
71
  widgetsToMount.push(widget);
83
72
  localWidgets.set(attribute, {
@@ -92,10 +81,10 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
92
81
  });
93
82
  }
94
83
  });
95
- parent.addWidgets(widgetsToMount); // make sure this only happens after the regular render, otherwise it
84
+ parent.addWidgets(widgetsToMount);
85
+ // make sure this only happens after the regular render, otherwise it
96
86
  // happens too quick, since render is "deferred" for the next microtask,
97
87
  // so this needs to be a whole task later
98
-
99
88
  setTimeout(function () {
100
89
  return parent.removeWidgets(widgetsToUnmount);
101
90
  }, 0);
@@ -108,8 +97,7 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
108
97
  var toRemove = [];
109
98
  localWidgets.forEach(function (_ref3) {
110
99
  var widget = _ref3.widget,
111
- isMounted = _ref3.isMounted;
112
-
100
+ isMounted = _ref3.isMounted;
113
101
  if (isMounted) {
114
102
  toRemove.push(widget);
115
103
  }
@@ -132,25 +120,20 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
132
120
  },
133
121
  getWidgetRenderState: function getWidgetRenderState(_ref4) {
134
122
  var _results$renderingCon, _results$renderingCon2, _results$renderingCon3, _results$renderingCon4;
135
-
136
123
  var results = _ref4.results,
137
- state = _ref4.state;
138
-
124
+ state = _ref4.state;
139
125
  if (!results) {
140
126
  return {
141
127
  attributesToRender: [],
142
128
  widgetParams: widgetParams
143
129
  };
144
130
  }
145
-
146
131
  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 : [], {
147
132
  results: results
148
133
  });
149
-
150
134
  if (!Array.isArray(attributesToRender)) {
151
135
  throw new Error(withUsage('The `transformItems` option expects a function that returns an Array.'));
152
136
  }
153
-
154
137
  process.env.NODE_ENV === 'development' ? 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;
155
138
  process.env.NODE_ENV === 'development' ? 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;
156
139
  return {
@@ -161,5 +144,4 @@ var connectDynamicWidgets = function connectDynamicWidgets(renderFn) {
161
144
  };
162
145
  };
163
146
  };
164
-
165
147
  export default connectDynamicWidgets;
@@ -1,27 +1,22 @@
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
-
1
+ 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; }
2
+ 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
3
  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
-
7
4
  import { checkRendering, aroundLatLngToPosition, insideBoundingBoxToBoundingBox, createDocumentationMessageGenerator, createSendEventForHits, noop } from "../../lib/utils/index.js";
8
5
  var withUsage = createDocumentationMessageGenerator({
9
6
  name: 'geo-search',
10
7
  connector: true
11
- }); // in this connector, we assume insideBoundingBox is only a string,
8
+ });
9
+
10
+ // in this connector, we assume insideBoundingBox is only a string,
12
11
  // even though in the helper it's defined as number[][] alone.
13
12
  // This can be done, since the connector assumes "control" of the parameter
14
-
15
13
  function getBoundingBoxAsString(state) {
16
14
  return state.insideBoundingBox || '';
17
15
  }
18
-
19
16
  function setBoundingBoxAsString(state, value) {
20
17
  return state.setQueryParameter('insideBoundingBox', value);
21
18
  }
22
-
23
19
  var $$type = 'ais.geoSearch';
24
-
25
20
  /**
26
21
  * 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
22
  *
@@ -36,13 +31,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
36
31
  checkRendering(renderFn, withUsage());
37
32
  return function (widgetParams) {
38
33
  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
-
34
+ _ref$enableRefineOnMa = _ref.enableRefineOnMapMove,
35
+ enableRefineOnMapMove = _ref$enableRefineOnMa === void 0 ? true : _ref$enableRefineOnMa,
36
+ _ref$transformItems = _ref.transformItems,
37
+ transformItems = _ref$transformItems === void 0 ? function (items) {
38
+ return items;
39
+ } : _ref$transformItems;
46
40
  var widgetState = {
47
41
  isRefineOnMapMove: enableRefineOnMapMove,
48
42
  // @MAJOR hasMapMoveSinceLastRefine -> hasMapMovedSinceLastRefine
@@ -52,72 +46,59 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
52
46
  internalToggleRefineOnMapMove: noop,
53
47
  internalSetMapMoveSinceLastRefine: noop
54
48
  };
55
-
56
49
  var getPositionFromState = function getPositionFromState(state) {
57
50
  return state.aroundLatLng ? aroundLatLngToPosition(state.aroundLatLng) : undefined;
58
51
  };
59
-
60
52
  var getCurrentRefinementFromState = function getCurrentRefinementFromState(state) {
61
53
  return state.insideBoundingBox && insideBoundingBoxToBoundingBox(state.insideBoundingBox);
62
54
  };
63
-
64
55
  var refine = function refine(helper) {
65
56
  return function (_ref2) {
66
57
  var ne = _ref2.northEast,
67
- sw = _ref2.southWest;
58
+ sw = _ref2.southWest;
68
59
  var boundingBox = [ne.lat, ne.lng, sw.lat, sw.lng].join();
69
60
  helper.setState(setBoundingBoxAsString(helper.state, boundingBox).resetPage()).search();
70
61
  widgetState.hasMapMoveSinceLastRefine = false;
71
62
  widgetState.lastRefineBoundingBox = boundingBox;
72
63
  };
73
64
  };
74
-
75
65
  var clearMapRefinement = function clearMapRefinement(helper) {
76
66
  return function () {
77
67
  helper.setQueryParameter('insideBoundingBox', undefined).search();
78
68
  };
79
69
  };
80
-
81
70
  var isRefinedWithMap = function isRefinedWithMap(state) {
82
71
  return function () {
83
72
  return Boolean(state.insideBoundingBox);
84
73
  };
85
74
  };
86
-
87
75
  var toggleRefineOnMapMove = function toggleRefineOnMapMove() {
88
76
  return widgetState.internalToggleRefineOnMapMove();
89
77
  };
90
-
91
78
  var createInternalToggleRefinementOnMapMove = function createInternalToggleRefinementOnMapMove(renderOptions, render) {
92
79
  return function () {
93
80
  widgetState.isRefineOnMapMove = !widgetState.isRefineOnMapMove;
94
81
  render(renderOptions);
95
82
  };
96
83
  };
97
-
98
84
  var isRefineOnMapMove = function isRefineOnMapMove() {
99
85
  return widgetState.isRefineOnMapMove;
100
86
  };
101
-
102
87
  var setMapMoveSinceLastRefine = function setMapMoveSinceLastRefine() {
103
88
  return widgetState.internalSetMapMoveSinceLastRefine();
104
89
  };
105
-
106
90
  var createInternalSetMapMoveSinceLastRefine = function createInternalSetMapMoveSinceLastRefine(renderOptions, render) {
107
91
  return function () {
108
92
  var shouldTriggerRender = widgetState.hasMapMoveSinceLastRefine !== true;
109
93
  widgetState.hasMapMoveSinceLastRefine = true;
110
-
111
94
  if (shouldTriggerRender) {
112
95
  render(renderOptions);
113
96
  }
114
97
  };
115
98
  };
116
-
117
99
  var hasMapMoveSinceLastRefine = function hasMapMoveSinceLastRefine() {
118
100
  return widgetState.hasMapMoveSinceLastRefine;
119
101
  };
120
-
121
102
  var sendEvent;
122
103
  return {
123
104
  $$type: $$type,
@@ -132,18 +113,16 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
132
113
  },
133
114
  render: function render(renderArgs) {
134
115
  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
116
+ instantSearchInstance = renderArgs.instantSearchInstance;
117
+ var isFirstRendering = false;
118
+ // We don't use the state provided by the render function because we need
137
119
  // to be sure that the state is the latest one for the following condition
138
-
139
120
  var state = helper.state;
140
121
  var positionChangedSinceLastRefine = Boolean(state.aroundLatLng) && Boolean(widgetState.lastRefinePosition) && state.aroundLatLng !== widgetState.lastRefinePosition;
141
122
  var boundingBoxChangedSinceLastRefine = !state.insideBoundingBox && Boolean(widgetState.lastRefineBoundingBox) && state.insideBoundingBox !== widgetState.lastRefineBoundingBox;
142
-
143
123
  if (positionChangedSinceLastRefine || boundingBoxChangedSinceLastRefine) {
144
124
  widgetState.hasMapMoveSinceLastRefine = false;
145
125
  }
146
-
147
126
  widgetState.lastRefinePosition = state.aroundLatLng || '';
148
127
  widgetState.lastRefineBoundingBox = getBoundingBoxAsString(state);
149
128
  widgetState.internalToggleRefineOnMapMove = createInternalToggleRefinementOnMapMove(renderArgs, this.render.bind(this));
@@ -156,15 +135,14 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
156
135
  },
157
136
  getWidgetRenderState: function getWidgetRenderState(renderOptions) {
158
137
  var helper = renderOptions.helper,
159
- results = renderOptions.results,
160
- instantSearchInstance = renderOptions.instantSearchInstance;
138
+ results = renderOptions.results,
139
+ instantSearchInstance = renderOptions.instantSearchInstance;
161
140
  var state = helper.state;
162
141
  var items = results ? transformItems(results.hits.filter(function (hit) {
163
142
  return hit._geoloc;
164
143
  }), {
165
144
  results: results
166
145
  }) : [];
167
-
168
146
  if (!sendEvent) {
169
147
  sendEvent = createSendEventForHits({
170
148
  instantSearchInstance: instantSearchInstance,
@@ -172,7 +150,6 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
172
150
  widgetType: $$type
173
151
  });
174
152
  }
175
-
176
153
  return {
177
154
  items: items,
178
155
  position: getPositionFromState(state),
@@ -201,11 +178,9 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
201
178
  getWidgetUiState: function getWidgetUiState(uiState, _ref4) {
202
179
  var searchParameters = _ref4.searchParameters;
203
180
  var boundingBox = getBoundingBoxAsString(searchParameters);
204
-
205
181
  if (!boundingBox || uiState && uiState.geoSearch && uiState.geoSearch.boundingBox === boundingBox) {
206
182
  return uiState;
207
183
  }
208
-
209
184
  return _objectSpread(_objectSpread({}, uiState), {}, {
210
185
  geoSearch: {
211
186
  boundingBox: boundingBox
@@ -214,15 +189,12 @@ var connectGeoSearch = function connectGeoSearch(renderFn) {
214
189
  },
215
190
  getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {
216
191
  var uiState = _ref5.uiState;
217
-
218
192
  if (!uiState || !uiState.geoSearch) {
219
193
  return searchParameters.setQueryParameter('insideBoundingBox', undefined);
220
194
  }
221
-
222
195
  return setBoundingBoxAsString(searchParameters, uiState.geoSearch.boundingBox);
223
196
  }
224
197
  };
225
198
  };
226
199
  };
227
-
228
200
  export default connectGeoSearch;