react-instantsearch-core 7.26.1 → 7.28.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.
- package/dist/cjs/components/Configure.js +12 -6
- package/dist/cjs/components/DynamicWidgets.js +26 -17
- package/dist/cjs/components/Index.js +16 -9
- package/dist/cjs/components/InstantSearch.js +20 -13
- package/dist/cjs/components/InstantSearchSSRProvider.js +20 -16
- package/dist/cjs/components/InstantSearchServerContext.js +11 -5
- package/dist/cjs/connectors/useAutocomplete.js +13 -6
- package/dist/cjs/connectors/useBreadcrumb.js +13 -6
- package/dist/cjs/connectors/useChat.js +13 -6
- package/dist/cjs/connectors/useClearRefinements.js +13 -6
- package/dist/cjs/connectors/useConfigure.js +13 -6
- package/dist/cjs/connectors/useCurrentRefinements.js +13 -6
- package/dist/cjs/connectors/useDynamicWidgets.js +15 -8
- package/dist/cjs/connectors/useFilterSuggestions.js +13 -6
- package/dist/cjs/connectors/useFrequentlyBoughtTogether.js +13 -6
- package/dist/cjs/connectors/useGeoSearch.js +13 -6
- package/dist/cjs/connectors/useHierarchicalMenu.js +13 -6
- package/dist/cjs/connectors/useHits.js +13 -6
- package/dist/cjs/connectors/useHitsPerPage.js +13 -6
- package/dist/cjs/connectors/useInfiniteHits.js +13 -6
- package/dist/cjs/connectors/useLookingSimilar.js +13 -6
- package/dist/cjs/connectors/useMenu.js +13 -6
- package/dist/cjs/connectors/useNumericMenu.js +13 -6
- package/dist/cjs/connectors/usePagination.js +13 -6
- package/dist/cjs/connectors/usePoweredBy.js +11 -5
- package/dist/cjs/connectors/useQueryRules.js +13 -6
- package/dist/cjs/connectors/useRange.js +13 -6
- package/dist/cjs/connectors/useRefinementList.js +13 -6
- package/dist/cjs/connectors/useRelatedProducts.js +13 -6
- package/dist/cjs/connectors/useSearchBox.js +13 -6
- package/dist/cjs/connectors/useSortBy.js +13 -6
- package/dist/cjs/connectors/useStats.js +13 -6
- package/dist/cjs/connectors/useToggleRefinement.js +13 -6
- package/dist/cjs/connectors/useTrendingItems.js +13 -6
- package/dist/cjs/hooks/useConnector.js +36 -30
- package/dist/cjs/hooks/useInstantSearch.js +21 -15
- package/dist/cjs/index.js +54 -89
- package/dist/cjs/lib/IndexContext.js +11 -5
- package/dist/cjs/lib/InstantSearchContext.js +11 -5
- package/dist/cjs/lib/InstantSearchRSCContext.js +11 -5
- package/dist/cjs/lib/InstantSearchSSRContext.js +11 -5
- package/dist/cjs/lib/createSearchResults.js +12 -5
- package/dist/cjs/lib/dequal.js +10 -4
- package/dist/cjs/lib/getIndexSearchResults.js +14 -8
- package/dist/cjs/lib/invariant.js +10 -10
- package/dist/cjs/lib/noop.js +9 -2
- package/dist/cjs/lib/use.js +12 -25
- package/dist/cjs/lib/useAppIdAndApiKey.js +13 -7
- package/dist/cjs/lib/useForceUpdate.js +13 -10
- package/dist/cjs/lib/useIndex.js +28 -21
- package/dist/cjs/lib/useIndexContext.js +14 -8
- package/dist/cjs/lib/useInstantSearchApi.js +39 -29
- package/dist/cjs/lib/useInstantSearchContext.js +14 -8
- package/dist/cjs/lib/useInstantSearchSSRContext.js +12 -6
- package/dist/cjs/lib/useInstantSearchServerContext.js +12 -6
- package/dist/cjs/lib/useIsomorphicLayoutEffect.js +11 -9
- package/dist/cjs/lib/useRSCContext.js +12 -6
- package/dist/cjs/lib/useSearchResults.js +22 -16
- package/dist/cjs/lib/useSearchState.js +20 -14
- package/dist/cjs/lib/useStableValue.js +14 -8
- package/dist/cjs/lib/useWidget.js +28 -20
- package/dist/cjs/lib/warn.js +19 -8
- package/dist/cjs/lib/wrapPromiseWithState.js +9 -2
- package/dist/cjs/server/getServerState.js +23 -18
- package/dist/cjs/server/index.js +5 -5
- package/dist/cjs/version.js +10 -5
- package/dist/es/version.d.ts +1 -1
- package/dist/es/version.js +1 -1
- package/dist/umd/ReactInstantSearchCore.js +8 -3
- package/dist/umd/ReactInstantSearchCore.min.js +3 -3
- package/package.json +3 -3
|
@@ -1,35 +1,46 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useInstantSearchApi", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useInstantSearchApi;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
13
|
+
var _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
14
|
+
var _object_spread = require("@swc/helpers/_/_object_spread");
|
|
15
|
+
var _to_consumable_array = require("@swc/helpers/_/_to_consumable_array");
|
|
16
|
+
var _InstantSearch = /*#__PURE__*/ _interop_require_wildcard._(require("instantsearch.js/cjs/lib/InstantSearch"));
|
|
17
|
+
var _react = require("react");
|
|
18
|
+
var _shim = require("use-sync-external-store/shim");
|
|
19
|
+
var _version = /*#__PURE__*/ _interop_require_default._(require("../version"));
|
|
20
|
+
var _dequal = require("./dequal");
|
|
21
|
+
var _useForceUpdate = require("./useForceUpdate");
|
|
22
|
+
var _useInstantSearchServerContext = require("./useInstantSearchServerContext");
|
|
23
|
+
var _useInstantSearchSSRContext = require("./useInstantSearchSSRContext");
|
|
24
|
+
var _useRSCContext = require("./useRSCContext");
|
|
25
|
+
var _warn = require("./warn");
|
|
15
26
|
var defaultUserAgents = [
|
|
16
|
-
"react (".concat(
|
|
17
|
-
"react-instantsearch (".concat(
|
|
18
|
-
"react-instantsearch-core (".concat(
|
|
27
|
+
"react (".concat(_react.version, ")"),
|
|
28
|
+
"react-instantsearch (".concat(_version.default, ")"),
|
|
29
|
+
"react-instantsearch-core (".concat(_version.default, ")")
|
|
19
30
|
];
|
|
20
|
-
var serverUserAgent = "react-instantsearch-server (".concat(
|
|
31
|
+
var serverUserAgent = "react-instantsearch-server (".concat(_version.default, ")");
|
|
21
32
|
var nextUserAgent = function nextUserAgent(nextVersion) {
|
|
22
33
|
return nextVersion ? "next.js (".concat(nextVersion, ")") : null;
|
|
23
34
|
};
|
|
24
35
|
function useInstantSearchApi(props) {
|
|
25
|
-
var forceUpdate =
|
|
26
|
-
var serverContext =
|
|
27
|
-
var serverState =
|
|
28
|
-
var waitForResultsRef =
|
|
36
|
+
var forceUpdate = (0, _useForceUpdate.useForceUpdate)();
|
|
37
|
+
var serverContext = (0, _useInstantSearchServerContext.useInstantSearchServerContext)();
|
|
38
|
+
var serverState = (0, _useInstantSearchSSRContext.useInstantSearchSSRContext)();
|
|
39
|
+
var waitForResultsRef = (0, _useRSCContext.useRSCContext)().waitForResultsRef;
|
|
29
40
|
var initialResults = serverState === null || serverState === void 0 ? void 0 : serverState.initialResults;
|
|
30
|
-
var prevPropsRef =
|
|
41
|
+
var prevPropsRef = (0, _react.useRef)(props);
|
|
31
42
|
var shouldRenderAtOnce = serverContext || initialResults || waitForResultsRef;
|
|
32
|
-
var searchRef =
|
|
43
|
+
var searchRef = (0, _react.useRef)(null);
|
|
33
44
|
// As we need to render on mount with SSR, using the local ref above in `StrictMode` will
|
|
34
45
|
// create and start two instances of InstantSearch. To avoid this, we instead discard it and use
|
|
35
46
|
// an upward ref from `InstantSearchSSRContext` as it has already been mounted a second time at this point.
|
|
@@ -40,7 +51,7 @@ function useInstantSearchApi(props) {
|
|
|
40
51
|
// We don't use the `instantsearch()` function because it comes with other
|
|
41
52
|
// top-level APIs that we don't need.
|
|
42
53
|
// See https://github.com/algolia/instantsearch/blob/5b529f43d8acc680f85837eaaa41f7fd03a3f833/src/index.es.ts#L63-L86
|
|
43
|
-
var search = new
|
|
54
|
+
var search = new _InstantSearch.default(props);
|
|
44
55
|
search._schedule = function _schedule(cb) {
|
|
45
56
|
search._schedule.queue.push(cb);
|
|
46
57
|
clearTimeout(search._schedule.timer);
|
|
@@ -93,6 +104,7 @@ function useInstantSearchApi(props) {
|
|
|
93
104
|
prevPropsRef.current = props;
|
|
94
105
|
}
|
|
95
106
|
if (prevProps.searchClient !== props.searchClient) {
|
|
107
|
+
(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');
|
|
96
108
|
addAlgoliaAgents(props.searchClient, _to_consumable_array._(defaultUserAgents).concat([
|
|
97
109
|
serverContext && serverUserAgent
|
|
98
110
|
]));
|
|
@@ -117,8 +129,8 @@ function useInstantSearchApi(props) {
|
|
|
117
129
|
search1._stalledSearchDelay = (_props_stalledSearchDelay = props.stalledSearchDelay) !== null && _props_stalledSearchDelay !== void 0 ? _props_stalledSearchDelay : 200;
|
|
118
130
|
prevPropsRef.current = props;
|
|
119
131
|
}
|
|
120
|
-
if (!
|
|
121
|
-
search1.future = _object_spread._({},
|
|
132
|
+
if (!(0, _dequal.dequal)(prevProps.future, props.future)) {
|
|
133
|
+
search1.future = _object_spread._({}, _InstantSearch.INSTANTSEARCH_FUTURE_DEFAULTS, props.future);
|
|
122
134
|
prevPropsRef.current = props;
|
|
123
135
|
}
|
|
124
136
|
// Updating the `routing` prop is not supported because InstantSearch.js
|
|
@@ -129,8 +141,8 @@ function useInstantSearchApi(props) {
|
|
|
129
141
|
// manually inject the routing middleware in this library, and not rely
|
|
130
142
|
// on the provided `routing` prop.
|
|
131
143
|
}
|
|
132
|
-
var cleanupTimerRef =
|
|
133
|
-
var store =
|
|
144
|
+
var cleanupTimerRef = (0, _react.useRef)(null);
|
|
145
|
+
var store = (0, _shim.useSyncExternalStore)((0, _react.useCallback)(function() {
|
|
134
146
|
var search = searchRef.current;
|
|
135
147
|
// Scenario 1: the component mounts.
|
|
136
148
|
if (cleanupTimerRef.current === null) {
|
|
@@ -193,5 +205,3 @@ function warnNextRouter(routing) {
|
|
|
193
205
|
var _window_next, _process_env;
|
|
194
206
|
return typeof window !== 'undefined' && ((_window_next = window.next) === null || _window_next === void 0 ? void 0 : _window_next.version) || (typeof process !== 'undefined' ? (_process_env = process.env) === null || _process_env === void 0 ? void 0 : _process_env.NEXT_RUNTIME : undefined);
|
|
195
207
|
}
|
|
196
|
-
|
|
197
|
-
exports.useInstantSearchApi = useInstantSearchApi;
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useInstantSearchContext", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useInstantSearchContext;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var _InstantSearchContext = require("./InstantSearchContext");
|
|
14
|
+
var _invariant = require("./invariant");
|
|
7
15
|
function useInstantSearchContext() {
|
|
8
|
-
var search =
|
|
9
|
-
|
|
16
|
+
var search = (0, _react.useContext)(_InstantSearchContext.InstantSearchContext);
|
|
17
|
+
(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`.');
|
|
10
18
|
return search;
|
|
11
19
|
}
|
|
12
|
-
|
|
13
|
-
exports.useInstantSearchContext = useInstantSearchContext;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useInstantSearchSSRContext", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useInstantSearchSSRContext;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var _InstantSearchSSRContext = require("./InstantSearchSSRContext");
|
|
6
14
|
function useInstantSearchSSRContext() {
|
|
7
|
-
return
|
|
15
|
+
return (0, _react.useContext)(_InstantSearchSSRContext.InstantSearchSSRContext);
|
|
8
16
|
}
|
|
9
|
-
|
|
10
|
-
exports.useInstantSearchSSRContext = useInstantSearchSSRContext;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useInstantSearchServerContext", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useInstantSearchServerContext;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var _InstantSearchServerContext = require("../components/InstantSearchServerContext");
|
|
6
14
|
function useInstantSearchServerContext() {
|
|
7
|
-
return
|
|
15
|
+
return (0, _react.useContext)(_InstantSearchServerContext.InstantSearchServerContext);
|
|
8
16
|
}
|
|
9
|
-
|
|
10
|
-
exports.useInstantSearchServerContext = useInstantSearchServerContext;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useIsomorphicLayoutEffect", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useIsomorphicLayoutEffect;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? _react.useLayoutEffect : _react.useEffect;
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useRSCContext", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useRSCContext;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var _InstantSearchRSCContext = require("./InstantSearchRSCContext");
|
|
6
14
|
function useRSCContext() {
|
|
7
|
-
return
|
|
15
|
+
return (0, _react.useContext)(_InstantSearchRSCContext.InstantSearchRSCContext);
|
|
8
16
|
}
|
|
9
|
-
|
|
10
|
-
exports.useRSCContext = useRSCContext;
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useSearchResults", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useSearchResults;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
|
|
13
|
+
var _utils = require("instantsearch.js/cjs/lib/utils");
|
|
14
|
+
var _react = require("react");
|
|
15
|
+
var _getIndexSearchResults = require("./getIndexSearchResults");
|
|
16
|
+
var _useIndexContext = require("./useIndexContext");
|
|
17
|
+
var _useInstantSearchContext = require("./useInstantSearchContext");
|
|
10
18
|
function useSearchResults() {
|
|
11
|
-
var search =
|
|
12
|
-
var searchIndex =
|
|
13
|
-
var _useState = _sliced_to_array._(
|
|
14
|
-
var indexSearchResults =
|
|
19
|
+
var search = (0, _useInstantSearchContext.useInstantSearchContext)();
|
|
20
|
+
var searchIndex = (0, _useIndexContext.useIndexContext)();
|
|
21
|
+
var _useState = _sliced_to_array._((0, _react.useState)(function() {
|
|
22
|
+
var indexSearchResults = (0, _getIndexSearchResults.getIndexSearchResults)(searchIndex);
|
|
15
23
|
// We do this not to leak `recommendResults` in the API.
|
|
16
24
|
return {
|
|
17
25
|
results: indexSearchResults.results,
|
|
18
26
|
scopedResults: indexSearchResults.scopedResults
|
|
19
27
|
};
|
|
20
28
|
}), 2), searchResults = _useState[0], setSearchResults = _useState[1];
|
|
21
|
-
|
|
29
|
+
(0, _react.useEffect)(function() {
|
|
22
30
|
function handleRender() {
|
|
23
31
|
var results = searchIndex.getResults();
|
|
24
32
|
// Results can be `null` when the first search is stalled.
|
|
@@ -32,9 +40,9 @@ function useSearchResults() {
|
|
|
32
40
|
} else if (search.mainIndex.getIndexName().length === 0) {
|
|
33
41
|
// If the main index has no name, we get the scoped results from
|
|
34
42
|
// the first child index instead.
|
|
35
|
-
var childIndex = search.mainIndex.getWidgets().find(
|
|
43
|
+
var childIndex = search.mainIndex.getWidgets().find(_utils.isIndexWidget);
|
|
36
44
|
childIndex && setSearchResults({
|
|
37
|
-
results:
|
|
45
|
+
results: (0, _getIndexSearchResults.getIndexSearchResults)(searchIndex).results,
|
|
38
46
|
scopedResults: childIndex.getScopedResults()
|
|
39
47
|
});
|
|
40
48
|
}
|
|
@@ -53,5 +61,3 @@ function useSearchResults() {
|
|
|
53
61
|
]);
|
|
54
62
|
return searchResults;
|
|
55
63
|
}
|
|
56
|
-
|
|
57
|
-
exports.useSearchResults = useSearchResults;
|
|
@@ -1,33 +1,41 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useSearchState", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useSearchState;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
|
|
13
|
+
var _react = require("react");
|
|
14
|
+
var _useIndexContext = require("./useIndexContext");
|
|
15
|
+
var _useInstantSearchContext = require("./useInstantSearchContext");
|
|
8
16
|
function useSearchState() {
|
|
9
|
-
var search =
|
|
10
|
-
var searchIndex =
|
|
17
|
+
var search = (0, _useInstantSearchContext.useInstantSearchContext)();
|
|
18
|
+
var searchIndex = (0, _useIndexContext.useIndexContext)();
|
|
11
19
|
var indexId = searchIndex.getIndexId();
|
|
12
|
-
var _useState = _sliced_to_array._(
|
|
20
|
+
var _useState = _sliced_to_array._((0, _react.useState)(function() {
|
|
13
21
|
return search.getUiState();
|
|
14
22
|
}), 2), uiState = _useState[0], setLocalUiState = _useState[1];
|
|
15
23
|
var indexUiState = uiState[indexId];
|
|
16
|
-
var _useState1 = _sliced_to_array._(
|
|
24
|
+
var _useState1 = _sliced_to_array._((0, _react.useState)(function() {
|
|
17
25
|
return search.renderState;
|
|
18
26
|
}), 2), renderState = _useState1[0], setRenderState = _useState1[1];
|
|
19
27
|
var indexRenderState = renderState[indexId] || {};
|
|
20
|
-
var setUiState =
|
|
28
|
+
var setUiState = (0, _react.useCallback)(function(nextUiState) {
|
|
21
29
|
search.setUiState(nextUiState);
|
|
22
30
|
}, [
|
|
23
31
|
search
|
|
24
32
|
]);
|
|
25
|
-
var setIndexUiState =
|
|
33
|
+
var setIndexUiState = (0, _react.useCallback)(function(nextIndexUiState) {
|
|
26
34
|
searchIndex.setIndexUiState(nextIndexUiState);
|
|
27
35
|
}, [
|
|
28
36
|
searchIndex
|
|
29
37
|
]);
|
|
30
|
-
|
|
38
|
+
(0, _react.useEffect)(function() {
|
|
31
39
|
function handleRender() {
|
|
32
40
|
setLocalUiState(search.getUiState());
|
|
33
41
|
setRenderState(search.renderState);
|
|
@@ -52,5 +60,3 @@ function useSearchState() {
|
|
|
52
60
|
indexRenderState: indexRenderState
|
|
53
61
|
};
|
|
54
62
|
}
|
|
55
|
-
|
|
56
|
-
exports.useSearchState = useSearchState;
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useStableValue", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useStableValue;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _sliced_to_array = require("@swc/helpers/_/_sliced_to_array");
|
|
13
|
+
var _react = require("react");
|
|
14
|
+
var _dequal = require("./dequal");
|
|
7
15
|
function useStableValue(value) {
|
|
8
|
-
var _useState = _sliced_to_array._(
|
|
16
|
+
var _useState = _sliced_to_array._((0, _react.useState)(function() {
|
|
9
17
|
return value;
|
|
10
18
|
}), 2), stableValue = _useState[0], setStableValue = _useState[1];
|
|
11
|
-
if (!
|
|
19
|
+
if (!(0, _dequal.dequal)(stableValue, value)) {
|
|
12
20
|
setStableValue(value);
|
|
13
21
|
}
|
|
14
22
|
return stableValue;
|
|
15
23
|
}
|
|
16
|
-
|
|
17
|
-
exports.useStableValue = useStableValue;
|
|
@@ -1,36 +1,45 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "useWidget", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return useWidget;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
var _dequal = require("./dequal");
|
|
14
|
+
var _use = require("./use");
|
|
15
|
+
var _useInstantSearchContext = require("./useInstantSearchContext");
|
|
16
|
+
var _useIsomorphicLayoutEffect = require("./useIsomorphicLayoutEffect");
|
|
17
|
+
var _useRSCContext = require("./useRSCContext");
|
|
18
|
+
var _warn = require("./warn");
|
|
10
19
|
function useWidget(param) {
|
|
11
20
|
var widget = param.widget, parentIndex = param.parentIndex, props = param.props, shouldSsr = param.shouldSsr, skipSuspense = param.skipSuspense;
|
|
12
21
|
var _waitForResultsRef_current, _waitForResultsRef_current1;
|
|
13
|
-
var
|
|
14
|
-
var prevPropsRef =
|
|
15
|
-
|
|
22
|
+
var _useRSCContext1 = (0, _useRSCContext.useRSCContext)(), waitForResultsRef = _useRSCContext1.waitForResultsRef, countRef = _useRSCContext1.countRef, ignoreMultipleHooksWarning = _useRSCContext1.ignoreMultipleHooksWarning;
|
|
23
|
+
var prevPropsRef = (0, _react.useRef)(props);
|
|
24
|
+
(0, _react.useEffect)(function() {
|
|
16
25
|
prevPropsRef.current = props;
|
|
17
26
|
}, [
|
|
18
27
|
props
|
|
19
28
|
]);
|
|
20
|
-
var prevWidgetRef =
|
|
21
|
-
|
|
29
|
+
var prevWidgetRef = (0, _react.useRef)(widget);
|
|
30
|
+
(0, _react.useEffect)(function() {
|
|
22
31
|
prevWidgetRef.current = widget;
|
|
23
32
|
}, [
|
|
24
33
|
widget
|
|
25
34
|
]);
|
|
26
|
-
var cleanupTimerRef =
|
|
35
|
+
var cleanupTimerRef = (0, _react.useRef)(null);
|
|
27
36
|
var shouldAddWidgetEarly = shouldSsr && !parentIndex.getWidgets().includes(widget);
|
|
28
|
-
var search =
|
|
37
|
+
var search = (0, _useInstantSearchContext.useInstantSearchContext)();
|
|
29
38
|
// This effect is responsible for adding, removing, and updating the widget.
|
|
30
39
|
// We need to support scenarios where the widget is remounted quickly, like in
|
|
31
40
|
// Strict Mode, so that we don't lose its state, and therefore that we don't
|
|
32
41
|
// break routing.
|
|
33
|
-
|
|
42
|
+
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function() {
|
|
34
43
|
var previousWidget = prevWidgetRef.current;
|
|
35
44
|
// Scenario 1: the widget is added for the first time.
|
|
36
45
|
if (!cleanupTimerRef.current) {
|
|
@@ -49,7 +58,7 @@ function useWidget(param) {
|
|
|
49
58
|
// and could be a source of confusion.
|
|
50
59
|
// If users face this issue, we should advise them to provide stable function
|
|
51
60
|
// references.
|
|
52
|
-
var arePropsEqual =
|
|
61
|
+
var arePropsEqual = (0, _dequal.dequal)(props, prevPropsRef.current);
|
|
53
62
|
// If props did change, then we execute the cleanup function instantly
|
|
54
63
|
// and then add the widget back. This lets us add the widget without
|
|
55
64
|
// waiting for the scheduled cleanup function to finish (that we canceled
|
|
@@ -89,16 +98,15 @@ function useWidget(param) {
|
|
|
89
98
|
}
|
|
90
99
|
if ((waitForResultsRef === null || waitForResultsRef === void 0 ? void 0 : waitForResultsRef.current) && !skipSuspense) {
|
|
91
100
|
var _search_helper;
|
|
92
|
-
|
|
101
|
+
(0, _use.use)(waitForResultsRef.current);
|
|
93
102
|
// If we made a second request because of DynamicWidgets, we need to wait for the second result,
|
|
94
103
|
// except for DynamicWidgets itself which needs to render its children after the first result.
|
|
95
104
|
if (widget.$$type !== 'ais.dynamicWidgets' && ((_search_helper = search.helper) === null || _search_helper === void 0 ? void 0 : _search_helper.lastResults)) {
|
|
96
|
-
|
|
105
|
+
(0, _use.use)(waitForResultsRef.current);
|
|
97
106
|
}
|
|
98
107
|
}
|
|
99
108
|
if ((waitForResultsRef === null || waitForResultsRef === void 0 ? void 0 : (_waitForResultsRef_current1 = waitForResultsRef.current) === null || _waitForResultsRef_current1 === void 0 ? void 0 : _waitForResultsRef_current1.status) === 'fulfilled') {
|
|
100
109
|
countRef.current += 1;
|
|
110
|
+
(0, _warn.warn)(ignoreMultipleHooksWarning || countRef.current <= parentIndex.getWidgets().length, "We detected you may have a component with multiple InstantSearch hooks.\n\nWith Next.js, you need to set `skipSuspense` to `true` for all but the last hook in the component, otherwise, only the first hook will be rendered on the server.\n\nThis warning can be a false positive if you are using dynamic widgets or multi-index, in which case you can ignore it by setting `ignoreMultipleHooksWarning` to `true` in `<InstantSearchNext`.\n\nFor more information, see https://www.algolia.com/doc/guides/building-search-ui/going-further/server-side-rendering/react/#composing-hooks");
|
|
101
111
|
}
|
|
102
112
|
}
|
|
103
|
-
|
|
104
|
-
exports.useWidget = useWidget;
|
package/dist/cjs/lib/warn.js
CHANGED
|
@@ -1,16 +1,27 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
function _export(target, all) {
|
|
7
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
_export(exports, {
|
|
13
|
+
get warn () {
|
|
14
|
+
return warn;
|
|
15
|
+
},
|
|
16
|
+
get warnCache () {
|
|
17
|
+
return warnCache;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
var warnCache = {
|
|
4
21
|
current: {}
|
|
5
22
|
};
|
|
6
|
-
|
|
7
|
-
* Logs a warning if the condition is not met.
|
|
8
|
-
* This is used to log issues in development environment only.
|
|
9
|
-
*/ function warn(condition, message) {
|
|
23
|
+
function warn(condition, message) {
|
|
10
24
|
{
|
|
11
25
|
return;
|
|
12
26
|
}
|
|
13
27
|
}
|
|
14
|
-
|
|
15
|
-
exports.warn = warn;
|
|
16
|
-
exports.warnCache = warnCache;
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
// This is needed in order to work with RSC Suspense, perhaps they will later provide a wrapper.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
Object.defineProperty(exports, "wrapPromiseWithState", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function() {
|
|
10
|
+
return wrapPromiseWithState;
|
|
11
|
+
}
|
|
12
|
+
});
|
|
4
13
|
function isStatefulPromise(promise) {
|
|
5
14
|
return 'status' in promise;
|
|
6
15
|
}
|
|
@@ -25,5 +34,3 @@ function wrapPromiseWithState(promise) {
|
|
|
25
34
|
});
|
|
26
35
|
return promise;
|
|
27
36
|
}
|
|
28
|
-
|
|
29
|
-
exports.wrapPromiseWithState = wrapPromiseWithState;
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "getServerState", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return getServerState;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
var _interop_require_default = require("@swc/helpers/_/_interop_require_default");
|
|
13
|
+
var _server = require("instantsearch.js/cjs/lib/server");
|
|
14
|
+
var _utils = require("instantsearch.js/cjs/lib/utils");
|
|
15
|
+
var _react = /*#__PURE__*/ _interop_require_default._(require("react"));
|
|
16
|
+
var _InstantSearchServerContext = require("../components/InstantSearchServerContext");
|
|
17
|
+
var _InstantSearchSSRProvider = require("../components/InstantSearchSSRProvider");
|
|
18
|
+
function getServerState(children, param) {
|
|
12
19
|
var renderToString = param.renderToString;
|
|
13
20
|
var searchRef = {
|
|
14
21
|
current: undefined
|
|
15
22
|
};
|
|
16
|
-
|
|
23
|
+
(0, _utils.resetWidgetId)();
|
|
17
24
|
var createNotifyServer = function createNotifyServer() {
|
|
18
25
|
var hasBeenNotified = false;
|
|
19
26
|
var notifyServer = function notifyServer(param) {
|
|
@@ -35,15 +42,15 @@ var InstantSearchSSRProvider = require('../components/InstantSearchSSRProvider.j
|
|
|
35
42
|
var shouldRefetch = false;
|
|
36
43
|
// <DynamicWidgets> requires another query to retrieve the dynamic widgets
|
|
37
44
|
// to render.
|
|
38
|
-
|
|
45
|
+
(0, _utils.walkIndex)(searchRef.current.mainIndex, function(index) {
|
|
39
46
|
shouldRefetch = shouldRefetch || index.getWidgets().some(function(widget) {
|
|
40
47
|
return widget.$$type === 'ais.dynamicWidgets';
|
|
41
48
|
});
|
|
42
49
|
});
|
|
43
50
|
if (shouldRefetch) {
|
|
44
|
-
|
|
51
|
+
(0, _utils.resetWidgetId)();
|
|
45
52
|
return execute({
|
|
46
|
-
children: /*#__PURE__*/
|
|
53
|
+
children: /*#__PURE__*/ _react.default.createElement(_InstantSearchSSRProvider.InstantSearchSSRProvider, serverState, children),
|
|
47
54
|
renderToString: renderToString,
|
|
48
55
|
searchRef: searchRef,
|
|
49
56
|
notifyServer: createNotifyServer(),
|
|
@@ -56,7 +63,7 @@ var InstantSearchSSRProvider = require('../components/InstantSearchSSRProvider.j
|
|
|
56
63
|
function execute(param) {
|
|
57
64
|
var children = param.children, renderToString = param.renderToString, notifyServer = param.notifyServer, searchRef = param.searchRef, skipRecommend = param.skipRecommend;
|
|
58
65
|
return Promise.resolve().then(function() {
|
|
59
|
-
renderToString(/*#__PURE__*/
|
|
66
|
+
renderToString(/*#__PURE__*/ _react.default.createElement(_InstantSearchServerContext.InstantSearchServerContext.Provider, {
|
|
60
67
|
value: {
|
|
61
68
|
notifyServer: notifyServer
|
|
62
69
|
}
|
|
@@ -77,12 +84,10 @@ function execute(param) {
|
|
|
77
84
|
if (!searchRef.current) {
|
|
78
85
|
throw new Error("Unable to retrieve InstantSearch's server state in `getServerState()`. Did you mount the <InstantSearch> component?");
|
|
79
86
|
}
|
|
80
|
-
return
|
|
87
|
+
return (0, _server.waitForResults)(searchRef.current, skipRecommend);
|
|
81
88
|
}).then(function(requestParamsList) {
|
|
82
89
|
return {
|
|
83
|
-
initialResults:
|
|
90
|
+
initialResults: (0, _server.getInitialResults)(searchRef.current.mainIndex, requestParamsList)
|
|
84
91
|
};
|
|
85
92
|
});
|
|
86
93
|
}
|
|
87
|
-
|
|
88
|
-
exports.getServerState = getServerState;
|
package/dist/cjs/server/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _export_star = require("@swc/helpers/_/_export_star");
|
|
7
|
+
_export_star._(require("./getServerState"), exports);
|