@usereactify/search 5.0.0-beta.7 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/CHANGELOG.md +500 -0
  2. package/README.md +3 -21
  3. package/dist/package.json +3 -3
  4. package/dist/src/components/ClearAll/ClearAll.d.ts +8 -0
  5. package/dist/src/components/ClearAll/ClearAll.js +29 -0
  6. package/dist/src/components/ClearAll/ClearAll.js.map +1 -0
  7. package/dist/src/components/ClearAll/index.d.ts +1 -0
  8. package/dist/src/components/{ReactifySearchBase → ClearAll}/index.js +1 -1
  9. package/dist/src/components/ClearAll/index.js.map +1 -0
  10. package/dist/src/components/CustomComponent/CustomComponent.d.ts +4 -0
  11. package/dist/src/components/CustomComponent/CustomComponent.js +13 -0
  12. package/dist/src/components/CustomComponent/CustomComponent.js.map +1 -0
  13. package/dist/src/components/CustomComponent/index.d.ts +1 -0
  14. package/dist/src/components/CustomComponent/index.js +14 -0
  15. package/dist/src/components/CustomComponent/index.js.map +1 -0
  16. package/dist/src/components/Example/ExampleClearAll.d.ts +4 -0
  17. package/dist/src/components/Example/ExampleClearAll.js +12 -0
  18. package/dist/src/components/Example/ExampleClearAll.js.map +1 -0
  19. package/dist/src/components/Example/ExampleCustomComponent.d.ts +2 -0
  20. package/dist/src/components/Example/ExampleCustomComponent.js +36 -0
  21. package/dist/src/components/Example/ExampleCustomComponent.js.map +1 -0
  22. package/dist/src/components/Example/ExampleFilterList.d.ts +5 -0
  23. package/dist/src/components/Example/ExampleFilterList.js +81 -9
  24. package/dist/src/components/Example/ExampleFilterList.js.map +1 -1
  25. package/dist/src/components/Example/ExampleFilterRange.js +6 -11
  26. package/dist/src/components/Example/ExampleFilterRange.js.map +1 -1
  27. package/dist/src/components/Example/ExampleFilterSlider.js +8 -9
  28. package/dist/src/components/Example/ExampleFilterSlider.js.map +1 -1
  29. package/dist/src/components/Example/ExampleFilters.d.ts +4 -0
  30. package/dist/src/components/Example/{ExampleFilterStack.js → ExampleFilters.js} +6 -5
  31. package/dist/src/components/Example/ExampleFilters.js.map +1 -0
  32. package/dist/src/components/Example/ExampleFiltersActive.d.ts +4 -0
  33. package/dist/src/components/Example/ExampleFiltersActive.js +23 -0
  34. package/dist/src/components/Example/ExampleFiltersActive.js.map +1 -0
  35. package/dist/src/components/Example/ExampleHookUseFilters.d.ts +2 -0
  36. package/dist/src/components/Example/ExampleHookUseFilters.js +20 -0
  37. package/dist/src/components/Example/ExampleHookUseFilters.js.map +1 -0
  38. package/dist/src/components/Example/ExampleHookUseSearch.d.ts +2 -0
  39. package/dist/src/components/Example/ExampleHookUseSearch.js +22 -0
  40. package/dist/src/components/Example/ExampleHookUseSearch.js.map +1 -0
  41. package/dist/src/components/Example/ExampleHookUseSortBy.d.ts +2 -0
  42. package/dist/src/components/Example/ExampleHookUseSortBy.js +18 -0
  43. package/dist/src/components/Example/ExampleHookUseSortBy.js.map +1 -0
  44. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.d.ts +2 -0
  45. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.js +27 -0
  46. package/dist/src/components/Example/ExampleReactiveSearchProviderCollection.js.map +1 -0
  47. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.d.ts +2 -0
  48. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.js +27 -0
  49. package/dist/src/components/Example/ExampleReactiveSearchProviderInstantSearch.js.map +1 -0
  50. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.d.ts +2 -0
  51. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.js +27 -0
  52. package/dist/src/components/Example/ExampleReactiveSearchProviderSearch.js.map +1 -0
  53. package/dist/src/components/Example/ExampleResultCardCallout.js +4 -4
  54. package/dist/src/components/Example/ExampleResultCardCallout.js.map +1 -1
  55. package/dist/src/components/Example/ExampleResultCardProduct.js +6 -6
  56. package/dist/src/components/Example/ExampleResultCardProduct.js.map +1 -1
  57. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js +1 -1
  58. package/dist/src/components/Example/ExampleResultPaginationLoadMore.js.map +1 -1
  59. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js +3 -3
  60. package/dist/src/components/Example/ExampleResultPaginationNextPrev.js.map +1 -1
  61. package/dist/src/components/Example/ExampleResultPaginationNumbered.js +6 -6
  62. package/dist/src/components/Example/ExampleResultPaginationNumbered.js.map +1 -1
  63. package/dist/src/components/Example/ExampleResults.d.ts +2 -0
  64. package/dist/src/components/Example/ExampleResults.js +38 -0
  65. package/dist/src/components/Example/ExampleResults.js.map +1 -0
  66. package/dist/src/components/Example/ExampleSearch.d.ts +4 -0
  67. package/dist/src/components/Example/ExampleSearch.js +20 -0
  68. package/dist/src/components/Example/ExampleSearch.js.map +1 -0
  69. package/dist/src/components/Example/ExampleSortBy.d.ts +4 -0
  70. package/dist/src/components/Example/ExampleSortBy.js +13 -0
  71. package/dist/src/components/Example/ExampleSortBy.js.map +1 -0
  72. package/dist/src/components/Example/ExampleStats.d.ts +4 -0
  73. package/dist/src/components/Example/ExampleStats.js +15 -0
  74. package/dist/src/components/Example/ExampleStats.js.map +1 -0
  75. package/dist/src/components/Example/index.d.ts +12 -2
  76. package/dist/src/components/Example/index.js +12 -2
  77. package/dist/src/components/Example/index.js.map +1 -1
  78. package/dist/src/components/Filter/Filter.d.ts +9 -6
  79. package/dist/src/components/Filter/Filter.js +29 -29
  80. package/dist/src/components/Filter/Filter.js.map +1 -1
  81. package/dist/src/components/Filter/Filters.d.ts +7 -0
  82. package/dist/src/components/Filter/Filters.js +17 -0
  83. package/dist/src/components/Filter/Filters.js.map +1 -0
  84. package/dist/src/components/Filter/FiltersActive.d.ts +16 -0
  85. package/dist/src/components/Filter/FiltersActive.js +36 -0
  86. package/dist/src/components/Filter/FiltersActive.js.map +1 -0
  87. package/dist/src/components/Filter/index.d.ts +2 -1
  88. package/dist/src/components/Filter/index.js +2 -1
  89. package/dist/src/components/Filter/index.js.map +1 -1
  90. package/dist/src/components/{ReactifySearchBase/ReactifySearchBase.d.ts → ReactifySearchProvider/ReactifySearchProvider.d.ts} +6 -10
  91. package/dist/src/components/{ReactifySearchBase/ReactifySearchBase.js → ReactifySearchProvider/ReactifySearchProvider.js} +33 -29
  92. package/dist/src/components/ReactifySearchProvider/ReactifySearchProvider.js.map +1 -0
  93. package/dist/src/components/ReactifySearchProvider/index.d.ts +1 -0
  94. package/dist/src/components/ReactifySearchProvider/index.js +14 -0
  95. package/dist/src/components/ReactifySearchProvider/index.js.map +1 -0
  96. package/dist/src/components/Result/ResultCardCallout.d.ts +2 -4
  97. package/dist/src/components/Result/ResultCardCallout.js.map +1 -1
  98. package/dist/src/components/Result/ResultCardProduct.d.ts +2 -5
  99. package/dist/src/components/Result/ResultCardProduct.js.map +1 -1
  100. package/dist/src/components/Result/ResultPaginationLoadMore.d.ts +2 -2
  101. package/dist/src/components/Result/ResultPaginationLoadMore.js +1 -1
  102. package/dist/src/components/Result/ResultPaginationLoadMore.js.map +1 -1
  103. package/dist/src/components/Result/ResultPaginationNextPrev.d.ts +2 -2
  104. package/dist/src/components/Result/ResultPaginationNextPrev.js +1 -1
  105. package/dist/src/components/Result/ResultPaginationNextPrev.js.map +1 -1
  106. package/dist/src/components/Result/ResultPaginationNumbered.d.ts +2 -2
  107. package/dist/src/components/Result/ResultPaginationNumbered.js +1 -1
  108. package/dist/src/components/Result/ResultPaginationNumbered.js.map +1 -1
  109. package/dist/src/components/Result/{ResultStack.d.ts → Results.d.ts} +21 -13
  110. package/dist/src/components/Result/{ResultStack.js → Results.js} +45 -28
  111. package/dist/src/components/Result/Results.js.map +1 -0
  112. package/dist/src/components/Result/index.d.ts +1 -1
  113. package/dist/src/components/Result/index.js +1 -1
  114. package/dist/src/components/Result/index.js.map +1 -1
  115. package/dist/src/components/Search/Search.d.ts +7 -0
  116. package/dist/src/components/Search/Search.js +17 -0
  117. package/dist/src/components/Search/Search.js.map +1 -0
  118. package/dist/src/components/Search/index.d.ts +1 -1
  119. package/dist/src/components/Search/index.js +1 -1
  120. package/dist/src/components/Search/index.js.map +1 -1
  121. package/dist/src/components/Sensor/SensorCollection.js +2 -2
  122. package/dist/src/components/Sensor/SensorCollection.js.map +1 -1
  123. package/dist/src/components/Sensor/SensorInventoryAvailable.js +1 -1
  124. package/dist/src/components/Sensor/SensorInventoryAvailable.js.map +1 -1
  125. package/dist/src/components/Sensor/SensorSearch.js +7 -3
  126. package/dist/src/components/Sensor/SensorSearch.js.map +1 -1
  127. package/dist/src/components/Sensor/SensorSort.js +13 -13
  128. package/dist/src/components/Sensor/SensorSort.js.map +1 -1
  129. package/dist/src/components/Sensor/Sensors.d.ts +3 -0
  130. package/dist/src/components/Sensor/{SensorStack.js → Sensors.js} +4 -4
  131. package/dist/src/components/Sensor/Sensors.js.map +1 -0
  132. package/dist/src/components/Sensor/index.d.ts +1 -1
  133. package/dist/src/components/Sensor/index.js +1 -1
  134. package/dist/src/components/Sensor/index.js.map +1 -1
  135. package/dist/src/components/SortBy/SortBy.d.ts +7 -0
  136. package/dist/src/components/SortBy/SortBy.js +17 -0
  137. package/dist/src/components/SortBy/SortBy.js.map +1 -0
  138. package/dist/src/components/SortBy/index.d.ts +1 -0
  139. package/dist/src/components/{Sortby → SortBy}/index.js +1 -1
  140. package/dist/src/components/{Sortby → SortBy}/index.js.map +1 -1
  141. package/dist/src/components/Stats/Stats.d.ts +22 -0
  142. package/dist/src/components/Stats/Stats.js +15 -0
  143. package/dist/src/components/Stats/Stats.js.map +1 -0
  144. package/dist/src/components/Stats/index.d.ts +1 -0
  145. package/dist/src/components/Stats/index.js +14 -0
  146. package/dist/src/components/Stats/index.js.map +1 -0
  147. package/dist/src/components/index.d.ts +5 -2
  148. package/dist/src/components/index.js +5 -2
  149. package/dist/src/components/index.js.map +1 -1
  150. package/dist/src/hooks/index.d.ts +4 -3
  151. package/dist/src/hooks/index.js +4 -3
  152. package/dist/src/hooks/index.js.map +1 -1
  153. package/dist/src/hooks/reactivesearch/index.d.ts +3 -3
  154. package/dist/src/hooks/reactivesearch/index.js +3 -3
  155. package/dist/src/hooks/reactivesearch/index.js.map +1 -1
  156. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js +2 -1
  157. package/dist/src/hooks/reactivesearch/useReactiveBaseProps.js.map +1 -1
  158. package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.d.ts +1 -1
  159. package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js +12 -11
  160. package/dist/src/hooks/reactivesearch/useReactiveDataSearchProps.js.map +1 -1
  161. package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js +2 -1
  162. package/dist/src/hooks/reactivesearch/useReactiveFilterListProps.js.map +1 -1
  163. package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.d.ts +6 -1
  164. package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js +14 -2
  165. package/dist/src/hooks/reactivesearch/useReactiveFilterRangeProps.js.map +1 -1
  166. package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js +2 -1
  167. package/dist/src/hooks/reactivesearch/useReactiveFilterSharedProps.js.map +1 -1
  168. package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.d.ts +5 -0
  169. package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js +11 -3
  170. package/dist/src/hooks/reactivesearch/useReactiveFilterSliderProps.js.map +1 -1
  171. package/dist/src/hooks/reactivesearch/useReactiveReactProp.js +4 -4
  172. package/dist/src/hooks/reactivesearch/useReactiveReactProp.js.map +1 -1
  173. package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.d.ts +5 -0
  174. package/dist/src/hooks/reactivesearch/{useReactiveResultStackProps.js → useReactiveReactiveListProps.js} +7 -6
  175. package/dist/src/hooks/reactivesearch/useReactiveReactiveListProps.js.map +1 -0
  176. package/dist/src/hooks/useConfig.js +1 -1
  177. package/dist/src/hooks/useConfig.js.map +1 -1
  178. package/dist/src/hooks/useCuration.js +4 -8
  179. package/dist/src/hooks/useCuration.js.map +1 -1
  180. package/dist/src/hooks/useFilterListProps.d.ts +3 -2
  181. package/dist/src/hooks/useFilterListProps.js +67 -10
  182. package/dist/src/hooks/useFilterListProps.js.map +1 -1
  183. package/dist/src/hooks/useFilterRangeProps.d.ts +11 -0
  184. package/dist/src/hooks/useFilterRangeProps.js +53 -0
  185. package/dist/src/hooks/useFilterRangeProps.js.map +1 -0
  186. package/dist/src/hooks/useFilterSliderProps.d.ts +12 -0
  187. package/dist/src/hooks/useFilterSliderProps.js +49 -0
  188. package/dist/src/hooks/useFilterSliderProps.js.map +1 -0
  189. package/dist/src/hooks/useFilters.d.ts +5 -2
  190. package/dist/src/hooks/useFilters.js +45 -11
  191. package/dist/src/hooks/useFilters.js.map +1 -1
  192. package/dist/src/hooks/usePagination.d.ts +10 -0
  193. package/dist/src/hooks/usePagination.js.map +1 -1
  194. package/dist/src/hooks/usePaginationLoadMore.js +1 -1
  195. package/dist/src/hooks/usePaginationLoadMore.js.map +1 -1
  196. package/dist/src/hooks/useReactifySearchContext.d.ts +12 -20
  197. package/dist/src/hooks/useReactifySearchContext.js.map +1 -1
  198. package/dist/src/hooks/useSearch.d.ts +8 -3
  199. package/dist/src/hooks/useSearch.js +39 -17
  200. package/dist/src/hooks/useSearch.js.map +1 -1
  201. package/dist/src/hooks/useSortBy.d.ts +9 -0
  202. package/dist/src/hooks/{useSortby.js → useSortBy.js} +5 -5
  203. package/dist/src/hooks/useSortBy.js.map +1 -0
  204. package/dist/src/types/firestore.d.ts +3 -0
  205. package/dist/src/types/firestore.js.map +1 -1
  206. package/dist/src/types/reactivesearch.d.ts +2 -2
  207. package/dist/src/types/reactivesearch.js.map +1 -1
  208. package/dist/src/utility/debug.d.ts +3 -1
  209. package/dist/src/utility/debug.js +6 -2
  210. package/dist/src/utility/debug.js.map +1 -1
  211. package/package.json +3 -3
  212. package/dist/src/components/Example/ExampleFilterStack.d.ts +0 -4
  213. package/dist/src/components/Example/ExampleFilterStack.js.map +0 -1
  214. package/dist/src/components/Example/ExampleSortby.d.ts +0 -4
  215. package/dist/src/components/Example/ExampleSortby.js +0 -13
  216. package/dist/src/components/Example/ExampleSortby.js.map +0 -1
  217. package/dist/src/components/Filter/FilterStack.d.ts +0 -7
  218. package/dist/src/components/Filter/FilterStack.js +0 -17
  219. package/dist/src/components/Filter/FilterStack.js.map +0 -1
  220. package/dist/src/components/ReactifySearchBase/ReactifySearchBase.js.map +0 -1
  221. package/dist/src/components/ReactifySearchBase/index.d.ts +0 -1
  222. package/dist/src/components/ReactifySearchBase/index.js.map +0 -1
  223. package/dist/src/components/Result/ResultStack.js.map +0 -1
  224. package/dist/src/components/Search/SearchInput.d.ts +0 -8
  225. package/dist/src/components/Search/SearchInput.js +0 -18
  226. package/dist/src/components/Search/SearchInput.js.map +0 -1
  227. package/dist/src/components/Sensor/SensorStack.d.ts +0 -3
  228. package/dist/src/components/Sensor/SensorStack.js.map +0 -1
  229. package/dist/src/components/Sortby/Sortby.d.ts +0 -7
  230. package/dist/src/components/Sortby/Sortby.js +0 -17
  231. package/dist/src/components/Sortby/Sortby.js.map +0 -1
  232. package/dist/src/components/Sortby/index.d.ts +0 -1
  233. package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.d.ts +0 -17
  234. package/dist/src/hooks/reactivesearch/useReactiveResultStackProps.js.map +0 -1
  235. package/dist/src/hooks/useFilterStack.d.ts +0 -4
  236. package/dist/src/hooks/useFilterStack.js +0 -52
  237. package/dist/src/hooks/useFilterStack.js.map +0 -1
  238. package/dist/src/hooks/useSortby.d.ts +0 -6
  239. package/dist/src/hooks/useSortby.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ResultPaginationNextPrev.js","sourceRoot":"","sources":["../../../../src/components/Result/ResultPaginationNextPrev.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAA4C;AAE5C,iDAAmE;AAM5D,MAAM,wBAAwB,GAA4C,CAAC,KAAK,EAAE,EAAE;;IACzF,MAAM,cAAc,GAAG,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,yBAAyB,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,4CAA+B,CAAC;IAElF,OAAO,CACL,8BAAC,yBAAyB,oBACpB,cAAc,EAClB,CACH,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,wBAAwB,4BAUnC","sourcesContent":["import React from \"react\";\n\nimport { usePagination } from \"../../hooks\";\nimport { ReactivesearchPaginationProps } from \"../../types\";\nimport { ExampleResultPaginationNextPrev } from \"../../components\";\n\nexport type ResultPaginationNextPrevProps = ReactivesearchPaginationProps & {\n render?: React.FC<ReturnType<typeof usePagination>>;\n};\n\nexport const ResultPaginationNextPrev: React.FC<ResultPaginationNextPrevProps> = (props) => {\n const paginationHook = usePagination(props);\n\n const RenderPaginationComponent = props.render ?? ExampleResultPaginationNextPrev;\n\n return (\n <RenderPaginationComponent\n {...paginationHook}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"ResultPaginationNextPrev.js","sourceRoot":"","sources":["../../../../src/components/Result/ResultPaginationNextPrev.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAA4C;AAE5C,iDAG0B;AAMnB,MAAM,wBAAwB,GACnC,CAAC,KAAK,EAAE,EAAE;;IACR,MAAM,cAAc,GAAG,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IAE5C,MAAM,yBAAyB,GAC7B,MAAA,KAAK,CAAC,MAAM,mCAAI,4CAA+B,CAAC;IAElD,OAAO,8BAAC,yBAAyB,oBAAK,cAAc,EAAI,CAAC;AAC3D,CAAC,CAAC;AARS,QAAA,wBAAwB,4BAQjC","sourcesContent":["import React from \"react\";\n\nimport { usePagination } from \"../../hooks\";\nimport { ReactivesearchPaginationProps } from \"../../types\";\nimport {\n ResultsProps,\n ExampleResultPaginationNextPrev,\n} from \"../../components\";\n\nexport type ResultPaginationNextPrevProps = ReactivesearchPaginationProps & {\n render?: ResultsProps[\"renderPaginationNextPrev\"];\n};\n\nexport const ResultPaginationNextPrev: React.FC<ResultPaginationNextPrevProps> =\n (props) => {\n const paginationHook = usePagination(props);\n\n const RenderPaginationComponent =\n props.render ?? ExampleResultPaginationNextPrev;\n\n return <RenderPaginationComponent {...paginationHook} />;\n };\n"]}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { ReactivesearchPaginationProps } from "../../types";
