react-instantsearch-core 6.40.3 → 7.0.0

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 (263) hide show
  1. package/README.md +70 -2
  2. package/dist/cjs/components/Configure.js +13 -0
  3. package/dist/cjs/components/DynamicWidgets.js +63 -0
  4. package/dist/cjs/components/Index.js +24 -0
  5. package/dist/cjs/components/InstantSearch.js +27 -0
  6. package/dist/cjs/{connectors/connectConfigure.js → components/InstantSearchSSRProvider.js} +27 -63
  7. package/dist/cjs/components/InstantSearchServerContext.js +12 -0
  8. package/dist/cjs/connectors/useBreadcrumb.js +12 -0
  9. package/dist/cjs/connectors/useClearRefinements.js +12 -0
  10. package/dist/cjs/connectors/useConfigure.js +14 -0
  11. package/dist/cjs/connectors/useCurrentRefinements.js +12 -0
  12. package/dist/cjs/connectors/useDynamicWidgets.js +22 -0
  13. package/dist/cjs/connectors/useGeoSearch.js +12 -0
  14. package/dist/cjs/connectors/useHierarchicalMenu.js +12 -0
  15. package/dist/cjs/connectors/useHits.js +12 -0
  16. package/dist/cjs/connectors/useHitsPerPage.js +12 -0
  17. package/dist/cjs/connectors/useInfiniteHits.js +12 -0
  18. package/dist/cjs/connectors/useMenu.js +12 -0
  19. package/dist/cjs/connectors/useNumericMenu.js +12 -0
  20. package/dist/cjs/connectors/usePagination.js +12 -0
  21. package/dist/cjs/connectors/usePoweredBy.js +21 -0
  22. package/dist/cjs/connectors/useQueryRules.js +12 -0
  23. package/dist/cjs/connectors/useRange.js +12 -0
  24. package/dist/cjs/connectors/useRefinementList.js +12 -0
  25. package/dist/cjs/connectors/useSearchBox.js +12 -0
  26. package/dist/cjs/connectors/useSortBy.js +12 -0
  27. package/dist/cjs/connectors/useStats.js +12 -0
  28. package/dist/cjs/connectors/useToggleRefinement.js +12 -0
  29. package/dist/cjs/hooks/useConnector.js +136 -0
  30. package/dist/cjs/hooks/useInstantSearch.js +58 -0
  31. package/dist/cjs/index.js +328 -320
  32. package/dist/cjs/lib/IndexContext.js +12 -0
  33. package/dist/cjs/lib/InstantSearchContext.js +12 -0
  34. package/dist/cjs/lib/InstantSearchSSRContext.js +12 -0
  35. package/dist/cjs/lib/createSearchResults.js +27 -0
  36. package/dist/cjs/lib/dequal.js +53 -0
  37. package/dist/cjs/lib/getIndexSearchResults.js +32 -0
  38. package/dist/cjs/lib/invariant.js +25 -0
  39. package/dist/cjs/lib/noop.js +8 -0
  40. package/dist/cjs/lib/useForceUpdate.js +25 -0
  41. package/dist/cjs/lib/useIndex.js +38 -0
  42. package/dist/cjs/lib/useIndexContext.js +14 -0
  43. package/dist/cjs/lib/useInstantSearchApi.js +191 -0
  44. package/dist/cjs/lib/useInstantSearchContext.js +14 -0
  45. package/dist/cjs/lib/useInstantSearchSSRContext.js +11 -0
  46. package/dist/cjs/lib/useInstantSearchServerContext.js +11 -0
  47. package/dist/cjs/lib/useIsomorphicLayoutEffect.js +14 -0
  48. package/dist/cjs/lib/useSearchResults.js +46 -0
  49. package/dist/cjs/lib/useSearchState.js +48 -0
  50. package/dist/cjs/lib/useStableValue.js +26 -0
  51. package/dist/cjs/lib/useWidget.js +78 -0
  52. package/dist/cjs/lib/warn.js +41 -0
  53. package/dist/cjs/package.json +1 -0
  54. package/dist/cjs/server/getServerState.js +93 -0
  55. package/dist/cjs/{types → server}/index.js +4 -4
  56. package/dist/cjs/{core/version.js → version.js} +1 -1
  57. package/dist/es/components/Configure.d.ts +3 -0
  58. package/dist/es/components/Configure.js +7 -0
  59. package/dist/es/components/DynamicWidgets.d.ts +13 -0
  60. package/dist/es/components/DynamicWidgets.js +55 -0
  61. package/dist/es/components/Index.d.ts +6 -0
  62. package/dist/es/components/Index.js +17 -0
  63. package/dist/es/components/InstantSearch.d.ts +7 -0
  64. package/dist/es/components/InstantSearch.js +20 -0
  65. package/dist/es/components/InstantSearchSSRProvider.d.ts +13 -0
  66. package/dist/es/{connectors/connectConfigure.js → components/InstantSearchSSRProvider.js} +26 -61
  67. package/dist/es/components/InstantSearchServerContext.d.ts +12 -0
  68. package/dist/es/components/InstantSearchServerContext.js +5 -0
  69. package/dist/es/connectors/useBreadcrumb.d.ts +4 -0
  70. package/dist/es/connectors/useBreadcrumb.js +5 -0
  71. package/dist/es/connectors/useClearRefinements.d.ts +4 -0
  72. package/dist/es/connectors/useClearRefinements.js +5 -0
  73. package/dist/es/connectors/useConfigure.d.ts +4 -0
  74. package/dist/es/connectors/useConfigure.js +7 -0
  75. package/dist/es/connectors/useCurrentRefinements.d.ts +4 -0
  76. package/dist/es/connectors/useCurrentRefinements.js +5 -0
  77. package/dist/es/connectors/useDynamicWidgets.d.ts +4 -0
  78. package/dist/es/connectors/useDynamicWidgets.js +15 -0
  79. package/dist/es/connectors/useGeoSearch.d.ts +6 -0
  80. package/dist/es/connectors/useGeoSearch.js +5 -0
  81. package/dist/es/connectors/useHierarchicalMenu.d.ts +4 -0
  82. package/dist/es/connectors/useHierarchicalMenu.js +5 -0
  83. package/dist/es/connectors/useHits.d.ts +5 -0
  84. package/dist/es/connectors/useHits.js +5 -0
  85. package/dist/es/connectors/useHitsPerPage.d.ts +4 -0
  86. package/dist/es/connectors/useHitsPerPage.js +5 -0
  87. package/dist/es/connectors/useInfiniteHits.d.ts +5 -0
  88. package/dist/es/connectors/useInfiniteHits.js +5 -0
  89. package/dist/es/connectors/useMenu.d.ts +4 -0
  90. package/dist/es/connectors/useMenu.js +5 -0
  91. package/dist/es/connectors/useNumericMenu.d.ts +4 -0
  92. package/dist/es/connectors/useNumericMenu.js +5 -0
  93. package/dist/es/connectors/usePagination.d.ts +4 -0
  94. package/dist/es/connectors/usePagination.js +5 -0
  95. package/dist/es/connectors/usePoweredBy.d.ts +2 -0
  96. package/dist/es/connectors/usePoweredBy.js +15 -0
  97. package/dist/es/connectors/useQueryRules.d.ts +4 -0
  98. package/dist/es/connectors/useQueryRules.js +5 -0
  99. package/dist/es/connectors/useRange.d.ts +4 -0
  100. package/dist/es/connectors/useRange.js +5 -0
  101. package/dist/es/connectors/useRefinementList.d.ts +4 -0
  102. package/dist/es/connectors/useRefinementList.js +5 -0
  103. package/dist/es/connectors/useSearchBox.d.ts +4 -0
  104. package/dist/es/connectors/useSearchBox.js +5 -0
  105. package/dist/es/connectors/useSortBy.d.ts +4 -0
  106. package/dist/es/connectors/useSortBy.js +5 -0
  107. package/dist/es/connectors/useStats.d.ts +4 -0
  108. package/dist/es/connectors/useStats.js +5 -0
  109. package/dist/es/connectors/useToggleRefinement.d.ts +4 -0
  110. package/dist/es/connectors/useToggleRefinement.js +5 -0
  111. package/dist/es/hooks/useConnector.d.ts +3 -0
  112. package/dist/es/hooks/useConnector.js +130 -0
  113. package/dist/es/hooks/useInstantSearch.d.ts +32 -0
  114. package/dist/es/hooks/useInstantSearch.js +52 -0
  115. package/dist/es/index.d.ts +31 -0
  116. package/dist/es/index.js +31 -86
  117. package/dist/es/lib/IndexContext.d.ts +3 -0
  118. package/dist/es/lib/IndexContext.js +5 -0
  119. package/dist/es/lib/InstantSearchContext.d.ts +3 -0
  120. package/dist/es/lib/InstantSearchContext.js +5 -0
  121. package/dist/es/lib/InstantSearchSSRContext.d.ts +8 -0
  122. package/dist/es/lib/InstantSearchSSRContext.js +5 -0
  123. package/dist/es/lib/createSearchResults.d.ts +3 -0
  124. package/dist/es/lib/createSearchResults.js +20 -0
  125. package/dist/es/lib/dequal.d.ts +1 -0
  126. package/dist/es/lib/dequal.js +47 -0
  127. package/dist/es/lib/getIndexSearchResults.d.ts +9 -0
  128. package/dist/es/lib/getIndexSearchResults.js +26 -0
  129. package/dist/es/lib/invariant.d.ts +9 -0
  130. package/dist/es/lib/invariant.js +19 -0
  131. package/dist/es/lib/noop.d.ts +1 -0
  132. package/dist/es/lib/noop.js +1 -0
  133. package/dist/es/lib/useForceUpdate.d.ts +6 -0
  134. package/dist/es/lib/useForceUpdate.js +20 -0
  135. package/dist/es/lib/useIndex.d.ts +3 -0
  136. package/dist/es/lib/useIndex.js +31 -0
  137. package/dist/es/lib/useIndexContext.d.ts +2 -0
  138. package/dist/es/lib/useIndexContext.js +8 -0
  139. package/dist/es/lib/useInstantSearchApi.d.ts +21 -0
  140. package/dist/es/lib/useInstantSearchApi.js +184 -0
  141. package/dist/es/lib/useInstantSearchContext.d.ts +3 -0
  142. package/dist/es/lib/useInstantSearchContext.js +8 -0
  143. package/dist/es/lib/useInstantSearchSSRContext.d.ts +3 -0
  144. package/dist/es/lib/useInstantSearchSSRContext.js +5 -0
  145. package/dist/es/lib/useInstantSearchServerContext.d.ts +3 -0
  146. package/dist/es/lib/useInstantSearchServerContext.js +5 -0
  147. package/dist/es/lib/useIsomorphicLayoutEffect.d.ts +7 -0
  148. package/dist/es/lib/useIsomorphicLayoutEffect.js +8 -0
  149. package/dist/es/lib/useSearchResults.d.ts +7 -0
  150. package/dist/es/lib/useSearchResults.js +40 -0
  151. package/dist/es/lib/useSearchState.d.ts +8 -0
  152. package/dist/es/lib/useSearchState.js +42 -0
  153. package/dist/es/lib/useStableValue.d.ts +1 -0
  154. package/dist/es/lib/useStableValue.js +20 -0
  155. package/dist/es/lib/useWidget.d.ts +8 -0
  156. package/dist/es/lib/useWidget.js +72 -0
  157. package/dist/es/lib/warn.d.ts +10 -0
  158. package/dist/es/lib/warn.js +33 -0
  159. package/dist/es/server/getServerState.d.ts +10 -0
  160. package/dist/es/server/getServerState.js +86 -0
  161. package/dist/es/server/index.d.ts +1 -0
  162. package/dist/es/server/index.js +1 -0
  163. package/dist/es/version.d.ts +2 -0
  164. package/dist/es/version.js +1 -0
  165. package/dist/umd/ReactInstantSearchCore.js +16316 -10183
  166. package/dist/umd/ReactInstantSearchCore.js.map +1 -1
  167. package/dist/umd/ReactInstantSearchCore.min.js +1 -1
  168. package/dist/umd/ReactInstantSearchCore.min.js.map +1 -1
  169. package/package.json +24 -9
  170. package/dist/cjs/connectors/connectAutoComplete.js +0 -104
  171. package/dist/cjs/connectors/connectBreadcrumb.js +0 -123
  172. package/dist/cjs/connectors/connectConfigureRelatedItems.js +0 -127
  173. package/dist/cjs/connectors/connectCurrentRefinements.js +0 -69
  174. package/dist/cjs/connectors/connectDynamicWidgets.js +0 -65
  175. package/dist/cjs/connectors/connectGeoSearch.js +0 -189
  176. package/dist/cjs/connectors/connectHierarchicalMenu.js +0 -273
  177. package/dist/cjs/connectors/connectHighlight.js +0 -87
  178. package/dist/cjs/connectors/connectHitInsights.js +0 -76
  179. package/dist/cjs/connectors/connectHits.js +0 -88
  180. package/dist/cjs/connectors/connectHitsPerPage.js +0 -97
  181. package/dist/cjs/connectors/connectInfiniteHits.js +0 -154
  182. package/dist/cjs/connectors/connectMenu.js +0 -221
  183. package/dist/cjs/connectors/connectNumericMenu.js +0 -215
  184. package/dist/cjs/connectors/connectPagination.js +0 -94
  185. package/dist/cjs/connectors/connectPoweredBy.js +0 -27
  186. package/dist/cjs/connectors/connectQueryRules.js +0 -129
  187. package/dist/cjs/connectors/connectRange.js +0 -287
  188. package/dist/cjs/connectors/connectRefinementList.js +0 -243
  189. package/dist/cjs/connectors/connectRelevantSort.js +0 -56
  190. package/dist/cjs/connectors/connectScrollTo.js +0 -70
  191. package/dist/cjs/connectors/connectSearchBox.js +0 -104
  192. package/dist/cjs/connectors/connectSortBy.js +0 -100
  193. package/dist/cjs/connectors/connectStateResults.js +0 -79
  194. package/dist/cjs/connectors/connectStats.js +0 -39
  195. package/dist/cjs/connectors/connectToggleRefinement.js +0 -163
  196. package/dist/cjs/connectors/connectVoiceSearch.js +0 -124
  197. package/dist/cjs/core/context.js +0 -37
  198. package/dist/cjs/core/createConnector.js +0 -268
  199. package/dist/cjs/core/createInstantSearchManager.d.js +0 -1
  200. package/dist/cjs/core/createInstantSearchManager.js +0 -541
  201. package/dist/cjs/core/createStore.js +0 -27
  202. package/dist/cjs/core/createWidgetsManager.js +0 -39
  203. package/dist/cjs/core/highlight.js +0 -102
  204. package/dist/cjs/core/indexUtils.js +0 -214
  205. package/dist/cjs/core/metadata.js +0 -46
  206. package/dist/cjs/core/translatable.js +0 -82
  207. package/dist/cjs/core/utils.js +0 -161
  208. package/dist/cjs/types/algoliasearch.js +0 -1
  209. package/dist/cjs/types/translatable.js +0 -1
  210. package/dist/cjs/widgets/Configure.js +0 -48
  211. package/dist/cjs/widgets/ConfigureRelatedItems.js +0 -21
  212. package/dist/cjs/widgets/DynamicWidgets.js +0 -61
  213. package/dist/cjs/widgets/Index.js +0 -149
  214. package/dist/cjs/widgets/InstantSearch.js +0 -251
  215. package/dist/cjs/widgets/QueryRuleContext.js +0 -14
  216. package/dist/es/connectors/connectAutoComplete.js +0 -96
  217. package/dist/es/connectors/connectBreadcrumb.js +0 -115
  218. package/dist/es/connectors/connectConfigureRelatedItems.js +0 -121
  219. package/dist/es/connectors/connectCurrentRefinements.js +0 -62
  220. package/dist/es/connectors/connectDynamicWidgets.js +0 -56
  221. package/dist/es/connectors/connectGeoSearch.js +0 -182
  222. package/dist/es/connectors/connectHierarchicalMenu.js +0 -264
  223. package/dist/es/connectors/connectHighlight.js +0 -79
  224. package/dist/es/connectors/connectHitInsights.js +0 -69
  225. package/dist/es/connectors/connectHits.js +0 -81
  226. package/dist/es/connectors/connectHitsPerPage.js +0 -89
  227. package/dist/es/connectors/connectInfiniteHits.js +0 -146
  228. package/dist/es/connectors/connectMenu.js +0 -213
  229. package/dist/es/connectors/connectNumericMenu.js +0 -207
  230. package/dist/es/connectors/connectPagination.js +0 -86
  231. package/dist/es/connectors/connectPoweredBy.js +0 -20
  232. package/dist/es/connectors/connectQueryRules.js +0 -122
  233. package/dist/es/connectors/connectRange.js +0 -280
  234. package/dist/es/connectors/connectRefinementList.js +0 -235
  235. package/dist/es/connectors/connectRelevantSort.js +0 -50
  236. package/dist/es/connectors/connectScrollTo.js +0 -63
  237. package/dist/es/connectors/connectSearchBox.js +0 -96
  238. package/dist/es/connectors/connectSortBy.js +0 -92
  239. package/dist/es/connectors/connectStateResults.js +0 -72
  240. package/dist/es/connectors/connectStats.js +0 -32
  241. package/dist/es/connectors/connectToggleRefinement.js +0 -155
  242. package/dist/es/connectors/connectVoiceSearch.js +0 -116
  243. package/dist/es/core/context.js +0 -28
  244. package/dist/es/core/createConnector.js +0 -257
  245. package/dist/es/core/createInstantSearchManager.d.js +0 -0
  246. package/dist/es/core/createInstantSearchManager.js +0 -534
  247. package/dist/es/core/createStore.js +0 -21
  248. package/dist/es/core/createWidgetsManager.js +0 -33
  249. package/dist/es/core/highlight.js +0 -94
  250. package/dist/es/core/indexUtils.js +0 -203
  251. package/dist/es/core/metadata.js +0 -38
  252. package/dist/es/core/translatable.js +0 -74
  253. package/dist/es/core/utils.js +0 -139
  254. package/dist/es/core/version.js +0 -1
  255. package/dist/es/types/algoliasearch.js +0 -1
  256. package/dist/es/types/index.js +0 -1
  257. package/dist/es/types/translatable.js +0 -1
  258. package/dist/es/widgets/Configure.js +0 -42
  259. package/dist/es/widgets/ConfigureRelatedItems.js +0 -13
  260. package/dist/es/widgets/DynamicWidgets.js +0 -51
  261. package/dist/es/widgets/Index.js +0 -138
  262. package/dist/es/widgets/InstantSearch.js +0 -241
  263. package/dist/es/widgets/QueryRuleContext.js +0 -6
