@zengenti/contensis-react-base 4.0.0-beta.2 → 4.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +18 -478
  3. package/cjs/{App-b56aca04.js → App-DXro6av4.js} +215 -234
  4. package/cjs/App-DXro6av4.js.map +1 -0
  5. package/cjs/{ChangePassword.container-ae35785e.js → ChangePassword.container-ECjEXixF.js} +209 -286
  6. package/cjs/ChangePassword.container-ECjEXixF.js.map +1 -0
  7. package/cjs/CookieHelper.class-C3Eqoze9.js +471 -0
  8. package/cjs/CookieHelper.class-C3Eqoze9.js.map +1 -0
  9. package/cjs/{RouteLoader-c06dccd5.js → RouteLoader-BFc-Wl6M.js} +55 -68
  10. package/cjs/RouteLoader-BFc-Wl6M.js.map +1 -0
  11. package/cjs/{ContensisDeliveryApi-4fcf049d.js → SSRContext-CFeZxG9H.js} +165 -119
  12. package/cjs/SSRContext-CFeZxG9H.js.map +1 -0
  13. package/cjs/{ToJs-a8d8f3f0.js → ToJs-C9jwV7YB.js} +26 -80
  14. package/cjs/ToJs-C9jwV7YB.js.map +1 -0
  15. package/cjs/{_commonjsHelpers-b3309d7b.js → _commonjsHelpers-BJu3ubxk.js} +1 -1
  16. package/cjs/_commonjsHelpers-BJu3ubxk.js.map +1 -0
  17. package/cjs/client.js +67 -65
  18. package/cjs/client.js.map +1 -1
  19. package/cjs/contensis-react-base.js +387 -3294
  20. package/cjs/contensis-react-base.js.map +1 -1
  21. package/cjs/{fromJSLeaveImmer-e74c673c.js → fromJSLeaveImmer-Blvlk4t2.js} +3 -7
  22. package/{esm/fromJSLeaveImmer-0114ffcf.js.map → cjs/fromJSLeaveImmer-Blvlk4t2.js.map} +1 -1
  23. package/cjs/redux.js +19 -20
  24. package/cjs/redux.js.map +1 -1
  25. package/cjs/routing.js +13 -6
  26. package/cjs/routing.js.map +1 -1
  27. package/cjs/sagas-CbZhaRNd.js +6010 -0
  28. package/cjs/sagas-CbZhaRNd.js.map +1 -0
  29. package/cjs/search.js +105 -305
  30. package/cjs/search.js.map +1 -1
  31. package/cjs/selectors-wCs5fHD4.js +460 -0
  32. package/cjs/selectors-wCs5fHD4.js.map +1 -0
  33. package/cjs/{version-34d91f68.js → store-D07FOXvM.js} +44 -114
  34. package/cjs/store-D07FOXvM.js.map +1 -0
  35. package/cjs/{urls-6fcaf4c6.js → urls-DVIwGZmd.js} +1 -1
  36. package/{esm/urls-eac9a747.js.map → cjs/urls-DVIwGZmd.js.map} +1 -1
  37. package/cjs/user.js +12 -20
  38. package/cjs/user.js.map +1 -1
  39. package/cjs/util.js +109 -116
  40. package/cjs/util.js.map +1 -1
  41. package/cjs/{version-a410c88e.js → version-B7XFkBhY.js} +19 -22
  42. package/{esm/version-9f29becb.js.map → cjs/version-B7XFkBhY.js.map} +1 -1
  43. package/cjs/version-CM-bJ62L.js +20 -0
  44. package/cjs/version-CM-bJ62L.js.map +1 -0
  45. package/esm/{App-83107d7e.js → App-CIlf4cl4.js} +176 -195
  46. package/esm/App-CIlf4cl4.js.map +1 -0
  47. package/esm/{ChangePassword.container-76fd5e9b.js → ChangePassword.container-C0tFq0Tf.js} +191 -250
  48. package/esm/ChangePassword.container-C0tFq0Tf.js.map +1 -0
  49. package/esm/CookieHelper.class-FTURFpz3.js +464 -0
  50. package/esm/CookieHelper.class-FTURFpz3.js.map +1 -0
  51. package/esm/{RouteLoader-29fd689a.js → RouteLoader-D7HmVx5l.js} +40 -53
  52. package/esm/RouteLoader-D7HmVx5l.js.map +1 -0
  53. package/esm/{ContensisDeliveryApi-fe57a037.js → SSRContext-CkiWIvde.js} +159 -120
  54. package/esm/SSRContext-CkiWIvde.js.map +1 -0
  55. package/esm/{ToJs-df57f31d.js → ToJs-CpPNdcXS.js} +24 -77
  56. package/esm/ToJs-CpPNdcXS.js.map +1 -0
  57. package/esm/{_commonjsHelpers-1789f0cf.js → _commonjsHelpers-BFTU3MAI.js} +1 -1
  58. package/esm/_commonjsHelpers-BFTU3MAI.js.map +1 -0
  59. package/esm/client.js +55 -53
  60. package/esm/client.js.map +1 -1
  61. package/esm/contensis-react-base.js +318 -3223
  62. package/esm/contensis-react-base.js.map +1 -1
  63. package/esm/{fromJSLeaveImmer-0114ffcf.js → fromJSLeaveImmer-C_YACmOf.js} +2 -6
  64. package/{cjs/fromJSLeaveImmer-e74c673c.js.map → esm/fromJSLeaveImmer-C_YACmOf.js.map} +1 -1
  65. package/esm/redux.js +10 -9
  66. package/esm/redux.js.map +1 -1
  67. package/esm/routing.js +13 -4
  68. package/esm/routing.js.map +1 -1
  69. package/esm/sagas-xJU-zOpn.js +5916 -0
  70. package/esm/sagas-xJU-zOpn.js.map +1 -0
  71. package/esm/search.js +113 -311
  72. package/esm/search.js.map +1 -1
  73. package/esm/selectors-CBdCY0u3.js +396 -0
  74. package/esm/selectors-CBdCY0u3.js.map +1 -0
  75. package/esm/{version-3d9911e2.js → store-v2gyr6u2.js} +38 -85
  76. package/esm/store-v2gyr6u2.js.map +1 -0
  77. package/esm/{urls-eac9a747.js → urls-DfCisos-.js} +1 -1
  78. package/{cjs/urls-6fcaf4c6.js.map → esm/urls-DfCisos-.js.map} +1 -1
  79. package/esm/user.js +7 -13
  80. package/esm/user.js.map +1 -1
  81. package/esm/util.js +67 -75
  82. package/esm/util.js.map +1 -1
  83. package/esm/version-D773TD9j.js +15 -0
  84. package/esm/version-D773TD9j.js.map +1 -0
  85. package/esm/{version-9f29becb.js → version-DvjTUbcA.js} +6 -9
  86. package/{cjs/version-a410c88e.js.map → esm/version-DvjTUbcA.js.map} +1 -1
  87. package/models/app/App.d.ts +1 -1
  88. package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +4 -1
  89. package/models/app/pages/VersionInfo/components/VersionInfo.styled.d.ts +2 -1
  90. package/models/client/client.d.ts +1 -1
  91. package/models/index.d.ts +1 -2
  92. package/models/models/AppRouteProps.d.ts +11 -0
  93. package/models/{redux/appstate.d.ts → models/AppState.d.ts} +3 -3
  94. package/models/models/ContentTypeMapping.d.ts +89 -0
  95. package/models/models/EntryMapper.d.ts +3 -0
  96. package/models/models/GetRouteActionArgs.d.ts +15 -0
  97. package/models/models/MatchedRoute.d.ts +4 -0
  98. package/models/models/ReduxInjector.d.ts +5 -0
  99. package/models/models/RequireLogin.d.ts +6 -0
  100. package/models/models/RouteComponent.d.ts +4 -0
  101. package/models/models/RouteComponentProps.d.ts +9 -0
  102. package/models/models/RouteLoaderProps.d.ts +9 -0
  103. package/models/models/RouteNode.d.ts +5 -0
  104. package/models/models/SSRContext.d.ts +11 -0
  105. package/models/models/StaticRoute.d.ts +61 -0
  106. package/models/models/WithEvents.d.ts +58 -0
  107. package/models/models/config/AppConfig.d.ts +12 -0
  108. package/models/{config.d.ts → models/config/ServerConfig.d.ts} +3 -12
  109. package/models/models/config/StateType.d.ts +1 -0
  110. package/models/models/config/index.d.ts +3 -0
  111. package/models/models/index.d.ts +16 -0
  112. package/models/redux/actions/index.d.ts +2 -2
  113. package/models/redux/sagas/navigation.d.ts +1 -3
  114. package/models/redux/selectors/index.d.ts +2 -2
  115. package/models/redux/store/injectors.d.ts +16 -4
  116. package/models/redux/store/store.d.ts +10 -4
  117. package/models/redux/types/index.d.ts +2 -2
  118. package/models/redux/types/navigation.d.ts +3 -3
  119. package/models/redux/types/version.d.ts +2 -2
  120. package/models/routing/components/Redirect.d.ts +1 -1
  121. package/models/routing/components/RouteLoader.d.ts +1 -1
  122. package/models/routing/components/StaticRouteLoader.d.ts +1 -1
  123. package/models/routing/components/Status.d.ts +1 -1
  124. package/models/routing/redux/actions.d.ts +3 -4
  125. package/models/routing/redux/selectors.d.ts +2 -2
  126. package/models/routing/redux/types.d.ts +11 -11
  127. package/models/routing/util/find-contenttype-mapping.d.ts +1 -1
  128. package/models/routing/util/queries.d.ts +2 -2
  129. package/models/search/containers/withListing.d.ts +4 -1
  130. package/models/search/containers/withSearch.d.ts +4 -1
  131. package/models/search/models/Queries.d.ts +4 -2
  132. package/models/search/models/Search.d.ts +8 -1
  133. package/models/search/models/SearchActions.d.ts +3 -2
  134. package/models/search/models/SearchState.d.ts +5 -1
  135. package/models/search/redux/reducers.d.ts +2 -257
  136. package/models/search/redux/schema.d.ts +1 -1
  137. package/models/search/redux/selectors.d.ts +5 -5
  138. package/models/search/search/ContensisDeliveryApi.d.ts +2 -2
  139. package/models/search/search/ToJs.d.ts +1 -1
  140. package/models/search/search/expressions.d.ts +3 -3
  141. package/models/search/search/util.d.ts +17 -2
  142. package/models/search/transformations/searchresult-to-state.mapper.d.ts +1 -2
  143. package/models/server/features/caching/cacheDuration.schema.d.ts +1 -0
  144. package/models/server/features/linkdepth-api/search.d.ts +1 -1
  145. package/models/server/features/static-assets/index.d.ts +1 -1
  146. package/models/server/internalServer.d.ts +1 -1
  147. package/models/server/util/bundles.d.ts +1 -1
  148. package/models/server/util/headers.d.ts +1 -1
  149. package/models/server/webApp.d.ts +1 -1
  150. package/models/user/components/Login.d.ts +1 -1
  151. package/models/user/components/LoginForm.d.ts +6 -6
  152. package/models/user/components/LogoutForm.d.ts +4 -4
  153. package/models/user/components.styled/Login.styled.d.ts +1 -1
  154. package/models/user/components.styled/LoginForm.styled.d.ts +1 -1
  155. package/models/user/hocs/withLogin.d.ts +4 -4
  156. package/models/user/hocs/withRegistration.d.ts +6 -3
  157. package/models/user/hooks/useLogin.d.ts +4 -4
  158. package/models/user/redux/actions.d.ts +7 -6
  159. package/models/user/redux/sagas/index.d.ts +1 -1
  160. package/models/user/redux/sagas/login.d.ts +5 -17
  161. package/models/user/redux/selectors.d.ts +1 -2
  162. package/models/user/redux/types.d.ts +21 -21
  163. package/models/user/state.d.ts +12 -0
  164. package/models/user/transformations/mapClientCredentials.d.ts +3 -1
  165. package/models/user/util/ContensisManagementApi.d.ts +10 -9
  166. package/models/user/util/CookieConstants.d.ts +1 -0
  167. package/models/user/util/CookieHelper.class.d.ts +8 -4
  168. package/models/user/util/LoginHelper.class.d.ts +25 -37
  169. package/models/user/util/OidcUserManager.d.ts +1 -1
  170. package/models/user/util/matchGroups.d.ts +1 -1
  171. package/models/util/CachedDeliveryApi.d.ts +11 -10
  172. package/models/util/ContensisDeliveryApi.d.ts +11 -7
  173. package/models/util/SSRContext.d.ts +29 -0
  174. package/models/util/index.d.ts +1 -0
  175. package/models/util/json-mapper.d.ts +4 -5
  176. package/package.json +71 -92
  177. package/cjs/App-b56aca04.js.map +0 -1
  178. package/cjs/ChangePassword.container-ae35785e.js.map +0 -1
  179. package/cjs/ContensisDeliveryApi-4fcf049d.js.map +0 -1
  180. package/cjs/CookieConstants-000427db.js +0 -10
  181. package/cjs/CookieConstants-000427db.js.map +0 -1
  182. package/cjs/RouteLoader-c06dccd5.js.map +0 -1
  183. package/cjs/ToJs-a8d8f3f0.js.map +0 -1
  184. package/cjs/_commonjsHelpers-b3309d7b.js.map +0 -1
  185. package/cjs/forms.js +0 -5998
  186. package/cjs/forms.js.map +0 -1
  187. package/cjs/reducers-73a03ef4.js +0 -257
  188. package/cjs/reducers-73a03ef4.js.map +0 -1
  189. package/cjs/sagas-570f23ba.js +0 -2175
  190. package/cjs/sagas-570f23ba.js.map +0 -1
  191. package/cjs/selectors-14caa813.js +0 -228
  192. package/cjs/selectors-14caa813.js.map +0 -1
  193. package/cjs/version-34d91f68.js.map +0 -1
  194. package/esm/App-83107d7e.js.map +0 -1
  195. package/esm/ChangePassword.container-76fd5e9b.js.map +0 -1
  196. package/esm/ContensisDeliveryApi-fe57a037.js.map +0 -1
  197. package/esm/CookieConstants-3d3b6531.js +0 -6
  198. package/esm/CookieConstants-3d3b6531.js.map +0 -1
  199. package/esm/RouteLoader-29fd689a.js.map +0 -1
  200. package/esm/ToJs-df57f31d.js.map +0 -1
  201. package/esm/_commonjsHelpers-1789f0cf.js.map +0 -1
  202. package/esm/forms.js +0 -5984
  203. package/esm/forms.js.map +0 -1
  204. package/esm/reducers-aa8cef1e.js +0 -234
  205. package/esm/reducers-aa8cef1e.js.map +0 -1
  206. package/esm/sagas-07e82e18.js +0 -2083
  207. package/esm/sagas-07e82e18.js.map +0 -1
  208. package/esm/selectors-691caf02.js +0 -186
  209. package/esm/selectors-691caf02.js.map +0 -1
  210. package/esm/version-3d9911e2.js.map +0 -1
  211. package/models/forms/index.d.ts +0 -1
  212. package/models/routing/routes.d.ts +0 -133