3
- import { usePagination } from "../../hooks";
3
+ import { ResultsProps } from "../../components";
4
4
  export declare type ResultPaginationNumberedProps = ReactivesearchPaginationProps & {
5
- render?: React.FC<ReturnType<typeof usePagination>>;
5
+ render?: ResultsProps["renderPaginationNumbered"];
6
6
  };
7
7
  export declare const ResultPaginationNumbered: React.FC<ResultPaginationNumberedProps>;
@@ -14,7 +14,7 @@ const ResultPaginationNumbered = (props) => {
14
14
  return null;
15
15
  }
16
16
  const RenderPaginationComponent = (_a = props.render) !== null && _a !== void 0 ? _a : components_1.ExampleResultPaginationNumbered;
17
- return (react_1.default.createElement(RenderPaginationComponent, Object.assign({}, paginationHook)));
17
+ return react_1.default.createElement(RenderPaginationComponent, Object.assign({}, paginationHook));
18
18
  };
19
19
  exports.ResultPaginationNumbered = ResultPaginationNumbered;
20
20
  //# sourceMappingURL=ResultPaginationNumbered.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResultPaginationNumbered.js","sourceRoot":"","sources":["../../../../src/components/Result/ResultPaginationNumbered.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,uCAA4C;AAC5C,iDAAmE;AAM5D,MAAM,wBAAwB,GAA4C,CAAC,KAAK,EAAE,EAAE;;IACzF,MAAM,cAAc,GAAG,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,yBAAyB,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,4CAA+B,CAAC;IAElF,OAAO,CACL,8BAAC,yBAAyB,oBACpB,cAAc,EAClB,CACH,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,wBAAwB,4BAcnC","sourcesContent":["import React from \"react\";\n\nimport { ReactivesearchPaginationProps } from \"../../types\";\nimport { usePagination } from \"../../hooks\";\nimport { ExampleResultPaginationNumbered } from \"../../components\";\n\nexport type ResultPaginationNumberedProps = ReactivesearchPaginationProps & {\n render?: React.FC<ReturnType<typeof usePagination>>;\n};\n\nexport const ResultPaginationNumbered: React.FC<ResultPaginationNumberedProps> = (props) => {\n const paginationHook = usePagination(props);\n\n if (!paginationHook.totalPages) {\n return null;\n }\n \n const RenderPaginationComponent = props.render ?? ExampleResultPaginationNumbered;\n\n return (\n <RenderPaginationComponent\n {...paginationHook}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"ResultPaginationNumbered.js","sourceRoot":"","sources":["../../../../src/components/Result/ResultPaginationNumbered.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAG1B,uCAA4C;AAC5C,iDAG0B;AAMnB,MAAM,wBAAwB,GACnC,CAAC,KAAK,EAAE,EAAE;;IACR,MAAM,cAAc,GAAG,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;IAE5C,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IAED,MAAM,yBAAyB,GAC7B,MAAA,KAAK,CAAC,MAAM,mCAAI,4CAA+B,CAAC;IAElD,OAAO,8BAAC,yBAAyB,oBAAK,cAAc,EAAI,CAAC;AAC3D,CAAC,CAAC;AAZS,QAAA,wBAAwB,4BAYjC","sourcesContent":["import React from \"react\";\n\nimport { ReactivesearchPaginationProps } from \"../../types\";\nimport { usePagination } from \"../../hooks\";\nimport {\n ResultsProps,\n ExampleResultPaginationNumbered,\n} from \"../../components\";\n\nexport type ResultPaginationNumberedProps = ReactivesearchPaginationProps & {\n render?: ResultsProps[\"renderPaginationNumbered\"];\n};\n\nexport const ResultPaginationNumbered: React.FC<ResultPaginationNumberedProps> =\n (props) => {\n const paginationHook = usePagination(props);\n\n if (!paginationHook.totalPages) {\n return null;\n }\n\n const RenderPaginationComponent =\n props.render ?? ExampleResultPaginationNumbered;\n\n return <RenderPaginationComponent {...paginationHook} />;\n };\n"]}