@@ -1,215 +0,0 @@
1
- "use strict";
2
-
3
- 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); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.default = void 0;
8
- var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _createConnector = _interopRequireDefault(require("../core/createConnector"));
10
- var _utils = require("../core/utils");
11
- var _indexUtils = require("../core/indexUtils");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
- 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; }
14
- function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
- 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); }
16
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
17
- 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."); }
18
- 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); }
19
- 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; }
20
- function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0); } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
21
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
- function stringifyItem(item) {
23
- if (typeof item.start === 'undefined' && typeof item.end === 'undefined') {
24
- return '';
25
- }
26
- var start = typeof item.start !== 'undefined' ? item.start : '';
27
- var end = typeof item.end !== 'undefined' ? item.end : '';
28
- return "".concat(start, ":").concat(end);
29
- }
30
- function parseItem(value) {
31
- if (value.length === 0) {
32
- return {
33
- start: null,
34
- end: null
35
- };
36
- }
37
- var _value$split = value.split(':'),
38
- _value$split2 = _slicedToArray(_value$split, 2),
39
- startStr = _value$split2[0],
40
- endStr = _value$split2[1];
41
- return {
42
- start: startStr.length > 0 ? parseFloat(startStr) : null,
43
- end: endStr.length > 0 ? parseFloat(endStr) : null
44
- };
45
- }
46
- var namespace = 'multiRange';
47
- function getId(props) {
48
- return props.attribute;
49
- }
50
- function getCurrentRefinement(props, searchState, context) {
51
- return (0, _indexUtils.getCurrentRefinementValue)(props, searchState, context, "".concat(namespace, ".").concat(getId(props)), '', function (currentRefinement) {
52
- if (currentRefinement === '') {
53
- return '';
54
- }
55
- return currentRefinement;
56
- });
57
- }
58
- function isRefinementsRangeIncludesInsideItemRange(stats, start, end) {
59
- return stats.min >= start && stats.min <= end || stats.max >= start && stats.max <= end;
60
- }
61
- function isItemRangeIncludedInsideRefinementsRange(stats, start, end) {
62
- return start >= stats.min && start <= stats.max || end >= stats.min && end <= stats.max;
63
- }
64
- function itemHasRefinement(attribute, results, value) {
65
- var stats = results.getFacetByName(attribute) ? results.getFacetStats(attribute) : null;
66
- var range = value.split(':');
67
- var start = Number(range[0]) === 0 || value === '' ? Number.NEGATIVE_INFINITY : Number(range[0]);
68
- var end = Number(range[1]) === 0 || value === '' ? Number.POSITIVE_INFINITY : Number(range[1]);
69
- return !(Boolean(stats) && (isRefinementsRangeIncludesInsideItemRange(stats, start, end) || isItemRangeIncludedInsideRefinementsRange(stats, start, end)));
70
- }
71
- function _refine(props, searchState, nextRefinement, context) {
72
- var nextValue = _defineProperty({}, getId(props, searchState), nextRefinement);
73
- var resetPage = true;
74
- return (0, _indexUtils.refineValue)(searchState, nextValue, context, resetPage, namespace);
75
- }
76
- function _cleanUp(props, searchState, context) {
77
- return (0, _indexUtils.cleanUpValue)(searchState, context, "".concat(namespace, ".").concat(getId(props)));
78
- }
79
-
80
- /**
81
- * connectNumericMenu connector provides the logic to build a widget that will
82
- * give the user the ability to select a range value for a numeric attribute.
83
- * Ranges are defined statically.
84
- * @name connectNumericMenu
85
- * @requirements The attribute passed to the `attribute` prop must be holding numerical values.
86
- * @kind connector
87
- * @propType {string} attribute - the name of the attribute in the records
88
- * @propType {{label: string, start: number, end: number}[]} items - List of options. With a text label, and upper and lower bounds.
89
- * @propType {string} [defaultRefinement] - the value of the item selected by default, follow the shape of a `string` with a pattern of `'{start}:{end}'`.
90
- * @propType {function} [transformItems] - Function to modify the items being displayed, e.g. for filtering or sorting them. Takes an items as parameter and expects it back in return.
91
- * @providedPropType {function} refine - a function to select a range.
92
- * @providedPropType {function} createURL - a function to generate a URL for the corresponding search state
93
- * @providedPropType {string} currentRefinement - the refinement currently applied. follow the shape of a `string` with a pattern of `'{start}:{end}'` which corresponds to the current selected item. For instance, when the selected item is `{start: 10, end: 20}`, the searchState of the widget is `'10:20'`. When `start` isn't defined, the searchState of the widget is `':{end}'`, and the same way around when `end` isn't defined. However, when neither `start` nor `end` are defined, the searchState is an empty string.
94
- * @providedPropType {array.<{isRefined: boolean, label: string, value: string, isRefined: boolean, noRefinement: boolean}>} items - the list of ranges the NumericMenu can display.
95
- */
96
- var _default = (0, _createConnector.default)({
97
- displayName: 'AlgoliaNumericMenu',
98
- $$type: 'ais.numericMenu',
99
- propTypes: {
100
- id: _propTypes.default.string,
101
- attribute: _propTypes.default.string.isRequired,
102
- items: _propTypes.default.arrayOf(_propTypes.default.shape({
103
- label: _propTypes.default.node,
104
- start: _propTypes.default.number,
105
- end: _propTypes.default.number
106
- })).isRequired,
107
- transformItems: _propTypes.default.func
108
- },
109
- getProvidedProps: function getProvidedProps(props, searchState, searchResults) {
110
- var attribute = props.attribute;
111
- var currentRefinement = getCurrentRefinement(props, searchState, {
112
- ais: props.contextValue,
113
- multiIndexContext: props.indexContextValue
114
- });
115
- var results = (0, _indexUtils.getResults)(searchResults, {
116
- ais: props.contextValue,
117
- multiIndexContext: props.indexContextValue
118
- });
119
- var items = props.items.map(function (item) {
120
- var value = stringifyItem(item);
121
- return {
122
- label: item.label,
123
- value: value,
124
- isRefined: value === currentRefinement,
125
- noRefinement: results ? itemHasRefinement(getId(props), results, value) : false
126
- };
127
- });
128
- var stats = results && results.getFacetByName(attribute) ? results.getFacetStats(attribute) : null;
129
- var refinedItem = (0, _utils.find)(items, function (item) {
130
- return item.isRefined === true;
131
- });
132
- if (!items.some(function (item) {
133
- return item.value === '';
134
- })) {
135
- items.push({
136
- value: '',
137
- isRefined: refinedItem === undefined,
138
- noRefinement: !stats,
139
- label: 'All'
140
- });
141
- }
142
- var transformedItems = props.transformItems ? props.transformItems(items) : items;
143
- return {
144
- items: transformedItems,
145
- currentRefinement: currentRefinement,
146
- canRefine: transformedItems.length > 0 && transformedItems.some(function (item) {
147
- return item.noRefinement === false;
148
- })
149
- };
150
- },
151
- refine: function refine(props, searchState, nextRefinement) {
152
- return _refine(props, searchState, nextRefinement, {
153
- ais: props.contextValue,
154
- multiIndexContext: props.indexContextValue
155
- });
156
- },
157
- cleanUp: function cleanUp(props, searchState) {
158
- return _cleanUp(props, searchState, {
159
- ais: props.contextValue,
160
- multiIndexContext: props.indexContextValue
161
- });
162
- },
163
- getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {
164
- var attribute = props.attribute;
165
- var _parseItem = parseItem(getCurrentRefinement(props, searchState, {
166
- ais: props.contextValue,
167
- multiIndexContext: props.indexContextValue
168
- })),
169
- start = _parseItem.start,
170
- end = _parseItem.end;
171
- searchParameters = searchParameters.addDisjunctiveFacet(attribute);
172
- if (typeof start === 'number') {
173
- searchParameters = searchParameters.addNumericRefinement(attribute, '>=', start);
174
- }
175
- if (typeof end === 'number') {
176
- searchParameters = searchParameters.addNumericRefinement(attribute, '<=', end);
177
- }
178
- return searchParameters;
179
- },
180
- getMetadata: function getMetadata(props, searchState) {
181
- var id = getId(props);
182
- var value = getCurrentRefinement(props, searchState, {
183
- ais: props.contextValue,
184
- multiIndexContext: props.indexContextValue
185
- });
186
- var items = [];
187
- var index = (0, _indexUtils.getIndexId)({
188
- ais: props.contextValue,
189
- multiIndexContext: props.indexContextValue
190
- });
191
- if (value !== '') {
192
- var _find = (0, _utils.find)(props.items, function (item) {
193
- return stringifyItem(item) === value;
194
- }),
195
- label = _find.label;
196
- items.push({
197
- label: "".concat(props.attribute, ": ").concat(label),
198
- attribute: props.attribute,
199
- currentRefinement: label,
200
- value: function value(nextState) {
201
- return _refine(props, nextState, '', {
202
- ais: props.contextValue,
203
- multiIndexContext: props.indexContextValue
204
- });
205
- }
206
- });
207
- }
208
- return {
209
- id: id,
210
- index: index,
211
- items: items
212
- };
213
- }
214
- });
215
- exports.default = _default;
@@ -1,94 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _createConnector = _interopRequireDefault(require("../core/createConnector"));
8
- var _indexUtils = require("../core/indexUtils");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- 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); }
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
- function getId() {
15
- return 'page';
16
- }
17
- function getCurrentRefinement(props, searchState, context) {
18
- var id = getId();
19
- var page = 1;
20
- var currentRefinement = (0, _indexUtils.getCurrentRefinementValue)(props, searchState, context, id, page);
21
- if (typeof currentRefinement === 'string') {
22
- return parseInt(currentRefinement, 10);
23
- }
24
- return currentRefinement;
25
- }
26
- function _refine(props, searchState, nextPage, context) {
27
- var id = getId();
28
- var nextValue = _defineProperty({}, id, nextPage);
29
- var resetPage = false;
30
- return (0, _indexUtils.refineValue)(searchState, nextValue, context, resetPage);
31
- }
32
-
33
- /**
34
- * connectPagination connector provides the logic to build a widget that will
35
- * let the user displays hits corresponding to a certain page.
36
- * @name connectPagination
37
- * @kind connector
38
- * @propType {boolean} [showFirst=true] - Display the first page link.
39
- * @propType {boolean} [showLast=false] - Display the last page link.
40
- * @propType {boolean} [showPrevious=true] - Display the previous page link.
41
- * @propType {boolean} [showNext=true] - Display the next page link.
42
- * @propType {number} [padding=3] - How many page links to display around the current page.
43
- * @propType {number} [totalPages=Infinity] - Maximum number of pages to display.
44
- * @providedPropType {function} refine - a function to remove a single filter
45
- * @providedPropType {function} createURL - a function to generate a URL for the corresponding search state
46
- * @providedPropType {number} nbPages - the total of existing pages
47
- * @providedPropType {number} currentRefinement - the page refinement currently applied
48
- */
49
- var _default = (0, _createConnector.default)({
50
- displayName: 'AlgoliaPagination',
51
- $$type: 'ais.pagination',
52
- getProvidedProps: function getProvidedProps(props, searchState, searchResults) {
53
- var results = (0, _indexUtils.getResults)(searchResults, {
54
- ais: props.contextValue,
55
- multiIndexContext: props.indexContextValue
56
- });
57
- if (!results) {
58
- return null;
59
- }
60
- var nbPages = results.nbPages;
61
- return {
62
- nbPages: nbPages,
63
- currentRefinement: getCurrentRefinement(props, searchState, {
64
- ais: props.contextValue,
65
- multiIndexContext: props.indexContextValue
66
- }),
67
- canRefine: nbPages > 1
68
- };
69
- },
70
- refine: function refine(props, searchState, nextPage) {
71
- return _refine(props, searchState, nextPage, {
72
- ais: props.contextValue,
73
- multiIndexContext: props.indexContextValue
74
- });
75
- },
76
- cleanUp: function cleanUp(props, searchState) {
77
- return (0, _indexUtils.cleanUpValue)(searchState, {
78
- ais: props.contextValue,
79
- multiIndexContext: props.indexContextValue
80
- }, getId());
81
- },
82
- getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {
83
- return searchParameters.setPage(getCurrentRefinement(props, searchState, {
84
- ais: props.contextValue,
85
- multiIndexContext: props.indexContextValue
86
- }) - 1);
87
- },
88
- getMetadata: function getMetadata() {
89
- return {
90
- id: getId()
91
- };
92
- }
93
- });
94
- exports.default = _default;
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _createConnector = _interopRequireDefault(require("../core/createConnector"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
- /**
10
- * connectPoweredBy connector provides the logic to build a widget that
11
- * will display a link to algolia.
12
- * @name connectPoweredBy
13
- * @kind connector
14
- * @providedPropType {string} url - the url to redirect to algolia
15
- */
16
- var _default = (0, _createConnector.default)({
17
- displayName: 'AlgoliaPoweredBy',
18
- $$type: 'ais.poweredBy',
19
- getProvidedProps: function getProvidedProps() {
20
- var hostname = typeof window === 'undefined' || typeof window.location === 'undefined' ? '' : window.location.hostname;
21
- var url = 'https://www.algolia.com/?' + 'utm_source=react-instantsearch&' + 'utm_medium=website&' + "utm_content=".concat(hostname, "&") + 'utm_campaign=poweredby';
22
- return {
23
- url: url
24
- };
25
- }
26
- });
27
- exports.default = _default;
@@ -1,129 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _createConnector = _interopRequireDefault(require("../core/createConnector"));
8
- var _indexUtils = require("../core/indexUtils");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
- function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
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."); }
12
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
- function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
14
- function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
15
- 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; }
16
- // A context rule must consist only of alphanumeric characters, hyphens, and underscores.
17
- // See https://www.algolia.com/doc/guides/managing-results/refine-results/merchandising-and-promoting/in-depth/implementing-query-rules/#context
18
- function escapeRuleContext(ruleName) {
19
- return ruleName.replace(/[^a-z0-9-_]+/gi, '_');
20
- }
21
- function getWidgetRefinements(attribute, widgetKey, searchState) {
22
- var widgetState = searchState[widgetKey];
23
- switch (widgetKey) {
24
- case 'range':
25
- return Object.keys(widgetState[attribute]).map(function (rangeKey) {
26
- return widgetState[attribute][rangeKey];
27
- });
28
- case 'refinementList':
29
- return widgetState[attribute];
30
- case 'hierarchicalMenu':
31
- return [widgetState[attribute]];
32
- case 'menu':
33
- return [widgetState[attribute]];
34
- case 'multiRange':
35
- return widgetState[attribute].split(':');
36
- case 'toggle':
37
- return [widgetState[attribute]];
38
- default:
39
- return [];
40
- }
41
- }
42
- function getRefinements(attribute) {
43
- var searchState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
44
- var refinements = Object.keys(searchState).filter(function (widgetKey) {
45
- return searchState[widgetKey] !== undefined && searchState[widgetKey][attribute] !== undefined;
46
- }).map(function (widgetKey) {
47
- return getWidgetRefinements(attribute, widgetKey, searchState);
48
- }).reduce(function (acc, current) {
49
- return acc.concat(current);
50
- }, []); // flatten the refinements
51
-
52
- return refinements;
53
- }
54
- function getRuleContextsFromTrackedFilters(_ref) {
55
- var searchState = _ref.searchState,
56
- trackedFilters = _ref.trackedFilters;
57
- var ruleContexts = Object.keys(trackedFilters).reduce(function (facets, facetName) {
58
- var facetRefinements = getRefinements(facetName, searchState);
59
- var getTrackedFacetValues = trackedFilters[facetName];
60
- var trackedFacetValues = getTrackedFacetValues(facetRefinements);
61
- return [].concat(_toConsumableArray(facets), _toConsumableArray(facetRefinements.filter(function (facetRefinement) {
62
- return trackedFacetValues.includes(facetRefinement);
63
- }).map(function (facetValue) {
64
- return escapeRuleContext("ais-".concat(facetName, "-").concat(facetValue));
65
- })));
66
- }, []);
67
- return ruleContexts;
68
- }
69
- var defaultProps = {
70
- transformItems: function transformItems(items) {
71
- return items;
72
- },
73
- transformRuleContexts: function transformRuleContexts(ruleContexts) {
74
- return ruleContexts;
75
- },
76
- trackedFilters: {}
77
- };
78
- var _default = (0, _createConnector.default)({
79
- displayName: 'AlgoliaQueryRules',
80
- $$type: 'ais.queryRules',
81
- defaultProps: defaultProps,
82
- getProvidedProps: function getProvidedProps(props, _1, searchResults) {
83
- var results = (0, _indexUtils.getResults)(searchResults, {
84
- ais: props.contextValue,
85
- multiIndexContext: props.indexContextValue
86
- });
87
- if (results === null) {
88
- return {
89
- items: [],
90
- canRefine: false
91
- };
92
- }
93
- var _results$userData = results.userData,
94
- userData = _results$userData === void 0 ? [] : _results$userData;
95
- var transformItems = props.transformItems;
96
- var transformedItems = transformItems(userData);
97
- return {
98
- items: transformedItems,
99
- canRefine: transformedItems.length > 0
100
- };
101
- },
102
- getSearchParameters: function getSearchParameters(searchParameters, props, searchState) {
103
- if (Object.keys(props.trackedFilters).length === 0) {
104
- return searchParameters;
105
- }
106
- var indexSearchState = (0, _indexUtils.hasMultipleIndices)({
107
- ais: props.contextValue,
108
- multiIndexContext: props.indexContextValue
109
- }) && searchState.indices ? searchState.indices[(0, _indexUtils.getIndexId)({
110
- ais: props.contextValue,
111
- multiIndexContext: props.indexContextValue
112
- })] : searchState;
113
- var newRuleContexts = getRuleContextsFromTrackedFilters({
114
- searchState: indexSearchState,
115
- trackedFilters: props.trackedFilters
116
- });
117
- var initialRuleContexts = searchParameters.ruleContexts || [];
118
- var nextRuleContexts = [].concat(_toConsumableArray(initialRuleContexts), _toConsumableArray(newRuleContexts));
119
- if (process.env.NODE_ENV === 'development') {
120
- if (nextRuleContexts.length > 10) {
121
- // eslint-disable-next-line no-console
122
- console.warn("The maximum number of `ruleContexts` is 10. They have been sliced to that limit.\nConsider using `transformRuleContexts` to minimize the number of rules sent to Algolia.");
123
- }
124
- }
125
- var ruleContexts = props.transformRuleContexts(nextRuleContexts).slice(0, 10);
126
- return searchParameters.setQueryParameter('ruleContexts', ruleContexts);
127
- }
128
- });
129
- exports.default = _default;