@usereactify/search 5.59.1-beta.0 → 5.60.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/CHANGELOG.md +6 -2
  2. package/dist/package.json +5 -7
  3. package/dist/src/components/ClearAll/ClearAll.d.ts +1 -1
  4. package/dist/src/components/ClearAll/ClearAll.js +9 -4
  5. package/dist/src/components/ClearAll/ClearAll.js.map +1 -1
  6. package/dist/src/components/CustomComponent/CustomComponent.d.ts +1 -1
  7. package/dist/src/components/CustomComponent/CustomComponent.js +2 -2
  8. package/dist/src/components/CustomComponent/CustomComponent.js.map +1 -1
  9. package/dist/src/components/Example/ExampleClearAll.d.ts +2 -2
  10. package/dist/src/components/Example/ExampleClearAll.js +5 -2
  11. package/dist/src/components/Example/ExampleClearAll.js.map +1 -1
  12. package/dist/src/components/Example/ExampleCustomComponent.d.ts +1 -1
  13. package/dist/src/components/Example/ExampleCustomComponent.js +7 -3
  14. package/dist/src/components/Example/ExampleCustomComponent.js.map +1 -1
  15. package/dist/src/components/Example/ExampleFilterList.d.ts +2 -2
  16. package/dist/src/components/Example/ExampleFilterList.js +66 -31
  17. package/dist/src/components/Example/ExampleFilterList.js.map +1 -1
  18. package/dist/src/components/Example/ExampleFilterRange.d.ts +2 -2
  19. package/dist/src/components/Example/ExampleFilterRange.js +12 -2
  20. package/dist/src/components/Example/ExampleFilterRange.js.map +1 -1
  21. package/dist/src/components/Example/ExampleFilterSlider.d.ts +2 -2
  22. package/dist/src/components/Example/ExampleFilterSlider.js +18 -11
  23. package/dist/src/components/Example/ExampleFilterSlider.js.map +1 -1
  24. package/dist/src/components/Example/ExampleFilters.d.ts +1 -1
  25. package/dist/src/components/Example/ExampleFilters.js +8 -3
  26. package/dist/src/components/Example/ExampleFilters.js.map +1 -1
  27. package/dist/src/components/Example/ExampleFiltersSelected.d.ts +2 -2
  28. package/dist/src/components/Example/ExampleFiltersSelected.js +24 -3
  29. package/dist/src/components/Example/ExampleFiltersSelected.js.map +1 -1
  30. package/dist/src/components/Example/ExampleHookUseFilters.d.ts +1 -1
  31. package/dist/src/components/Example/ExampleHookUseFilters.js +10 -3
  32. package/dist/src/components/Example/ExampleHookUseFilters.js.map +1 -1
  33. package/dist/src/components/Example/ExampleHookUseResults.d.ts +1 -1
  34. package/dist/src/components/Example/ExampleHookUseResults.js +8 -3
  35. package/dist/src/components/Example/ExampleHookUseResults.js.map +1 -1
  36. package/dist/src/components/Example/ExampleHookUseSearch.js +2 -2
  37. package/dist/src/components/Example/ExampleHookUseSearch.js.map +1 -1
  38. package/dist/src/components/Example/ExampleHookUseSortBy.js +1 -2
  39. package/dist/src/components/Example/ExampleHookUseSortBy.js.map +1 -1
  40. package/dist/src/components/Example/ExampleProductCardWeight.d.ts +1 -1
  41. package/dist/src/components/Example/ExampleProductCardWeight.js +47 -14
  42. package/dist/src/components/Example/ExampleProductCardWeight.js.map +1 -1
  43. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.d.ts +1 -1
  44. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.js +6 -2
  45. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.js.map +1 -1
  46. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.d.ts +1 -1
  47. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.js +6 -2
  48. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.js.map +1 -1
  49. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.d.ts +1 -1
  50. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.js +6 -2
  51. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.js.map +1 -1
  52. package/dist/src/components/Example/ExampleResultCardCallout.d.ts +1 -1
  53. package/dist/src/components/Example/ExampleResultCardCallout.js +4 -2
  54. package/dist/src/components/Example/ExampleResultCardCallout.js.map +1 -1
  55. package/dist/src/components/Example/ExampleResultCardProduct.d.ts +2 -2
  56. package/dist/src/components/Example/ExampleResultCardProduct.js +12 -2
  57. package/dist/src/components/Example/ExampleResultCardProduct.js.map +1 -1
  58. package/dist/src/components/Example/ExampleResultPaginationInfiniteScroll.d.ts +2 -2
  59. package/dist/src/components/Example/ExampleResultPaginationInfiniteScroll.js +5 -2
  60. package/dist/src/components/Example/ExampleResultPaginationInfiniteScroll.js.map +1 -1
  61. package/dist/src/components/Example/ExampleResultPaginationLoadMore.d.ts +2 -2
  62. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js +5 -2
  63. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js.map +1 -1
  64. package/dist/src/components/Example/ExampleResultPaginationNextPrev.d.ts +2 -2
  65. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js +7 -2
  66. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js.map +1 -1
  67. package/dist/src/components/Example/ExampleResultPaginationNumbered.d.ts +2 -2
  68. package/dist/src/components/Example/ExampleResultPaginationNumbered.js +20 -6
  69. package/dist/src/components/Example/ExampleResultPaginationNumbered.js.map +1 -1
  70. package/dist/src/components/Example/ExampleResults.d.ts +1 -1
  71. package/dist/src/components/Example/ExampleResults.js +10 -7
  72. package/dist/src/components/Example/ExampleResults.js.map +1 -1
  73. package/dist/src/components/Example/ExampleSearch.d.ts +1 -1
  74. package/dist/src/components/Example/ExampleSearch.js +2 -2
  75. package/dist/src/components/Example/ExampleSearch.js.map +1 -1
  76. package/dist/src/components/Example/ExampleSortBy.d.ts +2 -2
  77. package/dist/src/components/Example/ExampleSortBy.js +5 -2
  78. package/dist/src/components/Example/ExampleSortBy.js.map +1 -1
  79. package/dist/src/components/Example/ExampleStats.d.ts +2 -2
  80. package/dist/src/components/Example/ExampleStats.js +8 -2
  81. package/dist/src/components/Example/ExampleStats.js.map +1 -1
  82. package/dist/src/components/Example/ExampleSuggestions.d.ts +2 -2
  83. package/dist/src/components/Example/ExampleSuggestions.js +7 -2
  84. package/dist/src/components/Example/ExampleSuggestions.js.map +1 -1
  85. package/dist/src/components/Example/index.d.ts +6 -6
  86. package/dist/src/components/Example/index.js +6 -6
  87. package/dist/src/components/Example/index.js.map +1 -1
  88. package/dist/src/components/Filter/Filter.d.ts +1 -1
  89. package/dist/src/components/Filter/Filter.js +35 -30
  90. package/dist/src/components/Filter/Filter.js.map +1 -1
  91. package/dist/src/components/Filter/Filters.d.ts +4 -4
  92. package/dist/src/components/Filter/Filters.js +6 -3
  93. package/dist/src/components/Filter/Filters.js.map +1 -1
  94. package/dist/src/components/Filter/FiltersSelected.d.ts +1 -1
  95. package/dist/src/components/Filter/FiltersSelected.js +9 -4
  96. package/dist/src/components/Filter/FiltersSelected.js.map +1 -1
  97. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.d.ts +2 -2
  98. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js +8 -20
  99. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js.map +1 -1
  100. package/dist/src/components/Result/ResultCardCallout.d.ts +2 -2
  101. package/dist/src/components/Result/ResultCardCallout.js +2 -3
  102. package/dist/src/components/Result/ResultCardCallout.js.map +1 -1
  103. package/dist/src/components/Result/ResultCardProduct.d.ts +1 -1
  104. package/dist/src/components/Result/ResultCardProduct.js +3 -4
  105. package/dist/src/components/Result/ResultCardProduct.js.map +1 -1
  106. package/dist/src/components/Result/ResultPaginationInfiniteScroll.d.ts +3 -3
  107. package/dist/src/components/Result/ResultPaginationInfiniteScroll.js +6 -3
  108. package/dist/src/components/Result/ResultPaginationInfiniteScroll.js.map +1 -1
  109. package/dist/src/components/Result/ResultPaginationLoadMore.d.ts +3 -3
  110. package/dist/src/components/Result/ResultPaginationLoadMore.js +6 -3
  111. package/dist/src/components/Result/ResultPaginationLoadMore.js.map +1 -1
  112. package/dist/src/components/Result/ResultPaginationNextPrev.d.ts +3 -3
  113. package/dist/src/components/Result/ResultPaginationNextPrev.js +6 -3
  114. package/dist/src/components/Result/ResultPaginationNextPrev.js.map +1 -1
  115. package/dist/src/components/Result/ResultPaginationNumbered.d.ts +3 -3
  116. package/dist/src/components/Result/ResultPaginationNumbered.js +6 -3
  117. package/dist/src/components/Result/ResultPaginationNumbered.js.map +1 -1
  118. package/dist/src/components/Result/ResultStateProvider.d.ts +2 -2
  119. package/dist/src/components/Result/ResultStateProvider.js +3 -3
  120. package/dist/src/components/Result/ResultStateProvider.js.map +1 -1
  121. package/dist/src/components/Result/Results.d.ts +2 -2
  122. package/dist/src/components/Result/Results.js +52 -50
  123. package/dist/src/components/Result/Results.js.map +1 -1
  124. package/dist/src/components/Result/index.d.ts +4 -4
  125. package/dist/src/components/Result/index.js +4 -4
  126. package/dist/src/components/Result/index.js.map +1 -1
  127. package/dist/src/components/Search/Search.d.ts +1 -1
  128. package/dist/src/components/Search/Search.js +6 -3
  129. package/dist/src/components/Search/Search.js.map +1 -1
  130. package/dist/src/components/Sensor/SensorCollection.d.ts +1 -1
  131. package/dist/src/components/Sensor/SensorCollection.js +2 -2
  132. package/dist/src/components/Sensor/SensorCollection.js.map +1 -1
  133. package/dist/src/components/Sensor/SensorCollectionWeighted.d.ts +1 -0
  134. package/dist/src/components/Sensor/SensorCollectionWeighted.js +21 -0
  135. package/dist/src/components/Sensor/SensorCollectionWeighted.js.map +1 -0
  136. package/dist/src/components/Sensor/SensorCustom.d.ts +2 -1
  137. package/dist/src/components/Sensor/SensorCustom.js +6 -5
  138. package/dist/src/components/Sensor/SensorCustom.js.map +1 -1
  139. package/dist/src/components/Sensor/SensorExplain.js +2 -2
  140. package/dist/src/components/Sensor/SensorExplain.js.map +1 -1
  141. package/dist/src/components/Sensor/SensorInventoryAvailable.d.ts +1 -1
  142. package/dist/src/components/Sensor/SensorInventoryAvailable.js +2 -2
  143. package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -1
  144. package/dist/src/components/Sensor/SensorPublished.d.ts +1 -1
  145. package/dist/src/components/Sensor/SensorPublished.js +2 -2
  146. package/dist/src/components/Sensor/SensorPublished.js.map +1 -1
  147. package/dist/src/components/Sensor/SensorSearchTerm.d.ts +2 -1
  148. package/dist/src/components/Sensor/SensorSearchTerm.js +124 -19
  149. package/dist/src/components/Sensor/SensorSearchTerm.js.map +1 -1
  150. package/dist/src/components/Sensor/SensorSearchWeighted.d.ts +1 -0
  151. package/dist/src/components/Sensor/SensorSearchWeighted.js +22 -0
  152. package/dist/src/components/Sensor/SensorSearchWeighted.js.map +1 -0
  153. package/dist/src/components/Sensor/SensorSort.d.ts +1 -1
  154. package/dist/src/components/Sensor/SensorSort.js +2 -2
  155. package/dist/src/components/Sensor/SensorSort.js.map +1 -1
  156. package/dist/src/components/Sensor/Sensors.d.ts +3 -1
  157. package/dist/src/components/Sensor/Sensors.js +48 -14
  158. package/dist/src/components/Sensor/Sensors.js.map +1 -1
  159. package/dist/src/components/Sensor/index.d.ts +9 -7
  160. package/dist/src/components/Sensor/index.js +10 -6
  161. package/dist/src/components/Sensor/index.js.map +1 -1
  162. package/dist/src/components/SortBy/SortBy.d.ts +1 -1
  163. package/dist/src/components/SortBy/SortBy.js +6 -3
  164. package/dist/src/components/SortBy/SortBy.js.map +1 -1
  165. package/dist/src/components/Stats/Stats.d.ts +2 -2
  166. package/dist/src/components/Stats/Stats.js +5 -2
  167. package/dist/src/components/Stats/Stats.js.map +1 -1
  168. package/dist/src/components/Suggestions/Suggestions.d.ts +1 -1
  169. package/dist/src/components/Suggestions/Suggestions.js +8 -7
  170. package/dist/src/components/Suggestions/Suggestions.js.map +1 -1
  171. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.d.ts +1 -1
  172. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js +3 -3
  173. package/dist/src/components/Utility/UtilityAuthenticatedReactiveBase.js.map +1 -1
  174. package/dist/src/components/Utility/index.js.map +1 -1
  175. package/dist/src/components/index.d.ts +2 -2
  176. package/dist/src/components/index.js +2 -2
  177. package/dist/src/components/index.js.map +1 -1
  178. package/dist/src/hooks/index.d.ts +11 -11
  179. package/dist/src/hooks/index.js +11 -11
  180. package/dist/src/hooks/index.js.map +1 -1
  181. package/dist/src/hooks/react-slider/useReactSliderProps.d.ts +2 -2
  182. package/dist/src/hooks/react-slider/useReactSliderProps.js +6 -6
  183. package/dist/src/hooks/react-slider/useReactSliderProps.js.map +1 -1
  184. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.d.ts +1 -1
  185. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +2 -2
  186. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -1
  187. package/dist/src/hooks/useAnalytics.js.map +1 -1
  188. package/dist/src/hooks/useConfig.d.ts +1 -1
  189. package/dist/src/hooks/useConfig.js +1 -1
  190. package/dist/src/hooks/useConfig.js.map +1 -1
  191. package/dist/src/hooks/useCuration.d.ts +1 -1
  192. package/dist/src/hooks/useCuration.js +25 -9
  193. package/dist/src/hooks/useCuration.js.map +1 -1
  194. package/dist/src/hooks/useDebugger.js +3 -3
  195. package/dist/src/hooks/useDebugger.js.map +1 -1
  196. package/dist/src/hooks/useFilterCollapsedState.d.ts +1 -1
  197. package/dist/src/hooks/useFilterCollapsedState.js.map +1 -1
  198. package/dist/src/hooks/useFilterListProps.d.ts +2 -2
  199. package/dist/src/hooks/useFilterListProps.js +11 -7
  200. package/dist/src/hooks/useFilterListProps.js.map +1 -1
  201. package/dist/src/hooks/useFilterRangeProps.d.ts +1 -1
  202. package/dist/src/hooks/useFilterRangeProps.js +14 -11
  203. package/dist/src/hooks/useFilterRangeProps.js.map +1 -1
  204. package/dist/src/hooks/useFilterSliderProps.d.ts +1 -1
  205. package/dist/src/hooks/useFilterSliderProps.js +9 -10
  206. package/dist/src/hooks/useFilterSliderProps.js.map +1 -1
  207. package/dist/src/hooks/useFilters.d.ts +1 -1
  208. package/dist/src/hooks/useFilters.js +7 -4
  209. package/dist/src/hooks/useFilters.js.map +1 -1
  210. package/dist/src/hooks/useIndices.js +2 -2
  211. package/dist/src/hooks/useIndices.js.map +1 -1
  212. package/dist/src/hooks/usePagination.d.ts +1 -1
  213. package/dist/src/hooks/usePagination.js +14 -6
  214. package/dist/src/hooks/usePagination.js.map +1 -1
  215. package/dist/src/hooks/usePaginationLoadable.d.ts +1 -1
  216. package/dist/src/hooks/usePaginationLoadable.js +5 -3
  217. package/dist/src/hooks/usePaginationLoadable.js.map +1 -1
  218. package/dist/src/hooks/useProductPrice.d.ts +1 -1
  219. package/dist/src/hooks/useProductPrice.js +1 -3
  220. package/dist/src/hooks/useProductPrice.js.map +1 -1
  221. package/dist/src/hooks/useReactifySearchContext.d.ts +1 -1
  222. package/dist/src/hooks/useReactifySearchContext.js.map +1 -1
  223. package/dist/src/hooks/useResults.d.ts +1 -1
  224. package/dist/src/hooks/useResults.js +4 -4
  225. package/dist/src/hooks/useResults.js.map +1 -1
  226. package/dist/src/hooks/useSearch.d.ts +1 -1
  227. package/dist/src/hooks/useSearch.js +9 -8
  228. package/dist/src/hooks/useSearch.js.map +1 -1
  229. package/dist/src/hooks/useSortBy.d.ts +1 -1
  230. package/dist/src/hooks/useSortBy.js +1 -1
  231. package/dist/src/hooks/useSortBy.js.map +1 -1
  232. package/dist/src/index.js.map +1 -1
  233. package/dist/src/types/config.d.ts +1 -1
  234. package/dist/src/types/config.js.map +1 -1
  235. package/dist/src/types/elastic.d.ts +11 -8
  236. package/dist/src/types/elastic.js.map +1 -1
  237. package/dist/src/types/firestore.d.ts +5 -5
  238. package/dist/src/types/firestore.js.map +1 -1
  239. package/dist/src/types/index.js.map +1 -1
  240. package/dist/src/types/reactivesearch.d.ts +1 -1
  241. package/dist/src/types/reactivesearch.js.map +1 -1
  242. package/dist/src/types/shopify.d.ts +1 -1
  243. package/dist/src/types/shopify.js.map +1 -1
  244. package/dist/src/utility/config.d.ts +3 -3
  245. package/dist/src/utility/config.js +9 -6
  246. package/dist/src/utility/config.js.map +1 -1
  247. package/dist/src/utility/curation.d.ts +2 -2
  248. package/dist/src/utility/curation.js +1 -1
  249. package/dist/src/utility/curation.js.map +1 -1
  250. package/dist/src/utility/debug.js +1 -1
  251. package/dist/src/utility/debug.js.map +1 -1
  252. package/dist/src/utility/filters.d.ts +2 -2
  253. package/dist/src/utility/filters.js.map +1 -1
  254. package/dist/src/utility/liquid.d.ts +2 -2
  255. package/dist/src/utility/liquid.js +5 -2
  256. package/dist/src/utility/liquid.js.map +1 -1
  257. package/dist/src/utility/props.d.ts +226 -7
  258. package/dist/src/utility/props.js +109 -62
  259. package/dist/src/utility/props.js.map +1 -1
  260. package/dist/src/utility/queries.d.ts +393 -0
  261. package/dist/src/utility/queries.js +197 -0
  262. package/dist/src/utility/queries.js.map +1 -0
  263. package/dist/src/utility/server.d.ts +1 -1
  264. package/dist/src/utility/server.js +4 -4
  265. package/dist/src/utility/server.js.map +1 -1
  266. package/dist/src/utility/sortOption.d.ts +2 -2
  267. package/dist/src/utility/sortOption.js.map +1 -1
  268. package/package.json +5 -7
  269. package/dist/src/search-request-builder/base-builders.d.ts +0 -18
  270. package/dist/src/search-request-builder/base-builders.js +0 -184
  271. package/dist/src/search-request-builder/base-builders.js.map +0 -1
  272. package/dist/src/search-request-builder/curation-builders.d.ts +0 -2
  273. package/dist/src/search-request-builder/curation-builders.js +0 -44
  274. package/dist/src/search-request-builder/curation-builders.js.map +0 -1
  275. package/dist/src/search-request-builder/index.d.ts +0 -3
  276. package/dist/src/search-request-builder/index.js +0 -12
  277. package/dist/src/search-request-builder/index.js.map +0 -1
  278. package/dist/src/search-request-builder/search-request-builder.d.ts +0 -3
  279. package/dist/src/search-request-builder/search-request-builder.js +0 -54
  280. package/dist/src/search-request-builder/search-request-builder.js.map +0 -1
  281. package/dist/src/search-request-builder/types.d.ts +0 -105
  282. package/dist/src/search-request-builder/types.js +0 -30
  283. package/dist/src/search-request-builder/types.js.map +0 -1
  284. package/dist/src/search-request-builder/utils.d.ts +0 -27
  285. package/dist/src/search-request-builder/utils.js +0 -144
  286. package/dist/src/search-request-builder/utils.js.map +0 -1