package/cjs/search.js CHANGED
@@ -1,28 +1,27 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
3
  var React = require('react');
6
4
  var reactRedux = require('react-redux');
7
- var sagas = require('./sagas-570f23ba.js');
8
- require('jsonpath-mapper');
5
+ var sagas = require('./sagas-CbZhaRNd.js');
9
6
  var reselect = require('reselect');
10
- var merge = require('deepmerge');
11
- require('query-string');
12
7
  var immer = require('immer');
13
8
  var equals = require('deep-equal');
14
- require('contensis-core-api');
9
+ var merge = require('deepmerge');
15
10
  require('loglevel');
16
11
  require('@redux-saga/core/effects');
17
12
  require('contensis-delivery-api');
13
+ require('query-string');
14
+ require('jsonpath-mapper');
15
+ require('contensis-core-api');
16
+ require('./_commonjsHelpers-BJu3ubxk.js');
18
17
 
19
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
20
19
 
21
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
22
- var merge__default = /*#__PURE__*/_interopDefaultLegacy(merge);
23
- var equals__default = /*#__PURE__*/_interopDefaultLegacy(equals);
20
+ var React__default = /*#__PURE__*/_interopDefault(React);
21
+ var equals__default = /*#__PURE__*/_interopDefault(equals);
22
+ var merge__default = /*#__PURE__*/_interopDefault(merge);
24
23
 
