@zengenti/contensis-react-base 3.3.2-beta.1 → 4.0.0-beta.10

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 (125) hide show
  1. package/cjs/{App-B2ohFzUt.js → App-vZrUfVgQ.js} +7 -20
  2. package/cjs/{App-B2ohFzUt.js.map → App-vZrUfVgQ.js.map} +1 -1
  3. package/cjs/{ChangePassword.container-Dup9_na7.js → ChangePassword.container-ECjEXixF.js} +2 -2
  4. package/cjs/{ChangePassword.container-Dup9_na7.js.map → ChangePassword.container-ECjEXixF.js.map} +1 -1
  5. package/cjs/CookieHelper.class-C3Eqoze9.js +471 -0
  6. package/cjs/CookieHelper.class-C3Eqoze9.js.map +1 -0
  7. package/cjs/{RouteLoader-De-dhkg-.js → RouteLoader-D5Yg7EB5.js} +143 -44
  8. package/cjs/RouteLoader-D5Yg7EB5.js.map +1 -0
  9. package/cjs/{SSRContext-DpnwQ2te.js → SSRContext-DVj_QAC1.js} +23 -9
  10. package/cjs/SSRContext-DVj_QAC1.js.map +1 -0
  11. package/cjs/ToJs-C9jwV7YB.js.map +1 -1
  12. package/cjs/VersionInfo-B_dKCubg.js +204 -0
  13. package/cjs/VersionInfo-B_dKCubg.js.map +1 -0
  14. package/cjs/client.js +53 -20
  15. package/cjs/client.js.map +1 -1
  16. package/cjs/contensis-react-base.js +409 -134
  17. package/cjs/contensis-react-base.js.map +1 -1
  18. package/cjs/fromJSLeaveImmer-Blvlk4t2.js.map +1 -1
  19. package/cjs/redux.js +3 -3
  20. package/cjs/routing.js +8 -7
  21. package/cjs/routing.js.map +1 -1
  22. package/cjs/{sagas-Ekfrk7xA.js → sagas-BVX4Ps1e.js} +326 -130
  23. package/cjs/sagas-BVX4Ps1e.js.map +1 -0
  24. package/cjs/search.js +3 -194
  25. package/cjs/search.js.map +1 -1
  26. package/cjs/selectors-wCs5fHD4.js.map +1 -1
  27. package/cjs/{store-BihH67lI.js → store-D07FOXvM.js} +6 -9
  28. package/cjs/store-D07FOXvM.js.map +1 -0
  29. package/cjs/user.js +2 -2
  30. package/cjs/user.js.map +1 -1
  31. package/cjs/util.js +17 -182
  32. package/cjs/util.js.map +1 -1
  33. package/cjs/{version-Cg79mdPg.js → version-B7XFkBhY.js} +2 -2
  34. package/{esm/version-BnnERhzW.js.map → cjs/version-B7XFkBhY.js.map} +1 -1
  35. package/cjs/version-CM-bJ62L.js.map +1 -1
  36. package/esm/{App-BPsH6nHc.js → App-DLZweVSp.js} +10 -23
  37. package/esm/{App-BPsH6nHc.js.map → App-DLZweVSp.js.map} +1 -1
  38. package/esm/{ChangePassword.container-Bcpef423.js → ChangePassword.container-BgzIy8dA.js} +5 -5
  39. package/esm/{ChangePassword.container-Bcpef423.js.map → ChangePassword.container-BgzIy8dA.js.map} +1 -1
  40. package/esm/CookieHelper.class-FTURFpz3.js +464 -0
  41. package/esm/CookieHelper.class-FTURFpz3.js.map +1 -0
  42. package/esm/{RouteLoader-CipkGOgr.js → RouteLoader-xeQBXywk.js} +143 -49
  43. package/esm/RouteLoader-xeQBXywk.js.map +1 -0
  44. package/esm/{SSRContext-3TvaCDn0.js → SSRContext-BE8ElZ3X.js} +26 -12
  45. package/esm/SSRContext-BE8ElZ3X.js.map +1 -0
  46. package/esm/{ToJs-B4MH53fx.js → ToJs-CNzfvyxJ.js} +3 -3
  47. package/esm/{ToJs-B4MH53fx.js.map → ToJs-CNzfvyxJ.js.map} +1 -1
  48. package/esm/VersionInfo-Cno7K0OA.js +193 -0
  49. package/esm/VersionInfo-Cno7K0OA.js.map +1 -0
  50. package/esm/client.js +57 -25
  51. package/esm/client.js.map +1 -1
  52. package/esm/contensis-react-base.js +407 -132
  53. package/esm/contensis-react-base.js.map +1 -1
  54. package/esm/fromJSLeaveImmer-C_YACmOf.js.map +1 -1
  55. package/esm/redux.js +8 -8
  56. package/esm/routing.js +7 -9
  57. package/esm/routing.js.map +1 -1
  58. package/esm/{sagas-Cd05ZBBH.js → sagas-JI51CS37.js} +311 -115
  59. package/esm/sagas-JI51CS37.js.map +1 -0
  60. package/esm/search.js +21 -212
  61. package/esm/search.js.map +1 -1
  62. package/esm/{selectors-BRzliwbK.js → selectors-DO2ocdOp.js} +2 -2
  63. package/esm/selectors-DO2ocdOp.js.map +1 -0
  64. package/esm/{store-f0WxNWUu.js → store-3u0RzHZ0.js} +7 -9
  65. package/esm/store-3u0RzHZ0.js.map +1 -0
  66. package/esm/user.js +6 -6
  67. package/esm/user.js.map +1 -1
  68. package/esm/util.js +14 -177
  69. package/esm/util.js.map +1 -1
  70. package/esm/{version-BnnERhzW.js → version-BlsI7hX2.js} +3 -3
  71. package/{cjs/version-Cg79mdPg.js.map → esm/version-BlsI7hX2.js.map} +1 -1
  72. package/esm/{version-78jjDnHU.js → version-wnf-TITV.js} +2 -2
  73. package/esm/{version-78jjDnHU.js.map → version-wnf-TITV.js.map} +1 -1
  74. package/models/app/App.d.ts +2 -2
  75. package/models/app/pages/VersionInfo/components/VersionInfo.d.ts +7 -2
  76. package/models/models/AppState.d.ts +4 -5
  77. package/models/models/GetRouteActionArgs.d.ts +2 -2
  78. package/models/models/MatchedRoute.d.ts +4 -0
  79. package/models/models/SSRContext.d.ts +23 -0
  80. package/models/models/StaticRoute.d.ts +8 -4
  81. package/models/models/config/AppConfig.d.ts +1 -0
  82. package/models/models/config/ServerConfig.d.ts +1 -0
  83. package/models/models/config/StateType.d.ts +1 -0
  84. package/models/models/index.d.ts +1 -0
  85. package/models/redux/store/history.d.ts +2 -2
  86. package/models/redux/store/injectors.d.ts +4 -4
  87. package/models/redux/store/store.d.ts +1 -1
  88. package/models/routing/components/Redirect.d.ts +5 -0
  89. package/models/routing/components/RouteLoader.d.ts +2 -2
  90. package/models/routing/components/StaticRouteLoader.d.ts +6 -0
  91. package/models/routing/httpContext.d.ts +7 -0
  92. package/models/routing/index.d.ts +3 -0
  93. package/models/routing/redux/actions.d.ts +2 -3
  94. package/models/search/containers/withListing.d.ts +4 -1
  95. package/models/search/containers/withSearch.d.ts +4 -1
  96. package/models/server/features/response-handler/render-stream.d.ts +26 -0
  97. package/models/server/util/html.d.ts +23 -0
  98. package/models/server/util/jsx.d.ts +55 -0
  99. package/models/user/hocs/withRegistration.d.ts +6 -3
  100. package/models/util/ContensisDeliveryApi.d.ts +1 -2
  101. package/models/util/SSRContext.d.ts +17 -6
  102. package/models/util/mergeStaticRoutes.d.ts +1 -0
  103. package/package.json +25 -30
  104. package/cjs/CookieHelper.class-CxeVo9EP.js +0 -489
  105. package/cjs/CookieHelper.class-CxeVo9EP.js.map +0 -1
  106. package/cjs/RouteLoader-De-dhkg-.js.map +0 -1
  107. package/cjs/SSRContext-DpnwQ2te.js.map +0 -1
  108. package/cjs/forms.js +0 -5673
  109. package/cjs/forms.js.map +0 -1
  110. package/cjs/sagas-Ekfrk7xA.js.map +0 -1
  111. package/cjs/store-BihH67lI.js.map +0 -1
  112. package/cjs/urls-DVIwGZmd.js +0 -25
  113. package/cjs/urls-DVIwGZmd.js.map +0 -1
  114. package/esm/CookieHelper.class-W_NNNJKT.js +0 -482
  115. package/esm/CookieHelper.class-W_NNNJKT.js.map +0 -1
  116. package/esm/RouteLoader-CipkGOgr.js.map +0 -1
  117. package/esm/SSRContext-3TvaCDn0.js.map +0 -1
  118. package/esm/forms.js +0 -5661
  119. package/esm/forms.js.map +0 -1
  120. package/esm/sagas-Cd05ZBBH.js.map +0 -1
  121. package/esm/selectors-BRzliwbK.js.map +0 -1
  122. package/esm/store-f0WxNWUu.js.map +0 -1
  123. package/esm/urls-DfCisos-.js +0 -22
  124. package/esm/urls-DfCisos-.js.map +0 -1
  125. package/models/forms/index.d.ts +0 -1
