@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.
Files changed (213) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/package.json +70 -0
  3. package/dist/src/components/Example/ExampleFilterList.d.ts +4 -0
  4. package/dist/src/components/Example/ExampleFilterList.js +20 -0
  5. package/dist/src/components/Example/ExampleFilterList.js.map +1 -0
  6. package/dist/src/components/Example/ExampleFilterRange.d.ts +4 -0
  7. package/dist/src/components/Example/ExampleFilterRange.js +22 -0
  8. package/dist/src/components/Example/ExampleFilterRange.js.map +1 -0
  9. package/dist/src/components/Example/ExampleFilterSlider.d.ts +4 -0
  10. package/dist/src/components/Example/ExampleFilterSlider.js +21 -0
  11. package/dist/src/components/Example/ExampleFilterSlider.js.map +1 -0
  12. package/dist/src/components/Example/ExampleFilterStack.d.ts +4 -0
  13. package/dist/src/components/Example/ExampleFilterStack.js +13 -0
  14. package/dist/src/components/Example/ExampleFilterStack.js.map +1 -0
  15. package/dist/src/components/Example/ExampleResultCardCallout.d.ts +4 -0
  16. package/dist/src/components/Example/ExampleResultCardCallout.js +22 -0
  17. package/dist/src/components/Example/ExampleResultCardCallout.js.map +1 -0
  18. package/dist/src/components/Example/ExampleResultCardProduct.d.ts +4 -0
  19. package/dist/src/components/Example/ExampleResultCardProduct.js +19 -0
  20. package/dist/src/components/Example/ExampleResultCardProduct.js.map +1 -0
  21. package/dist/src/components/Example/ExampleResultPaginationLoadMore.d.ts +4 -0
  22. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js +12 -0
  23. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js.map +1 -0
  24. package/dist/src/components/Example/ExampleResultPaginationNextPrev.d.ts +4 -0
  25. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js +14 -0
  26. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js.map +1 -0
  27. package/dist/src/components/Example/ExampleResultPaginationNumbered.d.ts +4 -0
  28. package/dist/src/components/Example/ExampleResultPaginationNumbered.js +27 -0
  29. package/dist/src/components/Example/ExampleResultPaginationNumbered.js.map +1 -0
  30. package/dist/src/components/Example/ExampleSortby.d.ts +4 -0
  31. package/dist/src/components/Example/ExampleSortby.js +13 -0
  32. package/dist/src/components/Example/ExampleSortby.js.map +1 -0
  33. package/dist/src/components/Example/index.d.ts +10 -0
  34. package/dist/src/components/Example/index.js +23 -0
  35. package/dist/src/components/Example/index.js.map +1 -0
  36. package/dist/src/components/Filter/Filter.d.ts +20 -0
  37. package/dist/src/components/Filter/Filter.js +90 -0
  38. package/dist/src/components/Filter/Filter.js.map +1 -0
  39. package/dist/src/components/Filter/FilterStack.d.ts +7 -0
  40. package/dist/src/components/Filter/FilterStack.js +17 -0
  41. package/dist/src/components/Filter/FilterStack.js.map +1 -0
  42. package/dist/src/components/Filter/index.d.ts +2 -0
  43. package/dist/src/components/Filter/index.js +15 -0
  44. package/dist/src/components/Filter/index.js.map +1 -0
  45. package/dist/src/components/ReactifySearchBase/ReactifySearchBase.d.ts +42 -0
  46. package/dist/src/components/ReactifySearchBase/ReactifySearchBase.js +143 -0
  47. package/dist/src/components/ReactifySearchBase/ReactifySearchBase.js.map +1 -0
  48. package/dist/src/components/ReactifySearchBase/index.d.ts +1 -0
  49. package/dist/src/components/ReactifySearchBase/index.js +14 -0
  50. package/dist/src/components/ReactifySearchBase/index.js.map +1 -0
  51. package/dist/src/components/Result/ResultCardCallout.d.ts +12 -0
  52. package/dist/src/components/Result/ResultCardCallout.js +47 -0
  53. package/dist/src/components/Result/ResultCardCallout.js.map +1 -0
  54. package/dist/src/components/Result/ResultCardProduct.d.ts +13 -0
  55. package/dist/src/components/Result/ResultCardProduct.js +64 -0
  56. package/dist/src/components/Result/ResultCardProduct.js.map +1 -0
  57. package/dist/src/components/Result/ResultPaginationLoadMore.d.ts +7 -0
  58. package/dist/src/components/Result/ResultPaginationLoadMore.js +17 -0
  59. package/dist/src/components/Result/ResultPaginationLoadMore.js.map +1 -0
  60. package/dist/src/components/Result/ResultPaginationNextPrev.d.ts +7 -0
  61. package/dist/src/components/Result/ResultPaginationNextPrev.js +17 -0
  62. package/dist/src/components/Result/ResultPaginationNextPrev.js.map +1 -0
  63. package/dist/src/components/Result/ResultPaginationNumbered.d.ts +7 -0
  64. package/dist/src/components/Result/ResultPaginationNumbered.js +20 -0
  65. package/dist/src/components/Result/ResultPaginationNumbered.js.map +1 -0
  66. package/dist/src/components/Result/ResultStack.d.ts +40 -0
  67. package/dist/src/components/Result/ResultStack.js +108 -0
  68. package/dist/src/components/Result/ResultStack.js.map +1 -0
  69. package/dist/src/components/Result/ResultStateProvider.d.ts +6 -0
  70. package/dist/src/components/Result/ResultStateProvider.js +11 -0
  71. package/dist/src/components/Result/ResultStateProvider.js.map +1 -0
  72. package/dist/src/components/Result/index.d.ts +7 -0
  73. package/dist/src/components/Result/index.js +20 -0
  74. package/dist/src/components/Result/index.js.map +1 -0
  75. package/dist/src/components/Search/SearchInput.d.ts +8 -0
  76. package/dist/src/components/Search/SearchInput.js +18 -0
  77. package/dist/src/components/Search/SearchInput.js.map +1 -0
  78. package/dist/src/components/Search/index.d.ts +1 -0
  79. package/dist/src/components/Search/index.js +14 -0
  80. package/dist/src/components/Search/index.js.map +1 -0
  81. package/dist/src/components/Sensor/SensorCollection.d.ts +2 -0
  82. package/dist/src/components/Sensor/SensorCollection.js +45 -0
  83. package/dist/src/components/Sensor/SensorCollection.js.map +1 -0
  84. package/dist/src/components/Sensor/SensorInventoryAvailable.d.ts +2 -0
  85. package/dist/src/components/Sensor/SensorInventoryAvailable.js +53 -0
  86. package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -0
  87. package/dist/src/components/Sensor/SensorPublished.d.ts +2 -0
  88. package/dist/src/components/Sensor/SensorPublished.js +17 -0
  89. package/dist/src/components/Sensor/SensorPublished.js.map +1 -0
  90. package/dist/src/components/Sensor/SensorSearch.d.ts +2 -0
  91. package/dist/src/components/Sensor/SensorSearch.js +83 -0
  92. package/dist/src/components/Sensor/SensorSearch.js.map +1 -0
  93. package/dist/src/components/Sensor/SensorSort.d.ts +2 -0
  94. package/dist/src/components/Sensor/SensorSort.js +205 -0
  95. package/dist/src/components/Sensor/SensorSort.js.map +1 -0
  96. package/dist/src/components/Sensor/SensorSortScore.d.ts +2 -0
  97. package/dist/src/components/Sensor/SensorSortScore.js +13 -0
  98. package/dist/src/components/Sensor/SensorSortScore.js.map +1 -0
  99. package/dist/src/components/Sensor/SensorStack.d.ts +3 -0
  100. package/dist/src/components/Sensor/SensorStack.js +32 -0
  101. package/dist/src/components/Sensor/SensorStack.js.map +1 -0
  102. package/dist/src/components/Sensor/index.d.ts +8 -0
  103. package/dist/src/components/Sensor/index.js +30 -0
  104. package/dist/src/components/Sensor/index.js.map +1 -0
  105. package/dist/src/components/Sortby/Sortby.d.ts +7 -0
  106. package/dist/src/components/Sortby/Sortby.js +17 -0
  107. package/dist/src/components/Sortby/Sortby.js.map +1 -0
  108. package/dist/src/components/Sortby/index.d.ts +1 -0
  109. package/dist/src/components/Sortby/index.js +14 -0
  110. package/dist/src/components/Sortby/index.js.map +1 -0
  111. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.d.ts +2 -0
  112. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js +15 -0
  113. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js.map +1 -0
  114. package/dist/src/components/Utility/index.d.ts +1 -0
  115. package/dist/src/components/Utility/index.js +14 -0
  116. package/dist/src/components/Utility/index.js.map +1 -0
  117. package/dist/src/components/index.d.ts +8 -0
  118. package/dist/src/components/index.js +21 -0
  119. package/dist/src/components/index.js.map +1 -0
  120. package/dist/src/hooks/index.d.ts +14 -0
  121. package/dist/src/hooks/index.js +27 -0
  122. package/dist/src/hooks/index.js.map +1 -0
  123. package/dist/src/hooks/reactivesearch/index.d.ts +8 -0
  124. package/dist/src/hooks/reactivesearch/index.js +21 -0
  125. package/dist/src/hooks/reactivesearch/index.js.map +1 -0
  126. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +7 -0
  127. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +44 -0
  128. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -0
  129. package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.d.ts +26 -0
  130. package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js +71 -0
  131. package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js.map +1 -0
  132. package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.d.ts +73 -0
  133. package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js +22 -0
  134. package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js.map +1 -0
  135. package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.d.ts +70 -0
  136. package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js +22 -0
  137. package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js.map +1 -0
  138. package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.d.ts +67 -0
  139. package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js +106 -0
  140. package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js.map +1 -0
  141. package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.d.ts +68 -0
  142. package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js +22 -0
  143. package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js.map +1 -0
  144. package/dist/src/hooks/reactivesearch/useReactiveReactProp.d.ts +3 -0
  145. package/dist/src/hooks/reactivesearch/useReactiveReactProp.js +26 -0
  146. package/dist/src/hooks/reactivesearch/useReactiveReactProp.js.map +1 -0
  147. package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.d.ts +17 -0
  148. package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.js +32 -0
  149. package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.js.map +1 -0
  150. package/dist/src/hooks/useAnalytics.d.ts +95 -0
  151. package/dist/src/hooks/useAnalytics.js +111 -0
  152. package/dist/src/hooks/useAnalytics.js.map +1 -0
  153. package/dist/src/hooks/useConfig.d.ts +4 -0
  154. package/dist/src/hooks/useConfig.js +82 -0
  155. package/dist/src/hooks/useConfig.js.map +1 -0
  156. package/dist/src/hooks/useCuration.d.ts +2 -0
  157. package/dist/src/hooks/useCuration.js +53 -0
  158. package/dist/src/hooks/useCuration.js.map +1 -0
  159. package/dist/src/hooks/useFilterCollapsedState.d.ts +8 -0
  160. package/dist/src/hooks/useFilterCollapsedState.js +28 -0
  161. package/dist/src/hooks/useFilterCollapsedState.js.map +1 -0
  162. package/dist/src/hooks/useFilterListProps.d.ts +12 -0
  163. package/dist/src/hooks/useFilterListProps.js +36 -0
  164. package/dist/src/hooks/useFilterListProps.js.map +1 -0
  165. package/dist/src/hooks/useFilterStack.d.ts +2 -0
  166. package/dist/src/hooks/useFilterStack.js +47 -0
  167. package/dist/src/hooks/useFilterStack.js.map +1 -0
  168. package/dist/src/hooks/useFilters.d.ts +4 -0
  169. package/dist/src/hooks/useFilters.js +23 -0
  170. package/dist/src/hooks/useFilters.js.map +1 -0
  171. package/dist/src/hooks/usePagination.d.ts +14 -0
  172. package/dist/src/hooks/usePagination.js +98 -0
  173. package/dist/src/hooks/usePagination.js.map +1 -0
  174. package/dist/src/hooks/usePaginationLoadMore.d.ts +15 -0
  175. package/dist/src/hooks/usePaginationLoadMore.js +38 -0
  176. package/dist/src/hooks/usePaginationLoadMore.js.map +1 -0
  177. package/dist/src/hooks/useProductPrice.d.ts +10 -0
  178. package/dist/src/hooks/useProductPrice.js +64 -0
  179. package/dist/src/hooks/useProductPrice.js.map +1 -0
  180. package/dist/src/hooks/useReactifySearchContext.d.ts +78 -0
  181. package/dist/src/hooks/useReactifySearchContext.js +11 -0
  182. package/dist/src/hooks/useReactifySearchContext.js.map +1 -0
  183. package/dist/src/hooks/useSearch.d.ts +8 -0
  184. package/dist/src/hooks/useSearch.js +37 -0
  185. package/dist/src/hooks/useSearch.js.map +1 -0
  186. package/dist/src/hooks/useSortby.d.ts +6 -0
  187. package/dist/src/hooks/useSortby.js +42 -0
  188. package/dist/src/hooks/useSortby.js.map +1 -0
  189. package/dist/src/index.d.ts +3 -0
  190. package/dist/src/index.js +19 -0
  191. package/dist/src/index.js.map +1 -0
  192. package/dist/src/types/config.d.ts +26 -0
  193. package/dist/src/types/config.js +3 -0
  194. package/dist/src/types/config.js.map +1 -0
  195. package/dist/src/types/elastic.d.ts +209 -0
  196. package/dist/src/types/elastic.js +19 -0
  197. package/dist/src/types/elastic.js.map +1 -0
  198. package/dist/src/types/firestore.d.ts +280 -0
  199. package/dist/src/types/firestore.js +19 -0
  200. package/dist/src/types/firestore.js.map +1 -0
  201. package/dist/src/types/graphql.d.ts +26545 -0
  202. package/dist/src/types/graphql.js +4688 -0
  203. package/dist/src/types/graphql.js.map +1 -0
  204. package/dist/src/types/index.d.ts +3 -0
  205. package/dist/src/types/index.js +16 -0
  206. package/dist/src/types/index.js.map +1 -0
  207. package/dist/src/types/reactivesearch.d.ts +73 -0
  208. package/dist/src/types/reactivesearch.js +3 -0
  209. package/dist/src/types/reactivesearch.js.map +1 -0
  210. package/dist/src/types/shopify.d.ts +21 -0
  211. package/dist/src/types/shopify.js +28 -0
  212. package/dist/src/types/shopify.js.map +1 -0
  213. 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,3 @@
1
+ export declare const useReactiveReactProp: (currentHandle?: string | undefined) => {
2
+ and: string[];
3
+ };
@@ -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,4 @@
1
+ import { Config } from "../types/config";
2
+ export declare const useConfig: (shopifyPermanentDomain: string, configId?: string | undefined) => {
3
+ config: Config | undefined;
4
+ };
@@ -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