instantsearch.js 4.49.1 → 4.49.3

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