@@ -2,18 +2,74 @@
2
2
 
3
3
  var React = require('react');
4
4
  var reactRedux = require('react-redux');
5
- var reactHotLoader = require('react-hot-loader');
6
5
  var reactRouterDom = require('react-router-dom');
7
- var reactRouterConfig = require('react-router-config');
8
6
  var reselect = require('reselect');
9
7
  var selectors = require('./selectors-wCs5fHD4.js');
10
8
  var ToJs = require('./ToJs-C9jwV7YB.js');
11
- var SSRContext = require('./SSRContext-DpnwQ2te.js');
9
+ var SSRContext = require('./SSRContext-DVj_QAC1.js');
12
10
 
13
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
12
 
15
13
  var React__default = /*#__PURE__*/_interopDefault(React);
16
14
 
15
+ const mergeStaticRoutes = matchedStaticRoute => {
16
+ let finalRoute = {};
17
+ for (const [i, route] of matchedStaticRoute.entries()) {
18
+ const staticRouteCopy = {
19
+ ...route.route
20
+ };
21
+ if (i === matchedStaticRoute.length - 1) {
22
+ finalRoute = {
23
+ ...finalRoute,
24
+ ...staticRouteCopy,
25
+ fullPath: `${finalRoute.fullPath || ''}${route.route.path ? route.route.path : ''}`
26
+ };
27
+ matchedStaticRoute[i].route = finalRoute;
28
+ } else {
29
+ delete staticRouteCopy.children;
30
+ delete staticRouteCopy.index;
31
+ delete staticRouteCopy.path;
32
+ delete staticRouteCopy.component;
33
+ delete staticRouteCopy.element;
34
+ finalRoute = {
35
+ ...finalRoute,
36
+ ...staticRouteCopy,
37
+ fullPath: `${finalRoute.fullPath || ''}${route.route.path ? route.route.path.endsWith('/') ? route.route.path : route.route.path + '/' : ''}`
38
+ };
39
+ }
40
+ }
41
+ };
42
+
43
+ const HttpContext = /*#__PURE__*/React.createContext({});
44
+ const useHttpContext = () => {
45
+ return React.useContext(HttpContext);
46
+ };
47
+
48
+ const Redirect = ({
49
+ code,
50
+ to
51
+ }) => {
52
+ const httpContext = useHttpContext();
53
+ if (httpContext) {
54
+ httpContext.statusCode = code;
55
+ httpContext.url = to;
56
+ }
57
+ return /*#__PURE__*/React__default.default.createElement(reactRouterDom.Navigate, {
58
+ to: to
59
+ });
60
+ };
61
+
62
+ const Status = ({
63
+ code,
64
+ children
65
+ }) => {
66
+ const httpContext = useHttpContext();
67
+ if (httpContext) {
68
+ httpContext.statusCode = code;
69
+ }
70
+ return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, children);
71
+ };
72
+
17
73
  const NotFound = ({
18
74
  statusCode,
19
75
  statusText
@@ -26,18 +82,11 @@ const NotFound = ({
26
82
  }
27
83
  }, statusText)));
28
84
 
