@usereactify/search 4.4.1 → 5.0.0-beta.10
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/CHANGELOG.md +93 -0
- package/dist/package.json +11 -8
- package/dist/src/components/Example/ExampleFilterList.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterList.js +21 -0
- package/dist/src/components/Example/ExampleFilterList.js.map +1 -0
- package/dist/src/components/Example/ExampleFilterRange.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterRange.js +22 -0
- package/dist/src/components/Example/ExampleFilterRange.js.map +1 -0
- package/dist/src/components/Example/ExampleFilterSlider.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterSlider.js +21 -0
- package/dist/src/components/Example/ExampleFilterSlider.js.map +1 -0
- package/dist/src/components/Example/ExampleFilterStack.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterStack.js +13 -0
- package/dist/src/components/Example/ExampleFilterStack.js.map +1 -0
- package/dist/src/components/Example/ExampleResultCardCallout.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultCardCallout.js +22 -0
- package/dist/src/components/Example/ExampleResultCardCallout.js.map +1 -0
- package/dist/src/components/Example/ExampleResultCardProduct.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultCardProduct.js +19 -0
- package/dist/src/components/Example/ExampleResultCardProduct.js.map +1 -0
- package/dist/src/components/Example/ExampleResultPaginationLoadMore.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultPaginationLoadMore.js +12 -0
- package/dist/src/components/Example/ExampleResultPaginationLoadMore.js.map +1 -0
- package/dist/src/components/Example/ExampleResultPaginationNextPrev.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultPaginationNextPrev.js +14 -0
- package/dist/src/components/Example/ExampleResultPaginationNextPrev.js.map +1 -0
- package/dist/src/components/Example/ExampleResultPaginationNumbered.d.ts +4 -0
- package/dist/src/components/Example/ExampleResultPaginationNumbered.js +27 -0
- package/dist/src/components/Example/ExampleResultPaginationNumbered.js.map +1 -0
- package/dist/src/components/Example/ExampleSortby.d.ts +4 -0
- package/dist/src/components/Example/ExampleSortby.js +13 -0
- package/dist/src/components/Example/ExampleSortby.js.map +1 -0
- package/dist/src/components/Example/index.d.ts +10 -0
- package/dist/src/components/Example/index.js +23 -0
- package/dist/src/components/Example/index.js.map +1 -0
- package/dist/src/components/Filter/Filter.d.ts +20 -0
- package/dist/src/components/Filter/Filter.js +90 -0
- package/dist/src/components/Filter/Filter.js.map +1 -0
- package/dist/src/components/Filter/FilterStack.d.ts +7 -0
- package/dist/src/components/Filter/FilterStack.js +17 -0
- package/dist/src/components/Filter/FilterStack.js.map +1 -0
- package/dist/src/{filter → components/Filter}/index.d.ts +0 -1
- package/dist/src/{filter → components/Filter}/index.js +1 -1
- package/dist/src/components/Filter/index.js.map +1 -0
- package/dist/src/components/ReactifySearchBase/ReactifySearchBase.d.ts +42 -0
- package/dist/src/components/ReactifySearchBase/ReactifySearchBase.js +128 -0
- package/dist/src/components/ReactifySearchBase/ReactifySearchBase.js.map +1 -0
- package/dist/src/components/ReactifySearchBase/index.d.ts +1 -0
- package/dist/src/components/ReactifySearchBase/index.js +14 -0
- package/dist/src/components/ReactifySearchBase/index.js.map +1 -0
- package/dist/src/components/Result/ResultCardCallout.d.ts +12 -0
- package/dist/src/{result → components/Result}/ResultCardCallout.js +14 -22
- package/dist/src/components/Result/ResultCardCallout.js.map +1 -0
- package/dist/src/components/Result/ResultCardProduct.d.ts +13 -0
- package/dist/src/components/Result/ResultCardProduct.js +50 -0
- package/dist/src/components/Result/ResultCardProduct.js.map +1 -0
- package/dist/src/components/Result/ResultPaginationLoadMore.d.ts +7 -0
- package/dist/src/components/Result/ResultPaginationLoadMore.js +17 -0
- package/dist/src/components/Result/ResultPaginationLoadMore.js.map +1 -0
- package/dist/src/components/Result/ResultPaginationNextPrev.d.ts +7 -0
- package/dist/src/components/Result/ResultPaginationNextPrev.js +17 -0
- package/dist/src/components/Result/ResultPaginationNextPrev.js.map +1 -0
- package/dist/src/components/Result/ResultPaginationNumbered.d.ts +7 -0
- package/dist/src/components/Result/ResultPaginationNumbered.js +20 -0
- package/dist/src/components/Result/ResultPaginationNumbered.js.map +1 -0
- package/dist/src/components/Result/ResultStack.d.ts +40 -0
- package/dist/src/components/Result/ResultStack.js +108 -0
- package/dist/src/components/Result/ResultStack.js.map +1 -0
- package/dist/src/components/Result/ResultStateProvider.d.ts +6 -0
- package/dist/src/{result → components/Result}/ResultStateProvider.js +5 -1
- package/dist/src/components/Result/ResultStateProvider.js.map +1 -0
- package/dist/src/components/Result/index.d.ts +7 -0
- package/dist/src/{result → components/Result}/index.js +6 -4
- package/dist/src/components/Result/index.js.map +1 -0
- package/dist/src/components/Search/SearchInput.d.ts +8 -0
- package/dist/src/{search → components/Search}/SearchInput.js +3 -2
- package/dist/src/components/Search/SearchInput.js.map +1 -0
- package/dist/src/{search → components/Search}/index.d.ts +0 -0
- package/dist/src/{search → components/Search}/index.js +1 -0
- package/dist/src/components/Search/index.js.map +1 -0
- package/dist/src/{sensor → components/Sensor}/SensorCollection.d.ts +0 -0
- package/dist/src/{sensor → components/Sensor}/SensorCollection.js +9 -5
- package/dist/src/components/Sensor/SensorCollection.js.map +1 -0
- package/dist/src/{sensor → components/Sensor}/SensorInventoryAvailable.d.ts +0 -0
- package/dist/src/{sensor → components/Sensor}/SensorInventoryAvailable.js +3 -2
- package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -0
- package/dist/src/{sensor → components/Sensor}/SensorPublished.d.ts +0 -0
- package/dist/src/{sensor → components/Sensor}/SensorPublished.js +1 -0
- package/dist/src/components/Sensor/SensorPublished.js.map +1 -0
- package/dist/src/{sensor → components/Sensor}/SensorSearch.d.ts +0 -0
- package/dist/src/{sensor → components/Sensor}/SensorSearch.js +4 -3
- package/dist/src/components/Sensor/SensorSearch.js.map +1 -0
- package/dist/src/{sensor → components/Sensor}/SensorSort.d.ts +0 -0
- package/dist/src/{sensor → components/Sensor}/SensorSort.js +6 -24
- package/dist/src/components/Sensor/SensorSort.js.map +1 -0
- package/dist/src/{sensor → components/Sensor}/SensorSortScore.d.ts +0 -0
- package/dist/src/{sensor → components/Sensor}/SensorSortScore.js +1 -0
- package/dist/src/components/Sensor/SensorSortScore.js.map +1 -0
- package/dist/src/components/Sensor/SensorStack.d.ts +3 -0
- package/dist/src/{sensor → components/Sensor}/SensorStack.js +4 -3
- package/dist/src/components/Sensor/SensorStack.js.map +1 -0
- package/dist/src/{sensor → components/Sensor}/index.d.ts +0 -0
- package/dist/src/{sensor → components/Sensor}/index.js +1 -0
- package/dist/src/components/Sensor/index.js.map +1 -0
- package/dist/src/components/Sortby/Sortby.d.ts +7 -0
- package/dist/src/components/Sortby/Sortby.js +17 -0
- package/dist/src/components/Sortby/Sortby.js.map +1 -0
- package/dist/src/components/Sortby/index.d.ts +1 -0
- package/dist/src/components/Sortby/index.js +14 -0
- package/dist/src/components/Sortby/index.js.map +1 -0
- package/dist/src/{utility → components/Utility}/UtilityAuthenticatedReactiveBase.d.ts +0 -0
- package/dist/src/{utility → components/Utility}/UtilityAuthenticatedReactiveBase.js +5 -4
- package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js.map +1 -0
- package/dist/src/components/Utility/index.d.ts +1 -0
- package/dist/src/components/Utility/index.js +14 -0
- package/dist/src/components/Utility/index.js.map +1 -0
- package/dist/src/components/index.d.ts +8 -0
- package/dist/src/components/index.js +21 -0
- package/dist/src/components/index.js.map +1 -0
- package/dist/src/hooks/index.d.ts +6 -5
- package/dist/src/hooks/index.js +7 -5
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/reactivesearch/index.d.ts +4 -1
- package/dist/src/hooks/reactivesearch/index.js +5 -1
- package/dist/src/hooks/reactivesearch/index.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +1 -1
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +8 -7
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.d.ts +6 -8
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js +30 -31
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.d.ts +9 -4
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js +10 -94
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.d.ts +70 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js +22 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.d.ts +67 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js +106 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.d.ts +68 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js +22 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js +9 -8
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js.map +1 -0
- package/dist/src/hooks/reactivesearch/{useReactiveResultListProps.d.ts → useReactiveResultStackProps.d.ts} +2 -4
- package/dist/src/hooks/reactivesearch/{useReactiveResultListProps.js → useReactiveResultStackProps.js} +9 -9
- package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.js.map +1 -0
- package/dist/src/hooks/useAnalytics.js +7 -4
- package/dist/src/hooks/useAnalytics.js.map +1 -0
- package/dist/src/hooks/useConfig.d.ts +4 -1
- package/dist/src/hooks/useConfig.js +79 -2
- package/dist/src/hooks/useConfig.js.map +1 -0
- package/dist/src/hooks/useCuration.d.ts +2 -1
- package/dist/src/hooks/useCuration.js +62 -2
- package/dist/src/hooks/useCuration.js.map +1 -0
- package/dist/src/hooks/useDebugger.d.ts +1 -0
- package/dist/src/hooks/useDebugger.js +15 -0
- package/dist/src/hooks/useDebugger.js.map +1 -0
- package/dist/src/hooks/useFilterCollapsedState.js +1 -0
- package/dist/src/hooks/useFilterCollapsedState.js.map +1 -0
- package/dist/src/hooks/useFilterListProps.d.ts +4 -14
- package/dist/src/hooks/useFilterListProps.js +1 -0
- package/dist/src/hooks/useFilterListProps.js.map +1 -0
- package/dist/src/hooks/useFilterStack.d.ts +4 -1
- package/dist/src/hooks/useFilterStack.js +48 -2
- package/dist/src/hooks/useFilterStack.js.map +1 -0
- package/dist/src/hooks/useFilters.d.ts +4 -1
- package/dist/src/hooks/useFilters.js +16 -6
- package/dist/src/hooks/useFilters.js.map +1 -0
- package/dist/src/hooks/usePagination.d.ts +14 -0
- package/dist/src/hooks/{usePages.js → usePagination.js} +41 -29
- package/dist/src/hooks/usePagination.js.map +1 -0
- package/dist/src/hooks/usePaginationLoadMore.d.ts +15 -0
- package/dist/src/hooks/usePaginationLoadMore.js +38 -0
- package/dist/src/hooks/usePaginationLoadMore.js.map +1 -0
- package/dist/src/hooks/useProductPrice.d.ts +3 -5
- package/dist/src/hooks/useProductPrice.js +43 -40
- package/dist/src/hooks/useProductPrice.js.map +1 -0
- package/dist/src/hooks/useReactifySearchContext.d.ts +78 -0
- package/dist/src/hooks/useReactifySearchContext.js +11 -0
- package/dist/src/hooks/useReactifySearchContext.js.map +1 -0
- package/dist/src/hooks/useSearch.d.ts +5 -5
- package/dist/src/hooks/useSearch.js +42 -8
- package/dist/src/hooks/useSearch.js.map +1 -0
- package/dist/src/hooks/useSortby.d.ts +6 -0
- package/dist/src/hooks/useSortby.js +58 -0
- package/dist/src/hooks/useSortby.js.map +1 -0
- package/dist/src/index.d.ts +2 -8
- package/dist/src/index.js +48 -11
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/config.d.ts +1 -0
- package/dist/src/types/config.js +1 -0
- package/dist/src/types/config.js.map +1 -0
- package/dist/src/types/elastic.js +1 -0
- package/dist/src/types/elastic.js.map +1 -0
- package/dist/src/types/firestore.js +1 -0
- package/dist/src/types/firestore.js.map +1 -0
- package/dist/src/types/graphql.js +1 -0
- package/dist/src/types/graphql.js.map +1 -0
- package/dist/src/types/index.d.ts +3 -0
- package/dist/src/types/index.js +16 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/reactivesearch.js +1 -0
- package/dist/src/types/reactivesearch.js.map +1 -0
- package/dist/src/types/shopify.js +1 -0
- package/dist/src/types/shopify.js.map +1 -0
- package/dist/src/utility/debug.d.ts +10 -0
- package/dist/src/utility/debug.js +39 -0
- package/dist/src/utility/debug.js.map +1 -0
- package/dist/src/utility/index.d.ts +1 -0
- package/dist/src/utility/index.js +14 -0
- package/dist/src/utility/index.js.map +1 -0
- package/package.json +11 -8
- package/dist/src/filter/Filter.d.ts +0 -12
- package/dist/src/filter/Filter.js +0 -71
- package/dist/src/filter/FilterList.d.ts +0 -4
- package/dist/src/filter/FilterList.js +0 -15
- package/dist/src/filter/FilterStack.d.ts +0 -11
- package/dist/src/filter/FilterStack.js +0 -25
- package/dist/src/hooks/useCollection.d.ts +0 -1
- package/dist/src/hooks/useCollection.js +0 -6
- package/dist/src/hooks/useLiveConfig.d.ts +0 -4
- package/dist/src/hooks/useLiveConfig.js +0 -74
- package/dist/src/hooks/usePages.d.ts +0 -10
- package/dist/src/hooks/useSort.d.ts +0 -5
- package/dist/src/hooks/useSort.js +0 -24
- package/dist/src/provider.d.ts +0 -78
- package/dist/src/provider.js +0 -287
- package/dist/src/result/ResultCard.d.ts +0 -14
- package/dist/src/result/ResultCard.js +0 -66
- package/dist/src/result/ResultCardCallout.d.ts +0 -13
- package/dist/src/result/ResultList.d.ts +0 -34
- package/dist/src/result/ResultList.js +0 -93
- package/dist/src/result/ResultLoadMoreButton.d.ts +0 -10
- package/dist/src/result/ResultLoadMoreButton.js +0 -61
- package/dist/src/result/ResultPagination.d.ts +0 -10
- package/dist/src/result/ResultPagination.js +0 -60
- package/dist/src/result/ResultPaginationNextPrev.d.ts +0 -8
- package/dist/src/result/ResultPaginationNextPrev.js +0 -30
- package/dist/src/result/ResultStateProvider.d.ts +0 -7
- package/dist/src/result/index.d.ts +0 -6
- package/dist/src/search/SearchInput.d.ts +0 -9
- package/dist/src/sensor/SensorStack.d.ts +0 -2
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useReactiveFilterRangeProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const useReactiveFilterSharedProps_1 = require("./useReactiveFilterSharedProps");
|
|
9
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
10
|
+
/**
|
|
11
|
+
* For use with @appbaseio/reactivesearch SingleRange and MultiRange components
|
|
12
|
+
*/
|
|
13
|
+
const useReactiveFilterRangeProps = (filter) => {
|
|
14
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)(filter.handle);
|
|
15
|
+
const reactiveFilterSharedProps = (0, useReactiveFilterSharedProps_1.useReactiveFilterSharedProps)(filter);
|
|
16
|
+
return react_1.default.useMemo(() => {
|
|
17
|
+
var _a;
|
|
18
|
+
return (Object.assign(Object.assign({}, reactiveFilterSharedProps), { showFilter: (_a = filter.settingsShowFilter) !== null && _a !== void 0 ? _a : true, showRadio: false, showCheckbox: false }));
|
|
19
|
+
}, [filter, reactiveReactProp]);
|
|
20
|
+
};
|
|
21
|
+
exports.useReactiveFilterRangeProps = useReactiveFilterRangeProps;
|
|
22
|
+
//# sourceMappingURL=useReactiveFilterRangeProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveFilterRangeProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveFilterRangeProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,iFAA8E;AAE9E,iEAA8D;AAE9D;;GAEG;AACI,MAAM,2BAA2B,GAAG,CAAC,MAA0B,EAAE,EAAE;IACxE,MAAM,iBAAiB,GAAG,IAAA,2CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,yBAAyB,GAAG,IAAA,2DAA4B,EAAC,MAAM,CAAC,CAAC;IAEvE,OAAO,eAAK,CAAC,OAAO,CAClB,GAAG,EAAE;;QAAC,OAAA,iCACD,yBAAyB,KAC5B,UAAU,EAAE,MAAA,MAAM,CAAC,kBAAkB,mCAAI,IAAI,EAC7C,SAAS,EAAE,KAAK,EAChB,YAAY,EAAE,KAAK,IACnB,CAAA;KAAA,EACF,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC5B,CAAC;AACJ,CAAC,CAAC;AAbW,QAAA,2BAA2B,+BAatC","sourcesContent":["import React from \"react\";\n\nimport type { ConfigFilterOption } from \"../../types/config\";\nimport { useReactiveFilterSharedProps } from \"./useReactiveFilterSharedProps\";\n\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\n/**\n * For use with @appbaseio/reactivesearch SingleRange and MultiRange components\n */\nexport const useReactiveFilterRangeProps = (filter: ConfigFilterOption) => {\n const reactiveReactProp = useReactiveReactProp(filter.handle);\n const reactiveFilterSharedProps = useReactiveFilterSharedProps(filter);\n\n return React.useMemo(\n () => ({\n ...reactiveFilterSharedProps,\n showFilter: filter.settingsShowFilter ?? true,\n showRadio: false,\n showCheckbox: false,\n }),\n [filter, reactiveReactProp]\n );\n};\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { ConfigFilterOption } from "../../types/config";
|
|
2
|
+
/**
|
|
3
|
+
* For use with all @appbaseio/reactivesearch filter components
|
|
4
|
+
*/
|
|
5
|
+
export declare const useReactiveFilterSharedProps: (filter: ConfigFilterOption) => {
|
|
6
|
+
nestedField: string | undefined;
|
|
7
|
+
customQuery: ((value?: string | string[] | undefined) => {
|
|
8
|
+
query?: undefined;
|
|
9
|
+
} | {
|
|
10
|
+
query: {
|
|
11
|
+
nested: {
|
|
12
|
+
path: string;
|
|
13
|
+
query: {
|
|
14
|
+
bool: {
|
|
15
|
+
must: ({
|
|
16
|
+
match: {
|
|
17
|
+
"variants.available": string;
|
|
18
|
+
};
|
|
19
|
+
terms?: undefined;
|
|
20
|
+
} | {
|
|
21
|
+
terms: {
|
|
22
|
+
[x: string]: string[];
|
|
23
|
+
};
|
|
24
|
+
match?: undefined;
|
|
25
|
+
})[];
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
}) | undefined;
|
|
31
|
+
defaultQuery: (() => {
|
|
32
|
+
aggs: {
|
|
33
|
+
reactivesearch_nested: {
|
|
34
|
+
nested: {
|
|
35
|
+
path: string;
|
|
36
|
+
};
|
|
37
|
+
aggs: {
|
|
38
|
+
reactify_nested_outer: {
|
|
39
|
+
filter: {
|
|
40
|
+
match: {
|
|
41
|
+
"variants.available": string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
aggs: {
|
|
45
|
+
[x: string]: {
|
|
46
|
+
terms: {
|
|
47
|
+
field: string;
|
|
48
|
+
size: number;
|
|
49
|
+
order: {
|
|
50
|
+
_count: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}) | undefined;
|
|
60
|
+
URLParams: boolean;
|
|
61
|
+
componentId: string;
|
|
62
|
+
dataField: string;
|
|
63
|
+
filterLabel: string;
|
|
64
|
+
react: {
|
|
65
|
+
and: string[];
|
|
66
|
+
};
|
|
67
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useReactiveFilterSharedProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
9
|
+
/**
|
|
10
|
+
* For use with all @appbaseio/reactivesearch filter components
|
|
11
|
+
*/
|
|
12
|
+
const useReactiveFilterSharedProps = (filter) => {
|
|
13
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)(filter.handle);
|
|
14
|
+
const nestedField = react_1.default.useMemo(() => {
|
|
15
|
+
const nestedFields = ["variants"];
|
|
16
|
+
const topField = filter.field.split(".")[0];
|
|
17
|
+
if (nestedFields.includes(topField))
|
|
18
|
+
return topField;
|
|
19
|
+
return undefined;
|
|
20
|
+
}, [filter]);
|
|
21
|
+
// define a custom query for when settingsHideUnavailable is enabled and the target field is inside variants
|
|
22
|
+
// customQuery defines how this filter affects *other* components like the results component
|
|
23
|
+
const customQuery = react_1.default.useMemo(() => {
|
|
24
|
+
if (!filter.settingsHideUnavailable ||
|
|
25
|
+
!filter.field.startsWith("variants."))
|
|
26
|
+
return undefined;
|
|
27
|
+
return (value) => {
|
|
28
|
+
if (!value)
|
|
29
|
+
return {};
|
|
30
|
+
// reactivesearch sometimes returns string, sometimes string[]
|
|
31
|
+
const valueArray = "string" === typeof value ? [value] : value;
|
|
32
|
+
if (0 === valueArray.length)
|
|
33
|
+
return {};
|
|
34
|
+
return {
|
|
35
|
+
query: {
|
|
36
|
+
nested: {
|
|
37
|
+
path: "variants",
|
|
38
|
+
query: {
|
|
39
|
+
bool: {
|
|
40
|
+
must: [
|
|
41
|
+
{
|
|
42
|
+
match: {
|
|
43
|
+
"variants.available": "true",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
terms: {
|
|
48
|
+
[filter.field]: valueArray,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
}, [filter]);
|
|
59
|
+
// define a default query for when settingsHideUnavailable is enabled and the target field is inside variants
|
|
60
|
+
// defaultQuery defines how this filter affects itself i.e. the options displayed
|
|
61
|
+
const defaultQuery = react_1.default.useMemo(() => {
|
|
62
|
+
if (!filter.settingsHideUnavailable ||
|
|
63
|
+
!filter.field.startsWith("variants."))
|
|
64
|
+
return undefined;
|
|
65
|
+
// override the aggregation query to filter the results by the variants.available attribute
|
|
66
|
+
return () => {
|
|
67
|
+
return {
|
|
68
|
+
aggs: {
|
|
69
|
+
reactivesearch_nested: {
|
|
70
|
+
nested: { path: "variants" },
|
|
71
|
+
aggs: {
|
|
72
|
+
reactify_nested_outer: {
|
|
73
|
+
filter: {
|
|
74
|
+
match: {
|
|
75
|
+
"variants.available": "true",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
aggs: {
|
|
79
|
+
[filter.field]: {
|
|
80
|
+
terms: {
|
|
81
|
+
field: filter.field,
|
|
82
|
+
size: 100,
|
|
83
|
+
order: { _count: "desc" },
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
}, [filter]);
|
|
94
|
+
return react_1.default.useMemo(() => ({
|
|
95
|
+
nestedField,
|
|
96
|
+
customQuery,
|
|
97
|
+
defaultQuery,
|
|
98
|
+
URLParams: true,
|
|
99
|
+
componentId: filter.handle,
|
|
100
|
+
dataField: filter.field,
|
|
101
|
+
filterLabel: filter.name,
|
|
102
|
+
react: reactiveReactProp,
|
|
103
|
+
}), [filter, reactiveReactProp]);
|
|
104
|
+
};
|
|
105
|
+
exports.useReactiveFilterSharedProps = useReactiveFilterSharedProps;
|
|
106
|
+
//# sourceMappingURL=useReactiveFilterSharedProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveFilterSharedProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveFilterSharedProps.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport type { ConfigFilterOption } from \"../../types/config\";\n\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\n/**\n * For use with all @appbaseio/reactivesearch filter components\n */\nexport const useReactiveFilterSharedProps = (filter: ConfigFilterOption) => {\n const reactiveReactProp = useReactiveReactProp(filter.handle);\n\n const nestedField = React.useMemo(() => {\n const nestedFields = [\"variants\"];\n const topField = filter.field.split(\".\")[0];\n if (nestedFields.includes(topField)) return topField;\n return undefined;\n }, [filter]);\n\n // define a custom query for when settingsHideUnavailable is enabled and the target field is inside variants\n // customQuery defines how this filter affects *other* components like the results component\n const customQuery = React.useMemo(() => {\n if (\n !filter.settingsHideUnavailable ||\n !filter.field.startsWith(\"variants.\")\n )\n return undefined;\n\n return (value?: string | string[]) => {\n if (!value) return {};\n\n // reactivesearch sometimes returns string, sometimes string[]\n const valueArray = \"string\" === typeof value ? [value] : value;\n\n if (0 === valueArray.length) return {};\n\n return {\n query: {\n nested: {\n path: \"variants\",\n query: {\n bool: {\n must: [\n {\n match: {\n \"variants.available\": \"true\",\n },\n },\n {\n terms: {\n [filter.field]: valueArray,\n },\n },\n ],\n },\n },\n },\n },\n };\n };\n }, [filter]);\n\n // define a default query for when settingsHideUnavailable is enabled and the target field is inside variants\n // defaultQuery defines how this filter affects itself i.e. the options displayed\n const defaultQuery = React.useMemo(() => {\n if (\n !filter.settingsHideUnavailable ||\n !filter.field.startsWith(\"variants.\")\n )\n return undefined;\n\n // override the aggregation query to filter the results by the variants.available attribute\n return () => {\n return {\n aggs: {\n reactivesearch_nested: {\n nested: { path: \"variants\" },\n aggs: {\n reactify_nested_outer: {\n filter: {\n match: {\n \"variants.available\": \"true\",\n },\n },\n aggs: {\n [filter.field]: {\n terms: {\n field: filter.field,\n size: 100,\n order: { _count: \"desc\" },\n },\n },\n },\n },\n },\n },\n },\n };\n };\n }, [filter]);\n\n return React.useMemo(\n () => ({\n nestedField,\n customQuery,\n defaultQuery,\n URLParams: true,\n componentId: filter.handle,\n dataField: filter.field,\n filterLabel: filter.name,\n react: reactiveReactProp,\n }),\n [filter, reactiveReactProp]\n );\n};\n"]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { ConfigFilterOption } from "../../types/config";
|
|
2
|
+
/**
|
|
3
|
+
* For use with @appbaseio/reactivesearch RangeSlider component
|
|
4
|
+
*/
|
|
5
|
+
export declare const useReactiveFilterSliderProps: (filter: ConfigFilterOption) => {
|
|
6
|
+
showFilter: boolean;
|
|
7
|
+
nestedField: string | undefined;
|
|
8
|
+
customQuery: ((value?: string | string[] | undefined) => {
|
|
9
|
+
query?: undefined;
|
|
10
|
+
} | {
|
|
11
|
+
query: {
|
|
12
|
+
nested: {
|
|
13
|
+
path: string;
|
|
14
|
+
query: {
|
|
15
|
+
bool: {
|
|
16
|
+
must: ({
|
|
17
|
+
match: {
|
|
18
|
+
"variants.available": string;
|
|
19
|
+
};
|
|
20
|
+
terms?: undefined;
|
|
21
|
+
} | {
|
|
22
|
+
terms: {
|
|
23
|
+
[x: string]: string[];
|
|
24
|
+
};
|
|
25
|
+
match?: undefined;
|
|
26
|
+
})[];
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
}) | undefined;
|
|
32
|
+
defaultQuery: (() => {
|
|
33
|
+
aggs: {
|
|
34
|
+
reactivesearch_nested: {
|
|
35
|
+
nested: {
|
|
36
|
+
path: string;
|
|
37
|
+
};
|
|
38
|
+
aggs: {
|
|
39
|
+
reactify_nested_outer: {
|
|
40
|
+
filter: {
|
|
41
|
+
match: {
|
|
42
|
+
"variants.available": string;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
aggs: {
|
|
46
|
+
[x: string]: {
|
|
47
|
+
terms: {
|
|
48
|
+
field: string;
|
|
49
|
+
size: number;
|
|
50
|
+
order: {
|
|
51
|
+
_count: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
}) | undefined;
|
|
61
|
+
URLParams: boolean;
|
|
62
|
+
componentId: string;
|
|
63
|
+
dataField: string;
|
|
64
|
+
filterLabel: string;
|
|
65
|
+
react: {
|
|
66
|
+
and: string[];
|
|
67
|
+
};
|
|
68
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.useReactiveFilterSliderProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const useReactiveFilterSharedProps_1 = require("./useReactiveFilterSharedProps");
|
|
9
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
10
|
+
/**
|
|
11
|
+
* For use with @appbaseio/reactivesearch RangeSlider component
|
|
12
|
+
*/
|
|
13
|
+
const useReactiveFilterSliderProps = (filter) => {
|
|
14
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)(filter.handle);
|
|
15
|
+
const reactiveFilterSharedProps = (0, useReactiveFilterSharedProps_1.useReactiveFilterSharedProps)(filter);
|
|
16
|
+
return react_1.default.useMemo(() => {
|
|
17
|
+
var _a;
|
|
18
|
+
return (Object.assign(Object.assign({}, reactiveFilterSharedProps), { showFilter: (_a = filter.settingsShowFilter) !== null && _a !== void 0 ? _a : true }));
|
|
19
|
+
}, [filter, reactiveReactProp]);
|
|
20
|
+
};
|
|
21
|
+
exports.useReactiveFilterSliderProps = useReactiveFilterSliderProps;
|
|
22
|
+
//# sourceMappingURL=useReactiveFilterSliderProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveFilterSliderProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveFilterSliderProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,iFAA8E;AAE9E,iEAA8D;AAE9D;;GAEG;AACI,MAAM,4BAA4B,GAAG,CAAC,MAA0B,EAAE,EAAE;IACzE,MAAM,iBAAiB,GAAG,IAAA,2CAAoB,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,yBAAyB,GAAG,IAAA,2DAA4B,EAAC,MAAM,CAAC,CAAC;IAEvE,OAAO,eAAK,CAAC,OAAO,CAClB,GAAG,EAAE;;QAAC,OAAA,iCACD,yBAAyB,KAC5B,UAAU,EAAE,MAAA,MAAM,CAAC,kBAAkB,mCAAI,IAAI,IAC7C,CAAA;KAAA,EACF,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAC5B,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,4BAA4B,gCAWvC","sourcesContent":["import React from \"react\";\n\nimport type { ConfigFilterOption } from \"../../types/config\";\nimport { useReactiveFilterSharedProps } from \"./useReactiveFilterSharedProps\";\n\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\n/**\n * For use with @appbaseio/reactivesearch RangeSlider component\n */\nexport const useReactiveFilterSliderProps = (filter: ConfigFilterOption) => {\n const reactiveReactProp = useReactiveReactProp(filter.handle);\n const reactiveFilterSharedProps = useReactiveFilterSharedProps(filter);\n\n return React.useMemo(\n () => ({\n ...reactiveFilterSharedProps,\n showFilter: filter.settingsShowFilter ?? true,\n }),\n [filter, reactiveReactProp]\n );\n};\n"]}
|
|
@@ -5,21 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.useReactiveReactProp = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const provider_1 = require("../../provider");
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
9
|
+
const components_1 = require("../../components");
|
|
11
10
|
const useReactiveReactProp = (currentHandle) => {
|
|
12
|
-
const
|
|
13
|
-
const {
|
|
11
|
+
const { options } = (0, hooks_1.useReactifySearchContext)();
|
|
12
|
+
const { filters } = (0, hooks_1.useFilters)();
|
|
14
13
|
return react_1.default.useMemo(() => {
|
|
14
|
+
var _a;
|
|
15
15
|
return {
|
|
16
16
|
and: [
|
|
17
17
|
"SearchInput",
|
|
18
|
-
...
|
|
19
|
-
...(additionalComponentHandles !== null &&
|
|
18
|
+
...components_1.SENSOR_IDS,
|
|
19
|
+
...((_a = options.additionalComponentHandles) !== null && _a !== void 0 ? _a : []),
|
|
20
20
|
...filters.map((filter) => filter.handle),
|
|
21
21
|
].filter((handle) => handle !== currentHandle),
|
|
22
22
|
};
|
|
23
|
-
}, [filters, currentHandle]);
|
|
23
|
+
}, [filters, currentHandle, options.additionalComponentHandles]);
|
|
24
24
|
};
|
|
25
25
|
exports.useReactiveReactProp = useReactiveReactProp;
|
|
26
|
+
//# sourceMappingURL=useReactiveReactProp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveReactProp.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveReactProp.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAAmE;AACnE,iDAA8C;AAEvC,MAAM,oBAAoB,GAAG,CAAC,aAAsB,EAAE,EAAE;IAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAC;IAEjC,OAAO,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QACxB,OAAO;YACL,GAAG,EAAE;gBACH,aAAa;gBACb,GAAG,uBAAU;gBACb,GAAG,CAAC,MAAA,OAAO,CAAC,0BAA0B,mCAAI,EAAE,CAAC;gBAC7C,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aAC1C,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,aAAa,CAAC;SAC/C,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC;AACnE,CAAC,CAAC;AAdW,QAAA,oBAAoB,wBAc/B","sourcesContent":["import React from \"react\";\n\nimport { useReactifySearchContext, useFilters } from \"../../hooks\";\nimport { SENSOR_IDS } from \"../../components\";\n\nexport const useReactiveReactProp = (currentHandle?: string) => {\n const { options } = useReactifySearchContext();\n const { filters } = useFilters();\n\n return React.useMemo(() => {\n return {\n and: [\n \"SearchInput\",\n ...SENSOR_IDS,\n ...(options.additionalComponentHandles ?? []),\n ...filters.map((filter) => filter.handle),\n ].filter((handle) => handle !== currentHandle),\n };\n }, [filters, currentHandle, options.additionalComponentHandles]);\n};\n"]}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
declare
|
|
1
|
+
export declare const useReactiveResultStackProps: (options: {
|
|
2
2
|
pageSize?: number;
|
|
3
|
-
}
|
|
4
|
-
export declare const useReactiveResultListProps: (props?: Props) => {
|
|
3
|
+
}) => {
|
|
5
4
|
size: number;
|
|
6
5
|
URLParams: boolean;
|
|
7
6
|
showLoader: boolean;
|
|
@@ -16,4 +15,3 @@ export declare const useReactiveResultListProps: (props?: Props) => {
|
|
|
16
15
|
infiniteScroll: boolean;
|
|
17
16
|
renderNoResults: () => null;
|
|
18
17
|
};
|
|
19
|
-
export {};
|
|
@@ -3,18 +3,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.useReactiveResultStackProps = void 0;
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const hooks_1 = require("../../hooks");
|
|
9
9
|
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
10
|
-
const
|
|
11
|
-
const {
|
|
12
|
-
const filterStack = (0, hooks_1.useFilterStack)();
|
|
10
|
+
const useReactiveResultStackProps = (options) => {
|
|
11
|
+
const { filterStack } = (0, hooks_1.useFilterStack)();
|
|
13
12
|
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)();
|
|
14
13
|
const size = react_1.default.useMemo(() => {
|
|
15
|
-
var _a;
|
|
16
|
-
return (_a = pageSize !== null &&
|
|
17
|
-
}, [pageSize, filterStack]);
|
|
14
|
+
var _a, _b;
|
|
15
|
+
return (_b = (_a = options.pageSize) !== null && _a !== void 0 ? _a : filterStack === null || filterStack === void 0 ? void 0 : filterStack.pageSize) !== null && _b !== void 0 ? _b : 20;
|
|
16
|
+
}, [options.pageSize, filterStack]);
|
|
18
17
|
return react_1.default.useMemo(() => ({
|
|
19
18
|
size,
|
|
20
19
|
URLParams: true,
|
|
@@ -27,6 +26,7 @@ const useReactiveResultListProps = (props = {}) => {
|
|
|
27
26
|
pagination: (filterStack === null || filterStack === void 0 ? void 0 : filterStack.paginationType) !== "infinite_scroll",
|
|
28
27
|
infiniteScroll: (filterStack === null || filterStack === void 0 ? void 0 : filterStack.paginationType) === "infinite_scroll",
|
|
29
28
|
renderNoResults: () => null, // always use only render, otherwise both are shown
|
|
30
|
-
}), [filterStack, reactiveReactProp, pageSize]);
|
|
29
|
+
}), [filterStack, reactiveReactProp, options.pageSize]);
|
|
31
30
|
};
|
|
32
|
-
exports.
|
|
31
|
+
exports.useReactiveResultStackProps = useReactiveResultStackProps;
|
|
32
|
+
//# sourceMappingURL=useReactiveResultStackProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveResultStackProps.js","sourceRoot":"","sources":["../../../../src/hooks/reactivesearch/useReactiveResultStackProps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAA6C;AAC7C,iEAA8D;AAEvD,MAAM,2BAA2B,GAAG,CAAC,OAA8B,EAAE,EAAE;IAC5E,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,sBAAc,GAAE,CAAC;IACzC,MAAM,iBAAiB,GAAG,IAAA,2CAAoB,GAAE,CAAC;IAEjD,MAAM,IAAI,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;;QAC9B,OAAO,MAAA,MAAA,OAAO,CAAC,QAAQ,mCAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,mCAAI,EAAE,CAAC;IACzD,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpC,OAAO,eAAK,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC;QACL,IAAI;QACJ,SAAS,EAAE,IAAI;QACf,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,MAAM;QACnB,cAAc,EAAE,KAAK;QACrB,UAAU,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,MAAK,iBAAiB;QAC7D,cAAc,EAAE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,MAAK,iBAAiB;QACjE,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,mDAAmD;KACjF,CAAC,EACF,CAAC,WAAW,EAAE,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,CACnD,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,2BAA2B,+BAwBtC","sourcesContent":["import React from \"react\";\n\nimport { useFilterStack } from \"../../hooks\";\nimport { useReactiveReactProp } from \"./useReactiveReactProp\";\n\nexport const useReactiveResultStackProps = (options: { pageSize?: number }) => {\n const { filterStack } = useFilterStack();\n const reactiveReactProp = useReactiveReactProp();\n\n const size = React.useMemo(() => {\n return options.pageSize ?? filterStack?.pageSize ?? 20;\n }, [options.pageSize, filterStack]);\n\n return React.useMemo(\n () => ({\n size,\n URLParams: true,\n showLoader: false,\n dataField: \"title\",\n showResultStats: false,\n react: reactiveReactProp,\n componentId: \"page\", // this sets ?page= in the URL\n scrollOnChange: false, // @todo make this better, it's really janky when enabled\n pagination: filterStack?.paginationType !== \"infinite_scroll\",\n infiniteScroll: filterStack?.paginationType === \"infinite_scroll\",\n renderNoResults: () => null, // always use only render, otherwise both are shown\n }),\n [filterStack, reactiveReactProp, options.pageSize]\n );\n};\n"]}
|
|
@@ -14,17 +14,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.useAnalytics = void 0;
|
|
16
16
|
const axios_1 = __importDefault(require("axios"));
|
|
17
|
-
const
|
|
17
|
+
const hooks_1 = require("../hooks");
|
|
18
|
+
const utility_1 = require("../utility");
|
|
18
19
|
const useAnalytics = () => {
|
|
19
|
-
const {
|
|
20
|
+
const { options } = (0, hooks_1.useReactifySearchContext)();
|
|
20
21
|
const url = "https://analytics.search.reactify.app/record/";
|
|
21
22
|
const track = (event) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
-
if (!shopifyPermanentDomain) {
|
|
23
|
+
if (!options.shopifyPermanentDomain) {
|
|
23
24
|
console.warn(new Error('Unable to send tracking event, missing value for "shopifyPermanentDomain".'));
|
|
24
25
|
return;
|
|
25
26
|
}
|
|
27
|
+
utility_1.debug.log("useAnalytics", "track", event);
|
|
26
28
|
const events = getTrackEvents(event);
|
|
27
|
-
return axios_1.default.post(url, { events }, { headers: { "X-Reactify-Tenant": shopifyPermanentDomain } });
|
|
29
|
+
return axios_1.default.post(url, { events }, { headers: { "X-Reactify-Tenant": options.shopifyPermanentDomain } });
|
|
28
30
|
});
|
|
29
31
|
return { track };
|
|
30
32
|
};
|
|
@@ -108,3 +110,4 @@ function getTrackEvents(event) {
|
|
|
108
110
|
}
|
|
109
111
|
return events;
|
|
110
112
|
}
|
|
113
|
+
//# sourceMappingURL=useAnalytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnalytics.js","sourceRoot":"","sources":["../../../src/hooks/useAnalytics.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kDAA0B;AAE1B,oCAAoD;AACpD,wCAAmC;AAE5B,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAC/C,MAAM,GAAG,GAAG,+CAA+C,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAO,KAAiB,EAAE,EAAE;QACxC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE;YACnC,OAAO,CAAC,IAAI,CACV,IAAI,KAAK,CACP,4EAA4E,CAC7E,CACF,CAAC;YAEF,OAAO;SACR;QAED,eAAK,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,eAAK,CAAC,IAAI,CACf,GAAG,EACH,EAAE,MAAM,EAAE,EACV,EAAE,OAAO,EAAE,EAAE,mBAAmB,EAAE,OAAO,CAAC,sBAAsB,EAAE,EAAE,CACrE,CAAC;IACJ,CAAC,CAAA,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC;AAzBW,QAAA,YAAY,gBAyBvB;AAEF,SAAS,cAAc,CAAC,KAAiB;IACvC,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAC5B,IAAI,MAAM,GAAiB,EAAE,CAAC;IAE9B,QAAQ,SAAS,EAAE;QACjB,KAAK,QAAQ;YACX,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,aAAa;YAChB,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,aAAa;YAChB,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,cAAc;YACjB,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,eAAe;YAClB,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,gBAAgB;YACnB,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,kBAAkB;YACrB,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,YAAY;YACf,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;QAER,KAAK,cAAc;YACjB,MAAM,GAAG;gBACP;oBACE,SAAS;oBACT,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB;aACF,CAAC;YAEF,MAAM;KACT;IAED,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import axios from \"axios\";\n\nimport { useReactifySearchContext } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nexport const useAnalytics = () => {\n const { options } = useReactifySearchContext();\n const url = \"https://analytics.search.reactify.app/record/\";\n const track = async (event: TrackEvent) => {\n if (!options.shopifyPermanentDomain) {\n console.warn(\n new Error(\n 'Unable to send tracking event, missing value for \"shopifyPermanentDomain\".'\n )\n );\n\n return;\n }\n\n debug.log(\"useAnalytics\", \"track\", event);\n\n const events = getTrackEvents(event);\n return axios.post(\n url,\n { events },\n { headers: { \"X-Reactify-Tenant\": options.shopifyPermanentDomain } }\n );\n };\n\n return { track };\n};\n\nfunction getTrackEvents(event: TrackEvent): TrackEvent[] {\n const { eventName } = event;\n let events: TrackEvent[] = [];\n\n switch (eventName) {\n case \"search\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"zeroResults\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"viewProduct\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"clickProduct\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"viewPromotion\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"clickPromotion\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"paginationChange\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"sortChange\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n\n case \"filterChange\":\n events = [\n {\n eventName,\n payload: event.payload,\n },\n ];\n\n break;\n }\n\n return events;\n}\n\nexport type TrackEvent =\n | TrackEvent.SearchEvent\n | TrackEvent.ZeroResultsEvent\n | TrackEvent.ViewProductEvent\n | TrackEvent.ClickProductEvent\n | TrackEvent.ViewPromotionEvent\n | TrackEvent.ClickPromotionEvent\n | TrackEvent.PaginationChangeEvent\n | TrackEvent.SortChangeEvent\n | TrackEvent.FilterChangeEvent;\n\nexport namespace TrackEvent {\n export interface SearchEvent {\n eventName: \"search\";\n payload: SearchEvent.Payload;\n }\n\n export namespace SearchEvent {\n export interface Payload {\n searchTerm: string;\n }\n }\n\n export interface ZeroResultsEvent {\n eventName: \"zeroResults\";\n payload: ZeroResultsEvent.Payload;\n }\n\n export namespace ZeroResultsEvent {\n export interface Payload {\n searchTerm: string;\n }\n }\n\n export interface ViewProductEvent {\n eventName: \"viewProduct\";\n payload: ViewProductEvent.Payload;\n }\n\n export namespace ViewProductEvent {\n export interface Payload {\n elasticProduct: ElasticProduct;\n }\n }\n\n export interface ClickProductEvent {\n eventName: \"clickProduct\";\n payload: ClickProductEvent.Payload;\n }\n\n export namespace ClickProductEvent {\n export interface Payload {\n elasticProduct: ElasticProduct;\n }\n }\n\n export interface ViewPromotionEvent {\n eventName: \"viewPromotion\";\n payload: ViewPromotionEvent.Payload;\n }\n\n export namespace ViewPromotionEvent {\n export interface Payload {\n link: string;\n title: string;\n }\n }\n\n export interface ClickPromotionEvent {\n eventName: \"clickPromotion\";\n payload: ClickPromotionEvent.Payload;\n }\n\n export namespace ClickPromotionEvent {\n export interface Payload {\n link: string;\n title: string;\n }\n }\n\n export interface PaginationChangeEvent {\n eventName: \"paginationChange\";\n payload: PaginationChangeEvent.Payload;\n }\n\n export namespace PaginationChangeEvent {\n export interface Payload {\n page: number;\n source: \"search\" | \"collection\";\n }\n }\n\n export interface SortChangeEvent {\n eventName: \"sortChange\";\n payload: SortChangeEvent.Payload;\n }\n\n export namespace SortChangeEvent {\n export interface Payload {\n type: string;\n }\n }\n\n export interface FilterChangeEvent {\n eventName: \"filterChange\";\n payload: FilterChangeEvent.Payload;\n }\n\n export namespace FilterChangeEvent {\n export interface Payload {\n name: string;\n value: string;\n }\n }\n\n export interface ElasticProduct {\n id: number;\n title: string;\n }\n}\n"]}
|
|
@@ -1,6 +1,83 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.useConfig = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
16
|
+
const react_1 = __importDefault(require("react"));
|
|
17
|
+
const utility_1 = require("../utility");
|
|
18
|
+
// 5 minute cache expiry
|
|
19
|
+
const CACHE_EXPIRY = 5 * 60 * 1000;
|
|
20
|
+
const useConfig = (shopifyPermanentDomain, configId) => {
|
|
21
|
+
// synchronously returns cached and non-expired config from session storage
|
|
22
|
+
const cachedConfig = react_1.default.useMemo(() => {
|
|
23
|
+
var _a;
|
|
24
|
+
if (typeof window === "undefined") {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
utility_1.debug.log("useConfig", "checking config cache");
|
|
28
|
+
// skip checking cache if url search param "nocache" is set
|
|
29
|
+
const skipCache = new URLSearchParams(window.location.href.split("?")[1]).get("nocache") !==
|
|
30
|
+
null;
|
|
31
|
+
if (skipCache) {
|
|
32
|
+
utility_1.debug.log("config cache is disabled");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const sessionConfig = JSON.parse((_a = window.sessionStorage.getItem("reactify-search:config")) !== null && _a !== void 0 ? _a : "null");
|
|
36
|
+
if (sessionConfig) {
|
|
37
|
+
const sessionConfigTtl = sessionConfig.expiresAt - Date.now();
|
|
38
|
+
if (sessionConfigTtl > 0) {
|
|
39
|
+
utility_1.debug.log("useConfig", `config cache valid, expires in ${(sessionConfigTtl / 1000).toFixed()} seconds`);
|
|
40
|
+
return sessionConfig.config;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
utility_1.debug.log("useConfig", `config cache invalid, expired ${((sessionConfigTtl * -1) /
|
|
44
|
+
1000).toFixed()} seconds ago`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return;
|
|
48
|
+
}, []);
|
|
49
|
+
const [config, setConfig] = react_1.default.useState(cachedConfig);
|
|
50
|
+
react_1.default.useEffect(() => {
|
|
51
|
+
if (config) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
55
|
+
utility_1.debug.log("useConfig", "loading fresh config");
|
|
56
|
+
const searchParams = new URLSearchParams();
|
|
57
|
+
searchParams.set("shop", shopifyPermanentDomain);
|
|
58
|
+
if (configId) {
|
|
59
|
+
searchParams.set("id", configId);
|
|
60
|
+
}
|
|
61
|
+
const skipCache = new URLSearchParams(window.location.href.split("?")[1]).get("nocache") !== null;
|
|
62
|
+
if (skipCache) {
|
|
63
|
+
searchParams.set("nocache", "true");
|
|
64
|
+
}
|
|
65
|
+
const json = yield fetch(`https://config.search.reactify.app/?${searchParams.toString()}`).then((response) => response.json());
|
|
66
|
+
setConfig(json.body);
|
|
67
|
+
utility_1.debug.log("useConfig", "loaded fresh config");
|
|
68
|
+
window.sessionStorage.setItem("reactify-search:config", JSON.stringify({
|
|
69
|
+
expiresAt: new Date().getTime() + CACHE_EXPIRY,
|
|
70
|
+
noCache: skipCache,
|
|
71
|
+
config: json.body,
|
|
72
|
+
}));
|
|
73
|
+
}))();
|
|
74
|
+
}, [shopifyPermanentDomain, configId]);
|
|
75
|
+
react_1.default.useEffect(() => {
|
|
76
|
+
utility_1.debug.log("useConfig", "config", config);
|
|
77
|
+
}, [config]);
|
|
78
|
+
return {
|
|
79
|
+
config,
|
|
80
|
+
};
|
|
81
|
+
};
|
|
6
82
|
exports.useConfig = useConfig;
|
|
83
|
+
//# sourceMappingURL=useConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConfig.js","sourceRoot":"","sources":["../../../src/hooks/useConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { Config } from \"../types/config\";\nimport { debug } from \"../utility\";\n\n// 5 minute cache expiry\nconst CACHE_EXPIRY = 5 * 60 * 1000;\n\nexport const useConfig = (\n shopifyPermanentDomain: string,\n configId?: string\n): {\n config: Config | undefined;\n} => {\n // synchronously returns cached and non-expired config from session storage\n const cachedConfig = React.useMemo(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n debug.log(\"useConfig\", \"checking config cache\");\n\n // skip checking cache if url search param \"nocache\" is set\n const skipCache =\n new URLSearchParams(window.location.href.split(\"?\")[1]).get(\"nocache\") !==\n null;\n if (skipCache) {\n debug.log(\"config cache is disabled\");\n\n return;\n }\n\n const sessionConfig: {\n expiresAt: number;\n config: Config;\n } | null = JSON.parse(\n window.sessionStorage.getItem(\"reactify-search:config\") ?? \"null\"\n );\n\n if (sessionConfig) {\n const sessionConfigTtl = sessionConfig.expiresAt - Date.now();\n if (sessionConfigTtl > 0) {\n debug.log(\n \"useConfig\",\n `config cache valid, expires in ${(\n sessionConfigTtl / 1000\n ).toFixed()} seconds`\n );\n\n return sessionConfig.config;\n } else {\n debug.log(\n \"useConfig\",\n `config cache invalid, expired ${(\n (sessionConfigTtl * -1) /\n 1000\n ).toFixed()} seconds ago`\n );\n }\n }\n\n return;\n }, []);\n\n const [config, setConfig] = React.useState<Config | undefined>(cachedConfig);\n\n React.useEffect(() => {\n if (config) {\n return;\n }\n\n (async () => {\n debug.log(\"useConfig\", \"loading fresh config\");\n const searchParams = new URLSearchParams();\n searchParams.set(\"shop\", shopifyPermanentDomain);\n\n if (configId) {\n searchParams.set(\"id\", configId);\n }\n\n const skipCache =\n new URLSearchParams(window.location.href.split(\"?\")[1]).get(\n \"nocache\"\n ) !== null;\n\n if (skipCache) {\n searchParams.set(\"nocache\", \"true\");\n }\n\n const json = await fetch(\n `https://config.search.reactify.app/?${searchParams.toString()}`\n ).then((response) => response.json());\n\n setConfig(json.body);\n\n debug.log(\"useConfig\", \"loaded fresh config\");\n\n window.sessionStorage.setItem(\n \"reactify-search:config\",\n JSON.stringify({\n expiresAt: new Date().getTime() + CACHE_EXPIRY,\n noCache: skipCache,\n config: json.body,\n })\n );\n })();\n }, [shopifyPermanentDomain, configId]);\n\n React.useEffect(() => {\n debug.log(\"useConfig\", \"config\", config);\n }, [config]);\n\n return {\n config,\n };\n};\n"]}
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { ConfigCuration } from "../types";
|
|
2
|
+
export declare const useCuration: () => ConfigCuration | undefined;
|
|
@@ -1,6 +1,66 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.useCuration = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const hooks_1 = require("../hooks");
|
|
9
|
+
const utility_1 = require("../utility");
|
|
10
|
+
const useCuration = () => {
|
|
11
|
+
const { options, config } = (0, hooks_1.useReactifySearchContext)();
|
|
12
|
+
const { searchQuery } = (0, hooks_1.useSearch)();
|
|
13
|
+
const curation = react_1.default.useMemo(() => {
|
|
14
|
+
const handleOrSearchTerm = options.mode === "collection"
|
|
15
|
+
? options.collection
|
|
16
|
+
? options.collection.handle
|
|
17
|
+
: searchQuery
|
|
18
|
+
: "";
|
|
19
|
+
const normalisedHandleOrSearchTerm = handleOrSearchTerm
|
|
20
|
+
.toLowerCase()
|
|
21
|
+
.trim();
|
|
22
|
+
const globalCuration = config.curations.find((curation) => curation.id === "global" && curation.type === options.mode);
|
|
23
|
+
const curation = config.curations.find((curation) => {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
const normalisedSearchTerm = (_a = curation.searchTerm) === null || _a === void 0 ? void 0 : _a.toLowerCase().trim();
|
|
26
|
+
const normalisedCollectionHandle = (_b = curation.collectionHandle) === null || _b === void 0 ? void 0 : _b.toLowerCase().trim();
|
|
27
|
+
if ("search" === options.mode) {
|
|
28
|
+
return ("search" === curation.type &&
|
|
29
|
+
normalisedHandleOrSearchTerm === normalisedSearchTerm);
|
|
30
|
+
}
|
|
31
|
+
if ("collection" === options.mode) {
|
|
32
|
+
return ("collection" === curation.type &&
|
|
33
|
+
normalisedHandleOrSearchTerm === normalisedCollectionHandle);
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
});
|
|
37
|
+
const addGlobalBoosting = (curation) => {
|
|
38
|
+
const curationIsCollection = curation.type === "collection";
|
|
39
|
+
if (!curationIsCollection) {
|
|
40
|
+
return curation;
|
|
41
|
+
}
|
|
42
|
+
const curationHasRules = !!curation.boosting.groupings.length ||
|
|
43
|
+
!!curation.boosting.sortings.length;
|
|
44
|
+
if (curationHasRules || !globalCuration) {
|
|
45
|
+
return curation;
|
|
46
|
+
}
|
|
47
|
+
const curationWithGlobalBoosting = Object.assign(Object.assign({}, curation), { boosting: globalCuration.boosting });
|
|
48
|
+
return curationWithGlobalBoosting;
|
|
49
|
+
};
|
|
50
|
+
return curation
|
|
51
|
+
? addGlobalBoosting(curation)
|
|
52
|
+
: globalCuration
|
|
53
|
+
? globalCuration
|
|
54
|
+
: undefined;
|
|
55
|
+
}, [
|
|
56
|
+
config,
|
|
57
|
+
options.mode === "collection" ? options.collection : undefined,
|
|
58
|
+
searchQuery,
|
|
59
|
+
]);
|
|
60
|
+
react_1.default.useEffect(() => {
|
|
61
|
+
utility_1.debug.log("useCuration", "curation", curation);
|
|
62
|
+
}, [curation]);
|
|
63
|
+
return curation;
|
|
64
|
+
};
|
|
6
65
|
exports.useCuration = useCuration;
|
|
66
|
+
//# sourceMappingURL=useCuration.js.map
|