25
- /* eslint-disable import/default */
24
+ /* eslint-disable react/display-name */
26
25
  const toJS = WrappedComponent => wrappedComponentProps => {
27
26
  const KEY = 0;
28
27
  const VALUE = 1;
@@ -32,18 +31,14 @@ const toJS = WrappedComponent => wrappedComponentProps => {
32
31
  newProps[propKey] = propValue && typeof propValue === 'object' && 'toJS' in propValue ? propValue.toJS() : propValue;
33
32
  return newProps;
34
33
  }, {});
35
- return /*#__PURE__*/React__default["default"].createElement(WrappedComponent, propsJS);
34
+ return /*#__PURE__*/React__default.default.createElement(WrappedComponent, propsJS);
36
35
  };
37
36
 
38
- // eslint-disable-next-line import/default
39
-
40
37
  const withSearch = mappers => SearchComponent => {
41
38
  const Wrapper = props => {
42
- return /*#__PURE__*/React__default["default"].createElement(SearchComponent, props);
39
+ return /*#__PURE__*/React__default.default.createElement(SearchComponent, props);
43
40
  };
44
-
45
41
  Wrapper.displayName = `withSearch(${SearchComponent.displayName || SearchComponent.name})`;
46
-
47
42
  const mapStateToProps = state => {
48
43
  return {
49
44
  currentFacet: sagas.getCurrentFacet(state),
@@ -70,7 +65,6 @@ const withSearch = mappers => SearchComponent => {
70
65
  totalCount: sagas.getTotalCount(state)
71
66
  };
72
67
  };
73
-
74
68
  const mapDispatchToProps = {
75
69
  clearFilters: filterKey => sagas.withMappers(sagas.clearFilters(filterKey), mappers),
76
70
  updateCurrentFacet: facet => sagas.withMappers(sagas.updateCurrentFacet(facet), mappers),
@@ -85,13 +79,10 @@ const withSearch = mappers => SearchComponent => {
85
79
  return connector(toJS(Wrapper));
86
80
  };
87
81
 
88
- /* eslint-disable @typescript-eslint/naming-convention */
89
-
90
82
  const withListing = mappers => ListingComponent => {
91
83
  const Wrapper = props => {
92
- return /*#__PURE__*/React__default["default"].createElement(ListingComponent, props);
84
+ return /*#__PURE__*/React__default.default.createElement(ListingComponent, props);
93
85
  };
94
-
95
86
  Wrapper.displayName = `withListing(${ListingComponent.displayName || ListingComponent.name})`;
96
87
  const {
97
88
  getCurrent,
@@ -106,7 +97,6 @@ const withListing = mappers => ListingComponent => {
106
97
  getSearchTerm,
107
98
  getSelectedFilters
108
99
  } = sagas.selectListing;
109
-
110
100
  const mapStateToProps = state => {
111
101
  return {
112
102
  currentListing: getCurrent(state),
@@ -125,7 +115,6 @@ const withListing = mappers => ListingComponent => {
125
115
  }, 'dynamicOrderBy', [])
126
116
  };
127
117
  };
128
-
129
118
  const mapDispatchToProps = {
130
119
  clearFilters: filterKey => sagas.withMappers(sagas.clearFilters(filterKey), mappers),
131
120
  updateCurrentFacet: facet => sagas.withMappers(sagas.updateCurrentFacet(facet), mappers),
@@ -138,201 +127,6 @@ const withListing = mappers => ListingComponent => {
138
127
  return reactRedux.connect(mapStateToProps, mapDispatchToProps)(toJS(Wrapper));
139
128
  };
140
129
 
141
- var defaultMappers = {
142
- results: entries => entries,
143
- navigate: sagas.mapStateToSearchUri
144
- };
145
-
146
- const {
147
- getCurrent: getCurrent$1,
148
- getCurrentTab,
149
- getFacet,
150
- getFacetsTotalCount,
151
- getFacetTitles,
152
- getFeaturedResults: getFeaturedResults$1,
153
- getIsLoading: getIsLoading$1,
154
- getPageIndex: getPageIndex$1,
155
- getPageIsLoading: getPageIsLoading$1,
156
- getQueryParameter: getQueryParameter$1,
157
- getRenderableFilters: getRenderableFilters$1,
158
- getSearchTerm: getSearchTerm$1,
159
- getSearchTotalCount,
160
- getTabFacets,
161
- getTabsAndFacets,
162
- getTotalCount
163
- } = sagas.selectFacets;
164
-
165
- const makeSelectFacetsProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
166
- currentFacet: getCurrent$1(state),
167
- currentPageIndex: getPageIndex$1(state),
168
- currentTabIndex: getCurrentTab(state),
169
- facet: getFacet(state),
170
- facetTitles: getFacetTitles(state),
171
- facets: getTabFacets(state),
172
- facetsTotalCount: getFacetsTotalCount(state),
173
- featured: getFeaturedResults$1(state),
174
- filters: getRenderableFilters$1(state),
175
- isLoading: getIsLoading$1(state),
176
- pageIsLoading: getPageIsLoading$1(state),
177
- paging: sagas.getPaging(state, '', sagas.Context.facets, 'js'),
178
- results: sagas.getResults(state, '', sagas.Context.facets, 'js'),
179
- resultsInfo: mappers && typeof mappers.resultsInfo === 'function' && mappers.resultsInfo(state),
180
- searchTerm: getSearchTerm$1(state),
181
- searchTotalCount: getSearchTotalCount(state),
182
- selectedFilters: sagas.getSelectedFilters(state, '', sagas.Context.facets, 'js'),
183
- sortOrder: getQueryParameter$1({
184
- state
185
- }, 'dynamicOrderBy', []),
186
- tabsAndFacets: getTabsAndFacets(state),
187
- totalCount: getTotalCount(state)
188
- }));
189
-
190
- const useFacets = ({
191
- mappers
192
- } = {
193
- id: ''
194
- }) => {
195
- const dispatch = reactRedux.useDispatch();
196
- const m = mappers || defaultMappers;
197
- const selectListingProps = React.useMemo(makeSelectFacetsProps, [m]);
198
- const dispatchProps = {
199
- clearFilters: filterKey => dispatch(sagas.withMappers(sagas.clearFilters(filterKey), m)),
200
- updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
201
- updateCurrentTab: id => sagas.withMappers(sagas.updateCurrentTab(id), m),
202
- updatePageIndex: (pageIndex, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), m)),
203
- updatePageSize: (pageSize, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), m)),
204
- updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
205
- updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
206
- updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
207
- };
208
- const {
209
- currentFacet,
210
- currentPageIndex,
211
- currentTabIndex,
212
- facet,
213
- facets,
214
- facetsTotalCount,
215
- facetTitles,
216
- featured,
217
- filters,
218
- isLoading,
219
- paging,
220
- pageIsLoading,
221
- results,
222
- resultsInfo,
223
- searchTerm,
224
- searchTotalCount,
225
- selectedFilters,
226
- sortOrder,
227
- tabsAndFacets,
228
- totalCount
229
- } = reactRedux.useSelector(state => selectListingProps(state, m));
230
- return {
231
- currentFacet,
232
- currentPageIndex,
233
- currentTabIndex,
234
- facet,
235
- facets,
236
- facetsTotalCount,
237
- facetTitles,
238
- featured,
239
- filters,
240
- isLoading,
241
- paging,
242
- pageIsLoading,
243
- results,
244
- resultsInfo,
245
- searchTerm,
246
- searchTotalCount,
247
- selectedFilters,
248
- sortOrder,
249
- tabsAndFacets,
250
- totalCount,
251
- ...dispatchProps
252
- };
253
- };
254
-
255
- const {
256
- getCurrent,
257
- getFeaturedResults,
258
- getIsLoading,
259
- getListing,
260
- getPageIndex,
261
- getPageIsLoading,
262
- getQueryParameter,
263
- getRenderableFilters,
264
- getSearchTerm
265
- } = sagas.selectListing;
266
-
267
- const makeSelectListingProps = () => reselect.createSelector(state => state, (_, mappers) => mappers, (state, mappers) => ({
268
- currentListing: getCurrent(state),
269
- currentPageIndex: getPageIndex(state),
270
- listing: getListing(state),
271
- featured: getFeaturedResults(state),
272
- filters: getRenderableFilters(state),
273
- isLoading: getIsLoading(state),
274
- pageIsLoading: getPageIsLoading(state),
275
- paging: sagas.getPaging(state, '', sagas.Context.listings, 'js'),
276
- results: sagas.getResults(state, '', sagas.Context.listings, 'js'),
277
- resultsInfo: mappers && typeof mappers.resultsInfo === 'function' && mappers.resultsInfo(state),
278
- searchTerm: getSearchTerm(state),
279
- selectedFilters: sagas.getSelectedFilters(state, '', sagas.Context.listings, 'js'),
280
- sortOrder: getQueryParameter({
281
- state
282
- }, 'dynamicOrderBy', [])
283
- }));
284
-
285
- const useListing = ({
286
- mappers
287
- } = {
288
- id: ''
289
- }) => {
290
- const dispatch = reactRedux.useDispatch();
291
- const m = mappers || defaultMappers;
292
- const selectListingProps = React.useMemo(makeSelectListingProps, [m]);
293
- const dispatchProps = {
294
- clearFilters: filterKey => dispatch(sagas.withMappers(sagas.clearFilters(filterKey), m)),
295
- updateCurrentFacet: facet => dispatch(sagas.withMappers(sagas.updateCurrentFacet(facet), m)),
296
- updatePageIndex: (pageIndex, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageIndex(pageIndex, scrollToElement), m)),
297
- updatePageSize: (pageSize, scrollToElement) => dispatch(sagas.withMappers(sagas.updatePageSize(pageSize, scrollToElement), m)),
298
- updateSearchTerm: term => dispatch(sagas.withMappers(sagas.updateSearchTerm(term), m)),
299
- updateSelectedFilters: (filter, key, isUnknownItem = false, scrollToElement) => dispatch(sagas.withMappers(sagas.updateSelectedFilters(filter, key, isUnknownItem, scrollToElement), m)),
300
- updateSortOrder: orderBy => dispatch(sagas.withMappers(sagas.updateSortOrder(orderBy), m))
301
- };
302
- const {
303
- currentListing,
304
- currentPageIndex,
305
- featured,
306
- filters,
307
- isLoading,
308
- listing,
309
- paging,
310
- pageIsLoading,
311
- results,
312
- resultsInfo,
313
- searchTerm,
314
- selectedFilters,
315
- sortOrder
316
- } = reactRedux.useSelector(state => selectListingProps(state, m));
317
- return {
318
- currentListing,
319
- currentPageIndex,
320
- featured,
321
- filters,
322
- isLoading,
323
- listing,
324
- pageIsLoading,
325
- paging,
326
- results,
327
- resultsInfo,
328
- searchTerm,
329
- selectedFilters,
330
- sortOrder,
331
- title: listing.title,
332
- ...dispatchProps
333
- };
334
- };
335
-
336
130
  const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_, id) => id, (state, id) => id ? {
337
131
  facet: sagas.getFacet(state, id, sagas.Context.minilist, 'js'),
338
132
  filters: sagas.getFilters(state, id, sagas.Context.minilist, 'js'),
@@ -341,7 +135,6 @@ const makeSelectMinilistProps = () => reselect.createSelector(state => state, (_
341
135
  results: sagas.getResults(state, id, sagas.Context.minilist, 'js'),
342
136
  searchTerm: sagas.getSearchTerm(state)
343
137
  } : null);
344
-
345
138
  const useMinilist = ({
346
139
  id,
347
140
  config,
@@ -370,7 +163,8 @@ const useMinilist = ({
370
163
  pagingInfo: {},
371
164
  results: [],
372
165
  searchTerm: ''
373
- }; // useSelector((state: AppState) => ({
166
+ };
167
+ // useSelector((state: AppState) => ({
374
168
  // facet: getFacet(state, id, Context.minilist).toJS(),
375
169
  // filters: getFilters(state, id, Context.minilist).toJS(),
376
170
  // isLoading: getIsLoading(state, Context.minilist, id),
@@ -474,12 +268,12 @@ const initialState = searchState;
474
268
  var schema = /*#__PURE__*/Object.freeze({
475
269
  __proto__: null,
476
270
  entries: entries,
271
+ filterItem: filterItem,
272
+ filtering: filtering,
273
+ initialState: initialState,
477
274
  pagingInfo: pagingInfo,
478
275
  searchFacet: searchFacet,
479
- searchTab: searchTab,
480
- filtering: filtering,
481
- filterItem: filterItem,
482
- initialState: initialState
276
+ searchTab: searchTab
483
277
  });
484
278
 
485
279
  const addConfigToState = (state, action) => {
@@ -487,39 +281,35 @@ const addConfigToState = (state, action) => {
487
281
  context,
488
282
  facet,
489
283
  config
490
- } = action; // Adding or changing the config of a single facet, listing or minilist
491
-
284
+ } = action;
285
+ // Adding or changing the config of a single facet, listing or minilist
492
286
  if (context && facet && config) {
493
- state[context][facet] = { ...searchFacet,
287
+ state[context][facet] = {
288
+ ...searchFacet,
494
289
  ...config
495
290
  };
496
291
  } else if (config) {
497
292
  // Changing the entire search config
498
- state = { ...config,
293
+ state = {
294
+ ...config,
499
295
  config: initialState.config
500
296
  };
501
297
  }
502
-
503
298
  return state;
504
299
  };
505
-
506
300
  const generateSearchFacets = (context, config) => {
507
301
  const facets = {};
508
-
509
302
  if (config) {
510
303
  const thisConfig = config[context] || {};
511
-
512
304
  if (Object.keys(thisConfig).length > 0) {
513
305
  Object.entries(thisConfig).map(([facetName, facet]) => {
514
- const newFacet = merge__default["default"](searchFacet, facet);
306
+ const newFacet = merge__default.default(searchFacet, facet);
515
307
  if (!('isDisabled' in facet) || facet.isDisabled !== true) facets[facetName] = newFacet;
516
308
  });
517
309
  }
518
310
  }
519
-
520
311
  return facets;
521
312
  };
522
-
523
313
  const generateFiltersState = ({
524
314
  facet,
525
315
  params,
@@ -527,29 +317,31 @@ const generateFiltersState = ({
527
317
  isCurrentFacet
528
318
  }, state) => {
529
319
  // Remove filters we know about from params
530
- const filterParams = { ...params,
320
+ const filterParams = {
321
+ ...params,
531
322
  facet: undefined,
532
323
  orderBy: undefined,
533
324
  pageIndex: undefined,
534
325
  term: undefined
535
- }; // Get any existing filters and normalise the items[]
536
- // so we can start off with isSelected is false
326
+ };
537
327
 
328
+ // Get any existing filters and normalise the items[]
329
+ // so we can start off with isSelected is false
538
330
  let filters = Object.entries(state[context][facet].filters || []).map(([key, filter]) => {
539
331
  if (isCurrentFacet || filter.isGrouped) {
540
332
  var _filter$items;
541
-
542
- return [key, { ...filter,
543
- items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({ ...item,
333
+ return [key, {
334
+ ...filter,
335
+ items: (_filter$items = filter.items) === null || _filter$items === void 0 ? void 0 : _filter$items.map(item => ({
336
+ ...item,
544
337
  isSelected: false
545
338
  }))
546
339
  }];
547
340
  }
548
-
549
341
  return [key, filter];
550
342
  });
551
-
552
- const addFilterItem = (filters, paramKey, paramValue) => // Iterate through all filters within the facet,
343
+ const addFilterItem = (filters, paramKey, paramValue) =>
344
+ // Iterate through all filters within the facet,
553
345
  // if the paramKey matches the filter key
554
346
  // get the existing items list, and see if that filter
555
347
  // already exists, if so set isSelected to true,
@@ -561,47 +353,45 @@ const generateFiltersState = ({
561
353
  } else {
562
354
  const items = filter.items || [];
563
355
  const itemIndex = items.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === paramValue);
564
-
565
356
  if (items.length > 0 && itemIndex !== -1) {
566
357
  items[itemIndex].isSelected = true;
567
358
  } else {
568
- items.push({ ...filterItem,
359
+ items.push({
360
+ ...filterItem,
569
361
  key: paramValue,
570
362
  isSelected: true
571
363
  });
572
364
  }
573
-
574
- return [key, { ...filter,
365
+ return [key, {
366
+ ...filter,
575
367
  items
576
368
  }];
577
369
  }
578
- }); // For each value found in filterParams
370
+ });
371
+
372
+ // For each value found in filterParams
579
373
  // we are looking to split that value into multiple by any comma
580
374
  // and then either set isSelected for an existing filterItem
581
375
  // or push an item to the filters.{ key }.items[] array
582
376
  // giving it only the key (entry guid) that can be taken to filter
583
377
  // the search results during SSR without needing to fetch the filters first
584
-
585
-
586
378
  Object.entries(filterParams).map(([paramName = '', paramValue]) => {
587
379
  if (typeof paramValue === 'string') return paramValue.split(',').map(pVal => filters = addFilterItem(filters, paramName, pVal));
588
380
  if (typeof paramValue === 'boolean') filters = addFilterItem(filters, paramName, paramValue);
589
381
  });
590
382
  return Object.fromEntries(filters);
591
383
  };
592
-
593
384
  const resetFacets = (state, context) => Object.fromEntries(Object.entries(state[context]).map(([k, v]) => [k, resetFacet(v)]));
594
-
595
385
  const resetFacet = facet => {
596
386
  facet.pagingInfo.pagesLoaded = [];
597
387
  facet.pagingInfo.pageIndex = 0;
598
388
  facet.queryDuration = 0;
599
389
  return facet;
600
390
  };
601
-
602
- var reducers = (config => {
391
+ var reducers = config => {
603
392
  // Add facets from SearchConfig to initialState
604
- const initState = { ...initialState,
393
+ const initState = {
394
+ ...initialState,
605
395
  tabs: config.tabs,
606
396
  facets: generateSearchFacets(sagas.Context.facets, config),
607
397
  listings: generateSearchFacets(sagas.Context.listings, config),
@@ -610,49 +400,46 @@ var reducers = (config => {
610
400
  return immer.produce((state = initState, action) => {
611
401
  const context = state.context;
612
402
  const current = context !== 'listings' ? state.currentFacet : state.currentListing;
613
-
614
403
  switch (action.type) {
615
404
  case sagas.APPLY_CONFIG:
616
405
  {
617
406
  state = addConfigToState(state, action);
618
407
  return state;
619
408
  }
620
-
621
409
  case sagas.CLEAR_FILTERS:
622
410
  {
623
411
  const currentFilters = state[context][current].filters;
624
412
  state[context][current].filters = Object.fromEntries(Object.entries(currentFilters).map(([filterKey, filter]) => {
625
413
  if (typeof action.filterKey === 'undefined' || action.filterKey === filterKey) {
626
414
  const filterItems = filter.items || [];
627
- filter.items = filterItems.map(item => ({ ...item,
415
+ filter.items = filterItems.map(item => ({
416
+ ...item,
628
417
  isSelected: false
629
418
  }));
630
419
  }
631
-
632
420
  return [filterKey, filter];
633
421
  }));
634
422
  state[context][current].queryDuration = 0;
635
423
  state[context][current].pagingInfo.pagesLoaded = [];
636
424
  return;
637
425
  }
638
-
639
426
  case sagas.EXECUTE_SEARCH:
640
427
  {
641
- state[action.context][action.facet].entries = { ...(state[action.context][action.facet].entries || entries),
428
+ state[action.context][action.facet].entries = {
429
+ ...(state[action.context][action.facet].entries || entries),
642
430
  isLoading: true
643
431
  };
644
432
  return;
645
433
  }
646
-
647
434
  case sagas.EXECUTE_SEARCH_ERROR:
648
435
  {
649
- state[action.context][action.facet].entries = { ...entries,
436
+ state[action.context][action.facet].entries = {
437
+ ...entries,
650
438
  isError: true,
651
439
  error: action.error
652
440
  };
653
441
  return;
654
442
  }
655
-
656
443
  case sagas.LOAD_FILTERS:
657
444
  {
658
445
  const {
@@ -661,49 +448,48 @@ var reducers = (config => {
661
448
  } = action;
662
449
  const filters = state[action.context][facetKey].filters;
663
450
  Object.entries(filters).map(([filterKey, filter]) => {
664
- if (filtersToLoad.find(f => f === filterKey)) return { ...filter,
451
+ if (filtersToLoad.find(f => f === filterKey)) return {
452
+ ...filter,
665
453
  isLoading: true
666
454
  };
667
455
  return filter;
668
456
  });
669
457
  state[action.context][facetKey].filters = Object.fromEntries(Object.entries(filters).map(([filterKey, filter]) => {
670
- if (filtersToLoad.find(f => f === filterKey)) return [filterKey, { ...filter,
458
+ if (filtersToLoad.find(f => f === filterKey)) return [filterKey, {
459
+ ...filter,
671
460
  isLoading: true
672
461
  }];
673
462
  return [filterKey, filter];
674
463
  }));
675
464
  return;
676
465
  }
677
-
678
466
  case sagas.LOAD_FILTERS_ERROR:
679
467
  case sagas.LOAD_FILTERS_COMPLETE:
680
468
  {
469
+ var _nextFilter$items;
681
470
  const {
682
471
  facetKey,
683
472
  filterKey,
684
473
  nextFilter
685
474
  } = action;
686
- const filter = state[action.context][facetKey].filters[filterKey];
687
-
688
- if (!(nextFilter.items && nextFilter.items.length > 0) && (filter.items || []).length >= nextFilter.items.length) {
475
+ const stateFilter = state[action.context][facetKey].filters[filterKey];
476
+ if (!((_nextFilter$items = nextFilter.items) !== null && _nextFilter$items !== void 0 && _nextFilter$items.length) && (stateFilter.items || []).length >= nextFilter.items.length) {
689
477
  // Preserve items already in state
690
- state[action.context][facetKey].filters[filterKey] = { ...filter,
478
+ state[action.context][facetKey].filters[filterKey] = {
479
+ ...stateFilter,
691
480
  isLoading: false,
692
481
  isError: nextFilter.isError
693
482
  };
694
483
  return;
695
484
  }
696
-
697
- state[action.context][facetKey].filters[filterKey] = merge__default["default"](filter, nextFilter, {
485
+ state[action.context][facetKey].filters[filterKey] = merge__default.default(stateFilter, nextFilter, {
698
486
  arrayMerge: (source, inbound) => inbound
699
487
  });
700
488
  return;
701
489
  }
702
-
703
490
  case sagas.SET_ROUTE_FILTERS:
704
491
  {
705
492
  var _state$context$facet$;
706
-
707
493
  const {
708
494
  facet,
709
495
  params,
@@ -716,14 +502,16 @@ var reducers = (config => {
716
502
  orderBy
717
503
  } = params;
718
504
  const stateTerm = state.term;
719
- const tabId = state[context][facet].tabId || 0; // Reset the facet if the search term has changed, or if the any of
720
- // the filters have changed
505
+ const tabId = state[context][facet].tabId || 0;
721
506
 
507
+ // Reset the facet if the search term has changed, or if the any of
508
+ // the filters have changed
722
509
  const resetAllFacets = stateTerm && term !== stateTerm;
723
- let resetCurrentFacet = false; // Add filter values in params to the matched filters in state for the current facet
510
+ let resetCurrentFacet = false;
511
+
512
+ // Add filter values in params to the matched filters in state for the current facet
724
513
  // causing unfetched filter items to be generated with isSelected: true
725
514
  // or existing filter items to be tagged with isSelected: true
726
-
727
515
  const nextFacets = Object.fromEntries(Object.entries(state[context]).map(([facetName = '', stateFacet]) => {
728
516
  const isCurrentFacet = facetName === facet;
729
517
  const nextFilters = generateFiltersState({
@@ -732,7 +520,7 @@ var reducers = (config => {
732
520
  context,
733
521
  isCurrentFacet
734
522
  }, state);
735
- resetCurrentFacet = state.config.isLoaded === true && !equals__default["default"](nextFilters, stateFacet.filters);
523
+ resetCurrentFacet = state.config.isLoaded === true && !equals__default.default(nextFilters, stateFacet.filters);
736
524
  stateFacet = resetCurrentFacet ? resetFacet(stateFacet) : stateFacet;
737
525
  stateFacet.filters = nextFilters;
738
526
  stateFacet.queryParams.dynamicOrderBy = sagas.toArray(orderBy) || [];
@@ -743,7 +531,8 @@ var reducers = (config => {
743
531
  state[action.context === sagas.Context.facets ? 'currentFacet' : 'currentListing'] = facet;
744
532
  state.term = term;
745
533
  state.tabs[tabId].currentFacet = facet;
746
- state[context][facet].pagingInfo = { ...(state[context][facet].pagingInfo || pagingInfo),
534
+ state[context][facet].pagingInfo = {
535
+ ...(state[context][facet].pagingInfo || pagingInfo),
747
536
  pageIndex: Number(pageIndex) - 1 || (state[context][facet].queryParams.loadMorePaging ? ((_state$context$facet$ = state[context][facet].pagingInfo) === null || _state$context$facet$ === void 0 ? void 0 : _state$context$facet$.pageIndex) || 0 : 0),
748
537
  pageSize: Number(pageSize) || state[context][facet].queryParams.pageSize
749
538
  };
@@ -752,30 +541,48 @@ var reducers = (config => {
752
541
  if (resetAllFacets) state[context] = resetFacets(state, context);
753
542
  return;
754
543
  }
755
-
756
544
  case sagas.SET_SEARCH_ENTRIES:
757
545
  {
758
546
  const thisContext = action.context || context;
759
547
  const currentFacet = state[thisContext][action.facet];
760
- state[thisContext][action.facet] = merge__default["default"](currentFacet, action.nextFacet, {
548
+
549
+ // // Handle aggregations client-side where the filter items have loaded before the results containing the aggregations
550
+ // for (const [filterKey, filter] of Object.entries(
551
+ // currentFacet.filters
552
+ // )) {
553
+ // const aggregation = (action.nextFacet as Partial<Facet>)
554
+ // .aggregations?.[convertKeyForAggregation(filterKey)];
555
+
556
+ // for (const filterItem of filter.items || []) {
557
+ // if (!aggregation) delete filterItem.aggregate;
558
+ // else {
559
+ // const aggregate = aggregation[filterItem.key.toLowerCase()];
560
+ // if (typeof aggregate === 'number')
561
+ // filterItem.aggregate = aggregate;
562
+ // else delete filterItem.aggregate;
563
+ // }
564
+ // }
565
+ // }
566
+
567
+ state[thisContext][action.facet] = merge__default.default(currentFacet, action.nextFacet, {
761
568
  arrayMerge: (source, inbound) => inbound
762
569
  });
763
570
  return;
764
571
  }
765
-
766
572
  case sagas.SET_SEARCH_FILTERS:
767
573
  {
768
574
  var _action$params;
769
-
770
575
  // DO SEARCH then SET_SEARCH_FILTERS is for when we cannot use SET_ROUTE_FILTERS
771
576
  // for example in a minilist scenario where the route filters
772
577
  // are used for the primary page / listing navigation
578
+
773
579
  // Add filter values in params to the matched filters in state
774
580
  // causing unfetched filter items to be generated with isSelected: true
775
- const filters = generateFiltersState({ ...action,
581
+ const filters = generateFiltersState({
582
+ ...action,
776
583
  isCurrentFacet: true
777
584
  }, state);
778
- const term = action === null || action === void 0 ? void 0 : (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
585
+ const term = action === null || action === void 0 || (_action$params = action.params) === null || _action$params === void 0 ? void 0 : _action$params.term;
779
586
  const useSearchTerm = state[action.context || sagas.Context.minilist][action.facet].queryParams.useSearchTerm || false;
780
587
  state[action.context || sagas.Context.minilist][action.facet].filters = filters;
781
588
  state[action.context || sagas.Context.minilist][action.facet].queryParams.excludeIds = action.excludeIds;
@@ -783,7 +590,6 @@ var reducers = (config => {
783
590
  state.config.ssr = typeof window === 'undefined';
784
591
  return;
785
592
  }
786
-
787
593
  case sagas.UPDATE_PAGE_INDEX:
788
594
  {
789
595
  const {
@@ -798,7 +604,6 @@ var reducers = (config => {
798
604
  state[context][current].queryDuration = 0;
799
605
  return;
800
606
  }
801
-
802
607
  case sagas.UPDATE_PAGE_SIZE:
803
608
  {
804
609
  const {
@@ -810,14 +615,12 @@ var reducers = (config => {
810
615
  state[context][current].queryDuration = 0;
811
616
  return;
812
617
  }
813
-
814
618
  case sagas.UPDATE_SEARCH_TERM:
815
619
  {
816
620
  state.term = action.term;
817
621
  state[context] = resetFacets(state, context);
818
622
  return;
819
623
  }
820
-
821
624
  case sagas.UPDATE_SELECTED_FILTERS:
822
625
  {
823
626
  const {
@@ -830,29 +633,27 @@ var reducers = (config => {
830
633
  const currentItems = state[context][current].filters[filter].items;
831
634
  if (isGrouped) state[context] = resetFacets(state, context);
832
635
  state[context][current] = resetFacet(state[context][current]);
833
-
834
636
  if (isUnknownItem && (currentItems === null || currentItems === void 0 ? void 0 : currentItems.findIndex(item => (item === null || item === void 0 ? void 0 : item.key) === key)) === -1) {
835
- currentItems === null || currentItems === void 0 ? void 0 : currentItems.push({
637
+ currentItems === null || currentItems === void 0 || currentItems.push({
836
638
  key,
837
639
  isSelected: false
838
640
  });
839
641
  }
840
-
841
642
  state[context][current].filters[filter].items = currentItems === null || currentItems === void 0 ? void 0 : currentItems.map(item => {
842
643
  if (item.key === key) {
843
- return { ...item,
644
+ return {
645
+ ...item,
844
646
  isSelected: !item.isSelected
845
647
  };
846
648
  }
847
-
848
- if (isSingleSelect) return { ...item,
649
+ if (isSingleSelect) return {
650
+ ...item,
849
651
  isSelected: false
850
652
  };
851
653
  return item;
852
654
  });
853
655
  return;
854
656
  }
855
-
856
657
  case sagas.UPDATE_SORT_ORDER:
857
658
  {
858
659
  const {
@@ -864,12 +665,11 @@ var reducers = (config => {
864
665
  state[context][currentFacet].queryParams.dynamicOrderBy = orderBy ? sagas.toArray(orderBy) || [] : [];
865
666
  return;
866
667
  }
867
-
868
668
  default:
869
669
  return;
870
670
  }
871
671
  }, initState);
872
- });
672
+ };
873
673
 
874
674
  const Context = {
875
675
  facets: 'facets',
@@ -889,11 +689,11 @@ exports.triggerListingSsr = sagas.triggerListingSsr;
889
689
  exports.triggerMinilistSsr = sagas.triggerMinilistSsr;
890
690
  exports.triggerSearchSsr = sagas.triggerSearchSsr;
891
691
  exports.types = sagas.types;
692
+ exports.useFacets = sagas.useFacets;
693
+ exports.useListing = sagas.useListing;
892
694
  exports.Context = Context;
893
695
  exports.reducer = reducers;
894
696
  exports.schema = schema;
895
- exports.useFacets = useFacets;
896
- exports.useListing = useListing;
897
697
  exports.useMinilist = useMinilist;
898
698
  exports.withListing = withListing;
899
699
  exports.withSearch = withSearch;