@@ -34,18 +34,20 @@ const usePagination = (input) => {
34
34
  eventName: "paginationChange",
35
35
  payload: {
36
36
  page: pageNumber,
37
- source: window.location.pathname.includes("/search") ? "search" : "collection",
37
+ source: window.location.pathname.includes("/search")
38
+ ? "search"
39
+ : "collection",
38
40
  },
39
41
  });
40
- }, [input.setPage, track, hasPage]);
42
+ }, [input.setPage, track]);
41
43
  const handleNextPage = react_1.default.useCallback((event) => {
42
44
  utility_1.debug.log("usePagination", "handleNextPage", input.currentPage + 1);
43
45
  handlePageChange(input.currentPage + 1, event);
44
- }, [input.currentPage, handlePageChange]);
46
+ }, [hasNextPage, input.currentPage, handlePageChange]);
45
47
  const handlePreviousPage = react_1.default.useCallback((event) => {
46
48
  utility_1.debug.log("usePagination", "handlePreviousPage", input.currentPage - 1);
47
49
  handlePageChange(input.currentPage - 1, event);
48
- }, [input.currentPage, handlePageChange]);
50
+ }, [hasPreviousPage, input.currentPage, handlePageChange]);
49
51
  return react_1.default.useMemo(() => ({
50
52
  currentPage: input.currentPage,
51
53
  totalPages: input.totalPages,
@@ -76,19 +78,25 @@ exports.usePagination = usePagination;
76
78
  const getPages = (pages, totalPages, currentPage) => {
77
79
  const pagesToShow = pages > totalPages ? totalPages : pages;
78
80
  const buffer = Math.floor(pagesToShow / 2);
81
+ let list = [];
79
82
  let start = 0;
80
83
  if (totalPages <= 5 || currentPage < buffer + 1) {
81
84
  start = 0;
82
85
  }
83
86
  else {
84
87
  if (totalPages - buffer <= currentPage) {
85
- start = currentPage + 1 === totalPages ? currentPage - (pagesToShow - 1) : currentPage - (buffer + buffer / 2);
88
+ start =
89
+ currentPage + 1 === totalPages
90
+ ? currentPage - (pagesToShow - 1)
91
+ : currentPage - (buffer + buffer / 2);
86
92
  }
87
93
  else {
88
94
  start = currentPage - buffer;
89
95
  }
90
96
  }
91
- const list = Array.from({ length: pagesToShow }, (_item, index) => start + index);
97
+ Array.apply(null, Array(pagesToShow)).map((item, index) => {
98
+ list.push(start + index);
99
+ });
92
100
  return list;
93
101
  };
94
102
  //# sourceMappingURL=usePagination.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePagination.js","sourceRoot":"","sources":["../../../src/hooks/usePagination.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useAnalytics } from \"../hooks\";\nimport type { ReactivesearchPaginationProps } from \"../types\";\nimport { debug } from \"../utility\";\n\nexport const usePagination = (\n input: ReactivesearchPaginationProps\n): {\n /** The current page number, indexed from 0 */\n currentPage: number;\n /** The total amount of pages */\n totalPages: number;\n /** The total amount of pages to show within pagination components */\n pagesToShow: Array<number>;\n /** If there is a next page */\n hasNextPage: boolean;\n /** If there is a previous page */\n hasPreviousPage: boolean;\n /** The _actual_ current page number, indexed from 1 */\n actualCurrentPage: number;\n /** Function to build a URL for a specific page number, useful for Href links */\n buildPagePath: (page: number) => string;\n /** Function to change to the next page, if an event is provided the preventDefault() method will be called */\n handleNextPage: (event?: React.SyntheticEvent) => void;\n /** Function to change to the previous page, if an event is provided the preventDefault() method will be called */\n handlePreviousPage: (event?: React.SyntheticEvent) => void;\n /** Function to change to any page, if an event is provided the preventDefault() method will be called */\n handlePageChange: (pageNumber: number, event?: React.SyntheticEvent) => void;\n} => {\n const { track } = useAnalytics();\n\n const buildPagePath = React.useCallback((page: number) => {\n const currentPath = typeof window !== \"undefined\" ? window.location.pathname : \"\";\n\n return currentPath.includes(\"page=\")\n ? currentPath.replace(/page=\\d+/g, `page=${page}`)\n : `${currentPath}${currentPath.includes(\"?\") ? \"&\" : \"?\"}page=${page}`;\n }, []);\n\n const pagesToShow = React.useMemo(\n () => getPages(input.pages, input.totalPages, input.currentPage),\n [input.pages, input.totalPages, input.currentPage]\n );\n\n // default input.currentPage is zero-indexed, actualCurrentPage is one-indexed\n const actualCurrentPage = React.useMemo(() => input.currentPage + 1, [input.currentPage]);\n\n const hasNextPage = React.useMemo(() => actualCurrentPage < input.totalPages, [actualCurrentPage, input.totalPages]);\n\n const hasPreviousPage = React.useMemo(() => actualCurrentPage > 1, [actualCurrentPage]);\n\n const hasPage = React.useCallback(\n (pageNumber: number) => {\n return pageNumber >= 0 && pageNumber < input.totalPages;\n },\n [input.totalPages]\n );\n\n const handlePageChange = React.useCallback<ReturnType<typeof usePagination>[\"handlePageChange\"]>(\n (pageNumber, event) => {\n debug.log(\"usePagination\", \"handlePageChange[pageNumber]\", pageNumber);\n event?.preventDefault();\n if (!hasPage(pageNumber)) {\n return;\n }\n input.setPage(pageNumber);\n track({\n eventName: \"paginationChange\",\n payload: {\n page: pageNumber,\n source: window.location.pathname.includes(\"/search\") ? \"search\" : \"collection\",\n },\n });\n },\n [input.setPage, track, hasPage]\n );\n\n const handleNextPage = React.useCallback<ReturnType<typeof usePagination>[\"handleNextPage\"]>(\n (event) => {\n debug.log(\"usePagination\", \"handleNextPage\", input.currentPage + 1);\n handlePageChange(input.currentPage + 1, event);\n },\n [input.currentPage, handlePageChange]\n );\n\n const handlePreviousPage = React.useCallback<ReturnType<typeof usePagination>[\"handlePreviousPage\"]>(\n (event) => {\n debug.log(\"usePagination\", \"handlePreviousPage\", input.currentPage - 1);\n handlePageChange(input.currentPage - 1, event);\n },\n [input.currentPage, handlePageChange]\n );\n\n return React.useMemo(\n () => ({\n currentPage: input.currentPage,\n totalPages: input.totalPages,\n pagesToShow,\n hasNextPage,\n buildPagePath,\n hasPreviousPage,\n actualCurrentPage,\n handleNextPage,\n handlePreviousPage,\n handlePageChange,\n }),\n [\n input.currentPage,\n input.totalPages,\n pagesToShow,\n hasNextPage,\n buildPagePath,\n hasPreviousPage,\n actualCurrentPage,\n handleNextPage,\n handlePreviousPage,\n handlePageChange,\n ]\n );\n};\n\n// get a list of pages to display buttons for\n// @todo this is super hacky and needs to be cleaned up\nconst getPages = (pages: number, totalPages: number, currentPage: number) => {\n const pagesToShow = pages > totalPages ? totalPages : pages;\n const buffer = Math.floor(pagesToShow / 2);\n let start = 0;\n if (totalPages <= 5 || currentPage < buffer + 1) {\n start = 0;\n } else {\n if (totalPages - buffer <= currentPage) {\n start = currentPage + 1 === totalPages ? currentPage - (pagesToShow - 1) : currentPage - (buffer + buffer / 2);\n } else {\n start = currentPage - buffer;\n }\n }\n\n const list = Array.from({ length: pagesToShow }, (_item, index) => start + index);\n return list;\n};\n"]}
1
+ {"version":3,"file":"usePagination.js","sourceRoot":"","sources":["../../../src/hooks/usePagination.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { ReactivesearchPaginationProps } from \"../types\";\nimport { useAnalytics } from \"../hooks\";\nimport { debug } from \"../utility\";\n\nexport const usePagination = (\n input: ReactivesearchPaginationProps\n): {\n /** The current page number, indexed from 0 */\n currentPage: number;\n /** The total amount of pages */\n totalPages: number;\n /** The total amount of pages to show within pagination components */\n pagesToShow: Array<number>;\n /** If there is a next page */\n hasNextPage: boolean;\n /** If there is a previous page */\n hasPreviousPage: boolean;\n /** The _actual_ current page number, indexed from 1 */\n actualCurrentPage: number;\n /** Function to build a URL for a specific page number, useful for Href links */\n buildPagePath: (page: number) => string;\n /** Function to change to the next page, if an event is provided the preventDefault() method will be called */\n handleNextPage: (event?: React.SyntheticEvent) => void;\n /** Function to change to the previous page, if an event is provided the preventDefault() method will be called */\n handlePreviousPage: (event?: React.SyntheticEvent) => void;\n /** Function to change to any page, if an event is provided the preventDefault() method will be called */\n handlePageChange: (pageNumber: number, event?: React.SyntheticEvent) => void;\n} => {\n const { track } = useAnalytics();\n\n const buildPagePath = React.useCallback((page: number) => {\n const currentPath = typeof window !== \"undefined\" ? window.location.pathname : \"\";\n\n return currentPath.includes(\"page=\")\n ? currentPath.replace(/page=\\d+/g, `page=${page}`)\n : `${currentPath}${currentPath.includes(\"?\") ? \"&\" : \"?\"}page=${page}`;\n }, []);\n\n const pagesToShow = React.useMemo(\n () => getPages(input.pages, input.totalPages, input.currentPage),\n [input.pages, input.totalPages, input.currentPage]\n );\n\n // default input.currentPage is zero-indexed, actualCurrentPage is one-indexed\n const actualCurrentPage = React.useMemo(\n () => input.currentPage + 1,\n [input.currentPage]\n );\n\n const hasNextPage = React.useMemo(\n () => actualCurrentPage < input.totalPages,\n [actualCurrentPage, input.totalPages]\n );\n\n const hasPreviousPage = React.useMemo(\n () => actualCurrentPage > 1,\n [actualCurrentPage]\n );\n\n const hasPage = React.useCallback(\n (pageNumber: number) => {\n return pageNumber >= 0 && pageNumber < input.totalPages;\n },\n [input.totalPages]\n );\n\n const handlePageChange = React.useCallback<\n ReturnType<typeof usePagination>[\"handlePageChange\"]\n >(\n (pageNumber, event) => {\n debug.log(\"usePagination\", \"handlePageChange[pageNumber]\", pageNumber);\n event?.preventDefault();\n if (!hasPage(pageNumber)) {\n return;\n }\n input.setPage(pageNumber);\n track({\n eventName: \"paginationChange\",\n payload: {\n page: pageNumber,\n source: window.location.pathname.includes(\"/search\")\n ? \"search\"\n : \"collection\",\n },\n });\n },\n [input.setPage, track]\n );\n\n const handleNextPage = React.useCallback<\n ReturnType<typeof usePagination>[\"handleNextPage\"]\n >(\n (event) => {\n debug.log(\"usePagination\", \"handleNextPage\", input.currentPage + 1);\n handlePageChange(input.currentPage + 1, event);\n },\n [hasNextPage, input.currentPage, handlePageChange]\n );\n\n const handlePreviousPage = React.useCallback<\n ReturnType<typeof usePagination>[\"handlePreviousPage\"]\n >(\n (event) => {\n debug.log(\"usePagination\", \"handlePreviousPage\", input.currentPage - 1);\n handlePageChange(input.currentPage - 1, event);\n },\n [hasPreviousPage, input.currentPage, handlePageChange]\n );\n\n return React.useMemo(\n () => ({\n currentPage: input.currentPage,\n totalPages: input.totalPages,\n pagesToShow,\n hasNextPage,\n buildPagePath,\n hasPreviousPage,\n actualCurrentPage,\n handleNextPage,\n handlePreviousPage,\n handlePageChange,\n }),\n [\n input.currentPage,\n input.totalPages,\n pagesToShow,\n hasNextPage,\n buildPagePath,\n hasPreviousPage,\n actualCurrentPage,\n handleNextPage,\n handlePreviousPage,\n handlePageChange,\n ]\n );\n};\n\n// get a list of pages to display buttons for\n// @todo this is super hacky and needs to be cleaned up\nconst getPages = (pages: number, totalPages: number, currentPage: number) => {\n const pagesToShow = pages > totalPages ? totalPages : pages;\n const buffer = Math.floor(pagesToShow / 2);\n let list: number[] = [];\n let start = 0;\n if (totalPages <= 5 || currentPage < buffer + 1) {\n start = 0;\n } else {\n if (totalPages - buffer <= currentPage) {\n start =\n currentPage + 1 === totalPages\n ? currentPage - (pagesToShow - 1)\n : currentPage - (buffer + buffer / 2);\n } else {\n start = currentPage - buffer;\n }\n }\n Array.apply(null, Array(pagesToShow)).map((item, index) => {\n list.push(start + index);\n });\n return list;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import type { ReactivesearchResultProps } from "../types";
1
+ import { ReactivesearchResultProps } from "../types";
2
2
  export declare const usePaginationLoadable: (input: ReactivesearchResultProps) => {
3
3
  loading: boolean;
4
4
  hasMore: boolean;
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.usePaginationLoadable = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
- const utility_1 = require("../utility");
9
8
  const _1 = require(".");
9
+ const utility_1 = require("../utility");
10
10
  const usePaginationLoadable = (input) => {
11
11
  const analyticsHook = (0, _1.useAnalytics)();
12
12
  const { filterStack } = (0, _1.useFilters)();
@@ -21,10 +21,12 @@ const usePaginationLoadable = (input) => {
21
21
  eventName: "paginationChange",
22
22
  payload: {
23
23
  page: Math.ceil(input.resultStats.displayedResults / ((filterStack === null || filterStack === void 0 ? void 0 : filterStack.pageSize) || 20)) + 1,
24
- source: window.location.pathname.includes("/search") ? "search" : "collection",
24
+ source: window.location.pathname.includes("/search")
25
+ ? "search"
26
+ : "collection",
25
27
  },
26
28
  });
27
- }, [input.loadMore, analyticsHook.track, input.resultStats, filterStack, hasMore]);
29
+ }, [input.loadMore, analyticsHook.track, input.resultStats, filterStack]);
28
30
  return react_1.default.useMemo(() => ({
29
31
  loading: input.loading,
30
32
  hasMore,
@@ -1 +1 @@
1
- {"version":3,"file":"usePaginationLoadable.js","sourceRoot":"","sources":["../../../src/hooks/usePaginationLoadable.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,wCAAmC;AACnC,wBAA6C;AAEtC,MAAM,qBAAqB,GAAG,CACnC,KAAgC,EAchC,EAAE;IACF,MAAM,aAAa,GAAG,IAAA,eAAY,GAAE,CAAC;IACrC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,aAAU,GAAE,CAAC;IAErC,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC;IAEzF,MAAM,cAAc,GAAG,eAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC5C,eAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,aAAa,CAAC,KAAK,CAAC;YAClB,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,KAAI,EAAE,CAAC,CAAC,GAAG,CAAC;gBACvF,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY;aAC/E;SACF,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnF,OAAO,eAAK,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO;QACP,cAAc;QACd,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,EACF,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,CAC5D,CAAC;AACJ,CAAC,CAAC;AA/CW,QAAA,qBAAqB,yBA+ChC","sourcesContent":["import React from \"react\";\nimport type { ReactivesearchResultProps } from \"../types\";\nimport { debug } from \"../utility\";\nimport { useAnalytics, useFilters } from \".\";\n\nexport const usePaginationLoadable = (\n input: ReactivesearchResultProps\n): {\n loading: boolean;\n hasMore: boolean;\n handleLoadMore: () => void;\n resultStats: {\n time: number;\n hidden: number;\n promoted: number;\n currentPage: number;\n numberOfPages: number;\n numberOfResults?: number;\n displayedResults: number;\n };\n} => {\n const analyticsHook = useAnalytics();\n const { filterStack } = useFilters();\n\n const hasMore = input.resultStats.displayedResults !== input.resultStats.numberOfResults;\n\n const handleLoadMore = React.useCallback(() => {\n debug.log(\"usePaginationLoadable\", \"handleLoadMore\");\n\n if (!hasMore) {\n return;\n }\n\n input.loadMore();\n analyticsHook.track({\n eventName: \"paginationChange\",\n payload: {\n page: Math.ceil(input.resultStats.displayedResults / (filterStack?.pageSize || 20)) + 1,\n source: window.location.pathname.includes(\"/search\") ? \"search\" : \"collection\",\n },\n });\n }, [input.loadMore, analyticsHook.track, input.resultStats, filterStack, hasMore]);\n\n return React.useMemo(\n () => ({\n loading: input.loading,\n hasMore,\n handleLoadMore,\n resultStats: input.resultStats,\n }),\n [input.loading, hasMore, handleLoadMore, input.resultStats]\n );\n};\n"]}
1
+ {"version":3,"file":"usePaginationLoadable.js","sourceRoot":"","sources":["../../../src/hooks/usePaginationLoadable.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,wBAA6C;AAC7C,wCAAmC;AAE5B,MAAM,qBAAqB,GAAG,CACnC,KAAgC,EAchC,EAAE;IACF,MAAM,aAAa,GAAG,IAAA,eAAY,GAAE,CAAC;IACrC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,aAAU,GAAE,CAAC;IAErC,MAAM,OAAO,GACX,KAAK,CAAC,WAAW,CAAC,gBAAgB,KAAK,KAAK,CAAC,WAAW,CAAC,eAAe,CAAC;IAE3E,MAAM,cAAc,GAAG,eAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC5C,eAAK,CAAC,GAAG,CAAC,uBAAuB,EAAE,gBAAgB,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,aAAa,CAAC,KAAK,CAAC;YAClB,SAAS,EAAE,kBAAkB;YAC7B,OAAO,EAAE;gBACP,IAAI,EACF,IAAI,CAAC,IAAI,CACP,KAAK,CAAC,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,KAAI,EAAE,CAAC,CACnE,GAAG,CAAC;gBACP,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAClD,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,YAAY;aACjB;SACF,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;IAE1E,OAAO,eAAK,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO;QACP,cAAc;QACd,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,EACF,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,WAAW,CAAC,CAC5D,CAAC;AACJ,CAAC,CAAC;AArDW,QAAA,qBAAqB,yBAqDhC","sourcesContent":["import React from \"react\";\n\nimport { ReactivesearchResultProps } from \"../types\";\nimport { useAnalytics, useFilters } from \".\";\nimport { debug } from \"../utility\";\n\nexport const usePaginationLoadable = (\n input: ReactivesearchResultProps\n): {\n loading: boolean;\n hasMore: boolean;\n handleLoadMore: () => void;\n resultStats: {\n time: number;\n hidden: number;\n promoted: number;\n currentPage: number;\n numberOfPages: number;\n numberOfResults?: number;\n displayedResults: number;\n };\n} => {\n const analyticsHook = useAnalytics();\n const { filterStack } = useFilters();\n\n const hasMore =\n input.resultStats.displayedResults !== input.resultStats.numberOfResults;\n\n const handleLoadMore = React.useCallback(() => {\n debug.log(\"usePaginationLoadable\", \"handleLoadMore\");\n\n if (!hasMore) {\n return;\n }\n\n input.loadMore();\n analyticsHook.track({\n eventName: \"paginationChange\",\n payload: {\n page:\n Math.ceil(\n input.resultStats.displayedResults / (filterStack?.pageSize || 20)\n ) + 1,\n source: window.location.pathname.includes(\"/search\")\n ? \"search\"\n : \"collection\",\n },\n });\n }, [input.loadMore, analyticsHook.track, input.resultStats, filterStack]);\n\n return React.useMemo(\n () => ({\n loading: input.loading,\n hasMore,\n handleLoadMore,\n resultStats: input.resultStats,\n }),\n [input.loading, hasMore, handleLoadMore, input.resultStats]\n );\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import currency from "currency.js";
2
- import type { ElasticProduct } from "../types/elastic";
2
+ import { ElasticProduct } from "../types/elastic";
3
3
  export type UseProductPrice = {
4
4
  price?: currency;
5
5
  onSale: boolean;
@@ -63,9 +63,7 @@ const useProductPrice = (product) => {
63
63
  price: priceAsCurrency,
64
64
  compareAtPrice: compareAtPriceAsCurrency,
65
65
  formattedPrice: formatPrice(priceAsCurrency, currencyCode),
66
- formattedCompareAtPrice: compareAtPriceAsCurrency
67
- ? formatPrice(compareAtPriceAsCurrency, currencyCode)
68
- : undefined,
66
+ formattedCompareAtPrice: compareAtPriceAsCurrency ? formatPrice(compareAtPriceAsCurrency, currencyCode) : undefined,
69
67
  currencyCode: currencyCode,
70
68
  };
71
69
  }, [product, reactifySearchContext.options.market, reactifySearchContext.config.markets]);
@@ -1 +1 @@
1
- {"version":3,"file":"useProductPrice.js","sourceRoot":"","sources":["../../../src/hooks/useProductPrice.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport currency from \"currency.js\";\nimport { useReactifySearchContext } from \"./useReactifySearchContext\";\nimport type { ElasticProduct } from \"../types/elastic\";\n\nexport type UseProductPrice = {\n price?: currency;\n onSale: boolean;\n currencyCode: string;\n compareAtPrice?: currency;\n formattedPrice?: string;\n formattedCompareAtPrice?: string;\n};\n\nexport const useProductPrice = (product: ElasticProduct): UseProductPrice => {\n const reactifySearchContext = useReactifySearchContext();\n\n const value = React.useMemo<UseProductPrice>(() => {\n const getCurrencyCode = (): string => {\n const currencyCode = product.presentment_price_ranges?.min_variant_price[0].currency_code ?? \"AUD\";\n const currencyCodeMarket = reactifySearchContext.config.markets.find(\n (market) => market.id === reactifySearchContext.options.market\n )?.currencyCode;\n\n return currencyCodeMarket ?? currencyCode;\n };\n\n const getPriceDefault = ():\n | {\n price: number;\n compareAtPrice: number | undefined;\n }\n | undefined => {\n if (product.variants?.[0].price) {\n return {\n price: product.variants?.[0].price,\n compareAtPrice: product.variants?.[0].compare_at_price ?? undefined,\n };\n }\n\n return;\n };\n\n const getPriceMarket = ():\n | {\n price: number;\n compareAtPrice: number | undefined;\n }\n | undefined => {\n const currencyCode = getCurrencyCode();\n if (!currencyCode) {\n return;\n }\n\n const presentmentPrice = product.variants?.[0].presentment_prices?.find(\n (item) => item.price.currency_code === currencyCode\n );\n if (!presentmentPrice) {\n return;\n }\n\n return {\n price: presentmentPrice.price.amount,\n compareAtPrice: presentmentPrice.compare_at_price?.amount ?? undefined,\n };\n };\n\n const getPrice = ():\n | {\n price: number;\n compareAtPrice: number | undefined;\n }\n | undefined => {\n return getPriceMarket() ?? getPriceDefault();\n };\n\n const priceData = getPrice();\n if (!priceData) {\n return {\n onSale: false,\n price: undefined,\n currencyCode: \"AUD\",\n compareAtPrice: undefined,\n };\n }\n\n const currencyCode = getCurrencyCode();\n const onSale = Boolean(priceData.compareAtPrice && priceData.compareAtPrice > priceData.price);\n const priceAsCurrency = currency(priceData.price);\n const compareAtPriceAsCurrency = priceData.compareAtPrice ? currency(priceData.compareAtPrice) : undefined;\n\n return {\n onSale: onSale,\n price: priceAsCurrency,\n compareAtPrice: compareAtPriceAsCurrency,\n formattedPrice: formatPrice(priceAsCurrency, currencyCode),\n formattedCompareAtPrice: compareAtPriceAsCurrency\n ? formatPrice(compareAtPriceAsCurrency, currencyCode)\n : undefined,\n currencyCode: currencyCode,\n };\n }, [product, reactifySearchContext.options.market, reactifySearchContext.config.markets]);\n\n return value;\n};\n\nconst formatPrice = (price: currency, currencyCode: string): string => {\n let priceString = new Intl.NumberFormat(\"en-AU\", {\n style: \"currency\",\n currency: currencyCode,\n }).format(price.value);\n\n if (\"AUD\" === currencyCode) {\n priceString = `AU ${priceString}`;\n }\n\n return priceString;\n};\n"]}
1
+ {"version":3,"file":"useProductPrice.js","sourceRoot":"","sources":["../../../src/hooks/useProductPrice.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport currency from \"currency.js\";\n\nimport { ElasticProduct } from \"../types/elastic\";\nimport { useReactifySearchContext } from \"./useReactifySearchContext\";\n\nexport type UseProductPrice = {\n price?: currency;\n onSale: boolean;\n currencyCode: string;\n compareAtPrice?: currency;\n formattedPrice?: string;\n formattedCompareAtPrice?: string;\n};\n\nexport const useProductPrice = (product: ElasticProduct): UseProductPrice => {\n const reactifySearchContext = useReactifySearchContext();\n\n const value = React.useMemo<UseProductPrice>(() => {\n const getCurrencyCode = (): string => {\n const currencyCode = product.presentment_price_ranges?.min_variant_price[0].currency_code ?? \"AUD\";\n const currencyCodeMarket = reactifySearchContext.config.markets.find((market) => market.id === reactifySearchContext.options.market)?.currencyCode;\n \n return currencyCodeMarket ?? currencyCode;\n }\n \n const getPriceDefault = (): {\n price: number;\n compareAtPrice: number | undefined;\n } | undefined => {\n if (product.variants?.[0].price) {\n return {\n price: product.variants?.[0].price,\n compareAtPrice: product.variants?.[0].compare_at_price ?? undefined,\n };\n }\n \n return;\n }\n \n const getPriceMarket = (): {\n price: number;\n compareAtPrice: number | undefined;\n } | undefined => {\n const currencyCode = getCurrencyCode();\n if (!currencyCode) {\n return;\n }\n \n const presentmentPrice = product.variants?.[0].presentment_prices?.find((item) => item.price.currency_code === currencyCode);\n if (!presentmentPrice) {\n return;\n }\n \n return {\n price: presentmentPrice.price.amount,\n compareAtPrice: presentmentPrice.compare_at_price?.amount ?? undefined,\n };\n };\n \n const getPrice = (): {\n price: number;\n compareAtPrice: number | undefined;\n } | undefined => {\n return getPriceMarket() ?? getPriceDefault();\n }\n\n const priceData = getPrice();\n if (!priceData) {\n return {\n onSale: false,\n price: undefined,\n currencyCode: \"AUD\",\n compareAtPrice: undefined,\n };\n }\n\n const currencyCode = getCurrencyCode();\n const onSale = Boolean(priceData.compareAtPrice && priceData.compareAtPrice > priceData.price);\n const priceAsCurrency = currency(priceData.price);\n const compareAtPriceAsCurrency = priceData.compareAtPrice ? currency(priceData.compareAtPrice) : undefined;\n\n return {\n onSale: onSale,\n price: priceAsCurrency,\n compareAtPrice: compareAtPriceAsCurrency,\n formattedPrice: formatPrice(priceAsCurrency, currencyCode),\n formattedCompareAtPrice: compareAtPriceAsCurrency ? formatPrice(compareAtPriceAsCurrency, currencyCode) : undefined,\n currencyCode: currencyCode,\n }\n }, [product, reactifySearchContext.options.market, reactifySearchContext.config.markets]);\n\n return value;\n};\n\nconst formatPrice = (price: currency, currencyCode: string): string => {\n let priceString = new Intl.NumberFormat(\"en-AU\", {\n style: \"currency\",\n currency: currencyCode,\n }).format(price.value);\n\n if (\"AUD\" === currencyCode) {\n priceString = `AU ${priceString}`;\n }\n\n return priceString;\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { Config, ConfigCuration, ConfigRedirect, ReactivesearchResultProps } from "../types";
2
+ import { Config, ConfigCuration, ConfigRedirect, ReactivesearchResultProps } from "../types";
3
3
  export type ReactifySearchMode = "search" | "collection" | "instant-search";
4
4
  export declare const ReactifySearchContext: React.Context<{
5
5
  config: Config;
@@ -1 +1 @@
1
- {"version":3,"file":"useReactifySearchContext.js","sourceRoot":"","sources":["../../../src/hooks/useReactifySearchContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAK7B,QAAA,qBAAqB,GAAG,eAAK,CAAC,aAAa,CAuDtD,SAAS,CAAC,CAAC;AAEN,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,6BAAqB,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC","sourcesContent":["import React, { useContext } from \"react\";\nimport type { Config, ConfigCuration, ConfigRedirect, ReactivesearchResultProps } from \"../types\";\n\nexport type ReactifySearchMode = \"search\" | \"collection\" | \"instant-search\";\n\nexport const ReactifySearchContext = React.createContext<\n | {\n config: Config;\n options: {\n clientId: string;\n mode: ReactifySearchMode;\n index: string;\n shopifyPermanentDomain: string;\n market?: string;\n filtersHandle?: string;\n credentials?: string;\n onRedirect?: (type: \"redirect\" | \"search\", url: string) => void;\n theme: Record<string, unknown>;\n additionalComponentIds?: Array<string>;\n includeFields?: Array<string>;\n excludeFields?: Array<string>;\n query?: Record<string, string>;\n configBaseUrl?: string;\n devMode: boolean;\n preload?: {\n config: Config;\n state: unknown;\n };\n } & (\n | {\n mode: \"search\";\n }\n | {\n mode: \"collection\";\n collectionHandle: string;\n }\n | {\n mode: \"instant-search\";\n }\n );\n search: {\n searchTerm: string;\n setSearchTerm: React.Dispatch<React.SetStateAction<string>>;\n showInstantSearchResults: boolean;\n setShowInstantSearchResults: React.Dispatch<React.SetStateAction<boolean>>;\n searchRedirect: ConfigRedirect | undefined;\n };\n sortby: {\n sortOption: string;\n setSortOption: React.Dispatch<React.SetStateAction<string>>;\n };\n results: {\n results: ReactivesearchResultProps[\"data\"];\n setResults: React.Dispatch<React.SetStateAction<ReactivesearchResultProps[\"data\"]>>;\n resultStats?: ReactivesearchResultProps[\"resultStats\"];\n setResultStats: React.Dispatch<React.SetStateAction<ReactivesearchResultProps[\"resultStats\"] | undefined>>;\n };\n curation: ConfigCuration | undefined;\n }\n | undefined\n>(undefined);\n\nexport const useReactifySearchContext = () => {\n const context = useContext(ReactifySearchContext);\n if (!context) {\n throw new Error(\"useReactifySearchContext must be used within a ReactifySearchProvider\");\n }\n return context;\n};\n"]}
1
+ {"version":3,"file":"useReactifySearchContext.js","sourceRoot":"","sources":["../../../src/hooks/useReactifySearchContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAA0C;AAM7B,QAAA,qBAAqB,GAAG,eAAK,CAAC,aAAa,CAuDtD,SAAS,CAAC,CAAC;AAEN,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,6BAAqB,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,wBAAwB,4BAMnC","sourcesContent":["import React, { useContext } from \"react\";\n\nimport { Config, ConfigCuration, ConfigRedirect, ReactivesearchResultProps } from \"../types\";\n\nexport type ReactifySearchMode = \"search\" | \"collection\" | \"instant-search\";\n\nexport const ReactifySearchContext = React.createContext<\n | {\n config: Config;\n options: {\n clientId: string;\n mode: ReactifySearchMode;\n index: string;\n shopifyPermanentDomain: string;\n market?: string;\n filtersHandle?: string;\n credentials?: string;\n onRedirect?: (type: \"redirect\" | \"search\", url: string) => void;\n theme: Record<string, unknown>;\n additionalComponentIds?: Array<string>;\n includeFields?: Array<string>;\n excludeFields?: Array<string>;\n query?: Record<string, string>;\n configBaseUrl?: string;\n devMode: boolean;\n preload?: {\n config: Config;\n state: unknown;\n };\n } & (\n | {\n mode: \"search\";\n }\n | {\n mode: \"collection\";\n collectionHandle: string;\n }\n | {\n mode: \"instant-search\";\n }\n );\n search: {\n searchTerm: string;\n setSearchTerm: React.Dispatch<React.SetStateAction<string>>;\n showInstantSearchResults: boolean;\n setShowInstantSearchResults: React.Dispatch<React.SetStateAction<boolean>>;\n searchRedirect: ConfigRedirect | undefined;\n };\n sortby: {\n sortOption: string;\n setSortOption: React.Dispatch<React.SetStateAction<string>>;\n };\n results: {\n results: ReactivesearchResultProps[\"data\"];\n setResults: React.Dispatch<React.SetStateAction<ReactivesearchResultProps[\"data\"]>>;\n resultStats?: ReactivesearchResultProps[\"resultStats\"];\n setResultStats: React.Dispatch<React.SetStateAction<ReactivesearchResultProps[\"resultStats\"] | undefined>>;\n };\n curation: ConfigCuration | undefined;\n }\n | undefined\n>(undefined);\n\nexport const useReactifySearchContext = () => {\n const context = useContext(ReactifySearchContext);\n if (!context) {\n throw new Error(\"useReactifySearchContext must be used within a ReactifySearchProvider\");\n }\n return context;\n};\n"]}
@@ -1,4 +1,4 @@
1
- import type { ReactivesearchResultProps } from "../types";
1
+ import { ReactivesearchResultProps } from "../types";
2
2
  /** This hook must never be used to render results */
3
3
  export declare const useResults: () => {
4
4
  /** Equals true until first load has completed */
@@ -5,8 +5,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.useResults = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
- const useReactifySearchContext_1 = require("./useReactifySearchContext");
9
8
  const utility_1 = require("../utility");
9
+ const useReactifySearchContext_1 = require("./useReactifySearchContext");
10
10
  /** This hook must never be used to render results */
11
11
  const useResults = () => {
12
12
  const context = (0, useReactifySearchContext_1.useReactifySearchContext)();
@@ -21,7 +21,7 @@ const useResults = () => {
21
21
  };
22
22
  window.addEventListener(`@usereactify/search:${context.options.mode}:results:update`, handler);
23
23
  return () => window.removeEventListener(`@usereactify/search:${context.options.mode}:results:update`, handler);
24
- }, [context.options.mode]);
24
+ }, []);
25
25
  react_1.default.useEffect(() => {
26
26
  const handler = (event) => {
27
27
  setResultStats(event.detail);
@@ -31,13 +31,13 @@ const useResults = () => {
31
31
  }, [context.options.mode]);
32
32
  const handleSetResults = (value) => {
33
33
  const event = new CustomEvent(`@usereactify/search:${context.options.mode}:results:update`, {
34
- detail: value,
34
+ detail: value
35
35
  });
36
36
  window.dispatchEvent(event);
37
37
  };
38
38
  const handleSetResultStats = (value) => {
39
39
  const event = new CustomEvent(`@usereactify/search:${context.options.mode}:resultStats:update`, {
40
- detail: value,
40
+ detail: value
41
41
  });
42
42
  window.dispatchEvent(event);
43
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useResults.js","sourceRoot":"","sources":["../../../src/hooks/useResults.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yEAAsE;AAEtE,wCAAmC;AAEnC,qDAAqD;AAC9C,MAAM,UAAU,GAAG,GAWxB,EAAE;IACF,MAAM,OAAO,GAAG,IAAA,mDAAwB,GAAE,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAoC,EAAE,CAAC,CAAC;IACpF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,eAAK,CAAC,QAAQ,EAA4C,CAAC;IAEjG,MAAM,OAAO,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO,OAAO,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAA,KAAK,WAAW,CAAC;IAC7D,CAAC,EAAE,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAC,CAAC,CAAC;IAEnC,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,CAAC,KAAkC,EAAE,EAAE;YACrD,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAAE,OAAwB,CAAC,CAAC;QAEhH,OAAO,GAAG,EAAE,CACV,MAAM,CAAC,mBAAmB,CACxB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAC5D,OAAwB,CACzB,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3B,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,CAAC,KAAsC,EAAE,EAAE;YACzD,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,qBAAqB,EAAE,OAAwB,CAAC,CAAC;QAEpH,OAAO,GAAG,EAAE,CACV,MAAM,CAAC,mBAAmB,CACxB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,qBAAqB,EAChE,OAAwB,CACzB,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3B,MAAM,gBAAgB,GAAG,CAAC,KAAqB,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAiB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAAE;YAC1G,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,KAAyB,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,IAAI,WAAW,CAC3B,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,qBAAqB,EAChE;YACE,MAAM,EAAE,KAAK;SACd,CACF,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,eAAK,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,eAAK,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAErD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,WAAW;QACxB,cAAc,EAAE,oBAAoB;KACrC,CAAC;AACJ,CAAC,CAAC;AAzEW,QAAA,UAAU,cAyErB","sourcesContent":["import React from \"react\";\nimport { useReactifySearchContext } from \"./useReactifySearchContext\";\nimport type { ReactivesearchResultProps } from \"../types\";\nimport { debug } from \"../utility\";\n\n/** This hook must never be used to render results */\nexport const useResults = (): {\n /** Equals true until first load has completed */\n loading: boolean;\n /** All of the current results */\n results: ReactivesearchResultProps[\"data\"];\n /** Function for setting the current results */\n setResults: (value: ReactivesearchResultProps[\"data\"]) => void;\n /** All of the current result stats */\n resultStats?: ReactivesearchResultProps[\"resultStats\"];\n /** Function for setting the current result stats */\n setResultStats: (value: ReactivesearchResultProps[\"resultStats\"]) => void;\n} => {\n const context = useReactifySearchContext();\n const [results, setResults] = React.useState<ReactivesearchResultProps[\"data\"]>([]);\n const [resultStats, setResultStats] = React.useState<ReactivesearchResultProps[\"resultStats\"]>();\n\n const loading = React.useMemo(() => {\n return typeof resultStats?.numberOfResults === \"undefined\";\n }, [resultStats?.numberOfResults]);\n\n React.useEffect(() => {\n const handler = (event: CustomEvent<typeof results>) => {\n setResults(event.detail);\n };\n window.addEventListener(`@usereactify/search:${context.options.mode}:results:update`, handler as EventListener);\n\n return () =>\n window.removeEventListener(\n `@usereactify/search:${context.options.mode}:results:update`,\n handler as EventListener\n );\n }, [context.options.mode]);\n\n React.useEffect(() => {\n const handler = (event: CustomEvent<typeof resultStats>) => {\n setResultStats(event.detail);\n };\n window.addEventListener(`@usereactify/search:${context.options.mode}:resultStats:update`, handler as EventListener);\n\n return () =>\n window.removeEventListener(\n `@usereactify/search:${context.options.mode}:resultStats:update`,\n handler as EventListener\n );\n }, [context.options.mode]);\n\n const handleSetResults = (value: typeof results) => {\n const event = new CustomEvent<typeof results>(`@usereactify/search:${context.options.mode}:results:update`, {\n detail: value,\n });\n window.dispatchEvent(event);\n };\n\n const handleSetResultStats = (value: typeof resultStats) => {\n const event = new CustomEvent<typeof resultStats>(\n `@usereactify/search:${context.options.mode}:resultStats:update`,\n {\n detail: value,\n }\n );\n window.dispatchEvent(event);\n };\n\n debug.hook(\"useResults\", \"results\", results);\n debug.hook(\"useResults\", \"resultStats\", resultStats);\n\n return {\n loading: loading,\n results: results,\n setResults: handleSetResults,\n resultStats: resultStats,\n setResultStats: handleSetResultStats,\n };\n};\n"]}
1
+ {"version":3,"file":"useResults.js","sourceRoot":"","sources":["../../../src/hooks/useResults.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,wCAAmC;AACnC,yEAAsE;AAEtE,qDAAqD;AAC9C,MAAM,UAAU,GAAG,GAWxB,EAAE;IACF,MAAM,OAAO,GAAG,IAAA,mDAAwB,GAAE,CAAC;IAC3C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,eAAK,CAAC,QAAQ,CAE1C,EAAE,CAAC,CAAC;IACN,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GACjC,eAAK,CAAC,QAAQ,EAA4C,CAAC;IAE7D,MAAM,OAAO,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACjC,OAAO,OAAO,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAA,KAAK,WAAW,CAAC;IAC7D,CAAC,EAAE,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,eAAe,CAAC,CAAC,CAAC;IAEnC,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,CACd,KAAkC,EAClC,EAAE;YACF,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CACrB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAC5D,OAAwB,CACzB,CAAC;QAEF,OAAO,GAAG,EAAE,CACV,MAAM,CAAC,mBAAmB,CACxB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAC5D,OAAwB,CACzB,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,CACd,KAAsC,EACtC,EAAE;YACF,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CACrB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,qBAAqB,EAChE,OAAwB,CACzB,CAAC;QAEF,OAAO,GAAG,EAAE,CACV,MAAM,CAAC,mBAAmB,CACxB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,qBAAqB,EAChE,OAAwB,CACzB,CAAC;IACN,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3B,MAAM,gBAAgB,GAAG,CAAC,KAAqB,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAiB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,iBAAiB,EAAE;YAC1G,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,CAAC,KAAyB,EAAE,EAAE;QACzD,MAAM,KAAK,GAAG,IAAI,WAAW,CAAqB,uBAAuB,OAAO,CAAC,OAAO,CAAC,IAAI,qBAAqB,EAAE;YAClH,MAAM,EAAE,KAAK;SACd,CAAC,CAAC;QACH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC,CAAA;IAED,eAAK,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7C,eAAK,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAErD,OAAO;QACL,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,gBAAgB;QAC5B,WAAW,EAAE,WAAW;QACxB,cAAc,EAAE,oBAAoB;KACrC,CAAC;AACJ,CAAC,CAAC;AAnFW,QAAA,UAAU,cAmFrB","sourcesContent":["import React from \"react\";\n\nimport { ReactivesearchResultProps } from \"../types\";\nimport { debug } from \"../utility\";\nimport { useReactifySearchContext } from \"./useReactifySearchContext\";\n\n/** This hook must never be used to render results */\nexport const useResults = (): {\n /** Equals true until first load has completed */\n loading: boolean;\n /** All of the current results */\n results: ReactivesearchResultProps[\"data\"];\n /** Function for setting the current results */\n setResults: (value: ReactivesearchResultProps[\"data\"]) => void;\n /** All of the current result stats */\n resultStats?: ReactivesearchResultProps[\"resultStats\"];\n /** Function for setting the current result stats */\n setResultStats: (value: ReactivesearchResultProps[\"resultStats\"]) => void;\n} => {\n const context = useReactifySearchContext();\n const [results, setResults] = React.useState<\n ReactivesearchResultProps[\"data\"]\n >([]);\n const [resultStats, setResultStats] =\n React.useState<ReactivesearchResultProps[\"resultStats\"]>();\n\n const loading = React.useMemo(() => {\n return typeof resultStats?.numberOfResults === \"undefined\";\n }, [resultStats?.numberOfResults]);\n\n React.useEffect(() => {\n const handler = (\n event: CustomEvent<typeof results>\n ) => {\n setResults(event.detail);\n };\n window.addEventListener(\n `@usereactify/search:${context.options.mode}:results:update`,\n handler as EventListener\n );\n\n return () =>\n window.removeEventListener(\n `@usereactify/search:${context.options.mode}:results:update`,\n handler as EventListener\n );\n }, []);\n\n React.useEffect(() => {\n const handler = (\n event: CustomEvent<typeof resultStats>\n ) => {\n setResultStats(event.detail);\n };\n window.addEventListener(\n `@usereactify/search:${context.options.mode}:resultStats:update`,\n handler as EventListener\n );\n\n return () =>\n window.removeEventListener(\n `@usereactify/search:${context.options.mode}:resultStats:update`,\n handler as EventListener\n );\n }, [context.options.mode]);\n\n const handleSetResults = (value: typeof results) => {\n const event = new CustomEvent<typeof results>(`@usereactify/search:${context.options.mode}:results:update`, {\n detail: value\n });\n window.dispatchEvent(event);\n }\n\n const handleSetResultStats = (value: typeof resultStats) => {\n const event = new CustomEvent<typeof resultStats>(`@usereactify/search:${context.options.mode}:resultStats:update`, {\n detail: value\n });\n window.dispatchEvent(event);\n }\n\n debug.hook(\"useResults\", \"results\", results);\n debug.hook(\"useResults\", \"resultStats\", resultStats);\n\n return {\n loading: loading,\n results: results,\n setResults: handleSetResults,\n resultStats: resultStats,\n setResultStats: handleSetResultStats,\n };\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { ConfigRedirect, ElasticProduct } from "../types";
2
+ import { ConfigRedirect, ElasticProduct } from "../types";
3
3
  export declare const useSearch: () => {
4
4
  /** The current search term */
5
5
  searchTerm: string;
@@ -26,12 +26,10 @@ const useSearch = () => {
26
26
  method: "POST",
27
27
  body: JSON.stringify(searchBody),
28
28
  headers: searchHeaders,
29
- })
30
- .then((response) => {
29
+ }).then((response) => {
31
30
  utility_1.debug.log("useSearch", "submitSearchQuery[status]", response.status);
32
31
  return response.json();
33
- })
34
- .catch((error) => {
32
+ }).catch((error) => {
35
33
  utility_1.debug.log("useSearch", "submitSearchQuery[error]", error);
36
34
  return error;
37
35
  });
@@ -52,13 +50,16 @@ const useSearch = () => {
52
50
  if (!searchTerm) {
53
51
  return;
54
52
  }
55
- const redirect = config.redirects.find((redirect) => redirect.query.trim().toLowerCase() === searchTerm.trim().toLowerCase());
53
+ const redirect = config.redirects.find((redirect) => redirect.query.trim().toLowerCase() ===
54
+ searchTerm.trim().toLowerCase());
56
55
  if (redirect) {
57
56
  utility_1.debug.log("useSearch", "submitSearchTerm[redirect]", redirect);
58
57
  }
59
58
  search.setShowInstantSearchResults(false);
60
59
  if (options.onRedirect) {
61
- options.onRedirect(redirect ? "redirect" : "search", redirect ? redirect.url : `/search?q=${encodeURIComponent(searchTerm)}`);
60
+ options.onRedirect(redirect ? "redirect" : "search", redirect
61
+ ? redirect.url
62
+ : `/search?q=${encodeURIComponent(searchTerm)}`);
62
63
  }
63
64
  else if (redirect) {
64
65
  window.location.href = redirect.url;
@@ -66,11 +67,11 @@ const useSearch = () => {
66
67
  else {
67
68
  window.location.href = `/search?q=${encodeURIComponent(searchTerm)}`;
68
69
  }
69
- }, [search.searchTerm, config.redirects.find, options.onRedirect, search.setShowInstantSearchResults]);
70
+ }, [search.searchTerm]);
70
71
  const handleSetSearchTerm = react_1.default.useCallback((searchTerm = "") => {
71
72
  utility_1.debug.log("useSearch", "setSearchTerm[searchTerm]", searchTerm);
72
73
  search.setSearchTerm(searchTerm);
73
- }, [search.setSearchTerm]);
74
+ }, [search.searchTerm]);
74
75
  return {
75
76
  searchTerm: search.searchTerm,
76
77
  setSearchTerm: handleSetSearchTerm,
@@ -1 +1 @@
1
- {"version":3,"file":"useSearch.js","sourceRoot":"","sources":["../../../src/hooks/useSearch.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useReactifySearchContext } from \"../hooks\";\nimport type { ConfigRedirect, ElasticProduct } from \"../types\";\nimport { debug } from \"../utility\";\n\nexport const useSearch = (): {\n /** The current search term */\n searchTerm: string;\n /** Function for changing the current search term */\n setSearchTerm: (searchTerm?: string) => void;\n /** Function for navigating to the search page, includes logic for redirects */\n submitSearchTerm: (searchTerm?: string) => void;\n /** Function for retrieving search results for an opensearch query */\n submitSearchQuery: (\n searchBody: any,\n searchHeaders: Record<string, string>\n ) => Promise<{\n results: Array<ElasticProduct>;\n resultStats: {\n time: number;\n numberOfResults: number;\n displayedResults: number;\n };\n }>;\n /** Used to determine if instant search results should be displayed */\n showInstantSearchResults: boolean;\n /** Used to manually set the \"showInstantSearchResults\" value */\n setShowInstantSearchResults: React.Dispatch<React.SetStateAction<boolean>>;\n /** Contains any matching redirect for the current search term */\n searchRedirect: ConfigRedirect | undefined;\n} => {\n const { options, config, search } = useReactifySearchContext();\n\n const handleSubmitSearchQuery = React.useCallback<ReturnType<typeof useSearch>[\"submitSearchQuery\"]>(\n async (searchBody, searchHeaders) => {\n debug.log(\"useSearch\", \"submitSearchQuery[body]\", searchBody);\n debug.log(\"useSearch\", \"submitSearchQuery[headers]\", searchHeaders);\n\n const response = await fetch(`${config.endpoint}/${config.index}/_search`, {\n method: \"POST\",\n body: JSON.stringify(searchBody),\n headers: searchHeaders,\n })\n .then((response) => {\n debug.log(\"useSearch\", \"submitSearchQuery[status]\", response.status);\n\n return response.json();\n })\n .catch((error) => {\n debug.log(\"useSearch\", \"submitSearchQuery[error]\", error);\n\n return error;\n });\n\n debug.log(\"useSearch\", \"submitSearchQuery[response]\", response);\n\n const value: Awaited<ReturnType<ReturnType<typeof useSearch>[\"submitSearchQuery\"]>> = {\n results: response.hits?.hits?.map((item: { _source: ElasticProduct }) => item._source) ?? [],\n resultStats: {\n time: response.took ?? NaN,\n numberOfResults: response.hits?.total?.value ?? NaN,\n displayedResults: response.hits?.hits?.length ?? NaN,\n },\n };\n\n debug.log(\"useSearch\", \"submitSearchQuery[value]\", value);\n\n return value;\n },\n [config.endpoint, config.index]\n );\n\n const handleSubmitSearchTerm = React.useCallback(\n (searchTerm: string = search.searchTerm) => {\n debug.log(\"useSearch\", \"submitSearchTerm[query]\", searchTerm);\n\n if (!searchTerm) {\n return;\n }\n\n const redirect = config.redirects.find(\n (redirect) => redirect.query.trim().toLowerCase() === searchTerm.trim().toLowerCase()\n );\n\n if (redirect) {\n debug.log(\"useSearch\", \"submitSearchTerm[redirect]\", redirect);\n }\n\n search.setShowInstantSearchResults(false);\n\n if (options.onRedirect) {\n options.onRedirect(\n redirect ? \"redirect\" : \"search\",\n redirect ? redirect.url : `/search?q=${encodeURIComponent(searchTerm)}`\n );\n } else if (redirect) {\n window.location.href = redirect.url;\n } else {\n window.location.href = `/search?q=${encodeURIComponent(searchTerm)}`;\n }\n },\n [search.searchTerm, config.redirects.find, options.onRedirect, search.setShowInstantSearchResults]\n );\n\n const handleSetSearchTerm = React.useCallback(\n (searchTerm: string = \"\") => {\n debug.log(\"useSearch\", \"setSearchTerm[searchTerm]\", searchTerm);\n\n search.setSearchTerm(searchTerm);\n },\n [search.setSearchTerm]\n );\n\n return {\n searchTerm: search.searchTerm,\n setSearchTerm: handleSetSearchTerm,\n submitSearchTerm: handleSubmitSearchTerm,\n submitSearchQuery: handleSubmitSearchQuery,\n showInstantSearchResults: !!search.showInstantSearchResults && !!search.searchTerm,\n setShowInstantSearchResults: search.setShowInstantSearchResults,\n searchRedirect: search.searchRedirect,\n };\n};\n"]}
1
+ {"version":3,"file":"useSearch.js","sourceRoot":"","sources":["../../../src/hooks/useSearch.ts"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\n\nimport { useReactifySearchContext } from \"../hooks\";\nimport { debug } from \"../utility\";\nimport { ConfigRedirect, ElasticProduct } from \"../types\";\n\n\nexport const useSearch = (): {\n /** The current search term */\n searchTerm: string;\n /** Function for changing the current search term */\n setSearchTerm: (searchTerm?: string) => void;\n /** Function for navigating to the search page, includes logic for redirects */\n submitSearchTerm: (searchTerm?: string) => void;\n /** Function for retrieving search results for an opensearch query */\n submitSearchQuery: (searchBody: any, searchHeaders: Record<string, string>) => Promise<{\n results: Array<ElasticProduct>;\n resultStats: {\n time: number;\n numberOfResults: number;\n displayedResults: number;\n };\n }>;\n /** Used to determine if instant search results should be displayed */\n showInstantSearchResults: boolean;\n /** Used to manually set the \"showInstantSearchResults\" value */\n setShowInstantSearchResults: React.Dispatch<React.SetStateAction<boolean>>;\n /** Contains any matching redirect for the current search term */\n searchRedirect: ConfigRedirect | undefined;\n} => {\n const { options, config, search } = useReactifySearchContext();\n\n const handleSubmitSearchQuery = React.useCallback<ReturnType<typeof useSearch>[\"submitSearchQuery\"]>(\n async (searchBody, searchHeaders) => {\n debug.log(\"useSearch\", \"submitSearchQuery[body]\", searchBody);\n debug.log(\"useSearch\", \"submitSearchQuery[headers]\", searchHeaders);\n \n const response = await fetch(`${config.endpoint}/${config.index}/_search`, {\n method: \"POST\",\n body: JSON.stringify(searchBody),\n headers: searchHeaders,\n }).then((response) => {\n debug.log(\"useSearch\", \"submitSearchQuery[status]\", response.status);\n \n return response.json();\n }).catch((error) => {\n debug.log(\"useSearch\", \"submitSearchQuery[error]\", error);\n\n return error;\n })\n\n debug.log(\"useSearch\", \"submitSearchQuery[response]\", response);\n\n const value: Awaited<ReturnType<ReturnType<typeof useSearch>[\"submitSearchQuery\"]>> = {\n results: response.hits?.hits?.map((item: { _source: ElasticProduct; }) => item._source) ?? [],\n resultStats: {\n time: response.took ?? NaN,\n numberOfResults: response.hits?.total?.value ?? NaN,\n displayedResults: response.hits?.hits?.length ?? NaN,\n },\n };\n\n debug.log(\"useSearch\", \"submitSearchQuery[value]\", value);\n\n return value;\n },\n [config.endpoint, config.index]\n );\n\n const handleSubmitSearchTerm = React.useCallback(\n (searchTerm: string = search.searchTerm) => {\n debug.log(\"useSearch\", \"submitSearchTerm[query]\", searchTerm);\n\n if (!searchTerm) {\n return;\n }\n\n const redirect = config.redirects.find(\n (redirect) =>\n redirect.query.trim().toLowerCase() ===\n searchTerm.trim().toLowerCase()\n );\n\n if (redirect) {\n debug.log(\"useSearch\", \"submitSearchTerm[redirect]\", redirect);\n }\n\n search.setShowInstantSearchResults(false);\n\n if (options.onRedirect) {\n options.onRedirect(\n redirect ? \"redirect\" : \"search\",\n redirect\n ? redirect.url\n : `/search?q=${encodeURIComponent(searchTerm)}`\n );\n } else if (redirect) {\n window.location.href = redirect.url;\n } else {\n window.location.href = `/search?q=${encodeURIComponent(searchTerm)}`;\n }\n },\n [search.searchTerm]\n );\n\n const handleSetSearchTerm = React.useCallback(\n (searchTerm: string = \"\") => {\n debug.log(\"useSearch\", \"setSearchTerm[searchTerm]\", searchTerm);\n\n search.setSearchTerm(searchTerm);\n },\n [search.searchTerm]\n );\n\n return {\n searchTerm: search.searchTerm,\n setSearchTerm: handleSetSearchTerm,\n submitSearchTerm: handleSubmitSearchTerm,\n submitSearchQuery: handleSubmitSearchQuery,\n showInstantSearchResults: !!search.showInstantSearchResults && !!search.searchTerm,\n setShowInstantSearchResults: search.setShowInstantSearchResults,\n searchRedirect: search.searchRedirect,\n };\n};\n"]}
@@ -1,4 +1,4 @@
1
- import type { ConfigSort } from "../types";
1
+ import { ConfigSort } from "../types";
2
2
  export declare const useSortBy: () => {
3
3
  /** The currently selected sort option */
4
4
  sortOption?: ConfigSort;
@@ -46,7 +46,7 @@ const useSortBy = () => {
46
46
  type: sortOptionHandle,
47
47
  },
48
48
  });
49
- }, [reactifySearchContext.sortby.setSortOption, track]);
49
+ }, [typeof window === "undefined" ? "" : window.location.href]);
50
50
  return {
51
51
  sortOptions,
52
52
  sortOption,
@@ -1 +1 @@
1
- {"version":3,"file":"useSortBy.js","sourceRoot":"","sources":["../../../src/hooks/useSortBy.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,oCAAkE;AAElE,wCAAmC;AACnC,sDAAsE;AAE/D,MAAM,SAAS,GAAG,GAOvB,EAAE;IACF,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;IAEjC,MAAM,WAAW,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,IAAA,2BAAc,EAAC;YACpB,QAAQ,EAAE,qBAAqB,CAAC,OAAO;YACvC,MAAM,EAAE,qBAAqB,CAAC,MAAM;SACrC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,IAAA,0BAAa,EAAC;YACnB,QAAQ,EAAE,qBAAqB,CAAC,OAAO;YACvC,MAAM,EAAE,qBAAqB,CAAC,MAAM;YACpC,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU;SACpD,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE3G,MAAM,aAAa,GAAG,eAAK,CAAC,WAAW,CACrC,CAAC,gBAAwB,EAAE,kBAAkB,GAAG,KAAK,EAAE,EAAE;QACvD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,eAAK,CAAC,GAAG,CAAC,WAAW,EAAE,iCAAiC,EAAE,gBAAgB,CAAC,CAAC;QAE5E,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,CAAC;YACJ,SAAS,EAAE,YAAY;YACvB,OAAO,EAAE;gBACP,IAAI,EAAE,gBAAgB;aACvB;SACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,CACpD,CAAC;IAEF,OAAO;QACL,WAAW;QACX,UAAU;QACV,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AA7DW,QAAA,SAAS,aA6DpB","sourcesContent":["import React from \"react\";\nimport { useAnalytics, useReactifySearchContext } from \"../hooks\";\nimport type { ConfigSort } from \"../types\";\nimport { debug } from \"../utility\";\nimport { getSortOption, getSortOptions } from \"../utility/sortOption\";\n\nexport const useSortBy = (): {\n /** The currently selected sort option */\n sortOption?: ConfigSort;\n /** All of the available sort options */\n sortOptions: Array<ConfigSort>;\n /** Function for changing the current sort option */\n setSortOption: (sortOptionHandle: string, ignoreHistoryState?: boolean) => void;\n} => {\n const reactifySearchContext = useReactifySearchContext();\n const { track } = useAnalytics();\n\n const sortOptions = React.useMemo(() => {\n return getSortOptions({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n });\n }, [reactifySearchContext.options, reactifySearchContext.config]);\n\n const sortOption = React.useMemo(() => {\n return getSortOption({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n sortOption: reactifySearchContext.sortby.sortOption,\n });\n }, [reactifySearchContext.options, reactifySearchContext.config, reactifySearchContext.sortby.sortOption]);\n\n const setSortOption = React.useCallback(\n (sortOptionHandle: string, ignoreHistoryState = false) => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n debug.log(\"useSortBy\", \"setSortOption[sortOptionHandle]\", sortOptionHandle);\n\n reactifySearchContext.sortby.setSortOption(sortOptionHandle);\n\n if (!ignoreHistoryState) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(\"sort\")) {\n url.searchParams.set(\"sort\", sortOptionHandle);\n } else {\n url.searchParams.append(\"sort\", sortOptionHandle);\n }\n window.history.pushState({}, \"\", url.toString());\n }\n\n track({\n eventName: \"sortChange\",\n payload: {\n type: sortOptionHandle,\n },\n });\n },\n [reactifySearchContext.sortby.setSortOption, track]\n );\n\n return {\n sortOptions,\n sortOption,\n setSortOption,\n };\n};\n"]}
1
+ {"version":3,"file":"useSortBy.js","sourceRoot":"","sources":["../../../src/hooks/useSortBy.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,oCAAkE;AAClE,wCAAmC;AACnC,sDAAsE;AAE/D,MAAM,SAAS,GAAG,GAUvB,EAAE;IACF,MAAM,qBAAqB,GAAG,IAAA,gCAAwB,GAAE,CAAC;IACzD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAA,oBAAY,GAAE,CAAC;IAEjC,MAAM,WAAW,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,IAAA,2BAAc,EAAC;YACpB,QAAQ,EAAE,qBAAqB,CAAC,OAAO;YACvC,MAAM,EAAE,qBAAqB,CAAC,MAAM;SACrC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAElE,MAAM,UAAU,GAAG,eAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACpC,OAAO,IAAA,0BAAa,EAAC;YACnB,QAAQ,EAAE,qBAAqB,CAAC,OAAO;YACvC,MAAM,EAAE,qBAAqB,CAAC,MAAM;YACpC,UAAU,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU;SACpD,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAE3G,MAAM,aAAa,GAAG,eAAK,CAAC,WAAW,CACrC,CAAC,gBAAwB,EAAE,kBAAkB,GAAG,KAAK,EAAE,EAAE;QACvD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,eAAK,CAAC,GAAG,CACP,WAAW,EACX,iCAAiC,EACjC,gBAAgB,CACjB,CAAC;QAEF,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;QAE7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnD,CAAC;QAED,KAAK,CAAC;YACJ,SAAS,EAAE,YAAY;YACvB,OAAO,EAAE;gBACP,IAAI,EAAE,gBAAgB;aACvB;SACF,CAAC,CAAC;IACL,CAAC,EACD,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC5D,CAAC;IAEF,OAAO;QACL,WAAW;QACX,UAAU;QACV,aAAa;KACd,CAAC;AACJ,CAAC,CAAC;AApEW,QAAA,SAAS,aAoEpB","sourcesContent":["import React from \"react\";\n\nimport { ConfigSort } from \"../types\";\nimport { useAnalytics, useReactifySearchContext } from \"../hooks\";\nimport { debug } from \"../utility\";\nimport { getSortOption, getSortOptions } from \"../utility/sortOption\";\n\nexport const useSortBy = (): {\n /** The currently selected sort option */\n sortOption?: ConfigSort;\n /** All of the available sort options */\n sortOptions: Array<ConfigSort>;\n /** Function for changing the current sort option */\n setSortOption: (\n sortOptionHandle: string,\n ignoreHistoryState?: boolean\n ) => void;\n} => {\n const reactifySearchContext = useReactifySearchContext();\n const { track } = useAnalytics();\n\n const sortOptions = React.useMemo(() => {\n return getSortOptions({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n });\n }, [reactifySearchContext.options, reactifySearchContext.config]);\n\n const sortOption = React.useMemo(() => {\n return getSortOption({\n provider: reactifySearchContext.options,\n config: reactifySearchContext.config,\n sortOption: reactifySearchContext.sortby.sortOption,\n })\n }, [reactifySearchContext.options, reactifySearchContext.config, reactifySearchContext.sortby.sortOption]);\n\n const setSortOption = React.useCallback(\n (sortOptionHandle: string, ignoreHistoryState = false) => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n debug.log(\n \"useSortBy\",\n \"setSortOption[sortOptionHandle]\",\n sortOptionHandle\n );\n\n reactifySearchContext.sortby.setSortOption(sortOptionHandle);\n\n if (!ignoreHistoryState) {\n const url = new URL(window.location.href);\n if (url.searchParams.has(\"sort\")) {\n url.searchParams.set(\"sort\", sortOptionHandle);\n } else {\n url.searchParams.append(\"sort\", sortOptionHandle);\n }\n window.history.pushState({}, \"\", url.toString());\n }\n\n track({\n eventName: \"sortChange\",\n payload: {\n type: sortOptionHandle,\n },\n });\n },\n [typeof window === \"undefined\" ? \"\" : window.location.href]\n );\n\n return {\n sortOptions,\n sortOption,\n setSortOption,\n };\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,uCAAkC;AAClC,mEAAkC;AAElC,eAAK,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,sBAAG,CAAC,IAAI,KAAK,sBAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAEpD,+CAA6B;AAC7B,0CAAwB;AACxB,0CAAwB;AACxB,4CAA0B","sourcesContent":["import { debug } from \"./utility\";\nimport pkg from \"../package.json\";\n\ndebug.log(\"package\", `${pkg.name} v${pkg.version}`);\n\nexport * from \"./components\";\nexport * from \"./hooks\";\nexport * from \"./types\";\nexport * from \"./utility\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,uCAAkC;AAClC,mEAAkC;AAElC,eAAK,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,sBAAG,CAAC,IAAI,KAAK,sBAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAEpD,+CAA6B;AAC7B,0CAAwB;AACxB,0CAAwB;AACxB,4CAA0B","sourcesContent":["import { debug } from \"./utility\";\nimport pkg from \"../package.json\";\n\ndebug.log(\"package\", `${pkg.name} v${pkg.version}`);\n\nexport * from \"./components\";\nexport * from \"./hooks\";\nexport * from \"./types\";\nexport * from \"./utility\";"]}
@@ -1,4 +1,4 @@
1
- import type { Antonym, Callout, Curation, FilterFacet, FilterGroup, Market, MerchandisingCalloutAutofillBehaviour, Redirect, Relevance, SearchableField, Sort, Synonym } from "./firestore";
1
+ import { Antonym, Callout, Curation, FilterFacet, FilterGroup, Market, MerchandisingCalloutAutofillBehaviour, Redirect, Relevance, SearchableField, Sort, Synonym } from "./firestore";
2
2
  export type Config = {
3
3
  index: string;
4
4
  endpoint: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n Antonym,\n Callout,\n Curation,\n FilterFacet,\n FilterGroup,\n Market,\n MerchandisingCalloutAutofillBehaviour,\n Redirect,\n Relevance,\n SearchableField,\n Sort,\n Synonym,\n} from \"./firestore\";\n\n// when exposed as config, most resources have the `enabled` and `keywords` attributes removed\n// curation boosting groupings and sortings both have a json encoded elastic query added to them\n\nexport type Config = {\n index: string;\n endpoint: string;\n cluster: string;\n version: string;\n key: string;\n cache: {\n enabled: boolean;\n seconds: number;\n };\n merchandising: {\n calloutAutofillBehaviour: MerchandisingCalloutAutofillBehaviour;\n };\n sort: Array<ConfigSort>;\n fields: Array<ConfigField>;\n searchableFields: Array<ConfigSeachableField>;\n filters: Array<ConfigFilter>;\n redirects: Array<ConfigRedirect>;\n curations: Array<ConfigCuration>;\n antonyms: Array<ConfigAntonym>;\n synonyms: Array<ConfigSynonym>;\n callouts: Array<ConfigCallout>;\n markets: Array<Market>;\n suggestions: {\n exclude: Array<string>;\n };\n sensors: {\n search: Array<unknown>;\n collection: Array<unknown>;\n };\n featureFlags: string[];\n};\n\nexport type ConfigAntonym = Omit<Antonym, \"enabled\">;\nexport type ConfigSynonym = Omit<Synonym, \"enabled\">;\nexport type ConfigCallout = Omit<Callout, \"enabled\">;\nexport type ConfigSort = Omit<Sort, \"enabled\">;\nexport type ConfigField = Omit<Relevance, \"enabled\">;\nexport type ConfigSeachableField = Omit<SearchableField, \"enabled\">;\nexport type ConfigRedirect = Omit<Redirect, \"enabled\" | \"keywords\">;\nexport type ConfigFilter = Omit<FilterGroup, \"enabled\" | \"keywords\"> & {\n options: Omit<FilterFacet, \"enabled\">[];\n};\nexport type ConfigFilterFacet = Omit<FilterFacet, \"enabled\">;\nexport type ConfigCuration = Omit<Curation, \"keywords\" | \"boosting\" | \"longRunningTask\" | \"callouts\"> & {\n boosting: {\n groupings: Array<NonNullable<NonNullable<Curation[\"boosting\"]>[\"groupings\"]>[0] & { query: string }>;\n sortings: Array<NonNullable<NonNullable<Curation[\"boosting\"]>[\"sortings\"]>[0] & { query: string }>;\n };\n};\n"]}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"","sourcesContent":["import {\n Antonym,\n Callout,\n Curation,\n FilterFacet,\n FilterGroup,\n Market,\n MerchandisingCalloutAutofillBehaviour,\n Redirect,\n Relevance,\n SearchableField,\n Sort,\n Synonym,\n} from \"./firestore\";\n\n// when exposed as config, most resources have the `enabled` and `keywords` attributes removed\n// curation boosting groupings and sortings both have a json encoded elastic query added to them\n\nexport type Config = {\n index: string;\n endpoint: string;\n cluster: string;\n version: string;\n key: string;\n cache: {\n enabled: boolean;\n seconds: number;\n };\n merchandising: {\n calloutAutofillBehaviour: MerchandisingCalloutAutofillBehaviour;\n };\n sort: Array<ConfigSort>;\n fields: Array<ConfigField>;\n searchableFields: Array<ConfigSeachableField>;\n filters: Array<ConfigFilter>;\n redirects: Array<ConfigRedirect>;\n curations: Array<ConfigCuration>;\n antonyms: Array<ConfigAntonym>;\n synonyms: Array<ConfigSynonym>;\n callouts: Array<ConfigCallout>;\n markets: Array<Market>;\n suggestions: {\n exclude: Array<string>;\n };\n sensors: {\n search: Array<unknown>;\n collection: Array<unknown>;\n };\n featureFlags: string[];\n};\n\nexport type ConfigAntonym = Omit<Antonym, \"enabled\">;\nexport type ConfigSynonym = Omit<Synonym, \"enabled\">;\nexport type ConfigCallout = Omit<Callout, \"enabled\">;\nexport type ConfigSort = Omit<Sort, \"enabled\">;\nexport type ConfigField = Omit<Relevance, \"enabled\">;\nexport type ConfigSeachableField = Omit<SearchableField, \"enabled\">;\nexport type ConfigRedirect = Omit<Redirect, \"enabled\" | \"keywords\">;\nexport type ConfigFilter = Omit<FilterGroup, \"enabled\" | \"keywords\"> & {\n options: Omit<FilterFacet, \"enabled\">[];\n};\nexport type ConfigFilterFacet = Omit<FilterFacet, \"enabled\">;\nexport type ConfigCuration = Omit<\n Curation,\n \"keywords\" | \"boosting\" | \"longRunningTask\" | \"callouts\"\n> & {\n boosting: {\n groupings: Array<\n NonNullable<NonNullable<Curation[\"boosting\"]>[\"groupings\"]>[0] & { query: string }\n >;\n sortings: Array<\n NonNullable<NonNullable<Curation[\"boosting\"]>[\"sortings\"]>[0] & { query: string }\n >;\n };\n};\n\n"]}
@@ -1,5 +1,5 @@
1
- import type { Callout } from "./firestore";
2
- import type { Maybe, MetafieldValueType, ProductVariantInventoryPolicy } from "./graphql";
1
+ import { Callout } from "./firestore";
2
+ import { Maybe, ProductVariantInventoryPolicy, MetafieldValueType } from "./graphql";
3
3
  export declare enum ElasticDocumentType {
4
4
  Callout = "callout",
5
5
  Product = "product"
@@ -217,12 +217,15 @@ export type ElasticBulkOperationUpdate = [
217
217
  doc_as_upsert?: true;
218
218
  }
219
219
  ];
220
- export type ElasticBulkOperationIndex = [{
221
- index: {
222
- _index: string;
223
- _id: string;
224
- };
225
- }, ElasticDocument];
220
+ export type ElasticBulkOperationIndex = [
221
+ {
222
+ index: {
223
+ _index: string;
224
+ _id: string;
225
+ };
226
+ },
227
+ ElasticDocument
228
+ ];
226
229
  export type ElasticBulkOperation = ElasticBulkOperationUpdate | ElasticBulkOperationIndex;
227
230
  export type ElasticSearchResult<T = ElasticDocument> = {
228
231
  hits: {
@@ -1 +1 @@
1
- {"version":3,"file":"elastic.js","sourceRoot":"","sources":["../../../src/types/elastic.ts"],"names":[],"mappings":";;;AAGA,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B;AAgPD,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EARW,eAAe,+BAAf,eAAe,QAQ1B","sourcesContent":["import type { Callout } from \"./firestore\";\nimport type { Maybe, MetafieldValueType, ProductVariantInventoryPolicy } from \"./graphql\";\n\nexport enum ElasticDocumentType {\n Callout = \"callout\",\n Product = \"product\",\n}\n\nexport interface ElasticDocumentBase {\n /** Elasticsearch score when explain is enabled */\n _score?: number;\n /** Elasticsearch explanation when explain is enabled */\n _explanation?: {\n value: number;\n description: string;\n details?: Array<{\n value: number;\n description: string;\n details?: any[];\n }>;\n };\n}\n\nexport type ElasticDocument = ElasticCallout | ElasticProduct;\n\nexport interface ElasticCallout extends ElasticDocumentBase {\n type: ElasticDocumentType.Callout;\n key: string;\n callout: Omit<Callout, \"keywords\">;\n /** elastic callouts are always published */\n published: true;\n /** elastic callouts are always attached to one curation */\n curations: [ElasticCuration] | [];\n}\n\nexport interface ElasticProduct extends ElasticDocumentBase {\n type: ElasticDocumentType.Product;\n /** the log id from which this product was last uploaded */\n lastLogId: string;\n /** legacy resource id */\n id: number;\n storefrontId: string;\n title: string;\n description: string;\n vendor: string;\n product_type: string;\n handle: string;\n url: string;\n tags: Array<string>;\n collection_titles: Array<string>;\n /** tag prefixes defined in tagKeys are split to their own attributes */\n [key: `tags_${string}`]: Array<string> | undefined;\n /** decimal number e.g. 99.95 */\n price_min: number;\n /** decimal number e.g. 99.95 */\n price_max: number;\n /** market specific price min, decimal number e.g. 99.95 */\n [key: `price_min_market_${number}`]: number;\n /** market specific price max, decimal number e.g. 99.95 */\n [key: `price_max_market_${number}`]: number;\n /** array of option names e.g. [\"Colour\", \"Size\"] */\n options: Array<string>;\n /** @todo it would be better to use ProductStatus directly, which has uppercase */\n status: \"active\" | \"archived\" | \"draft\";\n published: boolean;\n /** ISO 8601 datetime */\n published_at: Maybe<string>;\n /** ISO 8601 datetime */\n updated_at: string;\n /** ISO 8601 datetime */\n created_at: string;\n tracks_inventory: boolean;\n /** originalSrc URL for featured image */\n image: Maybe<string>;\n /** array of images (undefined if images are disabled in sync settings) */\n images?: Array<ElasticImage>;\n /** array of variants attached to product (undefined if variants are disabled in sync settings) */\n variants?: Array<ElasticVariant>;\n /** price ranges from presentment prices (undefined if presentment prices or variants are disabled in sync settings) */\n presentment_price_ranges?: {\n min_variant_price: Array<ElasticPresentmentPrice>;\n max_variant_price: Array<ElasticPresentmentPrice>;\n };\n /** array of variant skus (undefined if variants are disabled in sync settings) */\n variant_skus?: Array<string>;\n /** combined array of option values from all option types (undefined if variants are disabled in sync settings) */\n variant_options?: Array<string>;\n /** array of collections which this product belongs to (undefined if collections are disabled in sync settings) */\n collections?: Array<ElasticCollection>;\n /** array of whitelisted metafields (undefined if metafields are disabled in sync settings) */\n metafields?: Array<ElasticMetafield>;\n /** decimal number e.g. 99.95 (undefined if variants are disabled in sync settings) */\n discount_amount?: number;\n /** combined inventory for all variants (undefined if variants are disabled in sync settings) */\n inventory_total?: number;\n /** number of days since published, null if unpublished */\n published_days: Maybe<number>;\n /** collection of curations that this product is attached to */\n curations?: Array<ElasticCuration>;\n /** related products **/\n related?: Array<ElasticProductRelated>;\n}\n\nexport interface ElasticProductRelated {\n createdAt: string;\n description: string;\n featuredImage: {\n originalSrc: \"https://cdn.shopify.com/s/files/1/0614/3977/0777/p…71d6-e7fd-4f5f-aa99-c722e2832d01.jpg?v=1660776345\";\n };\n handle: string;\n id: string;\n images: Array<ElasticImage>;\n legacyResourceId: string;\n metafields?: Array<ElasticMetafield>;\n options: Array<{\n name: string;\n }>;\n priceRangeV2: {\n maxVariantPrice: {\n amount: string;\n };\n minVariantPrice: {\n amount: string;\n };\n };\n productType: string;\n publishedAt: string;\n status: \"ACTIVE\" | \"ARCHIVED\" | \"DRAFT\";\n storefrontId: string;\n tags: Array<string>;\n title: string;\n tracksInventory: boolean;\n updatedAt: string;\n variants: Array<ElasticVariant>;\n vendor: string;\n __typename: \"Product\";\n}\n\nexport interface ElasticVariant {\n /** legacy resource id */\n id: number;\n storefrontId: string;\n title: string;\n sku: Maybe<string>;\n barcode: Maybe<string>;\n /** array of presentment prices (undefined if presentment prices are disabled in sync settings) */\n presentment_prices?: Array<{\n price: ElasticPresentmentPrice;\n compare_at_price: Maybe<ElasticPresentmentPrice>;\n }>;\n /** decimal number e.g. 99.95 */\n price: number;\n /** decimal number e.g. 99.95 */\n compare_at_price: Maybe<number>;\n /** value string for option 1 e.g. Blue */\n option1: Maybe<string>;\n /** value string for option 2 e.g. Medium */\n option2: Maybe<string>;\n /** value string for option 3 */\n option3: Maybe<string>;\n /** sort position within the product */\n position: number;\n inventory_policy: ProductVariantInventoryPolicy;\n inventory_quantity: number;\n available: boolean;\n /** array of images (only available if this variant has been merged from another product and if images are enabled in sync settings) */\n images?: Array<ElasticImage>;\n}\n\nexport interface ElasticCollection {\n /** legacy resource id */\n id: number;\n storefrontId: string;\n handle: string;\n title: string;\n position: number;\n}\n\nexport interface ElasticMetafield {\n key: string;\n type: string;\n value: string;\n namespace: string;\n /**\n * Legacy valueType attribute which is no longer provided by Shopify. We still\n * populate this field to prevent any frontends breaking which rely on it.\n *\n * @see https://shopify.dev/apps/metafields/definitions/types\n */\n value_type: MetafieldValueType;\n}\n\nexport interface ElasticPresentmentPrice {\n /** decimal number e.g. 99.95 */\n amount: number;\n currency_code: string;\n}\n\nexport interface ElasticImage {\n /** originalSrc URL */\n src: string;\n /** alt text */\n alt: Maybe<string>;\n}\n\nexport interface ElasticCuration {\n id: string;\n hidden: boolean;\n position?: number;\n searchTerm?: string;\n collectionHandle?: string;\n}\n\n// non-exhaustive type for bulk request\n// https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-bulk.html\nexport type ElasticBulkOperationUpdate = [\n { update: { _index: string; _id: string } },\n {\n script?: {\n lang: \"painless\";\n source: string;\n params?: Record<string, any>;\n };\n upsert?: Partial<ElasticProduct>;\n scripted_upsert?: true;\n doc?: Partial<ElasticProduct>;\n doc_as_upsert?: true;\n },\n];\n\nexport type ElasticBulkOperationIndex = [{ index: { _index: string; _id: string } }, ElasticDocument];\n\nexport type ElasticBulkOperation = ElasticBulkOperationUpdate | ElasticBulkOperationIndex;\n\nexport type ElasticSearchResult<T = ElasticDocument> = {\n hits: {\n hits: Array<ElasticHit<T>>;\n };\n};\n\nexport type ElasticHit<T = ElasticDocument> = {\n _id: string;\n _source: T;\n _score: number | null;\n};\n\nexport enum ElasticDataType {\n Text = \"text\",\n Long = \"long\",\n Date = \"date\",\n Float = \"float\",\n Nested = \"nested\",\n Keyword = \"keyword\",\n Boolean = \"boolean\",\n}\n\nexport interface ElasticProperty {\n analyzer?: string;\n type: ElasticDataType;\n ignore_above?: number;\n fields?: { [key: string]: ElasticField };\n properties?: { [key: string]: ElasticProperty };\n}\n\nexport interface ElasticField {\n type: ElasticDataType;\n ignore_above?: number;\n}\n"]}
1
+ {"version":3,"file":"elastic.js","sourceRoot":"","sources":["../../../src/types/elastic.ts"],"names":[],"mappings":";;;AAOA,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B;AAqPD,IAAY,eAQX;AARD,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,gCAAa,CAAA;IACb,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;IACnB,sCAAmB,CAAA;AACrB,CAAC,EARW,eAAe,+BAAf,eAAe,QAQ1B","sourcesContent":["import { Callout } from \"./firestore\";\nimport {\n Maybe,\n ProductVariantInventoryPolicy,\n MetafieldValueType,\n} from \"./graphql\";\n\nexport enum ElasticDocumentType {\n Callout = \"callout\",\n Product = \"product\",\n}\n\nexport interface ElasticDocumentBase {\n /** Elasticsearch score when explain is enabled */\n _score?: number;\n /** Elasticsearch explanation when explain is enabled */\n _explanation?: {\n value: number;\n description: string;\n details?: Array<{\n value: number;\n description: string;\n details?: any[];\n }>;\n };\n}\n\nexport type ElasticDocument = ElasticCallout | ElasticProduct;\n\nexport interface ElasticCallout extends ElasticDocumentBase {\n type: ElasticDocumentType.Callout;\n key: string;\n callout: Omit<Callout, \"keywords\">;\n /** elastic callouts are always published */\n published: true;\n /** elastic callouts are always attached to one curation */\n curations: [ElasticCuration] | [];\n}\n\nexport interface ElasticProduct extends ElasticDocumentBase {\n type: ElasticDocumentType.Product;\n /** the log id from which this product was last uploaded */\n lastLogId: string;\n /** legacy resource id */\n id: number;\n storefrontId: string;\n title: string;\n description: string;\n vendor: string;\n product_type: string;\n handle: string;\n url: string;\n tags: Array<string>;\n collection_titles: Array<string>;\n /** tag prefixes defined in tagKeys are split to their own attributes */\n [key: `tags_${string}`]: Array<string> | undefined;\n /** decimal number e.g. 99.95 */\n price_min: number;\n /** decimal number e.g. 99.95 */\n price_max: number;\n /** market specific price min, decimal number e.g. 99.95 */\n [key: `price_min_market_${number}`]: number;\n /** market specific price max, decimal number e.g. 99.95 */\n [key: `price_max_market_${number}`]: number;\n /** array of option names e.g. [\"Colour\", \"Size\"] */\n options: Array<string>;\n /** @todo it would be better to use ProductStatus directly, which has uppercase */\n status: \"active\" | \"archived\" | \"draft\";\n published: boolean;\n /** ISO 8601 datetime */\n published_at: Maybe<string>;\n /** ISO 8601 datetime */\n updated_at: string;\n /** ISO 8601 datetime */\n created_at: string;\n tracks_inventory: boolean;\n /** originalSrc URL for featured image */\n image: Maybe<string>;\n /** array of images (undefined if images are disabled in sync settings) */\n images?: Array<ElasticImage>;\n /** array of variants attached to product (undefined if variants are disabled in sync settings) */\n variants?: Array<ElasticVariant>;\n /** price ranges from presentment prices (undefined if presentment prices or variants are disabled in sync settings) */\n presentment_price_ranges?: {\n min_variant_price: Array<ElasticPresentmentPrice>;\n max_variant_price: Array<ElasticPresentmentPrice>;\n };\n /** array of variant skus (undefined if variants are disabled in sync settings) */\n variant_skus?: Array<string>;\n /** combined array of option values from all option types (undefined if variants are disabled in sync settings) */\n variant_options?: Array<string>;\n /** array of collections which this product belongs to (undefined if collections are disabled in sync settings) */\n collections?: Array<ElasticCollection>;\n /** array of whitelisted metafields (undefined if metafields are disabled in sync settings) */\n metafields?: Array<ElasticMetafield>;\n /** decimal number e.g. 99.95 (undefined if variants are disabled in sync settings) */\n discount_amount?: number;\n /** combined inventory for all variants (undefined if variants are disabled in sync settings) */\n inventory_total?: number;\n /** number of days since published, null if unpublished */\n published_days: Maybe<number>;\n /** collection of curations that this product is attached to */\n curations?: Array<ElasticCuration>;\n /** related products **/\n related?: Array<ElasticProductRelated>;\n}\n\nexport interface ElasticProductRelated {\n createdAt: string;\n description: string;\n featuredImage: {\n originalSrc: \"https://cdn.shopify.com/s/files/1/0614/3977/0777/p…71d6-e7fd-4f5f-aa99-c722e2832d01.jpg?v=1660776345\";\n };\n handle: string;\n id: string;\n images: Array<ElasticImage>;\n legacyResourceId: string;\n metafields?: Array<ElasticMetafield>;\n options: Array<{\n name: string;\n }>;\n priceRangeV2: {\n maxVariantPrice: {\n amount: string;\n };\n minVariantPrice: {\n amount: string;\n };\n };\n productType: string;\n publishedAt: string;\n status: \"ACTIVE\" | \"ARCHIVED\" | \"DRAFT\";\n storefrontId: string;\n tags: Array<string>;\n title: string;\n tracksInventory: boolean;\n updatedAt: string;\n variants: Array<ElasticVariant>;\n vendor: string;\n __typename: \"Product\";\n}\n\nexport interface ElasticVariant {\n /** legacy resource id */\n id: number;\n storefrontId: string;\n title: string;\n sku: Maybe<string>;\n barcode: Maybe<string>;\n /** array of presentment prices (undefined if presentment prices are disabled in sync settings) */\n presentment_prices?: Array<{\n price: ElasticPresentmentPrice;\n compare_at_price: Maybe<ElasticPresentmentPrice>;\n }>;\n /** decimal number e.g. 99.95 */\n price: number;\n /** decimal number e.g. 99.95 */\n compare_at_price: Maybe<number>;\n /** value string for option 1 e.g. Blue */\n option1: Maybe<string>;\n /** value string for option 2 e.g. Medium */\n option2: Maybe<string>;\n /** value string for option 3 */\n option3: Maybe<string>;\n /** sort position within the product */\n position: number;\n inventory_policy: ProductVariantInventoryPolicy;\n inventory_quantity: number;\n available: boolean;\n /** array of images (only available if this variant has been merged from another product and if images are enabled in sync settings) */\n images?: Array<ElasticImage>;\n}\n\nexport interface ElasticCollection {\n /** legacy resource id */\n id: number;\n storefrontId: string;\n handle: string;\n title: string;\n position: number;\n}\n\nexport interface ElasticMetafield {\n key: string;\n type: string;\n value: string;\n namespace: string;\n /**\n * Legacy valueType attribute which is no longer provided by Shopify. We still\n * populate this field to prevent any frontends breaking which rely on it.\n *\n * @see https://shopify.dev/apps/metafields/definitions/types\n */\n value_type: MetafieldValueType;\n}\n\nexport interface ElasticPresentmentPrice {\n /** decimal number e.g. 99.95 */\n amount: number;\n currency_code: string;\n}\n\nexport interface ElasticImage {\n /** originalSrc URL */\n src: string;\n /** alt text */\n alt: Maybe<string>;\n}\n\nexport interface ElasticCuration {\n id: string;\n hidden: boolean;\n position?: number;\n searchTerm?: string;\n collectionHandle?: string;\n}\n\n// non-exhaustive type for bulk request\n// https://www.elastic.co/guide/en/elasticsearch/reference/7.x/docs-bulk.html\nexport type ElasticBulkOperationUpdate = [\n { update: { _index: string; _id: string } },\n {\n script?: {\n lang: \"painless\";\n source: string;\n params?: Record<string, any>;\n };\n upsert?: Partial<ElasticProduct>;\n scripted_upsert?: true;\n doc?: Partial<ElasticProduct>;\n doc_as_upsert?: true;\n }\n];\n\nexport type ElasticBulkOperationIndex = [\n { index: { _index: string; _id: string } },\n ElasticDocument\n];\n\nexport type ElasticBulkOperation =\n | ElasticBulkOperationUpdate\n | ElasticBulkOperationIndex;\n\nexport type ElasticSearchResult<T = ElasticDocument> = {\n hits: {\n hits: Array<ElasticHit<T>>;\n };\n};\n\nexport type ElasticHit<T = ElasticDocument> = {\n _id: string;\n _source: T;\n _score: number | null;\n};\n\nexport enum ElasticDataType {\n Text = \"text\",\n Long = \"long\",\n Date = \"date\",\n Float = \"float\",\n Nested = \"nested\",\n Keyword = \"keyword\",\n Boolean = \"boolean\",\n}\n\nexport interface ElasticProperty {\n analyzer?: string;\n type: ElasticDataType;\n ignore_above?: number;\n fields?: { [key: string]: ElasticField };\n properties?: { [key: string]: ElasticProperty };\n}\n\nexport interface ElasticField {\n type: ElasticDataType;\n ignore_above?: number;\n}\n"]}
@@ -1,4 +1,4 @@
1
- import type { ShopifyProduct, ShopifyProductImage } from "./shopify";
1
+ import { ShopifyProduct, ShopifyProductImage } from "./shopify";
2
2
  export interface ResourceDocument {
3
3
  id: string;
4
4
  keywords: Array<string>;
@@ -62,7 +62,7 @@ export declare const DefinedFieldType: {
62
62
  readonly Long: "long";
63
63
  readonly Boolean: "boolean";
64
64
  };
65
- export type DefinedFieldType = (typeof DefinedFieldType)[keyof typeof DefinedFieldType] | (string & {});
65
+ export type DefinedFieldType = typeof DefinedFieldType[keyof typeof DefinedFieldType] | (string & {});
66
66
  export interface DefinedField {
67
67
  label: string;
68
68
  name: string;
@@ -296,9 +296,9 @@ export interface SearchableField extends ResourceDocument {
296
296
  enabled: boolean;
297
297
  hidden?: boolean;
298
298
  points: number;
299
- maxEdits: number;
299
+ allowedMistakes: number;
300
300
  mistakePenaltyPercent: number;
301
- synonymEnabled: boolean;
301
+ synyonymEnabled: boolean;
302
302
  synonymPenaltyPercent: number;
303
303
  }
304
304
  export interface Boosting {
@@ -321,4 +321,4 @@ export declare const Operation: {
321
321
  readonly LessThan: "less than";
322
322
  readonly GreaterThan: "greater than";
323
323
  };
324
- export type Operation = (typeof Operation)[keyof typeof Operation];
324
+ export type Operation = typeof Operation[keyof typeof Operation];