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
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.IndexContext = void 0;
7
+ var _react = require("react");
8
+ var IndexContext = /*#__PURE__*/(0, _react.createContext)(null);
9
+ exports.IndexContext = IndexContext;
10
+ if (process.env.NODE_ENV === 'development') {
11
+ IndexContext.displayName = 'Index';
12
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InstantSearchContext = void 0;
7
+ var _react = require("react");
8
+ var InstantSearchContext = /*#__PURE__*/(0, _react.createContext)(null);
9
+ exports.InstantSearchContext = InstantSearchContext;
10
+ if (process.env.NODE_ENV === 'development') {
11
+ InstantSearchContext.displayName = 'InstantSearch';
12
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InstantSearchSSRContext = void 0;
7
+ var _react = require("react");
8
+ var InstantSearchSSRContext = /*#__PURE__*/(0, _react.createContext)(null);
9
+ exports.InstantSearchSSRContext = InstantSearchSSRContext;
10
+ if (process.env.NODE_ENV === 'development') {
11
+ InstantSearchSSRContext.displayName = 'InstantSearchSSR';
12
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createSearchResults = createSearchResults;
7
+ var _algoliasearchHelper = _interopRequireDefault(require("algoliasearch-helper"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ function createSearchResults(state) {
10
+ var _state$query, _state$page, _state$hitsPerPage;
11
+ return new _algoliasearchHelper.default.SearchResults(state, [{
12
+ query: (_state$query = state.query) !== null && _state$query !== void 0 ? _state$query : '',
13
+ page: (_state$page = state.page) !== null && _state$page !== void 0 ? _state$page : 0,
14
+ hitsPerPage: (_state$hitsPerPage = state.hitsPerPage) !== null && _state$hitsPerPage !== void 0 ? _state$hitsPerPage : 20,
15
+ hits: [],
16
+ nbHits: 0,
17
+ nbPages: 0,
18
+ params: '',
19
+ exhaustiveNbHits: true,
20
+ exhaustiveFacetsCount: true,
21
+ processingTimeMS: 0,
22
+ index: state.index
23
+ }], {
24
+ /** used by connectors to prevent persisting these results */
25
+ __isArtificial: true
26
+ });
27
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.dequal = dequal;
7
+ 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); }
8
+ /* eslint-disable complexity */
9
+
10
+ /*
11
+ * Code taken from dequal/lite v2.0.0
12
+ * https://github.com/lukeed/dequal/blob/9aa73181ac7e081cd330cac67d313632ac04bb02/src/lite.js
13
+ *
14
+ * It adds a 3rd argument `compare(a, b)` that lets execute custom logic to
15
+ * compare values.
16
+ * We use it to skip comparing function references.
17
+ */
18
+
19
+ // eslint-disable-next-line @typescript-eslint/unbound-method
20
+ var has = Object.prototype.hasOwnProperty;
21
+ function dequal(foo, bar, compare) {
22
+ // start of custom implementation
23
+ if (compare !== null && compare !== void 0 && compare(foo, bar)) {
24
+ return true;
25
+ }
26
+ // end of custom implementation
27
+
28
+ var ctor;
29
+ var len;
30
+ if (foo === bar) return true;
31
+ if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
32
+ if (ctor === Date) return foo.getTime() === bar.getTime();
33
+ if (ctor === RegExp) return foo.toString() === bar.toString();
34
+ if (ctor === Array) {
35
+ if ((len = foo.length) === bar.length) {
36
+ while (len-- && dequal(foo[len], bar[len], compare));
37
+ }
38
+ return len === -1;
39
+ }
40
+ if (!ctor || _typeof(foo) === 'object') {
41
+ len = 0;
42
+ // eslint-disable-next-line guard-for-in, no-restricted-syntax
43
+ for (ctor in foo) {
44
+ if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
45
+ if (!(ctor in bar) || !dequal(foo[ctor], bar[ctor], compare)) return false;
46
+ }
47
+ return Object.keys(bar).length === len;
48
+ }
49
+ }
50
+
51
+ // eslint-disable-next-line no-self-compare
52
+ return foo !== foo && bar !== bar;
53
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getIndexSearchResults = getIndexSearchResults;
7
+ var _createSearchResults = require("./createSearchResults");
8
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
9
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
12
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
13
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
+ function getIndexSearchResults(indexWidget) {
15
+ var helper = indexWidget.getHelper();
16
+ var results =
17
+ // On SSR, we get the results injected on the Index.
18
+ indexWidget.getResults() ||
19
+ // On the browser, we create fallback results based on the helper state.
20
+ (0, _createSearchResults.createSearchResults)(helper.state);
21
+ var scopedResults = indexWidget.getScopedResults().map(function (scopedResult) {
22
+ var fallbackResults = scopedResult.indexId === indexWidget.getIndexId() ? results : (0, _createSearchResults.createSearchResults)(scopedResult.helper.state);
23
+ return _objectSpread(_objectSpread({}, scopedResult), {}, {
24
+ // We keep `results` from being `null`.
25
+ results: scopedResult.results || fallbackResults
26
+ });
27
+ });
28
+ return {
29
+ results: results,
30
+ scopedResults: scopedResults
31
+ };
32
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.invariant = invariant;
7
+ /**
8
+ * Throws an error if the condition is not met.
9
+ *
10
+ * The error is exhaustive in development, and becomes generic in production.
11
+ *
12
+ * This is used to make development a better experience to provide guidance as
13
+ * to where the error comes from.
14
+ */
15
+ function invariant(condition, message) {
16
+ if (condition) {
17
+ return;
18
+ }
19
+ if (!(process.env.NODE_ENV === 'development')) {
20
+ throw new Error('Invariant failed');
21
+ }
22
+ if (process.env.NODE_ENV === 'development') {
23
+ throw new Error("[InstantSearch] ".concat(typeof message === 'function' ? message() : message));
24
+ }
25
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.noop = void 0;
7
+ var noop = function noop() {};
8
+ exports.noop = noop;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useForceUpdate = useForceUpdate;
7
+ var _react = require("react");
8
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
9
+ 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."); }
10
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
12
+ 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; } }
13
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
14
+ /**
15
+ * Forces a React update that triggers a rerender.
16
+ * @link https://reactjs.org/docs/hooks-faq.html#is-there-something-like-forceupdate
17
+ */
18
+ function useForceUpdate() {
19
+ var _useReducer = (0, _react.useReducer)(function (x) {
20
+ return x + 1;
21
+ }, 0),
22
+ _useReducer2 = _slicedToArray(_useReducer, 2),
23
+ forceUpdate = _useReducer2[1];
24
+ return forceUpdate;
25
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIndex = useIndex;
7
+ var _index = _interopRequireDefault(require("instantsearch.js/cjs/widgets/index/index"));
8
+ var _react = require("react");
9
+ var _useIndexContext = require("../lib/useIndexContext");
10
+ var _useForceUpdate = require("./useForceUpdate");
11
+ var _useInstantSearchServerContext = require("./useInstantSearchServerContext");
12
+ var _useInstantSearchSSRContext = require("./useInstantSearchSSRContext");
13
+ var _useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect");
14
+ var _useStableValue = require("./useStableValue");
15
+ var _useWidget = require("./useWidget");
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function useIndex(props) {
18
+ var serverContext = (0, _useInstantSearchServerContext.useInstantSearchServerContext)();
19
+ var ssrContext = (0, _useInstantSearchSSRContext.useInstantSearchSSRContext)();
20
+ var initialResults = ssrContext === null || ssrContext === void 0 ? void 0 : ssrContext.initialResults;
21
+ var parentIndex = (0, _useIndexContext.useIndexContext)();
22
+ var stableProps = (0, _useStableValue.useStableValue)(props);
23
+ var indexWidget = (0, _react.useMemo)(function () {
24
+ return (0, _index.default)(stableProps);
25
+ }, [stableProps]);
26
+ var helper = indexWidget.getHelper();
27
+ var forceUpdate = (0, _useForceUpdate.useForceUpdate)();
28
+ (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
29
+ forceUpdate();
30
+ }, [helper, forceUpdate]);
31
+ (0, _useWidget.useWidget)({
32
+ widget: indexWidget,
33
+ parentIndex: parentIndex,
34
+ props: stableProps,
35
+ shouldSsr: Boolean(serverContext || initialResults)
36
+ });
37
+ return indexWidget;
38
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIndexContext = useIndexContext;
7
+ var _react = require("react");
8
+ var _invariant = require("../lib/invariant");
9
+ var _IndexContext = require("./IndexContext");
10
+ function useIndexContext() {
11
+ var context = (0, _react.useContext)(_IndexContext.IndexContext);
12
+ (0, _invariant.invariant)(context !== null, 'The <Index> component must be used within <InstantSearch>.');
13
+ return context;
14
+ }
@@ -0,0 +1,191 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useInstantSearchApi = useInstantSearchApi;
7
+ var _InstantSearch = _interopRequireDefault(require("instantsearch.js/cjs/lib/InstantSearch"));
8
+ var _react = require("react");
9
+ var _shim = require("use-sync-external-store/shim");
10
+ var _useInstantSearchServerContext = require("../lib/useInstantSearchServerContext");
11
+ var _useInstantSearchSSRContext = require("../lib/useInstantSearchSSRContext");
12
+ var _version = _interopRequireDefault(require("../version"));
13
+ var _useForceUpdate = require("./useForceUpdate");
14
+ var _warn = require("./warn");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ var defaultUserAgents = ["react (".concat(_react.version, ")"), "react-instantsearch (".concat(_version.default, ")"), "react-instantsearch-core (".concat(_version.default, ")")];
17
+ var serverUserAgent = "react-instantsearch-server (".concat(_version.default, ")");
18
+ var nextUserAgent = function nextUserAgent(nextVersion) {
19
+ return nextVersion ? "next.js (".concat(nextVersion, ")") : null;
20
+ };
21
+ function useInstantSearchApi(props) {
22
+ var forceUpdate = (0, _useForceUpdate.useForceUpdate)();
23
+ var serverContext = (0, _useInstantSearchServerContext.useInstantSearchServerContext)();
24
+ var serverState = (0, _useInstantSearchSSRContext.useInstantSearchSSRContext)();
25
+ var initialResults = serverState === null || serverState === void 0 ? void 0 : serverState.initialResults;
26
+ var prevPropsRef = (0, _react.useRef)(props);
27
+ var searchRef = (0, _react.useRef)(null);
28
+ // As we need to render on mount with SSR, using the local ref above in `StrictMode` will
29
+ // create and start two instances of InstantSearch. To avoid this, we instead discard it and use
30
+ // an upward ref from `InstantSearchSSRContext` as it has already been mounted a second time at this point.
31
+ if (serverState) {
32
+ searchRef = serverState.ssrSearchRef;
33
+ }
34
+ if (searchRef.current === null) {
35
+ // We don't use the `instantsearch()` function because it comes with other
36
+ // top-level APIs that we don't need.
37
+ // See https://github.com/algolia/instantsearch.js/blob/5b529f43d8acc680f85837eaaa41f7fd03a3f833/src/index.es.ts#L63-L86
38
+ var search = new _InstantSearch.default(props);
39
+ search._schedule = function _schedule(cb) {
40
+ search._schedule.queue.push(cb);
41
+ clearTimeout(search._schedule.timer);
42
+ search._schedule.timer = setTimeout(function () {
43
+ search._schedule.queue.forEach(function (callback) {
44
+ callback();
45
+ });
46
+ search._schedule.queue = [];
47
+ }, 0);
48
+ };
49
+ search._schedule.queue = [];
50
+ if (serverContext || initialResults) {
51
+ // InstantSearch.js has a private Initial Results API that lets us inject
52
+ // results on the search instance.
53
+ // On the server, we default the initial results to an empty object so that
54
+ // InstantSearch.js doesn't schedule a search that isn't used, leading to
55
+ // an additional network request. (This is equivalent to monkey-patching
56
+ // `scheduleSearch` to a noop.)
57
+ search._initialResults = initialResults || {};
58
+ }
59
+ addAlgoliaAgents(props.searchClient, [].concat(defaultUserAgents, [serverContext && serverUserAgent, nextUserAgent(getNextVersion())]));
60
+
61
+ // On the server, we start the search early to compute the search parameters.
62
+ // On SSR, we start the search early to directly catch up with the lifecycle
63
+ // and render.
64
+ if (serverContext || initialResults) {
65
+ search.start();
66
+ }
67
+ if (serverContext) {
68
+ // We notify `getServerState()` of the InstantSearch internals to retrieve
69
+ // the server state and pass it to the render on SSR.
70
+ serverContext.notifyServer({
71
+ search: search
72
+ });
73
+ }
74
+ warnNextRouter(props.routing);
75
+ searchRef.current = search;
76
+ }
77
+ {
78
+ var _search = searchRef.current;
79
+ var prevProps = prevPropsRef.current;
80
+ if (prevProps.indexName !== props.indexName) {
81
+ _search.helper.setIndex(props.indexName || '').search();
82
+ prevPropsRef.current = props;
83
+ }
84
+ if (prevProps.searchClient !== props.searchClient) {
85
+ process.env.NODE_ENV === 'development' ? (0, _warn.warn)(false, 'The `searchClient` prop of `<InstantSearch>` changed between renders, which may cause more search requests than necessary. If this is an unwanted behavior, please provide a stable reference: https://www.algolia.com/doc/api-reference/widgets/instantsearch/react/#widget-param-searchclient') : void 0;
86
+ addAlgoliaAgents(props.searchClient, [].concat(defaultUserAgents, [serverContext && serverUserAgent]));
87
+ _search.mainHelper.setClient(props.searchClient).search();
88
+ prevPropsRef.current = props;
89
+ }
90
+ if (prevProps.onStateChange !== props.onStateChange) {
91
+ _search.onStateChange = props.onStateChange;
92
+ prevPropsRef.current = props;
93
+ }
94
+ if (prevProps.searchFunction !== props.searchFunction) {
95
+ // Updating the `searchFunction` to `undefined` is not supported by
96
+ // InstantSearch.js, so it will throw an error.
97
+ // This is a fair behavior until we add an update API in InstantSearch.js.
98
+ _search._searchFunction = props.searchFunction;
99
+ prevPropsRef.current = props;
100
+ }
101
+ if (prevProps.stalledSearchDelay !== props.stalledSearchDelay) {
102
+ var _props$stalledSearchD;
103
+ // The default `stalledSearchDelay` in InstantSearch.js is 200ms.
104
+ // We need to reset it when it's undefined to get back to the original value.
105
+ _search._stalledSearchDelay = (_props$stalledSearchD = props.stalledSearchDelay) !== null && _props$stalledSearchD !== void 0 ? _props$stalledSearchD : 200;
106
+ prevPropsRef.current = props;
107
+ }
108
+
109
+ // Updating the `routing` prop is not supported because InstantSearch.js
110
+ // doesn't let us change it. This might not be a problem though, because `routing`
111
+ // shouldn't need to be dynamic.
112
+ // If we find scenarios where `routing` needs to change, we can always expose
113
+ // it privately on the InstantSearch instance. Another way would be to
114
+ // manually inject the routing middleware in this library, and not rely
115
+ // on the provided `routing` prop.
116
+ }
117
+
118
+ var cleanupTimerRef = (0, _react.useRef)(null);
119
+ var store = (0, _shim.useSyncExternalStore)((0, _react.useCallback)(function () {
120
+ var search = searchRef.current;
121
+
122
+ // Scenario 1: the component mounts.
123
+ if (cleanupTimerRef.current === null) {
124
+ // On SSR, the instance is already started so we don't start it again.
125
+ if (!search.started) {
126
+ search.start();
127
+ forceUpdate();
128
+ }
129
+ }
130
+ // Scenario 2: the component updates.
131
+ else {
132
+ // We cancel the previous cleanup function because we don't want to
133
+ // dispose the search during an update.
134
+ clearTimeout(cleanupTimerRef.current);
135
+ search._preventWidgetCleanup = false;
136
+ }
137
+ return function () {
138
+ function cleanup() {
139
+ search.dispose();
140
+ }
141
+ clearTimeout(search._schedule.timer);
142
+ // We clean up only when the component that uses this subscription unmounts,
143
+ // but not when it updates, because it would dispose the instance, which
144
+ // would remove all the widgets and break routing.
145
+ // Executing the cleanup function in a `setTimeout()` lets us cancel it
146
+ // in the next effect.
147
+ // (There might be better ways to do this.)
148
+ cleanupTimerRef.current = setTimeout(cleanup);
149
+
150
+ // We need to prevent the `useWidget` cleanup function so that widgets
151
+ // are not removed before the instance is disposed, triggering
152
+ // an unwanted search request.
153
+ search._preventWidgetCleanup = true;
154
+ };
155
+ }, [forceUpdate]), function () {
156
+ return searchRef.current;
157
+ }, function () {
158
+ return searchRef.current;
159
+ });
160
+ return store;
161
+ }
162
+ function addAlgoliaAgents(searchClient, userAgents) {
163
+ if (typeof searchClient.addAlgoliaAgent !== 'function') {
164
+ return;
165
+ }
166
+ userAgents.filter(Boolean).forEach(function (userAgent) {
167
+ searchClient.addAlgoliaAgent(userAgent);
168
+ });
169
+ }
170
+ function warnNextRouter(routing) {
171
+ if (process.env.NODE_ENV === 'development') {
172
+ var _routing$router;
173
+ if (!routing || typeof window === 'undefined' || !('__NEXT_DATA__' in window)) {
174
+ return;
175
+ }
176
+ var isUsingNextRouter =
177
+ // @ts-expect-error: _isNextRouter is only set on the Next.js router
178
+ routing !== true && (routing === null || routing === void 0 ? void 0 : (_routing$router = routing.router) === null || _routing$router === void 0 ? void 0 : _routing$router._isNextRouter);
179
+ process.env.NODE_ENV === 'development' ? (0, _warn.warn)(isUsingNextRouter, "\nYou are using Next.js with InstantSearch without the \"react-instantsearch-router-nextjs\" package.\nThis package is recommended to make the routing work correctly with Next.js.\nPlease check its usage instructions: https://github.com/algolia/instantsearch/tree/master/packages/react-instantsearch-router-nextjs\n\nYou can ignore this warning if you are using a custom router that suits your needs, it won't be outputted in production builds.") : void 0;
180
+ }
181
+ }
182
+
183
+ /**
184
+ * Gets the version of Next.js if it is available in the `window` object,
185
+ * otherwise it returns the NEXT_RUNTIME environment variable (in SSR),
186
+ * which is either `nodejs` or `edge`.
187
+ */
188
+ function getNextVersion() {
189
+ var _next, _process$env;
190
+ return typeof window !== 'undefined' && ((_next = window.next) === null || _next === void 0 ? void 0 : _next.version) || (typeof process !== 'undefined' ? (_process$env = process.env) === null || _process$env === void 0 ? void 0 : _process$env.NEXT_RUNTIME : undefined);
191
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useInstantSearchContext = useInstantSearchContext;
7
+ var _react = require("react");
8
+ var _invariant = require("../lib/invariant");
9
+ var _InstantSearchContext = require("./InstantSearchContext");
10
+ function useInstantSearchContext() {
11
+ var search = (0, _react.useContext)(_InstantSearchContext.InstantSearchContext);
12
+ (0, _invariant.invariant)(search !== null, 'Hooks must be used inside the <InstantSearch> component.\n\n' + 'They are not compatible with the `react-instantsearch-core@6.x` and `react-instantsearch-dom` packages, so make sure to use the <InstantSearch> component from `react-instantsearch-core@7.x`.');
13
+ return search;
14
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useInstantSearchSSRContext = useInstantSearchSSRContext;
7
+ var _react = require("react");
8
+ var _InstantSearchSSRContext = require("./InstantSearchSSRContext");
9
+ function useInstantSearchSSRContext() {
10
+ return (0, _react.useContext)(_InstantSearchSSRContext.InstantSearchSSRContext);
11
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useInstantSearchServerContext = useInstantSearchServerContext;
7
+ var _react = require("react");
8
+ var _InstantSearchServerContext = require("../components/InstantSearchServerContext");
9
+ function useInstantSearchServerContext() {
10
+ return (0, _react.useContext)(_InstantSearchServerContext.InstantSearchServerContext);
11
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useIsomorphicLayoutEffect = void 0;
7
+ var _react = require("react");
8
+ /**
9
+ * `useLayoutEffect` that doesn't show a warning when server-side rendering.
10
+ *
11
+ * It uses `useEffect` on the server (no-op), and `useLayoutEffect` on the browser.
12
+ */
13
+ var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? _react.useLayoutEffect : _react.useEffect;
14
+ exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSearchResults = useSearchResults;
7
+ var _react = require("react");
8
+ var _getIndexSearchResults = require("./getIndexSearchResults");
9
+ var _useIndexContext = require("./useIndexContext");
10
+ var _useInstantSearchContext = require("./useInstantSearchContext");
11
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
12
+ 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."); }
13
+ 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); }
14
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
15
+ function _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; } }
16
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+ function useSearchResults() {
18
+ var search = (0, _useInstantSearchContext.useInstantSearchContext)();
19
+ var searchIndex = (0, _useIndexContext.useIndexContext)();
20
+ var _useState = (0, _react.useState)(function () {
21
+ return (0, _getIndexSearchResults.getIndexSearchResults)(searchIndex);
22
+ }),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ searchResults = _useState2[0],
25
+ setSearchResults = _useState2[1];
26
+ (0, _react.useEffect)(function () {
27
+ function handleRender() {
28
+ var results = searchIndex.getResults();
29
+
30
+ // Results can be `null` when the first search is stalled.
31
+ // In this case, we skip the update.
32
+ // See: https://github.com/algolia/instantsearch.js/blob/20996c7a159988c58e00ff24d2d2dc98af8b980f/src/widgets/index/index.ts#L652-L657
33
+ if (results !== null) {
34
+ setSearchResults({
35
+ results: results,
36
+ scopedResults: searchIndex.getScopedResults()
37
+ });
38
+ }
39
+ }
40
+ search.addListener('render', handleRender);
41
+ return function () {
42
+ search.removeListener('render', handleRender);
43
+ };
44
+ }, [search, searchIndex]);
45
+ return searchResults;
46
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useSearchState = useSearchState;
7
+ var _react = require("react");
8
+ var _useIndexContext = require("./useIndexContext");
9
+ var _useInstantSearchContext = require("./useInstantSearchContext");
10
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
11
+ 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."); }
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 _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; }
14
+ 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; } }
15
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
16
+ function useSearchState() {
17
+ var search = (0, _useInstantSearchContext.useInstantSearchContext)();
18
+ var searchIndex = (0, _useIndexContext.useIndexContext)();
19
+ var indexId = searchIndex.getIndexId();
20
+ var _useState = (0, _react.useState)(function () {
21
+ return search.getUiState();
22
+ }),
23
+ _useState2 = _slicedToArray(_useState, 2),
24
+ uiState = _useState2[0],
25
+ setLocalUiState = _useState2[1];
26
+ var indexUiState = uiState[indexId];
27
+ var setUiState = (0, _react.useCallback)(function (nextUiState) {
28
+ search.setUiState(nextUiState);
29
+ }, [search]);
30
+ var setIndexUiState = (0, _react.useCallback)(function (nextIndexUiState) {
31
+ searchIndex.setIndexUiState(nextIndexUiState);
32
+ }, [searchIndex]);
33
+ (0, _react.useEffect)(function () {
34
+ function handleRender() {
35
+ setLocalUiState(search.getUiState());
36
+ }
37
+ search.addListener('render', handleRender);
38
+ return function () {
39
+ search.removeListener('render', handleRender);
40
+ };
41
+ }, [search]);
42
+ return {
43
+ uiState: uiState,
44
+ setUiState: setUiState,
45
+ indexUiState: indexUiState,
46
+ setIndexUiState: setIndexUiState
47
+ };
48
+ }
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useStableValue = useStableValue;
7
+ var _react = require("react");
8
+ var _dequal = require("../lib/dequal");
9
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
10
+ 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."); }
11
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
12
+ 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; }
13
+ 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; } }
14
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
15
+ function useStableValue(value) {
16
+ var _useState = (0, _react.useState)(function () {
17
+ return value;
18
+ }),
19
+ _useState2 = _slicedToArray(_useState, 2),
20
+ stableValue = _useState2[0],
21
+ setStableValue = _useState2[1];
22
+ if (!(0, _dequal.dequal)(stableValue, value)) {
23
+ setStableValue(value);
24
+ }
25
+ return stableValue;
26
+ }