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,23 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.renderTemplate = renderTemplate;
7
-
8
7
  var _hogan = _interopRequireDefault(require("hogan.js"));
9
-
10
8
  var _preact = require("htm/preact");
11
-
12
- var _index = require("../../helpers/components/index.js");
13
-
9
+ var _components = require("../../helpers/components");
14
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: 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
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
19
-
20
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
-
22
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
-
11
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
12
+ 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; }
13
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
14
+ 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; }
15
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
16
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
24
17
  // We add all our template helper methods to the template as lambdas. Note
25
18
  // that lambdas in Mustache are supposed to accept a second argument of
26
19
  // `render` to get the rendered value, not the literal `{{value}}`. But
@@ -32,46 +25,40 @@ function transformHelpersToHogan() {
32
25
  return Object.keys(helpers).reduce(function (acc, helperKey) {
33
26
  return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, helperKey, function () {
34
27
  var _this = this;
35
-
36
28
  return function (text) {
37
29
  var render = function render(value) {
38
30
  return _hogan.default.compile(value, compileOptions).render(_this);
39
31
  };
40
-
41
32
  return helpers[helperKey].call(data, text, render);
42
33
  };
43
34
  }));
44
35
  }, {});
45
36
  }
46
-
47
37
  function renderTemplate(_ref) {
48
38
  var templates = _ref.templates,
49
- templateKey = _ref.templateKey,
50
- compileOptions = _ref.compileOptions,
51
- helpers = _ref.helpers,
52
- data = _ref.data,
53
- bindEvent = _ref.bindEvent,
54
- sendEvent = _ref.sendEvent;
39
+ templateKey = _ref.templateKey,
40
+ compileOptions = _ref.compileOptions,
41
+ helpers = _ref.helpers,
42
+ data = _ref.data,
43
+ bindEvent = _ref.bindEvent,
44
+ sendEvent = _ref.sendEvent;
55
45
  var template = templates[templateKey];
56
-
57
46
  if (typeof template !== 'string' && typeof template !== 'function') {
58
47
  throw new Error("Template must be 'string' or 'function', was '".concat(_typeof(template), "' (key: ").concat(templateKey, ")"));
59
48
  }
60
-
61
49
  if (typeof template === 'function') {
62
50
  // @MAJOR no longer pass bindEvent when string templates are removed
63
51
  var params = bindEvent || {};
64
52
  params.html = _preact.html;
65
53
  params.sendEvent = sendEvent;
66
54
  params.components = {
67
- Highlight: _index.Highlight,
68
- ReverseHighlight: _index.ReverseHighlight,
69
- Snippet: _index.Snippet,
70
- ReverseSnippet: _index.ReverseSnippet
55
+ Highlight: _components.Highlight,
56
+ ReverseHighlight: _components.ReverseHighlight,
57
+ Snippet: _components.Snippet,
58
+ ReverseSnippet: _components.ReverseSnippet
71
59
  };
72
60
  return template(data, params);
73
61
  }
74
-
75
62
  var transformedHelpers = transformHelpersToHogan(helpers, compileOptions, data);
76
63
  return _hogan.default.compile(template, compileOptions).render(_objectSpread(_objectSpread({}, data), {}, {
77
64
  helpers: transformedHelpers
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.capitalize = capitalize;
7
-
8
7
  function capitalize(text) {
9
8
  return text.toString().charAt(0).toUpperCase() + text.toString().slice(1);
10
9
  }
@@ -4,48 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.checkIndexUiState = checkIndexUiState;
7
-
8
- var _capitalize = require("./capitalize.js");
9
-
10
- var _logger = require("./logger.js");
11
-
12
- var _typedObject = require("./typedObject.js");
13
-
7
+ var _capitalize = require("./capitalize");
8
+ var _logger = require("./logger");
9
+ var _typedObject = require("./typedObject");
14
10
  function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
15
-
16
11
  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."); }
17
-
18
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
19
-
12
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
20
13
  function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
21
-
22
14
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
-
24
15
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
25
-
26
16
  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); }
27
-
28
- 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; }
29
-
30
- function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
31
-
17
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
32
19
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
-
34
20
  // Some connectors are responsible for multiple widgets so we need
35
21
  // to map them.
36
22
  function getWidgetNames(connectorName) {
37
23
  switch (connectorName) {
38
24
  case 'range':
39
25
  return [];
40
-
41
26
  case 'menu':
42
27
  return ['menu', 'menuSelect'];
43
-
44
28
  default:
45
29
  return [connectorName];
46
30
  }
47
31
  }
48
-
49
32
  var stateToWidgetsMap = {
50
33
  query: {
51
34
  connectors: ['connectSearchBox'],
@@ -104,22 +87,18 @@ var stateToWidgetsMap = {
104
87
  widgets: ['ais.places']
105
88
  }
106
89
  };
107
-
108
90
  function checkIndexUiState(_ref) {
109
91
  var index = _ref.index,
110
- indexUiState = _ref.indexUiState;
92
+ indexUiState = _ref.indexUiState;
111
93
  var mountedWidgets = index.getWidgets().map(function (widget) {
112
94
  return widget.$$type;
113
95
  }).filter(Boolean);
114
96
  var missingWidgets = (0, _typedObject.keys)(indexUiState).reduce(function (acc, parameter) {
115
97
  var widgetUiState = stateToWidgetsMap[parameter];
116
-
117
98
  if (!widgetUiState) {
118
99
  return acc;
119
100
  }
120
-
121
101
  var requiredWidgets = widgetUiState.widgets;
122
-
123
102
  if (requiredWidgets && !requiredWidgets.some(function (requiredWidget) {
124
103
  return mountedWidgets.includes(requiredWidget);
125
104
  })) {
@@ -130,16 +109,13 @@ function checkIndexUiState(_ref) {
130
109
  })
131
110
  }]);
132
111
  }
133
-
134
112
  return acc;
135
113
  }, []);