29
- const Status = ({
30
- code,
31
- children
85
+ const StaticRouteLoader = ({
86
+ staticRoutes
32
87
  }) => {
33
- return /*#__PURE__*/React__default.default.createElement(reactRouterDom.Route, {
34
- render: ({
35
- staticContext
36
- }) => {
37
- if (staticContext) staticContext.statusCode = code;
38
- return children;
39
- }
40
- });
88
+ const staticRouteElement = reactRouterDom.useRoutes(staticRoutes);
89
+ return /*#__PURE__*/React__default.default.createElement(React__default.default.Fragment, null, staticRouteElement);
41
90
  };
42
91
 
43
92
  const replaceDoubleSlashRecursive = path => {
@@ -57,6 +106,43 @@ const getTrimmedPath = path => {
57
106
  }
58
107
  return path;
59
108
  };
109
+ const processStaticRoutes = (staticRoutes, componentProps) => {
110
+ const {
111
+ projectId,
112
+ contentTypeId,
113
+ entry,
114
+ mappedEntry,
115
+ isLoggedIn
116
+ } = componentProps;
117
+ return staticRoutes.map(x => {
118
+ const route = {
119
+ ...x
120
+ };
121
+ if (route.component) {
122
+ route.element = /*#__PURE__*/React__default.default.createElement(route.component, {
123
+ projectId: projectId,
124
+ contentTypeId: contentTypeId ? contentTypeId : undefined,
125
+ entry: entry,
126
+ mappedEntry: mappedEntry,
127
+ isLoggedIn: isLoggedIn
128
+ });
129
+ delete route.component;
130
+ }
131
+ if (route.element) {
132
+ route.element = /*#__PURE__*/React.cloneElement(route.element, {
133
+ projectId,
134
+ contentTypeId,
135
+ entry,
136
+ mappedEntry,
137
+ isLoggedIn
138
+ });
139
+ }
140
+ if (route.children) {
141
+ route.children = processStaticRoutes(route.children, componentProps);
142
+ }
143
+ return route;
144
+ });
145
+ };
60
146
  const RouteLoader = ({
61
147
  contentTypeId,
62
148
  entry,
@@ -86,38 +172,53 @@ const RouteLoader = ({
86
172
  // Always ensure paths are trimmed of trailing slashes so urls are always unique
87
173
  const trimmedPath = getTrimmedPath(location.pathname);
88
174
 
175
+ // Convert any react-router-v5 style routes to react-router-v6 style routes.
176
+ const staticRoutes = processStaticRoutes(routes.StaticRoutes, {
177
+ projectId,
178
+ contentTypeId,
179
+ entry,
180
+ mappedEntry,
181
+ isLoggedIn
182
+ });
183
+
89
184
  // Match any Static Routes a developer has defined
90
- const matchedStaticRoute = () => reactRouterConfig.matchRoutes(routes.StaticRoutes, location.pathname);
91
- const isStaticRoute = () => matchedStaticRoute().length > 0;
92
- const staticRoute = isStaticRoute() ? matchedStaticRoute()[0] : undefined;
93
- const routeRequiresLogin = staticRoute && staticRoute.route.requireLogin;
185
+ const matchedStaticRoute = reactRouterDom.matchRoutes(staticRoutes, location);
186
+ const isStaticRoute = matchedStaticRoute && matchedStaticRoute.length > 0;
187
+
188
+ // Combine custom params for all static routes, with the furthest config taking precedence.
189
+ if (isStaticRoute) {
190
+ mergeStaticRoutes(matchedStaticRoute);
191
+ }
192
+ const staticRoute = isStaticRoute ? matchedStaticRoute.pop() || undefined : undefined;
193
+ const routeRequiresLogin = staticRoute ? staticRoute.route.requireLogin : undefined;
94
194
  const setPath = React.useCallback(() => {
95
195
  // Use serverPath to control the path we send to siteview node api to resolve a route
96
196
  let serverPath = '';
97
- if (staticRoute && staticRoute.match && staticRoute.match.isExact) {
197
+ if (staticRoute && staticRoute.pathname === staticRoute.pathnameBase) {
98
198
  var _route$path, _route$fetchNode;
99
199
  const {
100
- match,
101
- route
200
+ route,
201
+ pathname,
202
+ params
102
203
  } = staticRoute;
103
204
  if ((_route$path = route.path) !== null && _route$path !== void 0 && _route$path.includes('*')) {
104
205
  // Send the whole url to api if we have matched route containing wildcard
105
- serverPath = match.url;
206
+ serverPath = pathname;
106
207
  } else if (typeof route.fetchNodeLevel === 'number') {
107
208
  // Send all url parts to a specified level to api
108
- serverPath = match.url.split('/').splice(0, route.fetchNodeLevel + 1).join('/');
109
- } else if ((_route$fetchNode = route.fetchNode) !== null && _route$fetchNode !== void 0 && _route$fetchNode.params) {
209
+ serverPath = pathname.split('/').splice(0, route.fetchNodeLevel + 1).join('/');
210
+ } else if (typeof route.fetchNode === 'object' && (_route$fetchNode = route.fetchNode) !== null && _route$fetchNode !== void 0 && _route$fetchNode.params) {
110
211
  const fetchNodeParams = route.fetchNode.params;
111
- const routeParams = match.params;
212
+ const routeParams = params;
112
213
  const regexExp = new RegExp(Object.keys(routeParams).map(p => `:${p}`).join('|'), 'g');
113
- serverPath = match.path.replace(/\?/g, '').replace(regexExp, matched => {
214
+ serverPath = pathname.replace(/\?/g, '').replace(regexExp, matched => {
114
215
  const param = matched.replace(':', '');
115
- if (fetchNodeParams.includes(param)) return routeParams[param];else return '';
216
+ if (fetchNodeParams.includes(param)) return routeParams[param] || '';else return '';
116
217
  }).replace(/\/$/, '');
117
218
  } else {
118
- var _route$path2;
219
+ var _route$fullPath;
119
220
  // Send all non-parameterised url parts to api
120
- serverPath = (_route$path2 = route.path) === null || _route$path2 === void 0 ? void 0 : _route$path2.split('/').filter(p => !p.startsWith(':')).join('/');
221
+ serverPath = (_route$fullPath = route.fullPath) === null || _route$fullPath === void 0 ? void 0 : _route$fullPath.split('/').filter(p => !p.startsWith(':')).join('/');
121
222
  }
122
223
  }
123
224
  setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes, ssrContext);
@@ -134,21 +235,16 @@ const RouteLoader = ({
134
235
 
135
236
  // Need to redirect when url endswith a /
136
237
  if (location.pathname.length > trimmedPath.length) {
137
- return /*#__PURE__*/React__default.default.createElement(Status, {
138
- code: trailingSlashRedirectCode
139
- }, /*#__PURE__*/React__default.default.createElement(reactRouterDom.Redirect, {
238
+ return /*#__PURE__*/React__default.default.createElement(Redirect, {
239
+ code: trailingSlashRedirectCode || 302,
140
240
  to: `${trimmedPath}${location.search}${location.hash}`
141
- }));
241
+ });
142
242
  }
143
243
 
144
244
  // Render any Static Routes a developer has defined
145
- if (isStaticRoute() && !(!isLoggedIn && routeRequiresLogin)) {
146
- if (ToJs.matchUserGroup(userGroups, routeRequiresLogin)) return reactRouterConfig.renderRoutes(routes.StaticRoutes, {
147
- projectId,
148
- contentTypeId,
149
- entry,
150
- mappedEntry,
151
- isLoggedIn
245
+ if (isStaticRoute && !(!isLoggedIn && routeRequiresLogin)) {
246
+ if (ToJs.matchUserGroup(userGroups, routeRequiresLogin)) return /*#__PURE__*/React__default.default.createElement(StaticRouteLoader, {
247
+ staticRoutes: staticRoutes
152
248
  });
153
249
  }
154
250
 
@@ -201,9 +297,12 @@ const mapStateToPropsMemoized = reselect.createSelector(selectors.selectRouteEnt
201
297
  const mapDispatchToProps = {
202
298
  setNavigationPath: selectors.setNavigationPath
203
299
  };
204
- var RouteLoader$1 = reactHotLoader.hot(module)(reactRedux.connect(mapStateToPropsMemoized, mapDispatchToProps)(ToJs.toJS(RouteLoader))
205
- // eslint-disable-next-line no-unused-vars
206
- );
300
+ var RouteLoader$1 = reactRedux.connect(mapStateToPropsMemoized, mapDispatchToProps)(ToJs.toJS(RouteLoader));
207
301
 
302
+ exports.HttpContext = HttpContext;
303
+ exports.Redirect = Redirect;
208
304
  exports.RouteLoader = RouteLoader$1;
209
- //# sourceMappingURL=RouteLoader-De-dhkg-.js.map
305
+ exports.Status = Status;
306
+ exports.mergeStaticRoutes = mergeStaticRoutes;
307
+ exports.useHttpContext = useHttpContext;
308
+ //# sourceMappingURL=RouteLoader-D5Yg7EB5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteLoader-D5Yg7EB5.js","sources":["../src/util/mergeStaticRoutes.ts","../src/routing/httpContext.ts","../src/routing/components/Redirect.tsx","../src/routing/components/Status.tsx","../src/routing/components/NotFound.tsx","../src/routing/components/StaticRouteLoader.tsx","../src/routing/components/RouteLoader.tsx"],"sourcesContent":["import { StaticRoute } from '../';\n\nexport const mergeStaticRoutes = matchedStaticRoute => {\n let finalRoute: StaticRoute = {};\n for (const [i, route] of matchedStaticRoute.entries()) {\n const staticRouteCopy = { ...route.route };\n if (i === matchedStaticRoute.length - 1) {\n finalRoute = {\n ...finalRoute,\n ...staticRouteCopy,\n fullPath: `${finalRoute.fullPath || ''}${\n route.route.path ? route.route.path : ''\n }`,\n };\n matchedStaticRoute[i].route = finalRoute;\n } else {\n delete staticRouteCopy.children;\n delete staticRouteCopy.index;\n delete staticRouteCopy.path;\n delete staticRouteCopy.component;\n delete staticRouteCopy.element;\n finalRoute = {\n ...finalRoute,\n ...staticRouteCopy,\n fullPath: `${finalRoute.fullPath || ''}${\n route.route.path\n ? route.route.path.endsWith('/')\n ? route.route.path\n : route.route.path + '/'\n : ''\n }`,\n };\n }\n }\n};\n","import { createContext, useContext } from 'react';\n\nexport type HttpContextValues = {\n statusCode?: number;\n url?: string;\n};\n\nexport const HttpContext = createContext<HttpContextValues>({});\nexport const useHttpContext = () => {\n return useContext(HttpContext);\n};\n","import React, { PropsWithChildren } from 'react';\nimport { Navigate } from 'react-router-dom';\nimport { useHttpContext } from '../httpContext';\n\nexport const Redirect = ({\n code,\n to,\n}: PropsWithChildren<{ code: 301 | 302; to: string }>) => {\n const httpContext = useHttpContext();\n if (httpContext) {\n httpContext.statusCode = code;\n httpContext.url = to;\n }\n return <Navigate to={to} />;\n};\n","import React, { PropsWithChildren } from 'react';\nimport { useHttpContext } from '../httpContext';\n\nexport const Status = ({\n code,\n children,\n}: PropsWithChildren<{ code: number }>) => {\n const httpContext = useHttpContext();\n if (httpContext) {\n httpContext.statusCode = code;\n }\n return <>{children}</>;\n};\n","import React from 'react';\n\nconst NotFound = ({\n statusCode,\n statusText,\n}: {\n statusCode: number;\n statusText: string;\n}) => (\n <>\n <header>\n <h1>{statusCode || '404'} Page Not Found</h1>\n {statusText && (\n <h2\n style={{\n background: '#eee',\n color: '#666',\n fontSize: '100%',\n padding: '10px',\n }}\n >\n {statusText}\n </h2>\n )}\n </header>\n </>\n);\n\nexport default NotFound;\n","import React from 'react';\nimport { RouteObject, useRoutes } from 'react-router-dom';\nimport type { StaticRoute } from '~/models';\n\nexport interface StaticRouteLoaderProps {\n staticRoutes: StaticRoute[];\n}\n\nexport const StaticRouteLoader = ({ staticRoutes }: StaticRouteLoaderProps) => {\n const staticRouteElement = useRoutes(staticRoutes as RouteObject[]);\n return <>{staticRouteElement}</>;\n};\n","import React, { useEffect, useCallback, cloneElement } from 'react';\nimport { connect } from 'react-redux';\nimport { useLocation, matchRoutes, RouteObject } from 'react-router-dom';\n\nimport { createSelector } from 'reselect';\n\nimport NotFound from './NotFound';\nimport { Status } from './Status';\n\nimport {\n selectCurrentPath,\n selectCurrentProject,\n selectIsNotFound,\n selectMappedEntry,\n selectRouteEntry,\n selectRouteEntryContentTypeId,\n selectRouteErrorMessage,\n selectRouteIsError,\n selectRouteLoading,\n selectRouteStatusCode,\n} from '../redux/selectors';\nimport { setNavigationPath } from '../redux/actions';\n\nimport {\n selectUserGroups,\n selectUserIsAuthenticated,\n} from '~/user/redux/selectors';\nimport { matchUserGroup } from '~/user/util/matchGroups';\nimport { toJS } from '~/util/ToJs';\nimport { useSSRContext } from '~/util/SSRContext';\n\nimport { mergeStaticRoutes } from '~/util/mergeStaticRoutes';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { AppRootProps, MatchedRoute, RouteComponentProps, RouteLoaderProps, StaticRoute } from '~/models';\nimport { StaticRouteLoader } from './StaticRouteLoader';\nimport { Redirect } from './Redirect';\n\nconst replaceDoubleSlashRecursive = (path: string) => {\n const nextPath = path.replace(/\\/\\//, '/');\n\n if (nextPath.match(/\\/\\//)) {\n return replaceDoubleSlashRecursive(nextPath);\n }\n\n return nextPath;\n};\n\nconst getTrimmedPath = path => {\n if (path !== '/') {\n const nextPath = replaceDoubleSlashRecursive(path);\n const lastChar = nextPath[nextPath.length - 1];\n if (lastChar === '/') {\n return nextPath.substring(0, nextPath.length - 1);\n }\n }\n return path;\n};\n\nconst processStaticRoutes = (\n staticRoutes: StaticRoute[],\n componentProps: Partial<IReduxProps>\n) => {\n const { projectId, contentTypeId, entry, mappedEntry, isLoggedIn } =\n componentProps;\n return staticRoutes.map(x => {\n const route = { ...x };\n if (route.component) {\n route.element = (\n <route.component\n projectId={projectId}\n contentTypeId={contentTypeId ? contentTypeId : undefined}\n entry={entry}\n mappedEntry={mappedEntry}\n isLoggedIn={isLoggedIn}\n />\n );\n delete route.component;\n }\n if (route.element) {\n route.element = cloneElement(route.element as React.ReactElement<any>, {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n });\n }\n if (route.children) {\n route.children = processStaticRoutes(route.children, componentProps);\n }\n return route;\n });\n};\n\ninterface IReduxProps {\n contentTypeId: string | null;\n entry: Entry | null;\n isError: boolean;\n isNotFound: boolean;\n isLoading: boolean;\n isLoggedIn: boolean;\n mappedEntry: any;\n projectId: string;\n setNavigationPath: typeof setNavigationPath;\n statePath: string;\n statusCode: any;\n statusText: string;\n userGroups: any;\n}\n\nconst RouteLoader = ({\n contentTypeId,\n entry,\n isError,\n isLoading,\n isLoggedIn,\n isNotFound,\n loadingComponent,\n mappedEntry,\n notFoundComponent,\n projectId,\n routes,\n setNavigationPath,\n statePath,\n statusCode,\n statusText,\n userGroups,\n withEvents,\n trailingSlashRedirectCode = 302,\n}: AppRootProps & RouteLoaderProps & IReduxProps) => {\n const location = useLocation();\n\n // In SSR pass references to things in backing sagas\n // we cannot access in a global scope\n const ssrContext = useSSRContext();\n\n // Always ensure paths are trimmed of trailing slashes so urls are always unique\n const trimmedPath = getTrimmedPath(location.pathname);\n\n // Convert any react-router-v5 style routes to react-router-v6 style routes.\n const staticRoutes = processStaticRoutes(routes.StaticRoutes, {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n });\n\n // Match any Static Routes a developer has defined\n const matchedStaticRoute = matchRoutes(\n staticRoutes as RouteObject[],\n location\n );\n const isStaticRoute = matchedStaticRoute && matchedStaticRoute.length > 0;\n\n // Combine custom params for all static routes, with the furthest config taking precedence.\n if (isStaticRoute) {\n mergeStaticRoutes(matchedStaticRoute);\n }\n\n const staticRoute: MatchedRoute<string, StaticRoute> | undefined =\n isStaticRoute ? matchedStaticRoute.pop() || undefined : undefined;\n\n const routeRequiresLogin = staticRoute\n ? staticRoute.route.requireLogin\n : undefined;\n\n const setPath = useCallback(() => {\n // Use serverPath to control the path we send to siteview node api to resolve a route\n let serverPath = '';\n if (staticRoute && staticRoute.pathname === staticRoute.pathnameBase) {\n const { route, pathname, params } = staticRoute;\n\n if (route.path?.includes('*')) {\n // Send the whole url to api if we have matched route containing wildcard\n serverPath = pathname;\n } else if (typeof route.fetchNodeLevel === 'number') {\n // Send all url parts to a specified level to api\n serverPath = pathname\n .split('/')\n .splice(0, route.fetchNodeLevel + 1)\n .join('/');\n } else if (\n typeof route.fetchNode === 'object' &&\n route.fetchNode?.params\n ) {\n const fetchNodeParams: string[] = route.fetchNode.params;\n const routeParams = params;\n\n const regexExp = new RegExp(\n Object.keys(routeParams)\n .map(p => `:${p}`)\n .join('|'),\n 'g'\n );\n\n serverPath = pathname\n .replace(/\\?/g, '')\n .replace(regexExp, matched => {\n const param = matched.replace(':', '');\n if (fetchNodeParams.includes(param))\n return routeParams[param] || '';\n else return '';\n })\n .replace(/\\/$/, '');\n } else {\n // Send all non-parameterised url parts to api\n serverPath = (route.fullPath as string)\n ?.split('/')\n .filter(p => !p.startsWith(':'))\n .join('/');\n }\n }\n\n setNavigationPath(\n serverPath || trimmedPath,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes,\n ssrContext\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n setNavigationPath,\n // staticRoute,\n withEvents,\n location,\n routes,\n // statePath,\n trimmedPath,\n ]);\n\n if (typeof window == 'undefined') setPath();\n\n useEffect(() => {\n setPath();\n }, [location, setPath]);\n\n // Need to redirect when url endswith a /\n if (location.pathname.length > trimmedPath.length) {\n return (\n <Redirect\n code={trailingSlashRedirectCode || 302}\n to={`${trimmedPath}${location.search}${location.hash}`}\n />\n );\n }\n\n // Render any Static Routes a developer has defined\n if (isStaticRoute && !(!isLoggedIn && routeRequiresLogin)) {\n if (matchUserGroup(userGroups, routeRequiresLogin))\n return <StaticRouteLoader staticRoutes={staticRoutes} />;\n }\n\n // Render a supplied Loading component if the route\n // is not a static route and is in a loading state\n if (isLoading && !isNotFound && loadingComponent) {\n const LoadingComponent = loadingComponent;\n return <LoadingComponent />;\n }\n\n // Match any defined Content Type Mappings\n if (contentTypeId && !(!isLoggedIn && routeRequiresLogin)) {\n const MatchedComponent = routes.ContentTypeMappings.find(\n item => item.contentTypeID === contentTypeId\n );\n\n if (MatchedComponent && !(MatchedComponent.requireLogin && !isLoggedIn)) {\n if (matchUserGroup(userGroups, MatchedComponent.requireLogin))\n return (\n <MatchedComponent.component\n projectId={projectId}\n contentTypeId={contentTypeId}\n entry={entry}\n mappedEntry={mappedEntry}\n isLoggedIn={isLoggedIn}\n />\n );\n }\n }\n\n const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;\n if (isNotFound || isError) {\n console.info(\n `RouteLoader rendering NotFound component: statusCode ${statusCode}, isNotFound ${isNotFound}, isError ${isError}`\n );\n\n return (\n <Status code={statusCode}>\n <NotFoundComponent statusCode={statusCode} statusText={statusText} />\n </Status>\n );\n }\n\n return null;\n};\nconst mapStateToPropsMemoized = createSelector(\n selectRouteEntryContentTypeId,\n selectRouteEntry,\n selectRouteIsError,\n selectIsNotFound,\n selectRouteLoading,\n selectUserIsAuthenticated,\n selectMappedEntry,\n selectCurrentProject,\n selectCurrentPath,\n selectRouteStatusCode,\n selectRouteErrorMessage,\n selectUserGroups,\n (\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups\n ) => ({\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups,\n })\n);\n\nconst mapDispatchToProps = {\n setNavigationPath,\n};\n\nexport default connect(\n mapStateToPropsMemoized,\n mapDispatchToProps\n)(toJS(RouteLoader as any)) as unknown as (\n props: AppRootProps & RouteLoaderProps\n) => JSX.Element;\n"],"names":["mergeStaticRoutes","matchedStaticRoute","finalRoute","i","route","entries","staticRouteCopy","length","fullPath","path","children","index","component","element","endsWith","HttpContext","createContext","useHttpContext","useContext","Redirect","code","to","httpContext","statusCode","url","React","createElement","Navigate","Status","Fragment","NotFound","statusText","style","background","color","fontSize","padding","StaticRouteLoader","staticRoutes","staticRouteElement","useRoutes","replaceDoubleSlashRecursive","nextPath","replace","match","getTrimmedPath","lastChar","substring","processStaticRoutes","componentProps","projectId","contentTypeId","entry","mappedEntry","isLoggedIn","map","x","undefined","cloneElement","RouteLoader","isError","isLoading","isNotFound","loadingComponent","notFoundComponent","routes","setNavigationPath","statePath","userGroups","withEvents","trailingSlashRedirectCode","location","useLocation","ssrContext","useSSRContext","trimmedPath","pathname","StaticRoutes","matchRoutes","isStaticRoute","staticRoute","pop","routeRequiresLogin","requireLogin","setPath","useCallback","serverPath","pathnameBase","_route$path","_route$fetchNode","params","includes","fetchNodeLevel","split","splice","join","fetchNode","fetchNodeParams","routeParams","regexExp","RegExp","Object","keys","p","matched","param","_route$fullPath","filter","startsWith","window","useEffect","search","hash","matchUserGroup","LoadingComponent","MatchedComponent","ContentTypeMappings","find","item","contentTypeID","NotFoundComponent","console","info","mapStateToPropsMemoized","createSelector","selectRouteEntryContentTypeId","selectRouteEntry","selectRouteIsError","selectIsNotFound","selectRouteLoading","selectUserIsAuthenticated","selectMappedEntry","selectCurrentProject","selectCurrentPath","selectRouteStatusCode","selectRouteErrorMessage","selectUserGroups","mapDispatchToProps","connect","toJS"],"mappings":"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"}
@@ -6,8 +6,8 @@ var reactRedux = require('react-redux');
6
6
  var contensisDeliveryApi = require('contensis-delivery-api');
7
7
  var queryString = require('query-string');
8
8
  var selectors = require('./selectors-wCs5fHD4.js');
9
- var store = require('./store-BihH67lI.js');
10
- var CookieHelper_class = require('./CookieHelper.class-CxeVo9EP.js');
9
+ var store = require('./store-D07FOXvM.js');
10
+ var CookieHelper_class = require('./CookieHelper.class-C3Eqoze9.js');
11
11
 
12
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
13
 
@@ -313,15 +313,19 @@ const deliveryApiWithCookies = ssr => new DeliveryApi(ssr);
313
313
 
314
314
  const SSRContext = /*#__PURE__*/React.createContext(null);
315
315
 
316
- /** SSRContextProvider allows us to hold and access request-scoped references
317
- * throughout the component tree
316
+ /**
317
+ * SSRContextProvider allows us to hold and access request-scoped references
318
+ * throughout the component tree
318
319
  *
319
- * adding this in client side allows consumers to write universal code and use
320
- * the same helpers and refs as in SSR */
320
+ * adding this in client side allows consumers to write universal code and use
321
+ * the same helpers and request-scoped refs for api, cookies and redux dispatcher
322
+ * as in SSR */
321
323
  const SSRContextProvider = ({
324
+ accessMethod,
322
325
  children,
323
326
  request,
324
- response
327
+ response,
328
+ ssrAssets
325
329
  }) => {
326
330
  // In SSR pass references to things in backing sagas
327
331
  // we cannot access in a global scope
@@ -334,11 +338,13 @@ const SSRContextProvider = ({
334
338
  response
335
339
  });
336
340
  const [context] = React.useState({
341
+ accessMethod,
337
342
  api,
338
343
  cookies,
339
344
  dispatch,
340
345
  request,
341
- response
346
+ response,
347
+ ssrAssets
342
348
  });
343
349
  return /*#__PURE__*/React__default.default.createElement(SSRContext.Provider, {
344
350
  value: {
@@ -346,6 +352,14 @@ const SSRContextProvider = ({
346
352
  }
347
353
  }, children);
348
354
  };
355
+
356
+ /**
357
+ * Server side usage provides access to request-scoped references throughout the component tree
358
+ *
359
+ * Client side usage allows consumers to write universal code, using the same
360
+ * helpers and request-scoped refs for api, cookies and redux dispatcher as in SSR
361
+ * @returns SSRContextType
362
+ */
349
363
  const useSSRContext = () => React.useContext(SSRContext);
350
364
  const useDeliveryApi = () => {
351
365
  const {
@@ -362,4 +376,4 @@ exports.deliveryApiWithCookies = deliveryApiWithCookies;
362
376
  exports.getClientConfig = getClientConfig;
363
377
  exports.useDeliveryApi = useDeliveryApi;
364
378
  exports.useSSRContext = useSSRContext;
365
- //# sourceMappingURL=SSRContext-DpnwQ2te.js.map
379
+ //# sourceMappingURL=SSRContext-DVj_QAC1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SSRContext-DVj_QAC1.js","sources":["../src/util/LruCache.js","../src/util/CachedDeliveryApi.ts","../src/util/ContensisDeliveryApi.ts","../src/util/SSRContext.tsx"],"sourcesContent":["class CacheNode {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n }\n}\n\nexport class LruCache {\n constructor(limit = 100) {\n this.map = {};\n this.head = null;\n this.tail = null;\n this.limit = limit || 100;\n this.size = 0;\n }\n\n get(key) {\n if (this.map[key]) {\n let value = this.map[key].value;\n let node = new CacheNode(key, value);\n this.remove(key);\n this.setHead(node);\n return value;\n }\n }\n\n set(key, value) {\n let node = new CacheNode(key, value);\n if (this.map[key]) {\n this.remove(key);\n } else {\n if (this.size >= this.limit) {\n delete this.map[this.tail.key];\n this.size--;\n this.tail = this.tail.prev;\n this.tail.next = null;\n }\n }\n this.setHead(node);\n }\n\n setHead(node) {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.size++;\n this.map[node.key] = node;\n }\n\n remove(key) {\n let node = this.map[key];\n if (!node) return; // This is sometimes null and crashes the container without this check\n\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n delete this.map[key];\n this.size--;\n }\n}\n","import { VersionStatus } from 'contensis-core-api';\nimport { Client, Query } from 'contensis-delivery-api';\nimport {\n INodeOperations,\n NodeGetRootOptions,\n} from 'contensis-delivery-api/lib/models';\n\nimport {\n DeliveryApi,\n SSRContext,\n getClientConfig,\n} from './ContensisDeliveryApi';\nimport { LruCache } from './LruCache';\nimport { CookieObject } from '~/user/util/CookieConstants';\n\n// CachedSearch does not cache results in SSR by design\nclass CachedSearch {\n cache = new LruCache();\n cookies?: CookieObject;\n ssr?: SSRContext;\n\n constructor(ssr?: SSRContext) {\n this.ssr = ssr;\n this.cookies = this.ssr?.cookies.raw;\n }\n\n getClient(...args: Parameters<DeliveryApi['getClient']>) {\n return new DeliveryApi(this.ssr).getClient(...args);\n }\n\n search(query: Query, linkDepth = 0, project?: string) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project}+${JSON.stringify(query)}+${linkDepth}`,\n () => client.entries.search(query, linkDepth)\n );\n }\n\n searchUsingPost(query: Query, linkDepth = 0, project = '') {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project}+${JSON.stringify(query)}+${linkDepth}`,\n () => (client.entries as any).searchUsingPost(query, linkDepth)\n );\n }\n\n get(\n id: string,\n linkDepth = 0,\n versionStatus: VersionStatus = 'published',\n project?: string,\n fields?: string[]\n ) {\n const client = Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n return this.request(id, () =>\n client.entries.get({ id, linkDepth, fields })\n );\n }\n\n getContentType(id: string, project?: string) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(`[CONTENT TYPE] ${id} ${project}`, () =>\n client.contentTypes.get(id)\n );\n }\n\n getRootNode(\n options: NodeGetRootOptions,\n versionStatus: VersionStatus = 'published',\n project?: string\n ) {\n const client = Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n return this.request(`${project} / ${JSON.stringify(options)}`, () =>\n client.nodes.getRoot(options)\n );\n }\n\n getNode(options: Parameters<INodeOperations['get']>[0], project?: string) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} ${\n options && typeof options !== 'string'\n ? 'path' in options\n ? options.path\n : options.id\n : options\n } ${JSON.stringify(options)}`,\n () => client.nodes.get(options)\n );\n }\n\n getAncestors(\n options: Parameters<INodeOperations['getAncestors']>[0],\n project?: string\n ) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} [A] ${\n (options && typeof options !== 'string' && options.id) || options\n } ${JSON.stringify(options)}`,\n () => client.nodes.getAncestors(options)\n );\n }\n\n getChildren(\n options: Parameters<INodeOperations['getChildren']>[0],\n project?: string\n ) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} [C] ${\n (options && typeof options !== 'string' && options.id) || options\n } ${JSON.stringify(options)}`,\n () => client.nodes.getChildren(options)\n );\n }\n\n getSiblings(\n options: Parameters<INodeOperations['getSiblings']>[0],\n project?: string\n ) {\n const client = Client.create(getClientConfig(project, this.ssr));\n return this.request(\n `${project} [S] ${\n (options && typeof options !== 'string' && options.id) || options\n } ${JSON.stringify(options)}`,\n () => client.nodes.getSiblings(options)\n );\n }\n\n request<T extends () => Promise<any>>(key: string, execute: T) {\n // do not cache results in SSR\n if (!this.cache.get(key) || typeof window == 'undefined') {\n const promise = execute();\n this.cache.set(key, promise);\n promise.catch(() => {\n this.cache.remove(key);\n });\n }\n return this.cache.get(key) as ReturnType<T>;\n }\n}\n\nexport const cachedSearch = new CachedSearch();\nexport const cachedSearchWithCookies = (ssr?: SSRContext) =>\n new CachedSearch(ssr);\n","import { VersionStatus } from 'contensis-core-api';\nimport { Client, Query } from 'contensis-delivery-api';\nimport { Config } from 'contensis-delivery-api/lib/models';\nimport { parse } from 'query-string';\nimport { setSurrogateKeys } from '~/routing/redux/actions';\nimport { reduxStore } from '~/redux/store/store';\n\nimport { CookieObject, findLoginCookies } from '~/user/util/CookieConstants';\nimport { Request } from 'express';\nimport { IncomingHttpHeaders } from 'http';\nimport { SSRContext as SSRContextType } from '~/models';\n\nexport type SSRContext = Omit<SSRContextType, 'api'>;\n\nconst mapCookieHeader = (cookies: CookieObject | string) =>\n typeof cookies === 'object'\n ? Object.entries(cookies)\n .map(([name, value]) => `${name}=${value}`)\n .join('; ')\n : cookies;\n\nconst getSsrReferer = ({ request }: SSRContext) => {\n if (request) {\n try {\n const url = new URL(\n request.url,\n `${request.protocol || `http`}://${request.headers.host}`\n );\n return url.href;\n } catch (ex) {\n console.error(\n `getSsrReferer cannot parse url ${request.url} and host ${request.headers.host}`\n );\n\n return request.url;\n }\n }\n\n // if (typeof window === 'undefined') {\n // const state = reduxStore.getState();\n // const referer = `${selectCurrentHostname(state)}${selectCurrentPath(\n // state\n // )}${selectCurrentSearch(state)}`;\n\n // return referer;\n // }\n return '';\n};\n\n/**\n * Store the surrogate-key header contents in redux state to output in SSR response\n */\nconst storeSurrogateKeys = (ssr?: SSRContext) => (response: any) => {\n let keys = '';\n if (response.status === 200) {\n keys = response.headers.get\n ? response.headers.get('surrogate-key')\n : response.headers.map['surrogate-key'];\n if (!keys) console.info(`[storeSurrogateKeys] No keys in ${response.url}`);\n }\n // Using imported reduxStore in SSR is unreliable during high\n // concurrent loads and exists here as a best effort fallback\n // in case the SSRContext is not provided\n const put = ssr?.dispatch || reduxStore?.dispatch;\n put?.(setSurrogateKeys(keys, response.url, response.status));\n};\n\n/**\n * Create a new Config object to create a DeliveryAPI Client\n */\nconst deliveryApiConfig = (ssr?: SSRContext) => {\n const config: Config = {\n ...DELIVERY_API_CONFIG /* global DELIVERY_API_CONFIG */,\n };\n\n // Add SSR headers and handlers\n if (typeof window === 'undefined') {\n config.defaultHeaders = {\n 'x-require-surrogate-key': 'true', // request surrogate-key response header\n 'x-crb-ssr': 'true', // add this for support tracing\n };\n if (ssr) config.defaultHeaders.referer = getSsrReferer(ssr); // add this for support tracing\n\n config.responseHandler = { [200]: storeSurrogateKeys(ssr) }; // for handling page cache invalidation\n }\n\n if (\n typeof window !== 'undefined' &&\n PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n ) {\n // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = '';\n config.responseHandler = { [404]: () => null };\n }\n return config;\n};\n\nexport const getClientConfig = (project?: string, ssr?: SSRContext) => {\n const config = deliveryApiConfig(ssr);\n\n if (project) {\n config.projectId = project;\n }\n\n if (ssr?.cookies) {\n const cookieHeader = mapCookieHeader(findLoginCookies(ssr.cookies));\n if (cookieHeader) {\n config.defaultHeaders = Object.assign(config.defaultHeaders || {}, {\n Cookie: cookieHeader,\n });\n }\n }\n\n return config;\n};\n\n// export * from 'contensis-delivery-api';\n\ndeclare let window: Window &\n typeof globalThis & {\n versionStatus?: VersionStatus;\n };\n\nexport class DeliveryApi {\n cookies?: CookieObject;\n ssr?: SSRContext;\n\n constructor(ssr?: SSRContext) {\n this.ssr = ssr;\n this.cookies = ssr?.cookies.raw;\n }\n\n getClientSideVersionStatus = () => {\n if (typeof window !== 'undefined') {\n // Allow overriding versionStatus with the querystring\n const { versionStatus } = parse(window.location.search);\n if (versionStatus) return versionStatus;\n // Client-side we will have a global variable set if rendered by SSR in production\n if (typeof window.versionStatus !== 'undefined')\n return window.versionStatus;\n // For localhost development we can only work out versionStatus from the current hostname\n const currentHostname = window.location.hostname;\n return this.getVersionStatusFromHostname(currentHostname);\n }\n return null;\n };\n\n getServerSideVersionStatus = (request: Request) =>\n request.query.versionStatus ||\n deliveryApi.getVersionStatusFromHeaders(request.headers) ||\n deliveryApi.getVersionStatusFromHostname(request.hostname);\n\n getVersionStatusFromHeaders = (headers: IncomingHttpHeaders) => {\n const versionStatusHeader = headers['x-entry-versionstatus'];\n if (typeof versionStatusHeader !== 'undefined') return versionStatusHeader;\n return null;\n };\n\n getVersionStatusFromHostname = (currentHostname: string) => {\n if (currentHostname.indexOf('localhost') > -1) return 'latest';\n\n if (currentHostname.endsWith('contensis.cloud')) {\n if (currentHostname.indexOf('preview.') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n if (currentHostname.endsWith('cloud.contensis.com')) {\n if (currentHostname.indexOf('preview-') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n return 'published';\n };\n\n search = (query: Query, linkDepth = 0, project?: string) => {\n const client = Client.create(getClientConfig(project, this.ssr));\n return client.entries.search(\n query,\n typeof linkDepth !== 'undefined' ? linkDepth : 1\n );\n };\n\n getClient = (versionStatus: VersionStatus = 'published', project?: string) =>\n Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n\n getEntry = (\n id: string,\n linkDepth = 0,\n versionStatus: VersionStatus = 'published',\n project?: string\n ) => {\n const client = Client.create({\n ...getClientConfig(project, this.ssr),\n versionStatus,\n });\n return client.entries.get({ id, linkDepth });\n };\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nexport const deliveryApiWithCookies = (ssr?: SSRContext) =>\n new DeliveryApi(ssr);\n\nexport * from './CachedDeliveryApi';\n","import { Request, Response } from 'express';\nimport React, {\n PropsWithChildren,\n createContext,\n useContext,\n useState,\n} from 'react';\nimport { useCookies } from 'react-cookie';\nimport { useDispatch } from 'react-redux';\nimport {\n SSRAccessMethod,\n SSRAssets,\n SSRContext as SSRContextType,\n} from '~/models';\nimport { cachedSearchWithCookies } from '~/util/CachedDeliveryApi';\nimport { CookieHelper } from '~/user/util/CookieHelper.class';\n\nconst SSRContext = createContext<SSRContextType | null>(null);\n\n/**\n * SSRContextProvider allows us to hold and access request-scoped references\n * throughout the component tree\n *\n * adding this in client side allows consumers to write universal code and use\n * the same helpers and request-scoped refs for api, cookies and redux dispatcher\n * as in SSR */\nexport const SSRContextProvider = ({\n accessMethod,\n children,\n request,\n response,\n ssrAssets,\n}: PropsWithChildren<{\n accessMethod?: SSRAccessMethod;\n request?: Request;\n response?: Response;\n ssrAssets?: SSRAssets;\n}>) => {\n // In SSR pass references to things in backing sagas\n // we cannot access in a global scope\n const dispatch = useDispatch();\n const cookies = new CookieHelper(...useCookies());\n const api = cachedSearchWithCookies({ cookies, dispatch, request, response });\n\n const [context] = useState<SSRContextType>({\n accessMethod,\n api,\n cookies,\n dispatch,\n request,\n response,\n ssrAssets,\n });\n\n return (\n <SSRContext.Provider value={{ ...context }}>{children}</SSRContext.Provider>\n );\n};\n\n/**\n * Server side usage provides access to request-scoped references throughout the component tree\n *\n * Client side usage allows consumers to write universal code, using the same\n * helpers and request-scoped refs for api, cookies and redux dispatcher as in SSR\n * @returns SSRContextType\n */\nexport const useSSRContext = () => useContext(SSRContext) as SSRContextType;\n\nexport const useDeliveryApi = () => {\n const { api } = useSSRContext();\n return api;\n};\n"],"names":["CacheNode","constructor","key","value","next","prev","LruCache","limit","map","head","tail","size","get","node","remove","setHead","set","CachedSearch","ssr","_this$ssr","cache","cookies","raw","getClient","args","DeliveryApi","search","query","linkDepth","project","client","Client","create","getClientConfig","request","JSON","stringify","entries","searchUsingPost","id","versionStatus","fields","getContentType","contentTypes","getRootNode","options","nodes","getRoot","getNode","path","getAncestors","getChildren","getSiblings","execute","window","promise","catch","cachedSearch","cachedSearchWithCookies","mapCookieHeader","Object","name","join","getSsrReferer","url","URL","protocol","headers","host","href","ex","console","error","storeSurrogateKeys","response","keys","status","info","put","dispatch","reduxStore","setSurrogateKeys","deliveryApiConfig","config","DELIVERY_API_CONFIG","defaultHeaders","referer","responseHandler","PROXY_DELIVERY_API","rootUrl","projectId","cookieHeader","findLoginCookies","assign","Cookie","getClientSideVersionStatus","parse","location","currentHostname","hostname","getVersionStatusFromHostname","getServerSideVersionStatus","deliveryApi","getVersionStatusFromHeaders","versionStatusHeader","indexOf","endsWith","getEntry","deliveryApiWithCookies","SSRContext","createContext","SSRContextProvider","accessMethod","children","ssrAssets","useDispatch","CookieHelper","useCookies","api","context","useState","React","createElement","Provider","useSSRContext","useContext","useDeliveryApi"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToJs-C9jwV7YB.js","sources":["../src/user/redux/selectors.ts","../src/user/util/matchGroups.ts","../src/util/ToJs.tsx"],"sourcesContent":["import { AppState, StateType } from '~/models';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\n\nexport const selectUserIsLoading = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isLoading']);\n\nexport const selectUserIsAuthenticated = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticated']);\n\nexport const selectUserIsAuthenticationError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticationError']);\n\nexport const selectUserIsError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isError']);\n\n/**\n * DEPRECATED 12/2021 - use selectUserErrorMessage instead\n * @param state AppState\n * @returns string\n */\nexport const selectUserAuthenticationErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectUserErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectClientCredentials = (\n state: AppState,\n returnType?: StateType\n) =>\n getIn(\n state,\n ['user', 'authenticationState', 'clientCredentials'],\n {},\n returnType\n );\n\nexport const selectUser = (state: AppState, returnType?: StateType) =>\n getIn(state, 'user', {}, returnType);\n\nexport const selectUserIsZengentiStaff = (state: AppState) =>\n getIn(state, ['user', 'isZengentiStaff']);\n\nexport const selectUserGuid = (state: AppState) => getIn(state, ['user', 'id']);\n\nexport const selectUsername = (state: AppState) =>\n getIn(state, ['user', 'username']);\n\nexport const selectUserEmail = (state: AppState) =>\n getIn(state, ['user', 'email']);\n\nexport const selectUserGroups = (state: AppState, returnType?: StateType) =>\n getIn(state, ['user', 'groups'], [], returnType);\n\nexport const selectUserSecurityToken = (state: AppState) =>\n getIn(state, [\n 'user',\n 'authenticationState',\n 'clientCredentials',\n 'contensisClassicToken',\n ]);\n\nexport const selectUserRegistration = (\n state: AppState,\n returnType?: StateType\n) => getIn(state, ['user', 'registration'], {}, returnType);\n\nexport const selectUserRegistrationError = (state: AppState) =>\n getIn(state, ['user', 'registration', 'error'], false);\n\nexport const selectUserRegistrationIsLoading = (state: AppState) =>\n getIn(state, ['user', 'registration', 'isLoading'], false);\n\nexport const selectUserRegistrationIsSuccess = (state: AppState) =>\n getIn(state, ['user', 'registration', 'success'], false);\n\nexport const selectPasswordResetRequestSending = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'isSending']);\n\nexport const selectPasswordResetRequestSent = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'sent']);\n\nexport const selectPasswordResetRequestError = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'error']);\n\nexport const selectResetPasswordSending = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'isSending']);\n\nexport const selectResetPasswordSent = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'sent']);\n\nexport const selectResetPasswordError = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'error']);\n\nexport const selectChangePasswordSending = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'isSending']);\n\nexport const selectChangePasswordSent = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'sent']);\n\nexport const selectChangePasswordError = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'error']);\n","import { Group } from 'contensis-management-api/lib/models';\nimport { RequireLogin } from '~/models';\n\nexport const matchUserGroup = (\n userGroups: Group[] = [],\n requiredGroups: RequireLogin = []\n) => {\n if (\n !Array.isArray(requiredGroups) ||\n (Array.isArray(requiredGroups) && requiredGroups.length === 0)\n )\n return true;\n\n const groupMatch = requiredGroups.some(requiredGroup => {\n return userGroups.some(userGroup => {\n if (requiredGroup.id === userGroup.id) {\n return true;\n }\n if (requiredGroup.name === userGroup.name) {\n return true;\n }\n });\n });\n return groupMatch;\n};\n","/* eslint-disable react/display-name */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\n\nexport const toJS =\n <Props extends { [key: string]: any }>(\n WrappedComponent: React.ComponentType<Props>\n ) =>\n (wrappedComponentProps: Props) => {\n const KEY = 0;\n const VALUE = 1;\n\n const propsJS = Object.entries(wrappedComponentProps).reduce<Props>(\n (newProps: any, wrappedComponentProp) => {\n const propKey = wrappedComponentProp[KEY];\n const propValue = wrappedComponentProp[VALUE];\n newProps[propKey] =\n propValue && typeof propValue === 'object' && 'toJS' in propValue\n ? propValue.toJS()\n : propValue;\n return newProps as Props;\n },\n {} as Props\n );\n\n return <WrappedComponent {...propsJS} />;\n };\n"],"names":["selectUserIsLoading","state","getIn","selectUserIsAuthenticated","selectUserIsAuthenticationError","selectUserIsError","selectUserAuthenticationErrorMessage","selectUserErrorMessage","selectClientCredentials","returnType","selectUser","selectUserIsZengentiStaff","selectUserGuid","selectUsername","selectUserEmail","selectUserGroups","selectUserSecurityToken","selectUserRegistration","selectUserRegistrationError","selectUserRegistrationIsLoading","selectUserRegistrationIsSuccess","selectPasswordResetRequestSending","selectPasswordResetRequestSent","selectPasswordResetRequestError","selectResetPasswordSending","selectResetPasswordSent","selectResetPasswordError","selectChangePasswordSending","selectChangePasswordSent","selectChangePasswordError","matchUserGroup","userGroups","requiredGroups","Array","isArray","length","groupMatch","some","requiredGroup","userGroup","id","name","toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","React","createElement"],"mappings":"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"}
1
+ {"version":3,"file":"ToJs-C9jwV7YB.js","sources":["../src/user/redux/selectors.ts","../src/user/util/matchGroups.ts","../src/util/ToJs.tsx"],"sourcesContent":["import { AppState, StateType } from '~/models';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\n\nexport const selectUserIsLoading = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isLoading']);\n\nexport const selectUserIsAuthenticated = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticated']);\n\nexport const selectUserIsAuthenticationError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticationError']);\n\nexport const selectUserIsError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isError']);\n\n/**\n * DEPRECATED 12/2021 - use selectUserErrorMessage instead\n * @param state AppState\n * @returns string\n */\nexport const selectUserAuthenticationErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectUserErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectClientCredentials = (\n state: AppState,\n returnType?: StateType\n) =>\n getIn(\n state,\n ['user', 'authenticationState', 'clientCredentials'],\n {},\n returnType\n );\n\nexport const selectUser = (state: AppState, returnType?: StateType) =>\n getIn(state, 'user', {}, returnType);\n\nexport const selectUserIsZengentiStaff = (state: AppState) =>\n getIn(state, ['user', 'isZengentiStaff']);\n\nexport const selectUserGuid = (state: AppState) => getIn(state, ['user', 'id']);\n\nexport const selectUsername = (state: AppState) =>\n getIn(state, ['user', 'username']);\n\nexport const selectUserEmail = (state: AppState) =>\n getIn(state, ['user', 'email']);\n\nexport const selectUserGroups = (state: AppState, returnType?: StateType) =>\n getIn(state, ['user', 'groups'], [], returnType);\n\nexport const selectUserSecurityToken = (state: AppState) =>\n getIn(state, [\n 'user',\n 'authenticationState',\n 'clientCredentials',\n 'contensisClassicToken',\n ]);\n\nexport const selectUserRegistration = (\n state: AppState,\n returnType?: StateType\n) => getIn(state, ['user', 'registration'], {}, returnType);\n\nexport const selectUserRegistrationError = (state: AppState) =>\n getIn(state, ['user', 'registration', 'error'], false);\n\nexport const selectUserRegistrationIsLoading = (state: AppState) =>\n getIn(state, ['user', 'registration', 'isLoading'], false);\n\nexport const selectUserRegistrationIsSuccess = (state: AppState) =>\n getIn(state, ['user', 'registration', 'success'], false);\n\nexport const selectPasswordResetRequestSending = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'isSending']);\n\nexport const selectPasswordResetRequestSent = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'sent']);\n\nexport const selectPasswordResetRequestError = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'error']);\n\nexport const selectResetPasswordSending = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'isSending']);\n\nexport const selectResetPasswordSent = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'sent']);\n\nexport const selectResetPasswordError = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'error']);\n\nexport const selectChangePasswordSending = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'isSending']);\n\nexport const selectChangePasswordSent = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'sent']);\n\nexport const selectChangePasswordError = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'error']);\n","import { Group } from 'contensis-management-api/lib/models';\nimport { RequireLogin } from '~/models';\n\nexport const matchUserGroup = (\n userGroups: Group[] = [],\n requiredGroups: RequireLogin = []\n) => {\n if (\n !Array.isArray(requiredGroups) ||\n (Array.isArray(requiredGroups) && requiredGroups.length === 0)\n )\n return true;\n\n const groupMatch = requiredGroups.some(requiredGroup => {\n return userGroups.some(userGroup => {\n if (requiredGroup.id === userGroup.id) {\n return true;\n }\n if (requiredGroup.name === userGroup.name) {\n return true;\n }\n });\n });\n return groupMatch;\n};\n","/* eslint-disable react/display-name */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\n\nexport const toJS =\n <Props extends { [key: string]: any }>(\n WrappedComponent: React.ComponentType<Props>\n ) =>\n (wrappedComponentProps: Props) => {\n const KEY = 0;\n const VALUE = 1;\n\n const propsJS = Object.entries(wrappedComponentProps).reduce<Props>(\n (newProps: any, wrappedComponentProp) => {\n const propKey = wrappedComponentProp[KEY];\n const propValue = wrappedComponentProp[VALUE];\n newProps[propKey] =\n propValue && typeof propValue === 'object' && 'toJS' in propValue\n ? propValue.toJS()\n : propValue;\n return newProps as Props;\n },\n {} as Props\n );\n\n return <WrappedComponent {...propsJS} />;\n };\n"],"names":["selectUserIsLoading","state","getIn","selectUserIsAuthenticated","selectUserIsAuthenticationError","selectUserIsError","selectUserAuthenticationErrorMessage","selectUserErrorMessage","selectClientCredentials","returnType","selectUser","selectUserIsZengentiStaff","selectUserGuid","selectUsername","selectUserEmail","selectUserGroups","selectUserSecurityToken","selectUserRegistration","selectUserRegistrationError","selectUserRegistrationIsLoading","selectUserRegistrationIsSuccess","selectPasswordResetRequestSending","selectPasswordResetRequestSent","selectPasswordResetRequestError","selectResetPasswordSending","selectResetPasswordSent","selectResetPasswordError","selectChangePasswordSending","selectChangePasswordSent","selectChangePasswordError","matchUserGroup","userGroups","requiredGroups","Array","isArray","length","groupMatch","some","requiredGroup","userGroup","id","name","toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","React","createElement"],"mappings":";;;;;;;;;MAGaA,mBAAmB,GAAIC,KAAe,IACjDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,WAAW,CAAC;MAE9CE,yBAAyB,GAAIF,KAAe,IACvDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,iBAAiB,CAAC;MAEpDG,+BAA+B,GAAIH,KAAe,IAC7DC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,CAAC;MAE1DI,iBAAiB,GAAIJ,KAAe,IAC/CC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,SAAS,CAAC;;AAEzD;AACA;AACA;AACA;AACA;AACO,MAAMK,oCAAoC,GAAIL,KAAe,IAClEC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,cAAc,CAAC,CAAC;MAElDM,sBAAsB,GAAIN,KAAe,IACpDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,qBAAqB,EAAE,cAAc,CAAC;AAEvD,MAAMO,uBAAuB,GAAGA,CACrCP,KAAe,EACfQ,UAAsB,KAEtBP,4BAAK,CACHD,KAAK,EACL,CAAC,MAAM,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,EACpD,EAAE,EACFQ,UACF;MAEWC,UAAU,GAAGA,CAACT,KAAe,EAAEQ,UAAsB,KAChEP,4BAAK,CAACD,KAAK,EAAE,MAAM,EAAE,EAAE,EAAEQ,UAAU;AAE9B,MAAME,yBAAyB,GAAIV,KAAe,IACvDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAEpC,MAAMW,cAAc,GAAIX,KAAe,IAAKC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;AAEvE,MAAMY,cAAc,GAAIZ,KAAe,IAC5CC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAE7B,MAAMa,eAAe,GAAIb,KAAe,IAC7CC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1B,MAAMc,gBAAgB,GAAGA,CAACd,KAAe,EAAEQ,UAAsB,KACtEP,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAEQ,UAAU;AAE1C,MAAMO,uBAAuB,GAAIf,KAAe,IACrDC,4BAAK,CAACD,KAAK,EAAE,CACX,MAAM,EACN,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,CACxB,CAAC;AAEG,MAAMgB,sBAAsB,GAAGA,CACpChB,KAAe,EACfQ,UAAsB,KACnBP,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE,EAAEQ,UAAU;MAE7CS,2BAA2B,GAAIjB,KAAe,IACzDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,KAAK;MAE1CkB,+BAA+B,GAAIlB,KAAe,IAC7DC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,KAAK;MAE9CmB,+BAA+B,GAAInB,KAAe,IAC7DC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,KAAK;MAE5CoB,iCAAiC,GAAIpB,KAAe,IAC/DC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,WAAW,CAAC;MAE/CqB,8BAA8B,GAAIrB,KAAe,IAC5DC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,MAAM,CAAC;MAE1CsB,+BAA+B,GAAItB,KAAe,IAC7DC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,CAAC;MAE3CuB,0BAA0B,GAAIvB,KAAe,IACxDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,CAAC;MAExCwB,uBAAuB,GAAIxB,KAAe,IACrDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC;MAEnCyB,wBAAwB,GAAIzB,KAAe,IACtDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,CAAC;MAEpC0B,2BAA2B,GAAI1B,KAAe,IACzDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,CAAC;MAEzC2B,wBAAwB,GAAI3B,KAAe,IACtDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC;MAEpC4B,yBAAyB,GAAI5B,KAAe,IACvDC,4BAAK,CAACD,KAAK,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClG3C,MAAM6B,cAAc,GAAGA,CAC5BC,UAAmB,GAAG,EAAE,EACxBC,cAA4B,GAAG,EAAE,KAC9B;EACH,IACE,CAACC,KAAK,CAACC,OAAO,CAACF,cAAc,CAAC,IAC7BC,KAAK,CAACC,OAAO,CAACF,cAAc,CAAC,IAAIA,cAAc,CAACG,MAAM,KAAK,CAAE,EAE9D,OAAO,IAAI;AAEb,EAAA,MAAMC,UAAU,GAAGJ,cAAc,CAACK,IAAI,CAACC,aAAa,IAAI;AACtD,IAAA,OAAOP,UAAU,CAACM,IAAI,CAACE,SAAS,IAAI;AAClC,MAAA,IAAID,aAAa,CAACE,EAAE,KAAKD,SAAS,CAACC,EAAE,EAAE;AACrC,QAAA,OAAO,IAAI;AACb,MAAA;AACA,MAAA,IAAIF,aAAa,CAACG,IAAI,KAAKF,SAAS,CAACE,IAAI,EAAE;AACzC,QAAA,OAAO,IAAI;AACb,MAAA;AACF,IAAA,CAAC,CAAC;AACJ,EAAA,CAAC,CAAC;AACF,EAAA,OAAOL,UAAU;AACnB;;ACxBA;AACA;MAGaM,IAAI,GAEbC,gBAA4C,IAE7CC,qBAA4B,IAAK;EAChC,MAAMC,GAAG,GAAG,CAAC;EACb,MAAMC,KAAK,GAAG,CAAC;AAEf,EAAA,MAAMC,OAAO,GAAGC,MAAM,CAACC,OAAO,CAACL,qBAAqB,CAAC,CAACM,MAAM,CAC1D,CAACC,QAAa,EAAEC,oBAAoB,KAAK;AACvC,IAAA,MAAMC,OAAO,GAAGD,oBAAoB,CAACP,GAAG,CAAC;AACzC,IAAA,MAAMS,SAAS,GAAGF,oBAAoB,CAACN,KAAK,CAAC;IAC7CK,QAAQ,CAACE,OAAO,CAAC,GACfC,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,IAAI,MAAM,IAAIA,SAAS,GAC7DA,SAAS,CAACZ,IAAI,EAAE,GAChBY,SAAS;AACf,IAAA,OAAOH,QAAQ;EACjB,CAAC,EACD,EACF,CAAC;AAED,EAAA,oBAAOI,sBAAA,CAAAC,aAAA,CAACb,gBAAgB,EAAKI,OAAU,CAAC;AAC1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}