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.
- package/README.md +70 -2
- package/dist/cjs/components/Configure.js +13 -0
- package/dist/cjs/components/DynamicWidgets.js +63 -0
- package/dist/cjs/components/Index.js +24 -0
- package/dist/cjs/components/InstantSearch.js +27 -0
- package/dist/cjs/{connectors/connectConfigure.js → components/InstantSearchSSRProvider.js} +27 -63
- package/dist/cjs/components/InstantSearchServerContext.js +12 -0
- package/dist/cjs/connectors/useBreadcrumb.js +12 -0
- package/dist/cjs/connectors/useClearRefinements.js +12 -0
- package/dist/cjs/connectors/useConfigure.js +14 -0
- package/dist/cjs/connectors/useCurrentRefinements.js +12 -0
- package/dist/cjs/connectors/useDynamicWidgets.js +22 -0
- package/dist/cjs/connectors/useGeoSearch.js +12 -0
- package/dist/cjs/connectors/useHierarchicalMenu.js +12 -0
- package/dist/cjs/connectors/useHits.js +12 -0
- package/dist/cjs/connectors/useHitsPerPage.js +12 -0
- package/dist/cjs/connectors/useInfiniteHits.js +12 -0
- package/dist/cjs/connectors/useMenu.js +12 -0
- package/dist/cjs/connectors/useNumericMenu.js +12 -0
- package/dist/cjs/connectors/usePagination.js +12 -0
- package/dist/cjs/connectors/usePoweredBy.js +21 -0
- package/dist/cjs/connectors/useQueryRules.js +12 -0
- package/dist/cjs/connectors/useRange.js +12 -0
- package/dist/cjs/connectors/useRefinementList.js +12 -0
- package/dist/cjs/connectors/useSearchBox.js +12 -0
- package/dist/cjs/connectors/useSortBy.js +12 -0
- package/dist/cjs/connectors/useStats.js +12 -0
- package/dist/cjs/connectors/useToggleRefinement.js +12 -0
- package/dist/cjs/hooks/useConnector.js +136 -0
- package/dist/cjs/hooks/useInstantSearch.js +58 -0
- package/dist/cjs/index.js +328 -320
- package/dist/cjs/lib/IndexContext.js +12 -0
- package/dist/cjs/lib/InstantSearchContext.js +12 -0
- package/dist/cjs/lib/InstantSearchSSRContext.js +12 -0
- package/dist/cjs/lib/createSearchResults.js +27 -0
- package/dist/cjs/lib/dequal.js +53 -0
- package/dist/cjs/lib/getIndexSearchResults.js +32 -0
- package/dist/cjs/lib/invariant.js +25 -0
- package/dist/cjs/lib/noop.js +8 -0
- package/dist/cjs/lib/useForceUpdate.js +25 -0
- package/dist/cjs/lib/useIndex.js +38 -0
- package/dist/cjs/lib/useIndexContext.js +14 -0
- package/dist/cjs/lib/useInstantSearchApi.js +191 -0
- package/dist/cjs/lib/useInstantSearchContext.js +14 -0
- package/dist/cjs/lib/useInstantSearchSSRContext.js +11 -0
- package/dist/cjs/lib/useInstantSearchServerContext.js +11 -0
- package/dist/cjs/lib/useIsomorphicLayoutEffect.js +14 -0
- package/dist/cjs/lib/useSearchResults.js +46 -0
- package/dist/cjs/lib/useSearchState.js +48 -0
- package/dist/cjs/lib/useStableValue.js +26 -0
- package/dist/cjs/lib/useWidget.js +78 -0
- package/dist/cjs/lib/warn.js +41 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/server/getServerState.js +93 -0
- package/dist/cjs/{types → server}/index.js +4 -4
- package/dist/cjs/{core/version.js → version.js} +1 -1
- package/dist/es/components/Configure.d.ts +3 -0
- package/dist/es/components/Configure.js +7 -0
- package/dist/es/components/DynamicWidgets.d.ts +13 -0
- package/dist/es/components/DynamicWidgets.js +55 -0
- package/dist/es/components/Index.d.ts +6 -0
- package/dist/es/components/Index.js +17 -0
- package/dist/es/components/InstantSearch.d.ts +7 -0
- package/dist/es/components/InstantSearch.js +20 -0
- package/dist/es/components/InstantSearchSSRProvider.d.ts +13 -0
- package/dist/es/{connectors/connectConfigure.js → components/InstantSearchSSRProvider.js} +26 -61
- package/dist/es/components/InstantSearchServerContext.d.ts +12 -0
- package/dist/es/components/InstantSearchServerContext.js +5 -0
- package/dist/es/connectors/useBreadcrumb.d.ts +4 -0
- package/dist/es/connectors/useBreadcrumb.js +5 -0
- package/dist/es/connectors/useClearRefinements.d.ts +4 -0
- package/dist/es/connectors/useClearRefinements.js +5 -0
- package/dist/es/connectors/useConfigure.d.ts +4 -0
- package/dist/es/connectors/useConfigure.js +7 -0
- package/dist/es/connectors/useCurrentRefinements.d.ts +4 -0
- package/dist/es/connectors/useCurrentRefinements.js +5 -0
- package/dist/es/connectors/useDynamicWidgets.d.ts +4 -0
- package/dist/es/connectors/useDynamicWidgets.js +15 -0
- package/dist/es/connectors/useGeoSearch.d.ts +6 -0
- package/dist/es/connectors/useGeoSearch.js +5 -0
- package/dist/es/connectors/useHierarchicalMenu.d.ts +4 -0
- package/dist/es/connectors/useHierarchicalMenu.js +5 -0
- package/dist/es/connectors/useHits.d.ts +5 -0
- package/dist/es/connectors/useHits.js +5 -0
- package/dist/es/connectors/useHitsPerPage.d.ts +4 -0
- package/dist/es/connectors/useHitsPerPage.js +5 -0
- package/dist/es/connectors/useInfiniteHits.d.ts +5 -0
- package/dist/es/connectors/useInfiniteHits.js +5 -0
- package/dist/es/connectors/useMenu.d.ts +4 -0
- package/dist/es/connectors/useMenu.js +5 -0
- package/dist/es/connectors/useNumericMenu.d.ts +4 -0
- package/dist/es/connectors/useNumericMenu.js +5 -0
- package/dist/es/connectors/usePagination.d.ts +4 -0
- package/dist/es/connectors/usePagination.js +5 -0
- package/dist/es/connectors/usePoweredBy.d.ts +2 -0
- package/dist/es/connectors/usePoweredBy.js +15 -0
- package/dist/es/connectors/useQueryRules.d.ts +4 -0
- package/dist/es/connectors/useQueryRules.js +5 -0
- package/dist/es/connectors/useRange.d.ts +4 -0
- package/dist/es/connectors/useRange.js +5 -0
- package/dist/es/connectors/useRefinementList.d.ts +4 -0
- package/dist/es/connectors/useRefinementList.js +5 -0
- package/dist/es/connectors/useSearchBox.d.ts +4 -0
- package/dist/es/connectors/useSearchBox.js +5 -0
- package/dist/es/connectors/useSortBy.d.ts +4 -0
- package/dist/es/connectors/useSortBy.js +5 -0
- package/dist/es/connectors/useStats.d.ts +4 -0
- package/dist/es/connectors/useStats.js +5 -0
- package/dist/es/connectors/useToggleRefinement.d.ts +4 -0
- package/dist/es/connectors/useToggleRefinement.js +5 -0
- package/dist/es/hooks/useConnector.d.ts +3 -0
- package/dist/es/hooks/useConnector.js +130 -0
- package/dist/es/hooks/useInstantSearch.d.ts +32 -0
- package/dist/es/hooks/useInstantSearch.js +52 -0
- package/dist/es/index.d.ts +31 -0
- package/dist/es/index.js +31 -86
- package/dist/es/lib/IndexContext.d.ts +3 -0
- package/dist/es/lib/IndexContext.js +5 -0
- package/dist/es/lib/InstantSearchContext.d.ts +3 -0
- package/dist/es/lib/InstantSearchContext.js +5 -0
- package/dist/es/lib/InstantSearchSSRContext.d.ts +8 -0
- package/dist/es/lib/InstantSearchSSRContext.js +5 -0
- package/dist/es/lib/createSearchResults.d.ts +3 -0
- package/dist/es/lib/createSearchResults.js +20 -0
- package/dist/es/lib/dequal.d.ts +1 -0
- package/dist/es/lib/dequal.js +47 -0
- package/dist/es/lib/getIndexSearchResults.d.ts +9 -0
- package/dist/es/lib/getIndexSearchResults.js +26 -0
- package/dist/es/lib/invariant.d.ts +9 -0
- package/dist/es/lib/invariant.js +19 -0
- package/dist/es/lib/noop.d.ts +1 -0
- package/dist/es/lib/noop.js +1 -0
- package/dist/es/lib/useForceUpdate.d.ts +6 -0
- package/dist/es/lib/useForceUpdate.js +20 -0
- package/dist/es/lib/useIndex.d.ts +3 -0
- package/dist/es/lib/useIndex.js +31 -0
- package/dist/es/lib/useIndexContext.d.ts +2 -0
- package/dist/es/lib/useIndexContext.js +8 -0
- package/dist/es/lib/useInstantSearchApi.d.ts +21 -0
- package/dist/es/lib/useInstantSearchApi.js +184 -0
- package/dist/es/lib/useInstantSearchContext.d.ts +3 -0
- package/dist/es/lib/useInstantSearchContext.js +8 -0
- package/dist/es/lib/useInstantSearchSSRContext.d.ts +3 -0
- package/dist/es/lib/useInstantSearchSSRContext.js +5 -0
- package/dist/es/lib/useInstantSearchServerContext.d.ts +3 -0
- package/dist/es/lib/useInstantSearchServerContext.js +5 -0
- package/dist/es/lib/useIsomorphicLayoutEffect.d.ts +7 -0
- package/dist/es/lib/useIsomorphicLayoutEffect.js +8 -0
- package/dist/es/lib/useSearchResults.d.ts +7 -0
- package/dist/es/lib/useSearchResults.js +40 -0
- package/dist/es/lib/useSearchState.d.ts +8 -0
- package/dist/es/lib/useSearchState.js +42 -0
- package/dist/es/lib/useStableValue.d.ts +1 -0
- package/dist/es/lib/useStableValue.js +20 -0
- package/dist/es/lib/useWidget.d.ts +8 -0
- package/dist/es/lib/useWidget.js +72 -0
- package/dist/es/lib/warn.d.ts +10 -0
- package/dist/es/lib/warn.js +33 -0
- package/dist/es/server/getServerState.d.ts +10 -0
- package/dist/es/server/getServerState.js +86 -0
- package/dist/es/server/index.d.ts +1 -0
- package/dist/es/server/index.js +1 -0
- package/dist/es/version.d.ts +2 -0
- package/dist/es/version.js +1 -0
- package/dist/umd/ReactInstantSearchCore.js +16316 -10183
- 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 +24 -9
- package/dist/cjs/connectors/connectAutoComplete.js +0 -104
- package/dist/cjs/connectors/connectBreadcrumb.js +0 -123
- package/dist/cjs/connectors/connectConfigureRelatedItems.js +0 -127
- package/dist/cjs/connectors/connectCurrentRefinements.js +0 -69
- package/dist/cjs/connectors/connectDynamicWidgets.js +0 -65
- package/dist/cjs/connectors/connectGeoSearch.js +0 -189
- package/dist/cjs/connectors/connectHierarchicalMenu.js +0 -273
- package/dist/cjs/connectors/connectHighlight.js +0 -87
- package/dist/cjs/connectors/connectHitInsights.js +0 -76
- package/dist/cjs/connectors/connectHits.js +0 -88
- package/dist/cjs/connectors/connectHitsPerPage.js +0 -97
- package/dist/cjs/connectors/connectInfiniteHits.js +0 -154
- package/dist/cjs/connectors/connectMenu.js +0 -221
- package/dist/cjs/connectors/connectNumericMenu.js +0 -215
- package/dist/cjs/connectors/connectPagination.js +0 -94
- package/dist/cjs/connectors/connectPoweredBy.js +0 -27
- package/dist/cjs/connectors/connectQueryRules.js +0 -129
- package/dist/cjs/connectors/connectRange.js +0 -287
- package/dist/cjs/connectors/connectRefinementList.js +0 -243
- package/dist/cjs/connectors/connectRelevantSort.js +0 -56
- package/dist/cjs/connectors/connectScrollTo.js +0 -70
- package/dist/cjs/connectors/connectSearchBox.js +0 -104
- package/dist/cjs/connectors/connectSortBy.js +0 -100
- package/dist/cjs/connectors/connectStateResults.js +0 -79
- package/dist/cjs/connectors/connectStats.js +0 -39
- package/dist/cjs/connectors/connectToggleRefinement.js +0 -163
- package/dist/cjs/connectors/connectVoiceSearch.js +0 -124
- package/dist/cjs/core/context.js +0 -37
- package/dist/cjs/core/createConnector.js +0 -268
- package/dist/cjs/core/createInstantSearchManager.d.js +0 -1
- package/dist/cjs/core/createInstantSearchManager.js +0 -541
- package/dist/cjs/core/createStore.js +0 -27
- package/dist/cjs/core/createWidgetsManager.js +0 -39
- package/dist/cjs/core/highlight.js +0 -102
- package/dist/cjs/core/indexUtils.js +0 -214
- package/dist/cjs/core/metadata.js +0 -46
- package/dist/cjs/core/translatable.js +0 -82
- package/dist/cjs/core/utils.js +0 -161
- package/dist/cjs/types/algoliasearch.js +0 -1
- package/dist/cjs/types/translatable.js +0 -1
- package/dist/cjs/widgets/Configure.js +0 -48
- package/dist/cjs/widgets/ConfigureRelatedItems.js +0 -21
- package/dist/cjs/widgets/DynamicWidgets.js +0 -61
- package/dist/cjs/widgets/Index.js +0 -149
- package/dist/cjs/widgets/InstantSearch.js +0 -251
- package/dist/cjs/widgets/QueryRuleContext.js +0 -14
- package/dist/es/connectors/connectAutoComplete.js +0 -96
- package/dist/es/connectors/connectBreadcrumb.js +0 -115
- package/dist/es/connectors/connectConfigureRelatedItems.js +0 -121
- package/dist/es/connectors/connectCurrentRefinements.js +0 -62
- package/dist/es/connectors/connectDynamicWidgets.js +0 -56
- package/dist/es/connectors/connectGeoSearch.js +0 -182
- package/dist/es/connectors/connectHierarchicalMenu.js +0 -264
- package/dist/es/connectors/connectHighlight.js +0 -79
- package/dist/es/connectors/connectHitInsights.js +0 -69
- package/dist/es/connectors/connectHits.js +0 -81
- package/dist/es/connectors/connectHitsPerPage.js +0 -89
- package/dist/es/connectors/connectInfiniteHits.js +0 -146
- package/dist/es/connectors/connectMenu.js +0 -213
- package/dist/es/connectors/connectNumericMenu.js +0 -207
- package/dist/es/connectors/connectPagination.js +0 -86
- package/dist/es/connectors/connectPoweredBy.js +0 -20
- package/dist/es/connectors/connectQueryRules.js +0 -122
- package/dist/es/connectors/connectRange.js +0 -280
- package/dist/es/connectors/connectRefinementList.js +0 -235
- package/dist/es/connectors/connectRelevantSort.js +0 -50
- package/dist/es/connectors/connectScrollTo.js +0 -63
- package/dist/es/connectors/connectSearchBox.js +0 -96
- package/dist/es/connectors/connectSortBy.js +0 -92
- package/dist/es/connectors/connectStateResults.js +0 -72
- package/dist/es/connectors/connectStats.js +0 -32
- package/dist/es/connectors/connectToggleRefinement.js +0 -155
- package/dist/es/connectors/connectVoiceSearch.js +0 -116
- package/dist/es/core/context.js +0 -28
- package/dist/es/core/createConnector.js +0 -257
- package/dist/es/core/createInstantSearchManager.d.js +0 -0
- package/dist/es/core/createInstantSearchManager.js +0 -534
- package/dist/es/core/createStore.js +0 -21
- package/dist/es/core/createWidgetsManager.js +0 -33
- package/dist/es/core/highlight.js +0 -94
- package/dist/es/core/indexUtils.js +0 -203
- package/dist/es/core/metadata.js +0 -38
- package/dist/es/core/translatable.js +0 -74
- package/dist/es/core/utils.js +0 -139
- package/dist/es/core/version.js +0 -1
- package/dist/es/types/algoliasearch.js +0 -1
- package/dist/es/types/index.js +0 -1
- package/dist/es/types/translatable.js +0 -1
- package/dist/es/widgets/Configure.js +0 -42
- package/dist/es/widgets/ConfigureRelatedItems.js +0 -13
- package/dist/es/widgets/DynamicWidgets.js +0 -51
- package/dist/es/widgets/Index.js +0 -138
- package/dist/es/widgets/InstantSearch.js +0 -241
- 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,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
|
+
}
|