136
114
  process.env.NODE_ENV === 'development' ? (0, _logger.warning)(missingWidgets.length === 0, "The UI state for the index \"".concat(index.getIndexId(), "\" is not consistent with the widgets mounted.\n\nThis can happen when the UI state is specified via `initialUiState`, `routing` or `setUiState` but that the widgets responsible for this state were not added. This results in those query parameters not being sent to the API.\n\nTo fully reflect the state, some widgets need to be added to the index \"").concat(index.getIndexId(), "\":\n\n").concat(missingWidgets.map(function (_ref2) {
137
115
  var _ref4;
138
-
139
116
  var _ref3 = _slicedToArray(_ref2, 2),
140
- stateParameter = _ref3[0],
141
- widgets = _ref3[1].widgets;
142
-
117
+ stateParameter = _ref3[0],
118
+ widgets = _ref3[1].widgets;
143
119
  return "- `".concat(stateParameter, "` needs one of these widgets: ").concat((_ref4 = []).concat.apply(_ref4, _toConsumableArray(widgets.map(function (name) {
144
120
  return getWidgetNames(name);
145
121
  }))).map(function (name) {
@@ -147,31 +123,27 @@ function checkIndexUiState(_ref) {
147
123
  }).join(', '));
148
124
  }).join('\n'), "\n\nIf you do not wish to display widgets but still want to support their search parameters, you can mount \"virtual widgets\" that don't render anything:\n\n```\n").concat(missingWidgets.filter(function (_ref5) {
149
125
  var _ref6 = _slicedToArray(_ref5, 2),
150
- _stateParameter = _ref6[0],
151
- connectors = _ref6[1].connectors;
152
-
126
+ _stateParameter = _ref6[0],
127
+ connectors = _ref6[1].connectors;
153
128
  return connectors.length > 0;
154
129
  }).map(function (_ref7) {
155
130
  var _ref8 = _slicedToArray(_ref7, 2),
156
- _stateParameter = _ref8[0],
157
- _ref8$ = _ref8[1],
158
- connectors = _ref8$.connectors,
159
- widgets = _ref8$.widgets;
160
-
131
+ _stateParameter = _ref8[0],
132
+ _ref8$ = _ref8[1],
133
+ connectors = _ref8$.connectors,
134
+ widgets = _ref8$.widgets;
161
135
  var capitalizedWidget = (0, _capitalize.capitalize)(widgets[0]);
162
136
  var connectorName = connectors[0];
163
137
  return "const virtual".concat(capitalizedWidget, " = ").concat(connectorName, "(() => null);");
164
138
  }).join('\n'), "\n\nsearch.addWidgets([\n ").concat(missingWidgets.filter(function (_ref9) {
165
139
  var _ref10 = _slicedToArray(_ref9, 2),
166
- _stateParameter = _ref10[0],
167
- connectors = _ref10[1].connectors;
168
-
140
+ _stateParameter = _ref10[0],
141
+ connectors = _ref10[1].connectors;
169
142
  return connectors.length > 0;
170
143
  }).map(function (_ref11) {
171
144
  var _ref12 = _slicedToArray(_ref11, 2),
172
- _stateParameter = _ref12[0],
173
- widgets = _ref12[1].widgets;
174
-
145
+ _stateParameter = _ref12[0],
146
+ widgets = _ref12[1].widgets;
175
147
  var capitalizedWidget = (0, _capitalize.capitalize)(widgets[0]);
176
148
  return "virtual".concat(capitalizedWidget, "({ /* ... */ })");
177
149
  }).join(',\n '), "\n]);\n```\n\nIf you're using custom widgets that do set these query parameters, we recommend using connectors instead.\n\nSee https://www.algolia.com/doc/guides/building-search-ui/widgets/customize-an-existing-widget/js/#customize-the-complete-ui-of-the-widgets")) : void 0;
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.checkRendering = checkRendering;
7
-
8
- var _getObjectType = require("./getObjectType.js");
9
-
7
+ var _getObjectType = require("./getObjectType");
10
8
  function checkRendering(rendering, usage) {
11
9
  if (rendering === undefined || typeof rendering !== 'function') {
12
10
  throw new Error("The render function is not valid (received type ".concat((0, _getObjectType.getObjectType)(rendering), ").\n\n").concat(usage));
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.clearRefinements = clearRefinements;
7
-
8
7
  /**
9
8
  * Clears the refinements of a SearchParameters object based on rules provided.
10
9
  * The included attributes list is applied before the excluded attributes list. If the list
@@ -13,32 +12,26 @@ exports.clearRefinements = clearRefinements;
13
12
  */
14
13
  function clearRefinements(_ref) {
15
14
  var helper = _ref.helper,
16
- _ref$attributesToClea = _ref.attributesToClear,
17
- attributesToClear = _ref$attributesToClea === void 0 ? [] : _ref$attributesToClea;
15
+ _ref$attributesToClea = _ref.attributesToClear,
16
+ attributesToClear = _ref$attributesToClea === void 0 ? [] : _ref$attributesToClea;
18
17
  var finalState = helper.state.setPage(0);
19
18
  finalState = attributesToClear.reduce(function (state, attribute) {
20
19
  if (finalState.isNumericRefined(attribute)) {
21
20
  return state.removeNumericRefinement(attribute);
22
21
  }
23
-
24
22
  if (finalState.isHierarchicalFacet(attribute)) {
25
23
  return state.removeHierarchicalFacetRefinement(attribute);
26
24
  }
27
-
28
25
  if (finalState.isDisjunctiveFacet(attribute)) {
29
26
  return state.removeDisjunctiveFacetRefinement(attribute);
30
27
  }
31
-
32
28
  if (finalState.isConjunctiveFacet(attribute)) {
33
29
  return state.removeFacetRefinement(attribute);
34
30
  }
35
-
36
31
  return state;
37
32
  }, finalState);
38
-
39
33
  if (attributesToClear.indexOf('query') !== -1) {
40
34
  finalState = finalState.setQuery('');
41
35
  }
42
-
43
36
  return finalState;
44
37
  }
@@ -4,12 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.concatHighlightedParts = concatHighlightedParts;
7
-
8
- var _escapeHighlight = require("./escape-highlight.js");
9
-
7
+ var _escapeHighlight = require("./escape-highlight");
10
8
  function concatHighlightedParts(parts) {
11
9
  var highlightPreTag = _escapeHighlight.TAG_REPLACEMENT.highlightPreTag,
12
- highlightPostTag = _escapeHighlight.TAG_REPLACEMENT.highlightPostTag;
10
+ highlightPostTag = _escapeHighlight.TAG_REPLACEMENT.highlightPostTag;
13
11
  return parts.map(function (part) {
14
12
  return part.isHighlighted ? highlightPreTag + part.value + highlightPostTag : part.value;
15
13
  }).join('');
@@ -4,10 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createConcurrentSafePromise = createConcurrentSafePromise;
7
-
8
7
  // copied from
9
8
  // https://github.com/algolia/autocomplete.js/blob/307a7acc4283e10a19cb7d067f04f1bea79dc56f/packages/autocomplete-core/src/utils/createConcurrentSafePromise.ts#L1:L1
10
-
11
9
  /**
12
10
  * Creates a runner that executes promises in a concurrent-safe way.
13
11
  *
@@ -37,7 +35,6 @@ function createConcurrentSafePromise() {
37
35
  if (latestResolvedValue && currentPromiseId < latestResolvedId) {
38
36
  return latestResolvedValue;
39
37
  }
40
-
41
38
  latestResolvedId = currentPromiseId;
42
39
  latestResolvedValue = x;
43
40
  return x;
@@ -4,28 +4,22 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createSendEventForFacet = createSendEventForFacet;
7
-
8
- var _isFacetRefined = require("./isFacetRefined.js");
9
-
10
- 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); }
11
-
7
+ var _isFacetRefined = require("./isFacetRefined");
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); }
12
9
  function createSendEventForFacet(_ref) {
13
10
  var instantSearchInstance = _ref.instantSearchInstance,
14
- helper = _ref.helper,
15
- attr = _ref.attribute,
16
- widgetType = _ref.widgetType;
17
-
11
+ helper = _ref.helper,
12
+ attr = _ref.attribute,
13
+ widgetType = _ref.widgetType;
18
14
  var sendEventForFacet = function sendEventForFacet() {
19
15
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
20
16
  args[_key] = arguments[_key];
21
17
  }
22
-
23
18
  var eventType = args[0],
24
- facetValue = args[1],
25
- _args$ = args[2],
26
- eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
19
+ facetValue = args[1],
20
+ _args$ = args[2],
21
+ eventName = _args$ === void 0 ? 'Filter Applied' : _args$;
27
22
  var attribute = typeof attr === 'string' ? attr : attr(facetValue);
28
-
29
23
  if (args.length === 1 && _typeof(args[0]) === 'object') {
30
24
  instantSearchInstance.sendEventToInsights(args[0]);
31
25
  } else if (eventType === 'click' && (args.length === 2 || args.length === 3)) {
@@ -47,6 +41,5 @@ function createSendEventForFacet(_ref) {
47
41
  throw new Error("You need to pass two arguments like:\n sendEvent('click', facetValue);\n\nIf you want to send a custom payload, you can pass one object: sendEvent(customPayload);\n");
48
42
  }
49
43
  };
50
-
51
44
  return sendEventForFacet;
52
45
  }
@@ -3,40 +3,31 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createSendEventForHits = createSendEventForHits;
7
6
  exports.createBindEventForHits = createBindEventForHits;
8
-
9
- var _serializer = require("./serializer.js");
10
-
11
- 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); }
12
-
7
+ exports.createSendEventForHits = createSendEventForHits;
8
+ var _serializer = require("./serializer");
9
+ 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); }
13
10
  function chunk(arr) {
14
11
  var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;
15
12
  var chunks = [];
16
-
17
13
  for (var i = 0; i < Math.ceil(arr.length / chunkSize); i++) {
18
14
  chunks.push(arr.slice(i * chunkSize, (i + 1) * chunkSize));
19
15
  }
20
-
21
16
  return chunks;
22
17
  }
23
-
24
18
  var buildPayloads = function buildPayloads(_ref) {
25
19
  var index = _ref.index,
26
- widgetType = _ref.widgetType,
27
- methodName = _ref.methodName,
28
- args = _ref.args,
29
- isSearchStalled = _ref.isSearchStalled;
30
-
20
+ widgetType = _ref.widgetType,
21
+ methodName = _ref.methodName,
22
+ args = _ref.args,
23
+ isSearchStalled = _ref.isSearchStalled;
31
24
  // when there's only one argument, that means it's custom
32
25
  if (args.length === 1 && _typeof(args[0]) === 'object') {
33
26
  return [args[0]];
34
27
  }
35
-
36
28
  var eventType = args[0];
37
29
  var hits = args[1];
38
30
  var eventName = args[2];
39
-
40
31
  if (!hits) {
41
32
  if (process.env.NODE_ENV === 'development') {
42
33
  throw new Error("You need to pass hit or hits as the second argument like:\n ".concat(methodName, "(eventType, hit);\n "));
@@ -44,7 +35,6 @@ var buildPayloads = function buildPayloads(_ref) {
44
35
  return [];
45
36
  }
46
37
  }
47
-
48
38
  if ((eventType === 'click' || eventType === 'conversion') && !eventName) {
49
39
  if (process.env.NODE_ENV === 'development') {
50
40
  throw new Error("You need to pass eventName as the third argument for 'click' or 'conversion' events like:\n ".concat(methodName, "('click', hit, 'Product Purchased');\n\n To learn more about event naming: https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/in-depth/clicks-conversions-best-practices/\n "));
@@ -52,13 +42,10 @@ var buildPayloads = function buildPayloads(_ref) {
52
42
  return [];
53
43
  }
54
44
  }
55
-
56
45
  var hitsArray = Array.isArray(hits) ? removeEscapedFromHits(hits) : [hits];
57
-
58
46
  if (hitsArray.length === 0) {
59
47
  return [];
60
48
  }
61
-
62
49
  var queryID = hitsArray[0].__queryID;
63
50
  var hitsChunks = chunk(hitsArray);
64
51
  var objectIDsByChunk = hitsChunks.map(function (batch) {
@@ -71,12 +58,10 @@ var buildPayloads = function buildPayloads(_ref) {
71
58
  return hit.__position;
72
59
  });
73
60
  });
74
-
75
61
  if (eventType === 'view') {
76
62
  if (isSearchStalled) {
77
63
  return [];
78
64
  }
79
-
80
65
  return hitsChunks.map(function (batch, i) {
81
66
  return {
82
67
  insightsMethod: 'viewedObjectIDs',
@@ -127,22 +112,18 @@ var buildPayloads = function buildPayloads(_ref) {
127
112
  return [];
128
113
  }
129
114
  };
130
-
131
115
  function removeEscapedFromHits(hits) {
132
116
  // remove `hits.__escaped` without mutating
133
117
  return hits.slice();
134
118
  }
135
-
136
119
  function createSendEventForHits(_ref2) {
137
120
  var instantSearchInstance = _ref2.instantSearchInstance,
138
- index = _ref2.index,
139
- widgetType = _ref2.widgetType;
140
-
121
+ index = _ref2.index,
122
+ widgetType = _ref2.widgetType;
141
123
  var sendEventForHits = function sendEventForHits() {
142
124
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
143
125
  args[_key] = arguments[_key];
144
126
  }
145
-
146
127
  var payloads = buildPayloads({
147
128
  widgetType: widgetType,
148
129
  index: index,
@@ -154,19 +135,15 @@ function createSendEventForHits(_ref2) {
154
135
  return instantSearchInstance.sendEventToInsights(payload);
155
136
  });
156
137
  };
157
-
158
138
  return sendEventForHits;
159
139
  }
160
-
161
140
  function createBindEventForHits(_ref3) {
162
141
  var index = _ref3.index,
163
- widgetType = _ref3.widgetType;
164
-
142
+ widgetType = _ref3.widgetType;
165
143
  var bindEventForHits = function bindEventForHits() {
166
144
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
167
145
  args[_key2] = arguments[_key2];
168
146
  }
169
-
170
147
  var payloads = buildPayloads({
171
148
  widgetType: widgetType,
172
149
  index: index,
@@ -176,6 +153,5 @@ function createBindEventForHits(_ref3) {
176
153
  });
177
154
  return payloads.length ? "data-insights-event=".concat((0, _serializer.serializePayload)(payloads)) : '';
178
155
  };
179
-
180
156
  return bindEventForHits;
181
157
  }
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.debounce = debounce;
7
-
8
7
  // Debounce a function call to the trailing edge.
9
8
  // The debounced function returns a promise.
10
9
  function debounce(func, wait) {
@@ -13,12 +12,10 @@ function debounce(func, wait) {
13
12
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
14
13
  args[_key] = arguments[_key];
15
14
  }
16
-
17
15
  return new Promise(function (resolve, reject) {
18
16
  if (lastTimeout) {
19
17
  clearTimeout(lastTimeout);
20
18
  }
21
-
22
19
  lastTimeout = setTimeout(function () {
23
20
  lastTimeout = null;
24
21
  Promise.resolve(func.apply(void 0, args)).then(resolve).catch(reject);
@@ -5,47 +5,36 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.defer = defer;
7
7
  var nextMicroTask = Promise.resolve();
8
-
9
8
  function defer(callback) {
10
9
  var progress = null;
11
10
  var cancelled = false;
12
-
13
11
  var fn = function fn() {
14
12
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
15
13
  args[_key] = arguments[_key];
16
14
  }
17
-
18
15
  if (progress !== null) {
19
16
  return;
20
17
  }
21
-
22
18
  progress = nextMicroTask.then(function () {
23
19
  progress = null;
24
-
25
20
  if (cancelled) {
26
21
  cancelled = false;
27
22
  return;
28
23
  }
29
-
30
24
  callback.apply(void 0, args);
31
25
  });
32
26
  };
33
-
34
27
  fn.wait = function () {
35
28
  if (progress === null) {
36
29
  throw new Error('The deferred function should be called before calling `wait()`');
37
30
  }
38
-
39
31
  return progress;
40
32
  };
41
-
42
33
  fn.cancel = function () {
43
34
  if (progress === null) {
44
35
  return;
45
36
  }
46
-
47
37
  cancelled = true;
48
38
  };
49
-
50
39
  return fn;
51
40
  }
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.hasDetectedInsightsClient = hasDetectedInsightsClient;
7
-
8
- var _safelyRunOnBrowser = require("./safelyRunOnBrowser.js");
9
-
7
+ var _safelyRunOnBrowser = require("./safelyRunOnBrowser");
10
8
  function hasDetectedInsightsClient() {
11
9
  return (0, _safelyRunOnBrowser.safelyRunOnBrowser)(function (_ref) {
12
10
  var window = _ref.window;
@@ -5,19 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.createDocumentationLink = createDocumentationLink;
7
7
  exports.createDocumentationMessageGenerator = createDocumentationMessageGenerator;
8
-
9
8
  function createDocumentationLink(_ref) {
10
9
  var name = _ref.name,
11
- _ref$connector = _ref.connector,
12
- connector = _ref$connector === void 0 ? false : _ref$connector;
10
+ _ref$connector = _ref.connector,
11
+ connector = _ref$connector === void 0 ? false : _ref$connector;
13
12
  return ['https://www.algolia.com/doc/api-reference/widgets/', name, '/js/', connector ? '#connector' : ''].join('');
14
13
  }
15
-
16
14
  function createDocumentationMessageGenerator() {
17
15
  for (var _len = arguments.length, widgets = new Array(_len), _key = 0; _key < _len; _key++) {
18
16
  widgets[_key] = arguments[_key];
19
17
  }
20
-
21
18
  var links = widgets.map(function (widget) {
22
19
  return createDocumentationLink(widget);
23
20
  }).join(', ');