@@ -1,15 +1,11 @@
1
1
  import React from "react";
2
- import { ResultCardCallout } from "./ResultCardCallout";
3
- import { ResultCardProduct } from "./ResultCardProduct";
4
- import { ResultPaginationNumbered } from "./ResultPaginationNumbered";
5
- import { ResultPaginationLoadMore } from "./ResultPaginationLoadMore";
6
- import { ResultPaginationNextPrev } from "./ResultPaginationNextPrev";
7
2
  import { ElasticCallout, ElasticProduct, ReactivesearchError, ReactivesearchResultProps } from "../../types";
3
+ import { useProductPrice, usePagination, usePaginationLoadMore } from "../../hooks";
8
4
  export declare type ResultProps = ReactivesearchResultProps & {
9
5
  callouts: ElasticCallout[];
10
6
  products: ElasticProduct[];
11
7
  };
12
- export declare type ResultStackProps = {
8
+ export declare type ResultsProps = {
13
9
  /** Style prop for the list wrapper */
14
10
  listStyle?: React.HTMLAttributes<HTMLElement>["style"];
15
11
  /** Classname prop for the list wrapper */
@@ -23,18 +19,30 @@ export declare type ResultStackProps = {
23
19
  /** Render method called when no results are found */
24
20
  renderNoResults?: React.FC;
25
21
  /** Render method called once for each product result */
26
- renderResultCardProduct?: React.ComponentProps<typeof ResultCardProduct>["render"];
22
+ renderResultCardProduct?: React.FC<ReturnType<typeof useProductPrice> & {
23
+ pagePosition: number;
24
+ product: ElasticProduct;
25
+ document: ElasticProduct;
26
+ itemRef: (node?: Element | null) => void;
27
+ handleClick: () => void;
28
+ }>;
27
29
  /** Render method called once for each callout result */
28
- renderResultCardCallout?: React.ComponentProps<typeof ResultCardCallout>["render"];
30
+ renderResultCardCallout?: React.FC<{
31
+ pagePosition: number;
32
+ document: ElasticCallout;
33
+ callout: ElasticCallout["callout"];
34
+ itemRef: (node?: Element | null) => void;
35
+ handleClick: () => void;
36
+ }>;
29
37
  /** Render method called for pagination type "pagination" */
30
- renderPaginationNumbered?: React.ComponentProps<typeof ResultPaginationNumbered>["render"];
38
+ renderPaginationNumbered?: React.FC<ReturnType<typeof usePagination>>;
31
39
  /** Render method called for pagination type "next_prev" */
32
- renderPaginationNextPrev?: React.ComponentProps<typeof ResultPaginationNextPrev>["render"];
40
+ renderPaginationNextPrev?: React.FC<ReturnType<typeof usePagination>>;
33
41
  /** Render method called for pagination type "load_more" */
34
- renderPaginationLoadMore?: React.ComponentProps<typeof ResultPaginationLoadMore>["render"];
42
+ renderPaginationLoadMore?: React.FC<ReturnType<typeof usePaginationLoadMore>>;
35
43
  /** Render method called for pagination type "infinite_scroll" */
36
- renderPaginationInfiniteScroll?: React.ComponentProps<typeof ResultPaginationLoadMore>["render"];
44
+ renderPaginationInfiniteScroll?: React.FC<ReturnType<typeof usePaginationLoadMore>>;
37
45
  /** Advanced Usage: Override the default amount of results per page */
38
46
  pageSize?: number;
39
47
  };
40
- export declare const ResultStack: React.FC<ResultStackProps>;
48
+ export declare const Results: React.FC<ResultsProps>;
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ResultStack = void 0;
6
+ exports.Results = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const ReactiveList_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/result/ReactiveList"));
9
9
  const ResultCardCallout_1 = require("./ResultCardCallout");
@@ -11,30 +11,31 @@ const ResultCardProduct_1 = require("./ResultCardProduct");
11
11
  const ResultPaginationNumbered_1 = require("./ResultPaginationNumbered");
12
12
  const ResultPaginationLoadMore_1 = require("./ResultPaginationLoadMore");
13
13
  const ResultPaginationNextPrev_1 = require("./ResultPaginationNextPrev");
14
- const hooks_1 = require("../../hooks");
15
14
  const types_1 = require("../../types");
16
- const ResultStack = (props) => {
17
- const reactiveResultStackProps = (0, hooks_1.useReactiveResultStackProps)({
15
+ const hooks_1 = require("../../hooks");
16
+ const utility_1 = require("../../utility");
17
+ const Results = (props) => {
18
+ const reactiveReactiveListProps = (0, hooks_1.useReactiveReactiveListProps)({
18
19
  pageSize: props.pageSize,
19
20
  });
20
- return (react_1.default.createElement(ReactiveList_1.default, Object.assign({}, reactiveResultStackProps, { render: (reactivesearchResultProps) => (react_1.default.createElement(ResultStackInner, Object.assign({}, props, { reactivesearchResultProps: reactivesearchResultProps }))), renderPagination: (reactivesearchPaginationProps) => (react_1.default.createElement(ResultStackPaginationStack, Object.assign({}, props, reactivesearchPaginationProps))) })));
21
+ return (react_1.default.createElement(ReactiveList_1.default, Object.assign({}, reactiveReactiveListProps, { render: (reactivesearchResultProps) => (react_1.default.createElement(ResultsInner, Object.assign({}, props, { reactivesearchResultProps: reactivesearchResultProps }))), renderPagination: (reactivesearchPaginationProps) => (react_1.default.createElement(ResultsPaginationStack, Object.assign({}, props, reactivesearchPaginationProps))) })));
21
22
  };
22
- exports.ResultStack = ResultStack;
23
- const ResultStackRenderErrorComponent = (props) => {
23
+ exports.Results = Results;
24
+ const ResultsRenderErrorComponent = (props) => {
24
25
  return (react_1.default.createElement("div", null,
25
26
  "Error: ",
26
27
  props.error.statusText));
27
28
  };
28
- const ResultStackRenderLoadingComponent = () => {
29
+ const ResultsRenderLoadingComponent = () => {
29
30
  return react_1.default.createElement("div", null, "Loading");
30
31
  };
31
- const ResultStackRenderNoResultsComponent = () => {
32
+ const ResultsRenderNoResultsComponent = () => {
32
33
  return react_1.default.createElement("div", null, "No results");
33
34
  };
34
- const ResultStackInner = (props) => {
35
+ const ResultsInner = (props) => {
35
36
  var _a, _b, _c;
36
37
  const { track } = (0, hooks_1.useAnalytics)();
37
- const { searchQuery } = (0, hooks_1.useSearch)();
38
+ const { searchTerm } = (0, hooks_1.useSearch)();
38
39
  const initialSearchHasRun = react_1.default.useMemo(() => "undefined" !==
39
40
  typeof props.reactivesearchResultProps.resultStats.numberOfResults, [props.reactivesearchResultProps]);
40
41
  const listStyle = react_1.default.useMemo(() => {
@@ -45,24 +46,40 @@ const ResultStackInner = (props) => {
45
46
  gridTemplateColumns: "repeat(4, minmax(0, 1fr))",
46
47
  };
47
48
  }, [props.listStyle]);
49
+ react_1.default.useEffect(() => {
50
+ if (!props.reactivesearchResultProps.loading &&
51
+ !props.reactivesearchResultProps.resultStats.numberOfResults) {
52
+ if (searchTerm) {
53
+ track({
54
+ eventName: "zeroResults",
55
+ payload: {
56
+ searchTerm: searchTerm,
57
+ },
58
+ });
59
+ }
60
+ }
61
+ }, [
62
+ props.reactivesearchResultProps.loading,
63
+ props.reactivesearchResultProps.resultStats.numberOfResults,
64
+ searchTerm,
65
+ ]);
48
66
  if (props.reactivesearchResultProps.error) {
49
- const RenderErrorComponent = (_a = props.renderError) !== null && _a !== void 0 ? _a : ResultStackRenderErrorComponent;
67
+ utility_1.debug.breadcrumb({
68
+ category: "result",
69
+ message: "error",
70
+ data: {
71
+ error: props.reactivesearchResultProps.error,
72
+ },
73
+ });
74
+ const RenderErrorComponent = (_a = props.renderError) !== null && _a !== void 0 ? _a : ResultsRenderErrorComponent;
50
75
  return (react_1.default.createElement(RenderErrorComponent, { error: props.reactivesearchResultProps.error }));
51
76
  }
52
77
  if (!initialSearchHasRun) {
53
- const RenderLoadingComponent = (_b = props.renderLoading) !== null && _b !== void 0 ? _b : ResultStackRenderLoadingComponent;
78
+ const RenderLoadingComponent = (_b = props.renderLoading) !== null && _b !== void 0 ? _b : ResultsRenderLoadingComponent;
54
79
  return react_1.default.createElement(RenderLoadingComponent, null);
55
80
  }
56
81
  if (!props.reactivesearchResultProps.resultStats.numberOfResults) {
57
- if (searchQuery) {
58
- track({
59
- eventName: "zeroResults",
60
- payload: {
61
- searchTerm: searchQuery,
62
- },
63
- });
64
- }
65
- const RenderNoResultsComponent = (_c = props.renderNoResults) !== null && _c !== void 0 ? _c : ResultStackRenderNoResultsComponent;
82
+ const RenderNoResultsComponent = (_c = props.renderNoResults) !== null && _c !== void 0 ? _c : ResultsRenderNoResultsComponent;
66
83
  return react_1.default.createElement(RenderNoResultsComponent, null);
67
84
  }
68
85
  return (react_1.default.createElement(react_1.default.Fragment, null,
@@ -76,12 +93,12 @@ const ResultStackInner = (props) => {
76
93
  }
77
94
  return null;
78
95
  })),
79
- react_1.default.createElement(ResultStackPaginationStackLoadMore, Object.assign({}, props, props.reactivesearchResultProps))));
96
+ react_1.default.createElement(ResultsPaginationStackLoadMore, Object.assign({}, props, props.reactivesearchResultProps))));
80
97
  };
81
98
  /** Handles rendering pagination for types that use "pagination props" */
82
- const ResultStackPaginationStack = (props) => {
99
+ const ResultsPaginationStack = (props) => {
83
100
  const { options } = (0, hooks_1.useReactifySearchContext)();
84
- const { filterStack } = (0, hooks_1.useFilterStack)();
101
+ const { filterStack } = (0, hooks_1.useFilters)();
85
102
  if (options.mode === "instant-search") {
86
103
  return null;
87
104
  }
@@ -94,9 +111,9 @@ const ResultStackPaginationStack = (props) => {
94
111
  return null;
95
112
  };
96
113
  /** Handles rendering pagination for types that use "result props" */
97
- const ResultStackPaginationStackLoadMore = (props) => {
114
+ const ResultsPaginationStackLoadMore = (props) => {
98
115
  const { options } = (0, hooks_1.useReactifySearchContext)();
99
- const { filterStack } = (0, hooks_1.useFilterStack)();
116
+ const { filterStack } = (0, hooks_1.useFilters)();
100
117
  if (options.mode === "instant-search") {
101
118
  return null;
102
119
  }
@@ -105,4 +122,4 @@ const ResultStackPaginationStackLoadMore = (props) => {
105
122
  }
106
123
  return null;
107
124
  };
108
- //# sourceMappingURL=ResultStack.js.map
125
+ //# sourceMappingURL=Results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Results.js","sourceRoot":"","sources":["../../../../src/components/Result/Results.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveList from \"@appbaseio/reactivesearch/lib/components/result/ReactiveList\";\n\nimport { ResultCardCallout } from \"./ResultCardCallout\";\nimport { ResultCardProduct } from \"./ResultCardProduct\";\nimport { ResultPaginationNumbered } from \"./ResultPaginationNumbered\";\nimport { ResultPaginationLoadMore } from \"./ResultPaginationLoadMore\";\nimport { ResultPaginationNextPrev } from \"./ResultPaginationNextPrev\";\n\nimport {\n ElasticCallout,\n ElasticProduct,\n ElasticDocumentType,\n ReactivesearchError,\n ReactivesearchResultProps,\n ReactivesearchPaginationProps,\n} from \"../../types\";\nimport {\n useReactifySearchContext,\n useAnalytics,\n useSearch,\n useFilters,\n useReactiveReactiveListProps,\n useProductPrice,\n usePagination,\n usePaginationLoadMore,\n} from \"../../hooks\";\nimport { debug } from \"../../utility\";\n\nexport type ResultProps = ReactivesearchResultProps & {\n callouts: ElasticCallout[];\n products: ElasticProduct[];\n};\n\nexport type ResultsProps = {\n /** Style prop for the list wrapper */\n listStyle?: React.HTMLAttributes<HTMLElement>[\"style\"];\n /** Classname prop for the list wrapper */\n listClassName?: string;\n /** Render method called when an error occurs */\n renderError?: React.FC<{ error: ReactivesearchError }>;\n /** Render method called while loading for the first time */\n renderLoading?: React.FC;\n /** Render method called when no results are found */\n renderNoResults?: React.FC;\n /** Render method called once for each product result */\n renderResultCardProduct?: React.FC<\n ReturnType<typeof useProductPrice> & {\n pagePosition: number;\n product: ElasticProduct;\n document: ElasticProduct;\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }\n >;\n /** Render method called once for each callout result */\n renderResultCardCallout?: React.FC<{\n pagePosition: number;\n document: ElasticCallout;\n callout: ElasticCallout[\"callout\"];\n itemRef: (node?: Element | null) => void;\n handleClick: () => void;\n }>;\n /** Render method called for pagination type \"pagination\" */\n renderPaginationNumbered?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"next_prev\" */\n renderPaginationNextPrev?: React.FC<ReturnType<typeof usePagination>>;\n /** Render method called for pagination type \"load_more\" */\n renderPaginationLoadMore?: React.FC<ReturnType<typeof usePaginationLoadMore>>;\n /** Render method called for pagination type \"infinite_scroll\" */\n renderPaginationInfiniteScroll?: React.FC<\n ReturnType<typeof usePaginationLoadMore>\n >;\n /** Advanced Usage: Override the default amount of results per page */\n pageSize?: number;\n};\n\nexport const Results: React.FC<ResultsProps> = (props) => {\n const reactiveReactiveListProps = useReactiveReactiveListProps({\n pageSize: props.pageSize,\n });\n\n return (\n <ReactiveList\n {...reactiveReactiveListProps}\n render={(reactivesearchResultProps: ReactivesearchResultProps) => (\n <ResultsInner\n {...props}\n reactivesearchResultProps={reactivesearchResultProps}\n />\n )}\n renderPagination={(\n reactivesearchPaginationProps: ReactivesearchPaginationProps\n ) => (\n <ResultsPaginationStack {...props} {...reactivesearchPaginationProps} />\n )}\n />\n );\n};\n\nconst ResultsRenderErrorComponent: ResultsProps[\"renderError\"] = (props) => {\n return (\n <div>\n {\"Error: \"}\n {props.error.statusText}\n </div>\n );\n};\n\nconst ResultsRenderLoadingComponent: ResultsProps[\"renderLoading\"] = () => {\n return <div>{\"Loading\"}</div>;\n};\n\nconst ResultsRenderNoResultsComponent: ResultsProps[\"renderNoResults\"] = () => {\n return <div>{\"No results\"}</div>;\n};\n\nconst ResultsInner: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const { track } = useAnalytics();\n const { searchTerm } = useSearch();\n\n const initialSearchHasRun = React.useMemo(\n () =>\n \"undefined\" !==\n typeof props.reactivesearchResultProps.resultStats.numberOfResults,\n [props.reactivesearchResultProps]\n );\n\n const listStyle = React.useMemo<React.HTMLAttributes<HTMLElement>[\"style\"]>(\n () =>\n props.listStyle ?? {\n display: \"grid\",\n gap: \"8px\",\n gridTemplateColumns: \"repeat(4, minmax(0, 1fr))\",\n },\n [props.listStyle]\n );\n\n React.useEffect(() => {\n if (\n !props.reactivesearchResultProps.loading &&\n !props.reactivesearchResultProps.resultStats.numberOfResults\n ) {\n if (searchTerm) {\n track({\n eventName: \"zeroResults\",\n payload: {\n searchTerm: searchTerm,\n },\n });\n }\n }\n }, [\n props.reactivesearchResultProps.loading,\n props.reactivesearchResultProps.resultStats.numberOfResults,\n searchTerm,\n ]);\n\n if (props.reactivesearchResultProps.error) {\n debug.breadcrumb({\n category: \"result\",\n message: \"error\",\n data: {\n error: props.reactivesearchResultProps.error,\n },\n });\n\n const RenderErrorComponent =\n props.renderError ?? ResultsRenderErrorComponent;\n\n return (\n <RenderErrorComponent error={props.reactivesearchResultProps.error} />\n );\n }\n\n if (!initialSearchHasRun) {\n const RenderLoadingComponent =\n props.renderLoading ?? ResultsRenderLoadingComponent;\n return <RenderLoadingComponent />;\n }\n\n if (!props.reactivesearchResultProps.resultStats.numberOfResults) {\n const RenderNoResultsComponent =\n props.renderNoResults ?? ResultsRenderNoResultsComponent;\n return <RenderNoResultsComponent />;\n }\n\n return (\n <>\n <section style={listStyle} className={props.listClassName}>\n {props.reactivesearchResultProps.data.map((item, key) => {\n // @todo result.type is missing in v1 indexes, this check ensures that they are assumed to be products\n if (ElasticDocumentType.Product === item.type || !item.type) {\n return (\n <ResultCardProduct\n key={item._id}\n product={item}\n document={item}\n pagePosition={key + 1}\n render={props.renderResultCardProduct}\n />\n );\n }\n\n if (ElasticDocumentType.Callout === item.type) {\n return (\n <ResultCardCallout\n key={item._id}\n document={item}\n pagePosition={key + 1}\n callout={item.callout}\n render={props.renderResultCardCallout}\n />\n );\n }\n\n return null;\n })}\n </section>\n <ResultsPaginationStackLoadMore\n {...props}\n {...props.reactivesearchResultProps}\n />\n </>\n );\n};\n\n/** Handles rendering pagination for types that use \"pagination props\" */\nconst ResultsPaginationStack: React.FC<\n ResultsProps & ReactivesearchPaginationProps\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"pagination\" === filterStack?.paginationType) {\n return (\n <ResultPaginationNumbered\n {...props}\n render={props.renderPaginationNumbered}\n />\n );\n }\n\n if (\"next_prev\" === filterStack?.paginationType) {\n return (\n <ResultPaginationNextPrev\n {...props}\n render={props.renderPaginationNextPrev}\n />\n );\n }\n\n return null;\n};\n\n/** Handles rendering pagination for types that use \"result props\" */\nconst ResultsPaginationStackLoadMore: React.FC<\n ResultsProps & { reactivesearchResultProps: ReactivesearchResultProps }\n> = (props) => {\n const { options } = useReactifySearchContext();\n const { filterStack } = useFilters();\n\n if (options.mode === \"instant-search\") {\n return null;\n }\n\n if (\"load_more\" === filterStack?.paginationType) {\n return (\n <ResultPaginationLoadMore\n {...props.reactivesearchResultProps}\n render={props.renderPaginationLoadMore}\n />\n );\n }\n\n return null;\n};\n"]}
@@ -1,4 +1,4 @@
1
- export * from "./ResultStack";
1
+ export * from "./Results";
2
2
  export * from "./ResultCardCallout";
3
3
  export * from "./ResultCardProduct";
4
4
  export * from "./ResultStateProvider";
@@ -10,7 +10,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./ResultStack"), exports);
13
+ __exportStar(require("./Results"), exports);
14
14
  __exportStar(require("./ResultCardCallout"), exports);
15
15
  __exportStar(require("./ResultCardProduct"), exports);
16
16
  __exportStar(require("./ResultStateProvider"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Result/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B;AAC9B,sDAAmC;AACnC,sDAAoC;AACpC,wDAAsC;AACtC,6DAA2C;AAC3C,6DAA2C;AAC3C,6DAA2C","sourcesContent":["export * from \"./ResultStack\";\nexport * from \"./ResultCardCallout\"\nexport * from \"./ResultCardProduct\";\nexport * from \"./ResultStateProvider\";\nexport * from \"./ResultPaginationNumbered\";\nexport * from \"./ResultPaginationLoadMore\";\nexport * from \"./ResultPaginationNextPrev\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Result/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,4CAA0B;AAC1B,sDAAoC;AACpC,sDAAoC;AACpC,wDAAsC;AACtC,6DAA2C;AAC3C,6DAA2C;AAC3C,6DAA2C","sourcesContent":["export * from \"./Results\";\nexport * from \"./ResultCardCallout\";\nexport * from \"./ResultCardProduct\";\nexport * from \"./ResultStateProvider\";\nexport * from \"./ResultPaginationNumbered\";\nexport * from \"./ResultPaginationLoadMore\";\nexport * from \"./ResultPaginationNextPrev\";\n"]}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { useSearch } from "../../hooks";
3
+ export declare type SearchProps = {
4
+ /** Render method */
5
+ render?: React.FC<ReturnType<typeof useSearch>>;
6
+ };
7
+ export declare const Search: React.FC<SearchProps>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Search = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const hooks_1 = require("../../hooks");
9
+ const components_1 = require("../../components");
10
+ const Search = (props) => {
11
+ var _a;
12
+ const sortbyData = (0, hooks_1.useSearch)();
13
+ const RenderSortOptionsComponent = (_a = props.render) !== null && _a !== void 0 ? _a : components_1.ExampleSearch;
14
+ return react_1.default.createElement(RenderSortOptionsComponent, Object.assign({}, sortbyData));
15
+ };
16
+ exports.Search = Search;
17
+ //# sourceMappingURL=Search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Search.js","sourceRoot":"","sources":["../../../../src/components/Search/Search.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,uCAAwC;AACxC,iDAAiD;AAO1C,MAAM,MAAM,GAA0B,CAAC,KAAK,EAAE,EAAE;;IACrD,MAAM,UAAU,GAAG,IAAA,iBAAS,GAAE,CAAC;IAE/B,MAAM,0BAA0B,GAAG,MAAA,KAAK,CAAC,MAAM,mCAAI,0BAAa,CAAC;IAEjE,OAAO,8BAAC,0BAA0B,oBAAK,UAAU,EAAI,CAAC;AACxD,CAAC,CAAC;AANW,QAAA,MAAM,UAMjB","sourcesContent":["import React from \"react\";\n\nimport { useSearch } from \"../../hooks\";\nimport { ExampleSearch } from \"../../components\";\n\nexport type SearchProps = {\n /** Render method */\n render?: React.FC<ReturnType<typeof useSearch>>;\n};\n\nexport const Search: React.FC<SearchProps> = (props) => {\n const sortbyData = useSearch();\n\n const RenderSortOptionsComponent = props.render ?? ExampleSearch;\n\n return <RenderSortOptionsComponent {...sortbyData} />;\n};\n"]}
@@ -1 +1 @@
1
- export * from "./SearchInput";
1
+ export * from "./Search";
@@ -10,5 +10,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./SearchInput"), exports);
13
+ __exportStar(require("./Search"), exports);
14
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Search/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gDAA8B","sourcesContent":["export * from \"./SearchInput\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/Search/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyB","sourcesContent":["export * from \"./Search\";\n"]}
@@ -21,7 +21,7 @@ const SensorCollection = () => {
21
21
  path: "collections",
22
22
  query: {
23
23
  term: {
24
- "collections.handle.keyword": options.collection.handle,
24
+ "collections.handle.keyword": options.collectionHandle,
25
25
  },
26
26
  },
27
27
  },
@@ -31,7 +31,7 @@ const SensorCollection = () => {
31
31
  path: "curations",
32
32
  query: {
33
33
  term: {
34
- "curations.collectionHandle.keyword": options.collection.handle,
34
+ "curations.collectionHandle.keyword": options.collectionHandle,
35
35
  },
36
36
  },
37
37
  },
@@ -1 +1 @@
1
- {"version":3,"file":"SensorCollection.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCollection.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAuD;AAEhD,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAE/C,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,kBAAkB,EAC9B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,aAAa;gCACnB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,4BAA4B,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;qCACxD;iCACF;6BACF;yBACF;wBACD;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,WAAW;gCACjB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,oCAAoC,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;qCAChE;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAxCW,QAAA,gBAAgB,oBAwC3B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useReactifySearchContext } from \"../../hooks\";\n\nexport const SensorCollection: React.FC = () => {\n const { options } = useReactifySearchContext();\n\n if (options.mode !== \"collection\") {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorCollection\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n nested: {\n path: \"collections\",\n query: {\n term: {\n \"collections.handle.keyword\": options.collection.handle,\n },\n },\n },\n },\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.collectionHandle.keyword\": options.collection.handle,\n },\n },\n },\n },\n ],\n },\n },\n })}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SensorCollection.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorCollection.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAuD;AAEhD,MAAM,gBAAgB,GAAa,GAAG,EAAE;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAA,gCAAwB,GAAE,CAAC;IAE/C,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE;QACjC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,kBAAkB,EAC9B,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,aAAa;gCACnB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,4BAA4B,EAAE,OAAO,CAAC,gBAAgB;qCACvD;iCACF;6BACF;yBACF;wBACD;4BACE,MAAM,EAAE;gCACN,IAAI,EAAE,WAAW;gCACjB,KAAK,EAAE;oCACL,IAAI,EAAE;wCACJ,oCAAoC,EAClC,OAAO,CAAC,gBAAgB;qCAC3B;iCACF;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAzCW,QAAA,gBAAgB,oBAyC3B","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useReactifySearchContext } from \"../../hooks\";\n\nexport const SensorCollection: React.FC = () => {\n const { options } = useReactifySearchContext();\n\n if (options.mode !== \"collection\") {\n return null;\n }\n\n return (\n <ReactiveComponent\n componentId=\"SensorCollection\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n nested: {\n path: \"collections\",\n query: {\n term: {\n \"collections.handle.keyword\": options.collectionHandle,\n },\n },\n },\n },\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.collectionHandle.keyword\":\n options.collectionHandle,\n },\n },\n },\n },\n ],\n },\n },\n })}\n />\n );\n};\n"]}
@@ -8,7 +8,7 @@ const react_1 = __importDefault(require("react"));
8
8
  const ReactiveComponent_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent"));
9
9
  const hooks_1 = require("../../hooks");
10
10
  const SensorInventoryAvailable = () => {
11
- const { filterStack } = (0, hooks_1.useFilterStack)();
11
+ const { filterStack } = (0, hooks_1.useFilters)();
12
12
  if (!filterStack || "show_all" === filterStack.inventoryVisibility)
13
13
  return null;
14
14
  return (react_1.default.createElement(ReactiveComponent_1.default, { componentId: "SensorInventoryAvailable", customQuery: () => ({
@@ -1 +1 @@
1
- {"version":3,"file":"SensorInventoryAvailable.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorInventoryAvailable.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAA6C;AAEtC,MAAM,wBAAwB,GAAa,GAAG,EAAE;IACrD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,sBAAc,GAAE,CAAC;IAEzC,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,WAAW,CAAC,mBAAmB;QAChE,OAAO,IAAI,CAAC;IAEd,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,0BAA0B,EACtC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ;wCACE,IAAI,EAAE;4CACJ,IAAI,EAAE;gDACJ,KAAK,EAAE,SAAS;6CACjB;yCACF;qCACF;oCACD;wCACE,MAAM,EAAE;4CACN,IAAI,EAAE,UAAU;4CAChB,KAAK,EAAE;gDACL,KAAK,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;6CACtC;yCACF;qCACF;iCACF;6BACF;yBACF;wBACD;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ,KAAK,EAAE,SAAS;iCACjB;6BACF;yBACF;qBACF;oBACD,oBAAoB,EAAE,GAAG;iBAC1B;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,wBAAwB,4BAgDnC","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFilterStack } from \"../../hooks\";\n\nexport const SensorInventoryAvailable: React.FC = () => {\n const { filterStack } = useFilterStack();\n\n if (!filterStack || \"show_all\" === filterStack.inventoryVisibility)\n return null;\n\n return (\n <ReactiveComponent\n componentId=\"SensorInventoryAvailable\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n bool: {\n must: [\n {\n term: {\n type: {\n value: \"product\",\n },\n },\n },\n {\n nested: {\n path: \"variants\",\n query: {\n match: { \"variants.available\": true },\n },\n },\n },\n ],\n },\n },\n {\n term: {\n type: {\n value: \"callout\",\n },\n },\n },\n ],\n minimum_should_match: \"1\",\n },\n },\n })}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"SensorInventoryAvailable.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorInventoryAvailable.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,yHAAiG;AAEjG,uCAAyC;AAElC,MAAM,wBAAwB,GAAa,GAAG,EAAE;IACrD,MAAM,EAAE,WAAW,EAAE,GAAG,IAAA,kBAAU,GAAE,CAAC;IAErC,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,WAAW,CAAC,mBAAmB;QAChE,OAAO,IAAI,CAAC;IAEd,OAAO,CACL,8BAAC,2BAAiB,IAChB,WAAW,EAAC,0BAA0B,EACtC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;YAClB,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ;wCACE,IAAI,EAAE;4CACJ,IAAI,EAAE;gDACJ,KAAK,EAAE,SAAS;6CACjB;yCACF;qCACF;oCACD;wCACE,MAAM,EAAE;4CACN,IAAI,EAAE,UAAU;4CAChB,KAAK,EAAE;gDACL,KAAK,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE;6CACtC;yCACF;qCACF;iCACF;6BACF;yBACF;wBACD;4BACE,IAAI,EAAE;gCACJ,IAAI,EAAE;oCACJ,KAAK,EAAE,SAAS;iCACjB;6BACF;yBACF;qBACF;oBACD,oBAAoB,EAAE,GAAG;iBAC1B;aACF;SACF,CAAC,GACF,CACH,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,wBAAwB,4BAgDnC","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { useFilters } from \"../../hooks\";\n\nexport const SensorInventoryAvailable: React.FC = () => {\n const { filterStack } = useFilters();\n\n if (!filterStack || \"show_all\" === filterStack.inventoryVisibility)\n return null;\n\n return (\n <ReactiveComponent\n componentId=\"SensorInventoryAvailable\"\n customQuery={() => ({\n query: {\n bool: {\n should: [\n {\n bool: {\n must: [\n {\n term: {\n type: {\n value: \"product\",\n },\n },\n },\n {\n nested: {\n path: \"variants\",\n query: {\n match: { \"variants.available\": true },\n },\n },\n },\n ],\n },\n },\n {\n term: {\n type: {\n value: \"callout\",\n },\n },\n },\n ],\n minimum_should_match: \"1\",\n },\n },\n })}\n />\n );\n};\n"]}
@@ -5,18 +5,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SensorSearch = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
+ const ahooks_1 = require("ahooks");
8
9
  const DataSearch_1 = __importDefault(require("@appbaseio/reactivesearch/lib/components/search/DataSearch"));
9
10
  const hooks_1 = require("../../hooks");
10
11
  const SensorSearch = () => {
11
12
  const { config } = (0, hooks_1.useReactifySearchContext)();
12
- const { searchQuery } = (0, hooks_1.useSearch)();
13
+ const { searchTerm } = (0, hooks_1.useSearch)();
13
14
  // ignore search fields only set for instant search
14
15
  const searchFields = react_1.default.useMemo(() => config.fields.filter((field) => ["always_search", "search_page"].includes(field.searchType)), [config.fields]);
15
- if (!searchQuery || !searchFields.length) {
16
+ const debouncedSearchTerm = (0, ahooks_1.useDebounce)(searchTerm, {
17
+ wait: 300,
18
+ });
19
+ if (!searchTerm || !searchFields.length) {
16
20
  return null;
17
21
  }
18
22
  return (react_1.default.createElement(react_1.default.Fragment, null,
19
- react_1.default.createElement(DataSearch_1.default, { fuzziness: 1, queryFormat: "and", autosuggest: false, value: searchQuery, componentId: "SensorSearch", style: { display: "none" }, dataField: searchFields.map((field) => field.field), fieldWeights: searchFields.map((field) => field.importance), customQuery: (value, props) => {
23
+ react_1.default.createElement(DataSearch_1.default, { fuzziness: 1, queryFormat: "and", autosuggest: false, value: debouncedSearchTerm, componentId: "SensorSearch", style: { display: "none" }, dataField: searchFields.map((field) => field.field), fieldWeights: searchFields.map((field) => field.importance), customQuery: (value, props) => {
20
24
  const { dataField, fieldWeights } = props;
21
25
  const fieldsCrossFields = dataField.map((field, index) => `${field}^${fieldWeights[index]}`);
22
26
  const fieldsPhrase = dataField.map((field, index) => `${field}^${fieldWeights[index]}`);
@@ -1 +1 @@
1
- {"version":3,"file":"SensorSearch.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearch.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport DataSearch from \"@appbaseio/reactivesearch/lib/components/search/DataSearch\";\n\nimport { useReactifySearchContext, useSearch } from \"../../hooks\";\n\nexport const SensorSearch: React.FC = () => {\n const { config } = useReactifySearchContext();\n const { searchQuery } = useSearch();\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(\n () =>\n config.fields.filter((field) =>\n [\"always_search\", \"search_page\"].includes(field.searchType)\n ),\n [config.fields]\n );\n\n if (!searchQuery || !searchFields.length) {\n return null;\n }\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={searchQuery}\n componentId=\"SensorSearch\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const { dataField, fieldWeights } = props;\n\n const fieldsCrossFields = dataField.map(\n (field: string, index: number) => `${field}^${fieldWeights[index]}`\n );\n const fieldsPhrase = dataField.map(\n (field: string, index: number) => `${field}^${fieldWeights[index]}`\n );\n const fieldsPhrasePrefix = dataField\n .filter((field: string) => !field.includes(\".\"))\n .map(\n (field: string, index: number) =>\n `${field}^${fieldWeights[index]}`\n );\n\n const query = {\n bool: {\n should: [\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": value?.toLowerCase(),\n },\n },\n },\n },\n ...(fieldsCrossFields.length > 0\n ? [\n {\n multi_match: {\n query: value,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n },\n ]\n : []),\n ...(fieldsPhrase.length > 0\n ? [\n {\n multi_match: {\n query: value,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n },\n ]\n : []),\n ...(fieldsPhrasePrefix.length > 0\n ? [\n {\n multi_match: {\n query: value,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n },\n ]\n : []),\n ],\n minimum_should_match: \"1\",\n },\n };\n return { query };\n }}\n />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"SensorSearch.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSearch.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { useDebounce } from \"ahooks\";\nimport DataSearch from \"@appbaseio/reactivesearch/lib/components/search/DataSearch\";\n\nimport { useReactifySearchContext, useSearch } from \"../../hooks\";\n\nexport const SensorSearch: React.FC = () => {\n const { config } = useReactifySearchContext();\n const { searchTerm } = useSearch();\n\n // ignore search fields only set for instant search\n const searchFields = React.useMemo(\n () =>\n config.fields.filter((field) =>\n [\"always_search\", \"search_page\"].includes(field.searchType)\n ),\n [config.fields]\n );\n\n const debouncedSearchTerm = useDebounce(searchTerm, {\n wait: 300,\n });\n\n if (!searchTerm || !searchFields.length) {\n return null;\n }\n\n return (\n <>\n <DataSearch\n fuzziness={1}\n queryFormat=\"and\"\n autosuggest={false}\n value={debouncedSearchTerm}\n componentId=\"SensorSearch\"\n style={{ display: \"none\" }}\n dataField={searchFields.map((field) => field.field)}\n fieldWeights={searchFields.map((field) => field.importance)}\n customQuery={(value, props) => {\n const { dataField, fieldWeights } = props;\n\n const fieldsCrossFields = dataField.map(\n (field: string, index: number) => `${field}^${fieldWeights[index]}`\n );\n const fieldsPhrase = dataField.map(\n (field: string, index: number) => `${field}^${fieldWeights[index]}`\n );\n const fieldsPhrasePrefix = dataField\n .filter((field: string) => !field.includes(\".\"))\n .map(\n (field: string, index: number) =>\n `${field}^${fieldWeights[index]}`\n );\n\n const query = {\n bool: {\n should: [\n {\n nested: {\n path: \"curations\",\n query: {\n term: {\n \"curations.searchTerm.keyword\": value?.toLowerCase(),\n },\n },\n },\n },\n ...(fieldsCrossFields.length > 0\n ? [\n {\n multi_match: {\n query: value,\n fields: fieldsCrossFields,\n type: \"cross_fields\",\n operator: \"and\",\n },\n },\n ]\n : []),\n ...(fieldsPhrase.length > 0\n ? [\n {\n multi_match: {\n query: value,\n fields: fieldsPhrase,\n type: \"phrase\",\n operator: \"and\",\n },\n },\n ]\n : []),\n ...(fieldsPhrasePrefix.length > 0\n ? [\n {\n multi_match: {\n query: value,\n fields: fieldsPhrasePrefix,\n type: \"phrase_prefix\",\n operator: \"and\",\n },\n },\n ]\n : []),\n ],\n minimum_should_match: \"1\",\n },\n };\n return { query };\n }}\n />\n </>\n );\n};\n"]}
@@ -11,14 +11,14 @@ const SensorSort = () => {
11
11
  const { options, config } = (0, hooks_1.useReactifySearchContext)();
12
12
  const curation = (0, hooks_1.useCuration)();
13
13
  const globalCuration = (curation === null || curation === void 0 ? void 0 : curation.id) === "global";
14
- const { sortOption } = (0, hooks_1.useSortby)();
14
+ const { sortOption } = (0, hooks_1.useSortBy)();
15
15
  const { sort, query } = react_1.default.useMemo(() => {
16
16
  return {
17
17
  sort: buildSort({
18
- sortOption,
19
- collection: options.mode === "collection" ? options.collection : undefined,
20
- curation,
21
18
  globalCuration,
19
+ curation,
20
+ sortOption,
21
+ collectionHandle: options.mode === "collection" ? options.collectionHandle : undefined,
22
22
  }),
23
23
  query: buildQuery({
24
24
  sortOption,
@@ -35,11 +35,11 @@ const SensorSort = () => {
35
35
  exports.SensorSort = SensorSort;
36
36
  const buildSort = (args) => {
37
37
  var _a;
38
- const { curation, sortOption, collection, globalCuration } = args;
38
+ const { curation, sortOption, collectionHandle, globalCuration } = args;
39
39
  // return default sort option if unset
40
40
  if (!sortOption) {
41
- return collection
42
- ? mapCollectionPositionSortClause(collection)
41
+ return collectionHandle
42
+ ? mapCollectionPositionSortClause(collectionHandle)
43
43
  : ["_score"];
44
44
  }
45
45
  // curation positions are only applied for the default `collections.position` or `_score` sort
@@ -49,14 +49,14 @@ const buildSort = (args) => {
49
49
  }
50
50
  // no matching curation, return default sort clause
51
51
  if (!curation) {
52
- return collection
53
- ? mapCollectionPositionSortClause(collection)
52
+ return collectionHandle
53
+ ? mapCollectionPositionSortClause(collectionHandle)
54
54
  : ["_score"];
55
55
  }
56
56
  const sorts = [];
57
57
  // show pins first
58
- if (globalCuration && collection) {
59
- sorts.push(...mapCollectionPositionSortClause(collection));
58
+ if (globalCuration && collectionHandle) {
59
+ sorts.push(...mapCollectionPositionSortClause(collectionHandle));
60
60
  }
61
61
  else {
62
62
  sorts.push({
@@ -118,7 +118,7 @@ const buildSort = (args) => {
118
118
  /**
119
119
  * Return a sort clause which sorts by position within the given collection.
120
120
  */
121
- function mapCollectionPositionSortClause(collection) {
121
+ function mapCollectionPositionSortClause(collectionHandle) {
122
122
  return [
123
123
  {
124
124
  "collections.position": {
@@ -127,7 +127,7 @@ function mapCollectionPositionSortClause(collection) {
127
127
  path: "collections",
128
128
  filter: {
129
129
  term: {
130
- "collections.handle.keyword": collection.handle,
130
+ "collections.handle.keyword": collectionHandle,
131
131
  },
132
132
  },
133
133
  },
@@ -1 +1 @@
1
- {"version":3,"file":"SensorSort.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSort.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { ConfigCuration, ConfigSort } from \"../../types\";\nimport { useReactifySearchContext, useSortby, useCuration } from \"../../hooks\";\n\nexport const SensorSort: React.FC = () => {\n const { options, config } = useReactifySearchContext();\n const curation = useCuration();\n const globalCuration = curation?.id === \"global\";\n\n const { sortOption } = useSortby();\n\n const { sort, query } = React.useMemo(() => {\n return {\n sort: buildSort({\n sortOption,\n collection: options.mode === \"collection\" ? options.collection : undefined,\n curation,\n globalCuration,\n }),\n query: buildQuery({\n sortOption,\n curation,\n globalCuration,\n }),\n };\n }, [config, sortOption, curation]);\n\n return (\n <ReactiveComponent\n componentId=\"SensorSort\"\n customQuery={() => ({\n sort,\n query,\n })}\n />\n );\n};\n\nconst buildSort = (args: {\n globalCuration?: boolean;\n sortOption?: ConfigSort;\n curation?: ConfigCuration;\n collection?: {\n id: number;\n title: string;\n handle: string;\n };\n}): any[] => {\n const { curation, sortOption, collection, globalCuration } = args;\n\n // return default sort option if unset\n if (!sortOption) {\n return collection\n ? mapCollectionPositionSortClause(collection)\n : [\"_score\"];\n }\n\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (![\"_score\", \"collections.position\"].includes(sortOption.field)) {\n return [{ [sortOption.field]: sortOption.direction }];\n }\n\n // no matching curation, return default sort clause\n if (!curation) {\n return collection\n ? mapCollectionPositionSortClause(collection)\n : [\"_score\"];\n }\n\n const sorts = [];\n\n // show pins first\n if (globalCuration && collection) {\n sorts.push(...mapCollectionPositionSortClause(collection));\n } else {\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n term: {\n [`curations.${\n \"collection\" === curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === curation.type\n ? curation.collectionHandle\n : curation.searchTerm?.toLowerCase(),\n },\n },\n },\n },\n });\n }\n\n if (0 < curation.boosting.groupings.length) {\n const groupings = curation.boosting.groupings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost grouping`, grouping);\n }\n }\n }\n\n if (0 < curation.boosting.sortings.length) {\n const sortings = curation.boosting.sortings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const sorting of sortings) {\n try {\n const query = JSON.parse(sorting.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n\n // finally, for collections, if no other sorting is defined, sort by index order to provide\n // a consistent order\n if (\"collection\" === curation.type && sorts.length === 0) {\n sorts.push(\"_doc\");\n }\n\n // finally, for search, sort by score\n if (\"search\" === curation.type) {\n sorts.push(\"_score\");\n }\n\n return sorts;\n};\n\n/**\n * Return a sort clause which sorts by position within the given collection.\n */\nfunction mapCollectionPositionSortClause(\n collection: NonNullable<{\n id: number;\n title: string;\n handle: string;\n }>\n) {\n return [\n {\n \"collections.position\": {\n order: \"asc\",\n nested: {\n path: \"collections\",\n filter: {\n term: {\n \"collections.handle.keyword\": collection.handle,\n },\n },\n },\n },\n },\n ];\n}\n\nconst buildQuery = (args: {\n sortOption?: ConfigSort;\n curation?: ConfigCuration;\n globalCuration?: boolean;\n}): Record<string, any> | undefined => {\n const { curation, sortOption, globalCuration } = args;\n\n if (!curation || globalCuration) {\n return undefined;\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n [`curations.${\n \"collection\" === curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === curation.type\n ? curation.collectionHandle\n : curation.searchTerm?.toLowerCase(),\n },\n },\n {\n term: {\n \"curations.hidden\": true,\n },\n },\n ],\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ? [\n {\n term: {\n type: \"callout\",\n },\n },\n ]\n : []),\n ],\n },\n };\n};\n"]}
1
+ {"version":3,"file":"SensorSort.js","sourceRoot":"","sources":["../../../../src/components/Sensor/SensorSort.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport ReactiveComponent from \"@appbaseio/reactivesearch/lib/components/basic/ReactiveComponent\";\n\nimport { ConfigCuration, ConfigSort } from \"../../types\";\nimport { useReactifySearchContext, useSortBy, useCuration } from \"../../hooks\";\n\nexport const SensorSort: React.FC = () => {\n const { options, config } = useReactifySearchContext();\n const curation = useCuration();\n const globalCuration = curation?.id === \"global\";\n\n const { sortOption } = useSortBy();\n\n const { sort, query } = React.useMemo(() => {\n return {\n sort: buildSort({\n globalCuration,\n curation,\n sortOption,\n collectionHandle:\n options.mode === \"collection\" ? options.collectionHandle : undefined,\n }),\n query: buildQuery({\n sortOption,\n curation,\n globalCuration,\n }),\n };\n }, [config, sortOption, curation]);\n\n return (\n <ReactiveComponent\n componentId=\"SensorSort\"\n customQuery={() => ({\n sort,\n query,\n })}\n />\n );\n};\n\nconst buildSort = (args: {\n globalCuration?: boolean;\n curation?: ConfigCuration;\n sortOption?: ConfigSort;\n collectionHandle?: string;\n}): any[] => {\n const { curation, sortOption, collectionHandle, globalCuration } = args;\n\n // return default sort option if unset\n if (!sortOption) {\n return collectionHandle\n ? mapCollectionPositionSortClause(collectionHandle)\n : [\"_score\"];\n }\n\n // curation positions are only applied for the default `collections.position` or `_score` sort\n // if the sort is something else, apply a normal sort which applies what the user has requested\n if (![\"_score\", \"collections.position\"].includes(sortOption.field)) {\n return [{ [sortOption.field]: sortOption.direction }];\n }\n\n // no matching curation, return default sort clause\n if (!curation) {\n return collectionHandle\n ? mapCollectionPositionSortClause(collectionHandle)\n : [\"_score\"];\n }\n\n const sorts = [];\n\n // show pins first\n if (globalCuration && collectionHandle) {\n sorts.push(...mapCollectionPositionSortClause(collectionHandle));\n } else {\n sorts.push({\n \"curations.position\": {\n unmapped_type: \"long\",\n order: \"asc\",\n nested: {\n path: \"curations\",\n filter: {\n term: {\n [`curations.${\n \"collection\" === curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === curation.type\n ? curation.collectionHandle\n : curation.searchTerm?.toLowerCase(),\n },\n },\n },\n },\n });\n }\n\n if (0 < curation.boosting.groupings.length) {\n const groupings = curation.boosting.groupings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const grouping of groupings) {\n try {\n const query = JSON.parse(grouping.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost grouping`, grouping);\n }\n }\n }\n\n if (0 < curation.boosting.sortings.length) {\n const sortings = curation.boosting.sortings.sort((a, b) =>\n a.position > b.position ? 1 : -1\n );\n\n for (const sorting of sortings) {\n try {\n const query = JSON.parse(sorting.query);\n if (query) sorts.push(query);\n } catch {\n console.error(`query could not be parsed for boost sorting`, sorting);\n }\n }\n }\n\n // finally, for collections, if no other sorting is defined, sort by index order to provide\n // a consistent order\n if (\"collection\" === curation.type && sorts.length === 0) {\n sorts.push(\"_doc\");\n }\n\n // finally, for search, sort by score\n if (\"search\" === curation.type) {\n sorts.push(\"_score\");\n }\n\n return sorts;\n};\n\n/**\n * Return a sort clause which sorts by position within the given collection.\n */\nfunction mapCollectionPositionSortClause(collectionHandle: string) {\n return [\n {\n \"collections.position\": {\n order: \"asc\",\n nested: {\n path: \"collections\",\n filter: {\n term: {\n \"collections.handle.keyword\": collectionHandle,\n },\n },\n },\n },\n },\n ];\n}\n\nconst buildQuery = (args: {\n sortOption?: ConfigSort;\n curation?: ConfigCuration;\n globalCuration?: boolean;\n}): Record<string, any> | undefined => {\n const { curation, sortOption, globalCuration } = args;\n\n if (!curation || globalCuration) {\n return undefined;\n }\n\n return {\n bool: {\n must_not: [\n {\n nested: {\n path: \"curations\",\n query: {\n bool: {\n must: [\n {\n term: {\n [`curations.${\n \"collection\" === curation.type\n ? \"collectionHandle\"\n : \"searchTerm\"\n }.keyword`]:\n \"collection\" === curation.type\n ? curation.collectionHandle\n : curation.searchTerm?.toLowerCase(),\n },\n },\n {\n term: {\n \"curations.hidden\": true,\n },\n },\n ],\n },\n },\n },\n },\n // hide callout when not sorting by _score or collections.position\n ...(sortOption &&\n ![\"_score\", \"collections.position\"].includes(sortOption.field)\n ? [\n {\n term: {\n type: \"callout\",\n },\n },\n ]\n : []),\n ],\n },\n };\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ export declare type SensorsProps = {};
3
+ export declare const Sensors: React.FC<SensorsProps>;