react-instantsearch-core 7.9.0 → 7.11.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/InstantSearchSSRProvider.js +5 -1
- package/dist/cjs/hooks/useConnector.js +5 -5
- package/dist/cjs/lib/getIndexSearchResults.js +2 -1
- package/dist/cjs/lib/useSearchResults.js +6 -1
- package/dist/cjs/server/getServerState.js +7 -3
- package/dist/cjs/version.js +1 -1
- package/dist/es/components/InstantSearchSSRProvider.js +5 -1
- package/dist/es/connectors/useGeoSearch.d.ts +3 -4
- package/dist/es/hooks/useConnector.js +5 -5
- package/dist/es/lib/InstantSearchSSRContext.d.ts +1 -0
- package/dist/es/lib/getIndexSearchResults.d.ts +1 -0
- package/dist/es/lib/getIndexSearchResults.js +2 -1
- package/dist/es/lib/useSearchResults.js +6 -1
- package/dist/es/server/getServerState.js +8 -4
- package/dist/es/version.d.ts +1 -1
- package/dist/es/version.js +1 -1
- package/dist/umd/ReactInstantSearchCore.js +5579 -5445
- package/dist/umd/ReactInstantSearchCore.js.map +1 -1
- package/dist/umd/ReactInstantSearchCore.min.js +1 -1
- package/dist/umd/ReactInstantSearchCore.min.js.map +1 -1
- package/package.json +4 -4
|
@@ -27,6 +27,9 @@ function InstantSearchSSRProvider(_ref) {
|
|
|
27
27
|
// `InstantSearch` on mount.
|
|
28
28
|
var ssrSearchRef = _react.default.useRef(null);
|
|
29
29
|
|
|
30
|
+
// This is used to re-map the result index to the requesting widget
|
|
31
|
+
var recommendIdx = _react.default.useRef(0);
|
|
32
|
+
|
|
30
33
|
// When <DynamicWidgets> is mounted, a second provider is used above the user-land
|
|
31
34
|
// <InstantSearchSSRProvider> in `getServerState()`.
|
|
32
35
|
// To avoid the user's provider overriding the context value with an empty object,
|
|
@@ -36,7 +39,8 @@ function InstantSearchSSRProvider(_ref) {
|
|
|
36
39
|
}
|
|
37
40
|
return /*#__PURE__*/_react.default.createElement(_InstantSearchSSRContext.InstantSearchSSRContext.Provider, {
|
|
38
41
|
value: _objectSpread(_objectSpread({}, props), {}, {
|
|
39
|
-
ssrSearchRef: ssrSearchRef
|
|
42
|
+
ssrSearchRef: ssrSearchRef,
|
|
43
|
+
recommendIdx: recommendIdx
|
|
40
44
|
})
|
|
41
45
|
}, children);
|
|
42
46
|
}
|
|
@@ -11,6 +11,7 @@ var _getIndexSearchResults = require("../lib/getIndexSearchResults");
|
|
|
11
11
|
var _useIndexContext = require("../lib/useIndexContext");
|
|
12
12
|
var _useInstantSearchContext = require("../lib/useInstantSearchContext");
|
|
13
13
|
var _useInstantSearchServerContext = require("../lib/useInstantSearchServerContext");
|
|
14
|
+
var _useInstantSearchSSRContext = require("../lib/useInstantSearchSSRContext");
|
|
14
15
|
var _useStableValue = require("../lib/useStableValue");
|
|
15
16
|
var _useWidget = require("../lib/useWidget");
|
|
16
17
|
var _excluded = ["instantSearchInstance", "widgetParams"],
|
|
@@ -32,6 +33,7 @@ function useConnector(connector) {
|
|
|
32
33
|
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
33
34
|
var additionalWidgetProperties = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
34
35
|
var serverContext = (0, _useInstantSearchServerContext.useInstantSearchServerContext)();
|
|
36
|
+
var ssrContext = (0, _useInstantSearchSSRContext.useInstantSearchSSRContext)();
|
|
35
37
|
var search = (0, _useInstantSearchContext.useInstantSearchContext)();
|
|
36
38
|
var parentIndex = (0, _useIndexContext.useIndexContext)();
|
|
37
39
|
var stableProps = (0, _useStableValue.useStableValue)(props);
|
|
@@ -96,7 +98,8 @@ function useConnector(connector) {
|
|
|
96
98
|
})) || helper.state;
|
|
97
99
|
var _getIndexSearchResult = (0, _getIndexSearchResults.getIndexSearchResults)(parentIndex),
|
|
98
100
|
results = _getIndexSearchResult.results,
|
|
99
|
-
scopedResults = _getIndexSearchResult.scopedResults
|
|
101
|
+
scopedResults = _getIndexSearchResult.scopedResults,
|
|
102
|
+
recommendResults = _getIndexSearchResult.recommendResults;
|
|
100
103
|
|
|
101
104
|
// We get the widget render state by providing the same parameters as
|
|
102
105
|
// InstantSearch provides to the widget's `render` method.
|
|
@@ -105,10 +108,7 @@ function useConnector(connector) {
|
|
|
105
108
|
helper: helper,
|
|
106
109
|
parent: parentIndex,
|
|
107
110
|
instantSearchInstance: search,
|
|
108
|
-
results: widget.dependsOn === 'recommend' ?
|
|
109
|
-
// @TODO: this is to avoid using wrong hits in SSR,
|
|
110
|
-
// will be replace with SSR support for recommend
|
|
111
|
-
null : results,
|
|
111
|
+
results: widget.dependsOn === 'recommend' && recommendResults && ssrContext ? recommendResults[ssrContext.recommendIdx.current++] : results,
|
|
112
112
|
scopedResults: scopedResults,
|
|
113
113
|
state: helper.state,
|
|
114
114
|
renderState: search.renderState,
|
|
@@ -19,7 +19,12 @@ function useSearchResults() {
|
|
|
19
19
|
var search = (0, _useInstantSearchContext.useInstantSearchContext)();
|
|
20
20
|
var searchIndex = (0, _useIndexContext.useIndexContext)();
|
|
21
21
|
var _useState = (0, _react.useState)(function () {
|
|
22
|
-
|
|
22
|
+
var indexSearchResults = (0, _getIndexSearchResults.getIndexSearchResults)(searchIndex);
|
|
23
|
+
// We do this not to leak `recommendResults` in the API.
|
|
24
|
+
return {
|
|
25
|
+
results: indexSearchResults.results,
|
|
26
|
+
scopedResults: indexSearchResults.scopedResults
|
|
27
|
+
};
|
|
23
28
|
}),
|
|
24
29
|
_useState2 = _slicedToArray(_useState, 2),
|
|
25
30
|
searchResults = _useState2[0],
|
|
@@ -17,6 +17,7 @@ function getServerState(children, _ref) {
|
|
|
17
17
|
var searchRef = {
|
|
18
18
|
current: undefined
|
|
19
19
|
};
|
|
20
|
+
(0, _utils.resetWidgetId)();
|
|
20
21
|
var createNotifyServer = function createNotifyServer() {
|
|
21
22
|
var hasBeenNotified = false;
|
|
22
23
|
var notifyServer = function notifyServer(_ref2) {
|
|
@@ -45,11 +46,13 @@ function getServerState(children, _ref) {
|
|
|
45
46
|
});
|
|
46
47
|
});
|
|
47
48
|
if (shouldRefetch) {
|
|
49
|
+
(0, _utils.resetWidgetId)();
|
|
48
50
|
return execute({
|
|
49
51
|
children: /*#__PURE__*/_react.default.createElement(_.InstantSearchSSRProvider, serverState, children),
|
|
50
52
|
renderToString: renderToString,
|
|
51
53
|
searchRef: searchRef,
|
|
52
|
-
notifyServer: createNotifyServer()
|
|
54
|
+
notifyServer: createNotifyServer(),
|
|
55
|
+
skipRecommend: true
|
|
53
56
|
});
|
|
54
57
|
}
|
|
55
58
|
return serverState;
|
|
@@ -59,7 +62,8 @@ function execute(_ref3) {
|
|
|
59
62
|
var children = _ref3.children,
|
|
60
63
|
renderToString = _ref3.renderToString,
|
|
61
64
|
notifyServer = _ref3.notifyServer,
|
|
62
|
-
searchRef = _ref3.searchRef
|
|
65
|
+
searchRef = _ref3.searchRef,
|
|
66
|
+
skipRecommend = _ref3.skipRecommend;
|
|
63
67
|
return Promise.resolve().then(function () {
|
|
64
68
|
renderToString( /*#__PURE__*/_react.default.createElement(_.InstantSearchServerContext.Provider, {
|
|
65
69
|
value: {
|
|
@@ -84,7 +88,7 @@ function execute(_ref3) {
|
|
|
84
88
|
if (!searchRef.current) {
|
|
85
89
|
throw new Error("Unable to retrieve InstantSearch's server state in `getServerState()`. Did you mount the <InstantSearch> component?");
|
|
86
90
|
}
|
|
87
|
-
return (0, _server.waitForResults)(searchRef.current);
|
|
91
|
+
return (0, _server.waitForResults)(searchRef.current, skipRecommend);
|
|
88
92
|
}).then(function (requestParamsList) {
|
|
89
93
|
return {
|
|
90
94
|
initialResults: (0, _server.getInitialResults)(searchRef.current.mainIndex, requestParamsList)
|
package/dist/cjs/version.js
CHANGED
|
@@ -20,6 +20,9 @@ export function InstantSearchSSRProvider(_ref) {
|
|
|
20
20
|
// `InstantSearch` on mount.
|
|
21
21
|
var ssrSearchRef = React.useRef(null);
|
|
22
22
|
|
|
23
|
+
// This is used to re-map the result index to the requesting widget
|
|
24
|
+
var recommendIdx = React.useRef(0);
|
|
25
|
+
|
|
23
26
|
// When <DynamicWidgets> is mounted, a second provider is used above the user-land
|
|
24
27
|
// <InstantSearchSSRProvider> in `getServerState()`.
|
|
25
28
|
// To avoid the user's provider overriding the context value with an empty object,
|
|
@@ -29,7 +32,8 @@ export function InstantSearchSSRProvider(_ref) {
|
|
|
29
32
|
}
|
|
30
33
|
return /*#__PURE__*/React.createElement(InstantSearchSSRContext.Provider, {
|
|
31
34
|
value: _objectSpread(_objectSpread({}, props), {}, {
|
|
32
|
-
ssrSearchRef: ssrSearchRef
|
|
35
|
+
ssrSearchRef: ssrSearchRef,
|
|
36
|
+
recommendIdx: recommendIdx
|
|
33
37
|
})
|
|
34
38
|
}, children);
|
|
35
39
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { AdditionalWidgetProperties } from '../hooks/useConnector';
|
|
2
|
-
import type {
|
|
2
|
+
import type { GeoHit } from 'instantsearch.js';
|
|
3
3
|
import type { GeoSearchConnectorParams } from 'instantsearch.js/es/connectors/geo-search/connectGeoSearch';
|
|
4
|
-
export type
|
|
5
|
-
export
|
|
6
|
-
export declare function useGeoSearch<THit extends BaseHit>(props?: UseGeoSearchProps<THit>, additionalWidgetProperties?: AdditionalWidgetProperties): import("instantsearch.js/es/connectors/geo-search/connectGeoSearch").GeoSearchRenderState<THit>;
|
|
4
|
+
export type UseGeoSearchProps<THit extends GeoHit = GeoHit> = GeoSearchConnectorParams<THit>;
|
|
5
|
+
export declare function useGeoSearch<THit extends GeoHit>(props?: UseGeoSearchProps<THit>, additionalWidgetProperties?: AdditionalWidgetProperties): import("instantsearch.js/es/connectors/geo-search/connectGeoSearch").GeoSearchRenderState<THit>;
|
|
@@ -20,12 +20,14 @@ import { getIndexSearchResults } from "../lib/getIndexSearchResults.js";
|
|
|
20
20
|
import { useIndexContext } from "../lib/useIndexContext.js";
|
|
21
21
|
import { useInstantSearchContext } from "../lib/useInstantSearchContext.js";
|
|
22
22
|
import { useInstantSearchServerContext } from "../lib/useInstantSearchServerContext.js";
|
|
23
|
+
import { useInstantSearchSSRContext } from "../lib/useInstantSearchSSRContext.js";
|
|
23
24
|
import { useStableValue } from "../lib/useStableValue.js";
|
|
24
25
|
import { useWidget } from "../lib/useWidget.js";
|
|
25
26
|
export function useConnector(connector) {
|
|
26
27
|
var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
27
28
|
var additionalWidgetProperties = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
28
29
|
var serverContext = useInstantSearchServerContext();
|
|
30
|
+
var ssrContext = useInstantSearchSSRContext();
|
|
29
31
|
var search = useInstantSearchContext();
|
|
30
32
|
var parentIndex = useIndexContext();
|
|
31
33
|
var stableProps = useStableValue(props);
|
|
@@ -90,7 +92,8 @@ export function useConnector(connector) {
|
|
|
90
92
|
})) || helper.state;
|
|
91
93
|
var _getIndexSearchResult = getIndexSearchResults(parentIndex),
|
|
92
94
|
results = _getIndexSearchResult.results,
|
|
93
|
-
scopedResults = _getIndexSearchResult.scopedResults
|
|
95
|
+
scopedResults = _getIndexSearchResult.scopedResults,
|
|
96
|
+
recommendResults = _getIndexSearchResult.recommendResults;
|
|
94
97
|
|
|
95
98
|
// We get the widget render state by providing the same parameters as
|
|
96
99
|
// InstantSearch provides to the widget's `render` method.
|
|
@@ -99,10 +102,7 @@ export function useConnector(connector) {
|
|
|
99
102
|
helper: helper,
|
|
100
103
|
parent: parentIndex,
|
|
101
104
|
instantSearchInstance: search,
|
|
102
|
-
results: widget.dependsOn === 'recommend' ?
|
|
103
|
-
// @TODO: this is to avoid using wrong hits in SSR,
|
|
104
|
-
// will be replace with SSR support for recommend
|
|
105
|
-
null : results,
|
|
105
|
+
results: widget.dependsOn === 'recommend' && recommendResults && ssrContext ? recommendResults[ssrContext.recommendIdx.current++] : results,
|
|
106
106
|
scopedResults: scopedResults,
|
|
107
107
|
state: helper.state,
|
|
108
108
|
renderState: search.renderState,
|
|
@@ -4,5 +4,6 @@ import type { UiState } from 'instantsearch.js';
|
|
|
4
4
|
import type { MutableRefObject } from 'react';
|
|
5
5
|
export type InstantSearchSSRContextApi<TUiState extends UiState, TRouteState = TUiState> = InstantSearchServerState & {
|
|
6
6
|
ssrSearchRef: MutableRefObject<InternalInstantSearch<TUiState, TRouteState> | null>;
|
|
7
|
+
recommendIdx: MutableRefObject<number>;
|
|
7
8
|
};
|
|
8
9
|
export declare const InstantSearchSSRContext: import("react").Context<Partial<InstantSearchSSRContextApi<UiState, UiState>> | null>;
|
|
@@ -13,7 +13,12 @@ export function useSearchResults() {
|
|
|
13
13
|
var search = useInstantSearchContext();
|
|
14
14
|
var searchIndex = useIndexContext();
|
|
15
15
|
var _useState = useState(function () {
|
|
16
|
-
|
|
16
|
+
var indexSearchResults = getIndexSearchResults(searchIndex);
|
|
17
|
+
// We do this not to leak `recommendResults` in the API.
|
|
18
|
+
return {
|
|
19
|
+
results: indexSearchResults.results,
|
|
20
|
+
scopedResults: indexSearchResults.scopedResults
|
|
21
|
+
};
|
|
17
22
|
}),
|
|
18
23
|
_useState2 = _slicedToArray(_useState, 2),
|
|
19
24
|
searchResults = _useState2[0],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getInitialResults, waitForResults } from "instantsearch.js/es/lib/server.js";
|
|
2
|
-
import { walkIndex } from "instantsearch.js/es/lib/utils/index.js";
|
|
2
|
+
import { walkIndex, resetWidgetId } from "instantsearch.js/es/lib/utils/index.js";
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { InstantSearchServerContext, InstantSearchSSRProvider } from "../index.js";
|
|
5
5
|
/**
|
|
@@ -10,6 +10,7 @@ export function getServerState(children, _ref) {
|
|
|
10
10
|
var searchRef = {
|
|
11
11
|
current: undefined
|
|
12
12
|
};
|
|
13
|
+
resetWidgetId();
|
|
13
14
|
var createNotifyServer = function createNotifyServer() {
|
|
14
15
|
var hasBeenNotified = false;
|
|
15
16
|
var notifyServer = function notifyServer(_ref2) {
|
|
@@ -38,11 +39,13 @@ export function getServerState(children, _ref) {
|
|
|
38
39
|
});
|
|
39
40
|
});
|
|
40
41
|
if (shouldRefetch) {
|
|
42
|
+
resetWidgetId();
|
|
41
43
|
return execute({
|
|
42
44
|
children: /*#__PURE__*/React.createElement(InstantSearchSSRProvider, serverState, children),
|
|
43
45
|
renderToString: renderToString,
|
|
44
46
|
searchRef: searchRef,
|
|
45
|
-
notifyServer: createNotifyServer()
|
|
47
|
+
notifyServer: createNotifyServer(),
|
|
48
|
+
skipRecommend: true
|
|
46
49
|
});
|
|
47
50
|
}
|
|
48
51
|
return serverState;
|
|
@@ -52,7 +55,8 @@ function execute(_ref3) {
|
|
|
52
55
|
var children = _ref3.children,
|
|
53
56
|
renderToString = _ref3.renderToString,
|
|
54
57
|
notifyServer = _ref3.notifyServer,
|
|
55
|
-
searchRef = _ref3.searchRef
|
|
58
|
+
searchRef = _ref3.searchRef,
|
|
59
|
+
skipRecommend = _ref3.skipRecommend;
|
|
56
60
|
return Promise.resolve().then(function () {
|
|
57
61
|
renderToString( /*#__PURE__*/React.createElement(InstantSearchServerContext.Provider, {
|
|
58
62
|
value: {
|
|
@@ -77,7 +81,7 @@ function execute(_ref3) {
|
|
|
77
81
|
if (!searchRef.current) {
|
|
78
82
|
throw new Error("Unable to retrieve InstantSearch's server state in `getServerState()`. Did you mount the <InstantSearch> component?");
|
|
79
83
|
}
|
|
80
|
-
return waitForResults(searchRef.current);
|
|
84
|
+
return waitForResults(searchRef.current, skipRecommend);
|
|
81
85
|
}).then(function (requestParamsList) {
|
|
82
86
|
return {
|
|
83
87
|
initialResults: getInitialResults(searchRef.current.mainIndex, requestParamsList)
|
package/dist/es/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
declare const _default: "7.
|
|
1
|
+
declare const _default: "7.11.0";
|
|
2
2
|
export default _default;
|
package/dist/es/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default '7.
|
|
1
|
+
export default '7.11.0';
|