@usereactify/search 5.0.0-beta.1 → 5.0.0-beta.4
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 +16 -0
- package/dist/package.json +70 -0
- package/dist/src/components/Example/ExampleFilterList.d.ts +4 -0
- package/dist/src/components/Example/ExampleFilterList.js +20 -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/components/Filter/index.d.ts +2 -0
- package/dist/src/components/Filter/index.js +15 -0
- 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 +143 -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/components/Result/ResultCardCallout.js +47 -0
- 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 +64 -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/components/Result/ResultStateProvider.js +11 -0
- package/dist/src/components/Result/ResultStateProvider.js.map +1 -0
- package/dist/src/components/Result/index.d.ts +7 -0
- package/dist/src/components/Result/index.js +20 -0
- package/dist/src/components/Result/index.js.map +1 -0
- package/dist/src/components/Search/SearchInput.d.ts +8 -0
- package/dist/src/components/Search/SearchInput.js +18 -0
- package/dist/src/components/Search/SearchInput.js.map +1 -0
- package/dist/src/components/Search/index.d.ts +1 -0
- package/dist/src/components/Search/index.js +14 -0
- package/dist/src/components/Search/index.js.map +1 -0
- package/dist/src/components/Sensor/SensorCollection.d.ts +2 -0
- package/dist/src/components/Sensor/SensorCollection.js +45 -0
- package/dist/src/components/Sensor/SensorCollection.js.map +1 -0
- package/dist/src/components/Sensor/SensorInventoryAvailable.d.ts +2 -0
- package/dist/src/components/Sensor/SensorInventoryAvailable.js +53 -0
- package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -0
- package/dist/src/components/Sensor/SensorPublished.d.ts +2 -0
- package/dist/src/components/Sensor/SensorPublished.js +17 -0
- package/dist/src/components/Sensor/SensorPublished.js.map +1 -0
- package/dist/src/components/Sensor/SensorSearch.d.ts +2 -0
- package/dist/src/components/Sensor/SensorSearch.js +83 -0
- package/dist/src/components/Sensor/SensorSearch.js.map +1 -0
- package/dist/src/components/Sensor/SensorSort.d.ts +2 -0
- package/dist/src/components/Sensor/SensorSort.js +205 -0
- package/dist/src/components/Sensor/SensorSort.js.map +1 -0
- package/dist/src/components/Sensor/SensorSortScore.d.ts +2 -0
- package/dist/src/components/Sensor/SensorSortScore.js +13 -0
- package/dist/src/components/Sensor/SensorSortScore.js.map +1 -0
- package/dist/src/components/Sensor/SensorStack.d.ts +3 -0
- package/dist/src/components/Sensor/SensorStack.js +32 -0
- package/dist/src/components/Sensor/SensorStack.js.map +1 -0
- package/dist/src/components/Sensor/index.d.ts +8 -0
- package/dist/src/components/Sensor/index.js +30 -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/components/Utility/UtilityAuthenticatedReactiveBase.d.ts +2 -0
- package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js +15 -0
- 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 +14 -0
- package/dist/src/hooks/index.js +27 -0
- package/dist/src/hooks/index.js.map +1 -0
- package/dist/src/hooks/reactivesearch/index.d.ts +8 -0
- package/dist/src/hooks/reactivesearch/index.js +21 -0
- package/dist/src/hooks/reactivesearch/index.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +7 -0
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +44 -0
- package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.d.ts +26 -0
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js +71 -0
- package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.d.ts +73 -0
- package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js +22 -0
- 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.d.ts +3 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js +26 -0
- package/dist/src/hooks/reactivesearch/useReactiveReactProp.js.map +1 -0
- package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.d.ts +17 -0
- package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.js +32 -0
- package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.js.map +1 -0
- package/dist/src/hooks/useAnalytics.d.ts +95 -0
- package/dist/src/hooks/useAnalytics.js +111 -0
- package/dist/src/hooks/useAnalytics.js.map +1 -0
- package/dist/src/hooks/useConfig.d.ts +4 -0
- package/dist/src/hooks/useConfig.js +82 -0
- package/dist/src/hooks/useConfig.js.map +1 -0
- package/dist/src/hooks/useCuration.d.ts +2 -0
- package/dist/src/hooks/useCuration.js +53 -0
- package/dist/src/hooks/useCuration.js.map +1 -0
- package/dist/src/hooks/useFilterCollapsedState.d.ts +8 -0
- package/dist/src/hooks/useFilterCollapsedState.js +28 -0
- package/dist/src/hooks/useFilterCollapsedState.js.map +1 -0
- package/dist/src/hooks/useFilterListProps.d.ts +12 -0
- package/dist/src/hooks/useFilterListProps.js +36 -0
- package/dist/src/hooks/useFilterListProps.js.map +1 -0
- package/dist/src/hooks/useFilterStack.d.ts +2 -0
- package/dist/src/hooks/useFilterStack.js +47 -0
- package/dist/src/hooks/useFilterStack.js.map +1 -0
- package/dist/src/hooks/useFilters.d.ts +4 -0
- package/dist/src/hooks/useFilters.js +23 -0
- package/dist/src/hooks/useFilters.js.map +1 -0
- package/dist/src/hooks/usePagination.d.ts +14 -0
- package/dist/src/hooks/usePagination.js +98 -0
- 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 +10 -0
- package/dist/src/hooks/useProductPrice.js +64 -0
- 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 +8 -0
- package/dist/src/hooks/useSearch.js +37 -0
- package/dist/src/hooks/useSearch.js.map +1 -0
- package/dist/src/hooks/useSortby.d.ts +6 -0
- package/dist/src/hooks/useSortby.js +42 -0
- package/dist/src/hooks/useSortby.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +19 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/types/config.d.ts +26 -0
- package/dist/src/types/config.js +3 -0
- package/dist/src/types/config.js.map +1 -0
- package/dist/src/types/elastic.d.ts +209 -0
- package/dist/src/types/elastic.js +19 -0
- package/dist/src/types/elastic.js.map +1 -0
- package/dist/src/types/firestore.d.ts +280 -0
- package/dist/src/types/firestore.js +19 -0
- package/dist/src/types/firestore.js.map +1 -0
- package/dist/src/types/graphql.d.ts +26545 -0
- package/dist/src/types/graphql.js +4688 -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.d.ts +73 -0
- package/dist/src/types/reactivesearch.js +3 -0
- package/dist/src/types/reactivesearch.js.map +1 -0
- package/dist/src/types/shopify.d.ts +21 -0
- package/dist/src/types/shopify.js +28 -0
- package/dist/src/types/shopify.js.map +1 -0
- package/package.json +8 -3
|
@@ -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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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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.useReactiveReactProp = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
9
|
+
const components_1 = require("../../components");
|
|
10
|
+
const useReactiveReactProp = (currentHandle) => {
|
|
11
|
+
const { options } = (0, hooks_1.useReactifySearchContext)();
|
|
12
|
+
const { filters } = (0, hooks_1.useFilters)();
|
|
13
|
+
return react_1.default.useMemo(() => {
|
|
14
|
+
var _a;
|
|
15
|
+
return {
|
|
16
|
+
and: [
|
|
17
|
+
"SearchInput",
|
|
18
|
+
...components_1.SENSOR_IDS,
|
|
19
|
+
...((_a = options.additionalComponentHandles) !== null && _a !== void 0 ? _a : []),
|
|
20
|
+
...filters.map((filter) => filter.handle),
|
|
21
|
+
].filter((handle) => handle !== currentHandle),
|
|
22
|
+
};
|
|
23
|
+
}, [filters, currentHandle, options.additionalComponentHandles]);
|
|
24
|
+
};
|
|
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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const useReactiveResultStackProps: (options: {
|
|
2
|
+
pageSize?: number;
|
|
3
|
+
}) => {
|
|
4
|
+
size: number;
|
|
5
|
+
URLParams: boolean;
|
|
6
|
+
showLoader: boolean;
|
|
7
|
+
dataField: string;
|
|
8
|
+
showResultStats: boolean;
|
|
9
|
+
react: {
|
|
10
|
+
and: string[];
|
|
11
|
+
};
|
|
12
|
+
componentId: string;
|
|
13
|
+
scrollOnChange: boolean;
|
|
14
|
+
pagination: boolean;
|
|
15
|
+
infiniteScroll: boolean;
|
|
16
|
+
renderNoResults: () => null;
|
|
17
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
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.useReactiveResultStackProps = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
9
|
+
const useReactiveReactProp_1 = require("./useReactiveReactProp");
|
|
10
|
+
const useReactiveResultStackProps = (options) => {
|
|
11
|
+
const filterStack = (0, hooks_1.useFilterStack)();
|
|
12
|
+
const reactiveReactProp = (0, useReactiveReactProp_1.useReactiveReactProp)();
|
|
13
|
+
const size = react_1.default.useMemo(() => {
|
|
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]);
|
|
17
|
+
return react_1.default.useMemo(() => ({
|
|
18
|
+
size,
|
|
19
|
+
URLParams: true,
|
|
20
|
+
showLoader: false,
|
|
21
|
+
dataField: "title",
|
|
22
|
+
showResultStats: false,
|
|
23
|
+
react: reactiveReactProp,
|
|
24
|
+
componentId: "page",
|
|
25
|
+
scrollOnChange: false,
|
|
26
|
+
pagination: (filterStack === null || filterStack === void 0 ? void 0 : filterStack.paginationType) !== "infinite_scroll",
|
|
27
|
+
infiniteScroll: (filterStack === null || filterStack === void 0 ? void 0 : filterStack.paginationType) === "infinite_scroll",
|
|
28
|
+
renderNoResults: () => null, // always use only render, otherwise both are shown
|
|
29
|
+
}), [filterStack, reactiveReactProp, options.pageSize]);
|
|
30
|
+
};
|
|
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,OAE3C,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,IAAA,sBAAc,GAAE,CAAC;IACrC,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;AA1BW,QAAA,2BAA2B,+BA0BtC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export declare const useAnalytics: () => {
|
|
2
|
+
track: (event: TrackEvent) => Promise<import("axios").AxiosResponse<any, any> | undefined>;
|
|
3
|
+
};
|
|
4
|
+
export declare type TrackEvent = TrackEvent.SearchEvent | TrackEvent.ZeroResultsEvent | TrackEvent.ViewProductEvent | TrackEvent.ClickProductEvent | TrackEvent.ViewPromotionEvent | TrackEvent.ClickPromotionEvent | TrackEvent.PaginationChangeEvent | TrackEvent.SortChangeEvent | TrackEvent.FilterChangeEvent;
|
|
5
|
+
export declare namespace TrackEvent {
|
|
6
|
+
interface SearchEvent {
|
|
7
|
+
eventName: "search";
|
|
8
|
+
payload: SearchEvent.Payload;
|
|
9
|
+
}
|
|
10
|
+
namespace SearchEvent {
|
|
11
|
+
interface Payload {
|
|
12
|
+
searchTerm: string;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
interface ZeroResultsEvent {
|
|
16
|
+
eventName: "zeroResults";
|
|
17
|
+
payload: ZeroResultsEvent.Payload;
|
|
18
|
+
}
|
|
19
|
+
namespace ZeroResultsEvent {
|
|
20
|
+
interface Payload {
|
|
21
|
+
searchTerm: string;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
interface ViewProductEvent {
|
|
25
|
+
eventName: "viewProduct";
|
|
26
|
+
payload: ViewProductEvent.Payload;
|
|
27
|
+
}
|
|
28
|
+
namespace ViewProductEvent {
|
|
29
|
+
interface Payload {
|
|
30
|
+
elasticProduct: ElasticProduct;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
interface ClickProductEvent {
|
|
34
|
+
eventName: "clickProduct";
|
|
35
|
+
payload: ClickProductEvent.Payload;
|
|
36
|
+
}
|
|
37
|
+
namespace ClickProductEvent {
|
|
38
|
+
interface Payload {
|
|
39
|
+
elasticProduct: ElasticProduct;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
interface ViewPromotionEvent {
|
|
43
|
+
eventName: "viewPromotion";
|
|
44
|
+
payload: ViewPromotionEvent.Payload;
|
|
45
|
+
}
|
|
46
|
+
namespace ViewPromotionEvent {
|
|
47
|
+
interface Payload {
|
|
48
|
+
link: string;
|
|
49
|
+
title: string;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
interface ClickPromotionEvent {
|
|
53
|
+
eventName: "clickPromotion";
|
|
54
|
+
payload: ClickPromotionEvent.Payload;
|
|
55
|
+
}
|
|
56
|
+
namespace ClickPromotionEvent {
|
|
57
|
+
interface Payload {
|
|
58
|
+
link: string;
|
|
59
|
+
title: string;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
interface PaginationChangeEvent {
|
|
63
|
+
eventName: "paginationChange";
|
|
64
|
+
payload: PaginationChangeEvent.Payload;
|
|
65
|
+
}
|
|
66
|
+
namespace PaginationChangeEvent {
|
|
67
|
+
interface Payload {
|
|
68
|
+
page: number;
|
|
69
|
+
source: "search" | "collection";
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
interface SortChangeEvent {
|
|
73
|
+
eventName: "sortChange";
|
|
74
|
+
payload: SortChangeEvent.Payload;
|
|
75
|
+
}
|
|
76
|
+
namespace SortChangeEvent {
|
|
77
|
+
interface Payload {
|
|
78
|
+
type: string;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
interface FilterChangeEvent {
|
|
82
|
+
eventName: "filterChange";
|
|
83
|
+
payload: FilterChangeEvent.Payload;
|
|
84
|
+
}
|
|
85
|
+
namespace FilterChangeEvent {
|
|
86
|
+
interface Payload {
|
|
87
|
+
name: string;
|
|
88
|
+
value: string;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
interface ElasticProduct {
|
|
92
|
+
id: number;
|
|
93
|
+
title: string;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
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
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.useAnalytics = void 0;
|
|
16
|
+
const axios_1 = __importDefault(require("axios"));
|
|
17
|
+
const hooks_1 = require("../hooks");
|
|
18
|
+
const useAnalytics = () => {
|
|
19
|
+
const { options } = (0, hooks_1.useReactifySearchContext)();
|
|
20
|
+
const url = "https://analytics.search.reactify.app/record/";
|
|
21
|
+
const track = (event) => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
+
if (!options.shopifyPermanentDomain) {
|
|
23
|
+
console.warn(new Error('Unable to send tracking event, missing value for "shopifyPermanentDomain".'));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const events = getTrackEvents(event);
|
|
27
|
+
return axios_1.default.post(url, { events }, { headers: { "X-Reactify-Tenant": options.shopifyPermanentDomain } });
|
|
28
|
+
});
|
|
29
|
+
return { track };
|
|
30
|
+
};
|
|
31
|
+
exports.useAnalytics = useAnalytics;
|
|
32
|
+
function getTrackEvents(event) {
|
|
33
|
+
const { eventName } = event;
|
|
34
|
+
let events = [];
|
|
35
|
+
switch (eventName) {
|
|
36
|
+
case "search":
|
|
37
|
+
events = [
|
|
38
|
+
{
|
|
39
|
+
eventName,
|
|
40
|
+
payload: event.payload,
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
break;
|
|
44
|
+
case "zeroResults":
|
|
45
|
+
events = [
|
|
46
|
+
{
|
|
47
|
+
eventName,
|
|
48
|
+
payload: event.payload,
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
break;
|
|
52
|
+
case "viewProduct":
|
|
53
|
+
events = [
|
|
54
|
+
{
|
|
55
|
+
eventName,
|
|
56
|
+
payload: event.payload,
|
|
57
|
+
},
|
|
58
|
+
];
|
|
59
|
+
break;
|
|
60
|
+
case "clickProduct":
|
|
61
|
+
events = [
|
|
62
|
+
{
|
|
63
|
+
eventName,
|
|
64
|
+
payload: event.payload,
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
break;
|
|
68
|
+
case "viewPromotion":
|
|
69
|
+
events = [
|
|
70
|
+
{
|
|
71
|
+
eventName,
|
|
72
|
+
payload: event.payload,
|
|
73
|
+
},
|
|
74
|
+
];
|
|
75
|
+
break;
|
|
76
|
+
case "clickPromotion":
|
|
77
|
+
events = [
|
|
78
|
+
{
|
|
79
|
+
eventName,
|
|
80
|
+
payload: event.payload,
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
break;
|
|
84
|
+
case "paginationChange":
|
|
85
|
+
events = [
|
|
86
|
+
{
|
|
87
|
+
eventName,
|
|
88
|
+
payload: event.payload,
|
|
89
|
+
},
|
|
90
|
+
];
|
|
91
|
+
break;
|
|
92
|
+
case "sortChange":
|
|
93
|
+
events = [
|
|
94
|
+
{
|
|
95
|
+
eventName,
|
|
96
|
+
payload: event.payload,
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
break;
|
|
100
|
+
case "filterChange":
|
|
101
|
+
events = [
|
|
102
|
+
{
|
|
103
|
+
eventName,
|
|
104
|
+
payload: event.payload,
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
return events;
|
|
110
|
+
}
|
|
111
|
+
//# 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;AAE7C,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,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;AAvBW,QAAA,YAAY,gBAuBvB;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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.useConfig = void 0;
|
|
16
|
+
const react_1 = __importDefault(require("react"));
|
|
17
|
+
const debug = require("debug")("reactify-search:useConfig");
|
|
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
|
+
debug("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
|
+
debug("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
|
+
debug(`config cache valid, expires in ${(sessionConfigTtl / 1000).toFixed()} seconds`);
|
|
40
|
+
return sessionConfig.config;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
debug(`config cache invalid, expired ${((sessionConfigTtl * -1) / 1000).toFixed()} seconds ago`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return;
|
|
47
|
+
}, []);
|
|
48
|
+
const [config, setConfig] = react_1.default.useState(cachedConfig);
|
|
49
|
+
react_1.default.useEffect(() => {
|
|
50
|
+
if (config) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
54
|
+
debug("loading fresh config");
|
|
55
|
+
const searchParams = new URLSearchParams();
|
|
56
|
+
searchParams.set("shop", shopifyPermanentDomain);
|
|
57
|
+
if (configId) {
|
|
58
|
+
searchParams.set("id", configId);
|
|
59
|
+
}
|
|
60
|
+
const skipCache = new URLSearchParams(window.location.href.split("?")[1]).get("nocache") !== null;
|
|
61
|
+
if (skipCache) {
|
|
62
|
+
searchParams.set("nocache", "true");
|
|
63
|
+
}
|
|
64
|
+
const json = yield fetch(`https://config.search.reactify.app/?${searchParams.toString()}`).then((response) => response.json());
|
|
65
|
+
setConfig(json.body);
|
|
66
|
+
debug("loaded fresh config");
|
|
67
|
+
window.sessionStorage.setItem("reactify-search:config", JSON.stringify({
|
|
68
|
+
expiresAt: new Date().getTime() + CACHE_EXPIRY,
|
|
69
|
+
noCache: skipCache,
|
|
70
|
+
config: json.body,
|
|
71
|
+
}));
|
|
72
|
+
}))();
|
|
73
|
+
}, [shopifyPermanentDomain, configId]);
|
|
74
|
+
react_1.default.useEffect(() => {
|
|
75
|
+
debug("variable[config]", config);
|
|
76
|
+
}, [config]);
|
|
77
|
+
return {
|
|
78
|
+
config,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
exports.useConfig = useConfig;
|
|
82
|
+
//# sourceMappingURL=useConfig.js.map
|